diff --git a/.gitignore b/.gitignore index d12b041e..5aa6bb54 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,16 @@ test-ledger .yarn .env +**/test_keys +test/merkle_tree.json +test/merkle_tree_test_csv.json + +build +*.csv +merkle_tree.json +proofs/ +data/ +data/**/* +backup-keys +metadata +cat-meta \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Anchor.toml b/Anchor.toml index 94a2003b..5eb40170 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -4,17 +4,20 @@ resolution = true skip-lint = false +[programs.devnet] +rarible_editions = "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" +rarible_editions_controls = "RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE" +rarible_marketplace = "Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic" + [programs.localnet] -wen_wns_marketplace = "sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod" -wen_new_standard = "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM" -wen_royalty_distribution = "diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay" -wen_transfer_guard = "LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw" +rarible_editions = "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" +rarible_editions_controls = "RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE" +rarible_marketplace = "Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic" -[programs.devnet] -wen_wns_marketplace = "sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod" -wen_new_standard = "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM" -wen_royalty_distribution = "diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay" -wen_transfer_guard = "LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw" +[programs.mainnet] +rarible_editions = "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" +rarible_editions_controls = "RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE" +rarible_marketplace = "Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic" [registry] url = "https://api.apr.dev" @@ -29,4 +32,25 @@ test = "RUST_LOG= yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.tes [test] startup_wait = 50000 shutdown_wait = 2000 -upgradeable = false +upgradeable = true + +[test.validator] +bind_address = "0.0.0.0" +url = "https://api.devnet.solana.com" +ledger = ".anchor/test-ledger" +rpc_port = 8899 + +[[test.validator.clone]] +address = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + +[[test.validator.clone]] +address = "BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY" + +[[test.validator.clone]] +address = "cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK" + +[[test.validator.clone]] +address = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" + +[[test.validator.clone]] +address = "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" diff --git a/Cargo.lock b/Cargo.lock index 4592a431..605ed575 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,31 @@ # 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 = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aead" version = "0.4.3" @@ -56,6 +81,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -70,6 +96,27 @@ dependencies = [ "memchr", ] +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[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.30.1" @@ -139,7 +186,7 @@ dependencies = [ "anchor-syn", "anyhow", "bs58 0.5.1", - "heck", + "heck 0.3.3", "proc-macro2", "quote", "serde_json", @@ -164,7 +211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" dependencies = [ "anchor-syn", - "borsh-derive-internal 0.9.3", + "borsh-derive-internal 0.10.4", "proc-macro2", "quote", "syn 1.0.109", @@ -200,7 +247,7 @@ dependencies = [ "arrayref", "base64 0.21.7", "bincode", - "borsh 0.9.3", + "borsh 0.10.4", "bytemuck", "getrandom 0.2.15", "solana-program", @@ -215,7 +262,7 @@ checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" dependencies = [ "anchor-lang-idl-spec", "anyhow", - "heck", + "heck 0.3.3", "regex", "serde", "serde_json", @@ -239,12 +286,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04bd077c34449319a1e4e0bc21cea572960c9ae0d0fefda0dd7c52fcc3c647a3" dependencies = [ "anchor-lang", - "spl-associated-token-account", - "spl-pod 0.2.2", + "spl-associated-token-account 3.0.4", + "spl-pod 0.2.5", "spl-token", - "spl-token-2022", - "spl-token-group-interface", - "spl-token-metadata-interface", + "spl-token-2022 3.0.4", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", ] [[package]] @@ -256,7 +303,7 @@ dependencies = [ "anyhow", "bs58 0.5.1", "cargo_toml", - "heck", + "heck 0.3.3", "proc-macro2", "quote", "serde", @@ -266,11 +313,49 @@ dependencies = [ "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 = "anyhow" -version = "1.0.86" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" + +[[package]] +name = "aquamarine" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" +dependencies = [ + "include_dir", + "itertools", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "ark-bn254" @@ -313,7 +398,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version", @@ -336,7 +421,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -365,7 +450,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -391,15 +476,60 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "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 = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "assert_matches" @@ -407,22 +537,82 @@ 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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" +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.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] [[package]] name = "base64" @@ -430,12 +620,30 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bincode" version = "1.3.3" @@ -445,6 +653,12 @@ 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.6.0" @@ -514,12 +728,12 @@ dependencies = [ [[package]] name = "borsh" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" dependencies = [ - "borsh-derive 0.10.3", - "hashbrown 0.11.2", + "borsh-derive 0.10.4", + "hashbrown 0.12.3", ] [[package]] @@ -547,12 +761,12 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", + "borsh-derive-internal 0.10.4", + "borsh-schema-derive-internal 0.10.4", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -565,10 +779,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", "syn_derive", ] @@ -585,9 +799,9 @@ dependencies = [ [[package]] name = "borsh-derive-internal" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" dependencies = [ "proc-macro2", "quote", @@ -607,15 +821,36 @@ dependencies = [ [[package]] name = "borsh-schema-derive-internal" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "bs58" version = "0.4.0" @@ -649,22 +884,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] @@ -673,6 +908,43 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "caps" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" +dependencies = [ + "libc", + "thiserror", +] + [[package]] name = "cargo_toml" version = "0.19.2" @@ -680,18 +952,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" dependencies = [ "serde", - "toml 0.8.14", + "toml 0.8.19", ] [[package]] name = "cc" -version = "1.0.99" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -712,7 +984,22 @@ version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "chrono-humanize" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", ] [[package]] @@ -725,83 +1012,212 @@ dependencies = [ ] [[package]] -name = "console_error_panic_hook" -version = "0.1.7" +name = "clap" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "cfg-if", - "wasm-bindgen", + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", ] [[package]] -name = "console_log" -version = "0.2.2" +name = "clap" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ - "log", - "web-sys", + "atty", + "bitflags 1.3.2", + "clap_derive", + "clap_lex", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", ] [[package]] -name = "constant_time_eq" -version = "0.3.0" +name = "clap_derive" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "cpufeatures" -version = "0.2.12" +name = "clap_lex" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" dependencies = [ - "libc", + "os_str_bytes", ] [[package]] -name = "crossbeam-deque" -version = "0.8.5" +name = "combine" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "concurrent-queue" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] [[package]] -name = "crossbeam-utils" -version = "0.8.20" +name = "console" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] [[package]] -name = "crunchy" -version = "0.2.2" +name = "console_error_panic_hook" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "console_log" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" dependencies = [ - "generic-array", - "typenum", + "log", + "web-sys", ] [[package]] -name = "crypto-mac" +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[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" @@ -810,6 +1226,27 @@ dependencies = [ "subtle", ] +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + [[package]] name = "ctr" version = "0.8.0" @@ -835,9 +1272,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -845,27 +1282,80 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim", - "syn 2.0.68", + "strsim 0.11.1", + "syn 2.0.85", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.68", + "syn 2.0.85", +] + +[[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.5", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[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.6", + "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", + "serde", ] [[package]] @@ -885,6 +1375,24 @@ dependencies = [ "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 = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + [[package]] name = "digest" version = "0.9.0" @@ -905,6 +1413,67 @@ dependencies = [ "subtle", ] +[[package]] +name = "dir-diff" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" +dependencies = [ + "walkdir", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[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.85", +] + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "dyn-fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a0836c9bd73a9d3ca55b0effc5b1eedf96dd13ef994389bcac6d4d33c46188" + +[[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" @@ -940,12 +1509,72 @@ dependencies = [ "sha2 0.10.8", ] +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "either" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +[[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.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.85", +] + [[package]] name = "env_logger" version = "0.9.3" @@ -966,987 +1595,3190 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "feature-probe" -version = "0.1.1" +name = "errno" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] [[package]] -name = "fnv" -version = "1.0.7" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] -name = "generic-array" -version = "0.14.7" +name = "fast-math" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "2465292146cdfc2011350fe3b1c616ac83cf0faeedb33463ba1c332ed8948d66" dependencies = [ - "serde", - "typenum", - "version_check", + "ieee754", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "fastrand" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", - "js-sys", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", + "libredox", + "windows-sys 0.59.0", ] [[package]] -name = "getrandom" -version = "0.2.15" +name = "flate2" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "crc32fast", + "miniz_oxide", ] [[package]] -name = "hashbrown" -version = "0.11.2" +name = "float-cmp" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" dependencies = [ - "ahash 0.7.8", + "num-traits", ] [[package]] -name = "hashbrown" -version = "0.13.2" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "ahash 0.8.11", + "percent-encoding", ] [[package]] -name = "hashbrown" -version = "0.14.5" +name = "fragile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] -name = "heck" -version = "0.3.3" +name = "futures" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ - "unicode-segmentation", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "futures-channel" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ - "libc", + "futures-core", + "futures-sink", ] [[package]] -name = "hmac" -version = "0.8.1" +name = "futures-core" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] -name = "hmac" -version = "0.12.1" +name = "futures-executor" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ - "digest 0.10.7", + "futures-core", + "futures-task", + "futures-util", ] [[package]] -name = "hmac-drbg" -version = "0.3.0" +name = "futures-io" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest 0.9.0", - "generic-array", - "hmac 0.8.1", -] +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] -name = "humantime" -version = "2.1.0" +name = "futures-macro" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] [[package]] -name = "ident_case" -version = "1.0.1" +name = "futures-sink" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] -name = "im" -version = "15.1.0" +name = "futures-task" +version = "0.3.31" 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", -] +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] -name = "indexmap" -version = "2.2.6" +name = "futures-util" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "equivalent", - "hashbrown 0.14.5", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", ] [[package]] -name = "itertools" -version = "0.10.5" +name = "generic-array" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "either", + "serde", + "typenum", + "version_check", ] [[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.31" +name = "gethostname" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" dependencies = [ "libc", + "winapi", ] [[package]] -name = "js-sys" -version = "0.3.69" +name = "getrandom" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] -name = "keccak" -version = "0.1.5" +name = "getrandom" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cpufeatures", + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.155" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "libsecp256k1" -version = "0.6.0" +name = "goblin" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" 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", + "log", + "plain", + "scroll", ] [[package]] -name = "libsecp256k1-core" -version = "0.2.2" +name = "h2" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.6.0", + "slab", + "tokio", + "tokio-util 0.7.12", + "tracing", ] [[package]] -name = "libsecp256k1-gen-ecmult" +name = "hash32" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" dependencies = [ - "libsecp256k1-core", + "byteorder", ] [[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" +name = "hashbrown" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "libsecp256k1-core", + "ahash 0.7.8", ] [[package]] -name = "light-poseidon" -version = "0.2.0" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ark-bn254", - "ark-ff", - "num-bigint", - "thiserror", + "ahash 0.7.8", ] [[package]] -name = "lock_api" -version = "0.4.12" +name = "hashbrown" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "autocfg", - "scopeguard", + "ahash 0.8.11", ] [[package]] -name = "log" -version = "0.4.21" +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] -name = "memchr" -version = "2.7.4" +name = "hashbrown" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] -name = "memmap2" -version = "0.5.10" +name = "heck" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ - "libc", + "unicode-segmentation", ] [[package]] -name = "memoffset" -version = "0.9.1" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "merlin" -version = "3.0.0" +name = "hermit-abi" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "byteorder", - "keccak", - "rand_core 0.6.4", - "zeroize", + "libc", ] [[package]] -name = "num-bigint" -version = "0.4.5" +name = "hermit-abi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" -dependencies = [ - "num-integer", - "num-traits", -] +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] -name = "num-derive" -version = "0.4.2" +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.68", -] +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "num-integer" -version = "0.1.46" +name = "histogram" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" [[package]] -name = "num-traits" -version = "0.2.19" +name = "hmac" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "autocfg", + "crypto-mac", + "digest 0.9.0", ] [[package]] -name = "num_enum" -version = "0.7.2" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "num_enum_derive", + "digest 0.10.7", ] [[package]] -name = "num_enum_derive" -version = "0.7.2" +name = "hmac-drbg" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.68", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] [[package]] -name = "opaque-debug" -version = "0.3.1" +name = "http" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] [[package]] -name = "parking_lot" -version = "0.12.3" +name = "http-body" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "lock_api", - "parking_lot_core", + "bytes", + "http", + "pin-project-lite", ] [[package]] -name = "parking_lot_core" -version = "0.9.10" +name = "httparse" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] -name = "paste" -version = "1.0.15" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "pbkdf2" -version = "0.4.0" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ - "crypto-mac", + "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 = "pbkdf2" -version = "0.11.0" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "digest 0.10.7", + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", ] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] [[package]] -name = "polyval" -version = "0.5.3" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", + "cc", ] [[package]] -name = "ppv-lite86" -version = "0.2.17" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "proc-macro-crate" -version = "0.1.5" +name = "idna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "toml 0.5.11", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "proc-macro-crate" -version = "3.1.0" +name = "ieee754" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9007da9cacbd3e6343da136e98b0d2df013f553d35bdec8b518f07bea768e19c" + +[[package]] +name = "im" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" dependencies = [ - "toml_edit 0.21.1", + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "include_dir" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", + "include_dir_macros", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "include_dir_macros" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", - "version_check", ] [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "index_list" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e6ba961c14e98151cd6416dd3685efe786a94c38bc1a535c06ceff0a1600813" + +[[package]] +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "unicode-ident", + "autocfg", + "hashbrown 0.12.3", + "serde", ] [[package]] -name = "qstring" -version = "0.7.2" +name = "indexmap" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ - "percent-encoding", + "equivalent", + "hashbrown 0.15.0", + "serde", ] [[package]] -name = "qualifier_attr" -version = "0.2.2" +name = "indicatif" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.68", + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", ] [[package]] -name = "quote" -version = "1.0.36" +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "proc-macro2", + "cfg-if", ] [[package]] -name = "rand" -version = "0.7.3" +name = "ipnet" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", + "either", ] [[package]] -name = "rand" -version = "0.8.5" +name = "itoa" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", ] [[package]] -name = "rand_chacha" -version = "0.2.2" +name = "js-sys" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "wasm-bindgen", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "jsonrpc-core" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "kaigan" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "b6dd100976df9dd59d0c3fecf6f9ad3f161a087374d1b2a77ebb4ad8920f11bb" dependencies = [ - "getrandom 0.1.16", + "borsh 0.10.4", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "keccak" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ - "getrandom 0.2.15", + "cpufeatures", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "lazy_static" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "rand_xoshiro" -version = "0.6.0" +name = "libc" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" -dependencies = [ - "rand_core 0.6.4", -] +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] -name = "rayon" -version = "1.10.0" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "either", - "rayon-core", + "bitflags 2.6.0", + "libc", + "redox_syscall", ] [[package]] -name = "rayon-core" -version = "1.12.1" +name = "libreplex_shared" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "9f27769daa550e10152c9841674849521b778083b0090c70f84e6993386e59f7" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "anchor-lang", + "anchor-spl", + "mpl-token-metadata 3.2.3", + "solana-program", + "spl-pod 0.2.5", + "spl-token", + "spl-token-2022 3.0.4", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", + "spl-type-length-value 0.3.0", ] [[package]] -name = "redox_syscall" -version = "0.5.2" +name = "libsecp256k1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" dependencies = [ - "bitflags", + "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 = "regex" -version = "1.10.5" +name = "libsecp256k1-core" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "crunchy", + "digest 0.9.0", + "subtle", ] [[package]] -name = "regex-automata" -version = "0.4.7" +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "libsecp256k1-core", ] [[package]] -name = "regex-syntax" -version = "0.8.4" +name = "libsecp256k1-gen-genmult" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] [[package]] -name = "rustc-hash" -version = "1.1.0" +name = "light-poseidon" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254", + "ark-ff", + "num-bigint 0.4.6", + "thiserror", +] [[package]] -name = "rustc_version" -version = "0.4.0" +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ - "semver", + "autocfg", + "scopeguard", ] [[package]] -name = "rustversion" -version = "1.0.17" +name = "log" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] -name = "ryu" -version = "1.0.18" +name = "lru" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "lz4" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" +dependencies = [ + "lz4-sys", +] [[package]] -name = "semver" -version = "1.0.23" +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" +dependencies = [ + "cc", + "libc", +] [[package]] -name = "serde" -version = "1.0.203" +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ - "serde_derive", + "libc", ] [[package]] -name = "serde_bytes" -version = "0.11.15" +name = "memoffset" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +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 = "merkle-tree" +version = "0.1.0" dependencies = [ + "csv", + "fast-math", + "hex", + "indexmap 2.6.0", + "merkle-tree-verify", + "rand 0.8.5", "serde", + "serde_json", + "solana-program", + "solana-sdk", + "thiserror", ] [[package]] -name = "serde_derive" -version = "1.0.203" +name = "merkle-tree-cli" +version = "0.1.0" +dependencies = [ + "clap 3.2.25", + "merkle-tree", +] + +[[package]] +name = "merkle-tree-verify" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-spl", + "solana-program", +] + +[[package]] +name = "merlin" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.68", + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", ] [[package]] -name = "serde_json" -version = "1.0.118" +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.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "itoa", - "ryu", - "serde", + "adler2", ] [[package]] -name = "serde_spanned" -version = "0.6.6" +name = "mio" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ - "serde", + "hermit-abi 0.3.9", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", ] [[package]] -name = "serde_with" -version = "2.3.3" +name = "mockall" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" dependencies = [ - "serde", - "serde_with_macros", + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", ] [[package]] -name = "serde_with_macros" -version = "2.3.3" +name = "mockall_derive" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" dependencies = [ - "darling", "proc-macro2", "quote", - "syn 2.0.68", + "syn 1.0.109", ] [[package]] -name = "sha2" -version = "0.9.9" +name = "mpl-bubblegum" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "a9eff5ae5cafd1acdf7e7c93359da1eec91dcaede318470d9f68b78e8b7469f4" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "borsh 0.10.4", + "kaigan", + "num-derive 0.3.3", + "num-traits", + "solana-program", + "thiserror", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "mpl-token-metadata" +version = "3.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "ba8ee05284d79b367ae8966d558e1a305a781fc80c9df51f37775169117ba64f" +dependencies = [ + "borsh 0.10.4", + "num-derive 0.3.3", + "num-traits", + "solana-program", + "thiserror", +] + +[[package]] +name = "mpl-token-metadata" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf0f61b553e424a6234af1268456972ee66c2222e1da89079242251fa7479e5" +dependencies = [ + "borsh 0.10.4", + "num-derive 0.3.3", + "num-traits", + "serde", + "serde_with 3.11.0", + "solana-program", + "thiserror", +] + +[[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", - "cpufeatures", - "digest 0.10.7", + "libc", + "memoffset 0.7.1", + "pin-utils", ] [[package]] -name = "sha3" -version = "0.9.1" +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "keccak", - "opaque-debug", + "memchr", + "minimal-lexical", ] [[package]] -name = "sha3" -version = "0.10.8" +name = "normalize-line-endings" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" dependencies = [ - "digest 0.10.7", - "keccak", + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", ] [[package]] -name = "signature" -version = "1.6.4" +name = "num-bigint" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] [[package]] -name = "siphasher" -version = "0.3.11" +name = "num-bigint" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] [[package]] -name = "sized-chunks" -version = "0.6.5" +name = "num-complex" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ - "bitmaps", - "typenum", + "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.85", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_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.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive 0.7.3", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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.85", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[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.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +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.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[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 = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[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.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[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.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + +[[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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" + +[[package]] +name = "predicates-tree" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +dependencies = [ + "predicates-core", + "termtree", +] + +[[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.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.22", +] + +[[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", + "syn 1.0.109", + "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.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +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.85", +] + +[[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.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "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 = "rarible_editions" +version = "0.2.1" +dependencies = [ + "anchor-lang", + "anchor-spl", + "arrayref", + "dyn-fmt", + "serde", + "serde_json", + "solana-program", + "solana-program-test", + "solana-sdk", + "spl-pod 0.2.5", + "spl-tlv-account-resolution 0.6.5", + "spl-token-2022 3.0.4", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", + "spl-transfer-hook-interface 0.6.5", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "rarible_editions_controls" +version = "0.2.1" +dependencies = [ + "anchor-lang", + "anchor-spl", + "arrayref", + "libreplex_shared", + "merkle-tree-verify", + "rarible_editions", + "solana-program", + "solana-program-test", + "solana-sdk", + "spl-pod 0.2.5", + "spl-token-2022 3.0.4", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "rarible_marketplace" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-spl", + "mpl-bubblegum", + "mpl-token-metadata 4.1.2", + "num_enum 0.5.11", + "spl-pod 0.2.5", + "spl-tlv-account-resolution 0.6.5", + "spl-token-group-interface 0.2.5", + "spl-transfer-hook-interface 0.6.5", + "wen_new_standard", + "wen_royalty_distribution 0.2.0-alpha (git+https://github.com/ifelsedeveloper/wen-program-library)", +] + +[[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.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "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", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tokio-util 0.7.12", + "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.15", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[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 = "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 = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +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.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" +dependencies = [ + "bitflags 2.6.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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +dependencies = [ + "windows-sys 0.59.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.85", +] + +[[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.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "seqlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "serde" +version = "1.0.213" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.213" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[package]] +name = "serde_json" +version = "1.0.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "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 2.3.3", +] + +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros 3.11.0", + "time", +] + +[[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.85", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solana-account-decoder" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" +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 1.0.0", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-accounts-db" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" +dependencies = [ + "arrayref", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lz4", + "memmap2", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.3", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "seqlock", + "serde", + "serde_derive", + "smallvec", + "solana-bucket-map", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-nohash-hasher", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "static_assertions", + "strum", + "strum_macros", + "tar", + "tempfile", + "thiserror", +] + +[[package]] +name = "solana-address-lookup-table-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" +dependencies = [ + "bincode", + "bytemuck", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-banks-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" +dependencies = [ + "borsh 1.5.1", + "futures", + "solana-banks-interface", + "solana-program", + "solana-sdk", + "tarpc", + "thiserror", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" +dependencies = [ + "serde", + "solana-sdk", + "tarpc", +] + +[[package]] +name = "solana-banks-server" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" +dependencies = [ + "bincode", + "crossbeam-channel", + "futures", + "solana-accounts-db", + "solana-banks-interface", + "solana-client", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "tarpc", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" +dependencies = [ + "bincode", + "byteorder", + "libsecp256k1", + "log", + "scopeguard", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-bucket-map" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" +dependencies = [ + "bv", + "bytemuck", + "log", + "memmap2", + "modular-bitfield", + "num_enum 0.7.3", + "rand 0.8.5", + "solana-measure", + "solana-sdk", + "tempfile", +] + +[[package]] +name = "solana-clap-utils" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-remote-wallet", + "solana-sdk", + "thiserror", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" +dependencies = [ + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap 2.6.0", + "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-compute-budget-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" +dependencies = [ + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-config-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-connection-cache" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.6.0", + "log", + "rand 0.8.5", + "rayon", + "rcgen", + "solana-measure", + "solana-metrics", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-cost-model" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" +dependencies = [ + "lazy_static", + "log", + "rustc_version", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" +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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.85", +] + +[[package]] +name = "solana-loader-v4-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" +dependencies = [ + "log", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana_rbpf", +] + +[[package]] +name = "solana-logger" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-measure" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" +dependencies = [ + "log", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-net-utils" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" +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-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + +[[package]] +name = "solana-perf" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" +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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "blake3", + "borsh 0.10.4", + "borsh 0.9.3", + "borsh 1.5.1", + "bs58 0.4.0", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "itertools", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset 0.9.1", + "num-bigint 0.4.6", + "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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" +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-program-test" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" +dependencies = [ + "assert_matches", + "async-trait", + "base64 0.21.7", + "bincode", + "chrono-humanize", + "crossbeam-channel", + "log", + "serde", + "solana-accounts-db", + "solana-banks-client", + "solana-banks-interface", + "solana-banks-server", + "solana-bpf-loader-program", + "solana-logger", + "solana-program-runtime", + "solana-runtime", + "solana-sdk", + "solana-vote-program", + "solana_rbpf", + "test-case", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" +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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" +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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-remote-wallet" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" +dependencies = [ + "console", + "dialoguer", + "log", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-sdk", + "thiserror", + "uriparse", ] [[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "solana-frozen-abi" -version = "1.18.17" +name = "solana-rpc-client" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4867f66e9527fa44451c861c1dc6d9b2a7c7a668d7c6a297cdefbe39f4395b33" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ - "block-buffer 0.10.4", + "async-trait", + "base64 0.21.7", + "bincode", "bs58 0.4.0", - "bv", - "either", - "generic-array", - "im", - "lazy_static", + "indicatif", "log", - "memmap2", - "rustc_version", + "reqwest", + "semver", "serde", - "serde_bytes", "serde_derive", - "sha2 0.10.8", - "solana-frozen-abi-macro", - "subtle", - "thiserror", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", ] [[package]] -name = "solana-frozen-abi-macro" -version = "1.18.17" +name = "solana-rpc-client-api" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168f24d97347b85f05192df58d6be3e3047a4aadc4001bc1b9e711a5ec878eea" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.68", + "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 1.0.0", + "thiserror", ] [[package]] -name = "solana-logger" -version = "1.18.17" +name = "solana-rpc-client-nonce-utils" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0511082fc62f2d086520fff5aa1917c389d8c840930c08ad255ae05952c08a2" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ - "env_logger", - "lazy_static", - "log", + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", ] [[package]] -name = "solana-program" -version = "1.18.17" +name = "solana-runtime" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc5a636dc75e5c25651e34f7a36afc9ae60d38166687c5b0375abb580ac81a2" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", + "aquamarine", + "arrayref", "base64 0.21.7", "bincode", - "bitflags", "blake3", - "borsh 0.10.3", - "borsh 0.9.3", - "borsh 1.5.1", - "bs58 0.4.0", "bv", "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "dir-diff", + "flate2", + "fnv", + "im", + "index_list", "itertools", - "js-sys", "lazy_static", - "libc", - "libsecp256k1", - "light-poseidon", "log", - "memoffset", - "num-bigint", - "num-derive", + "lru", + "lz4", + "memmap2", + "mockall", + "modular-bitfield", + "num-derive 0.4.2", "num-traits", - "parking_lot", + "num_cpus", + "num_enum 0.7.3", + "ouroboros", + "percentage", + "qualifier_attr", "rand 0.8.5", + "rayon", + "regex", "rustc_version", - "rustversion", "serde", - "serde_bytes", "serde_derive", "serde_json", - "sha2 0.10.8", - "sha3 0.10.8", + "solana-accounts-db", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-bucket-map", + "solana-compute-budget-program", + "solana-config-program", + "solana-cost-model", "solana-frozen-abi", "solana-frozen-abi-macro", - "solana-sdk-macro", + "solana-loader-v4-program", + "solana-measure", + "solana-metrics", + "solana-perf", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-version", + "solana-vote", + "solana-vote-program", + "solana-zk-token-proof-program", + "solana-zk-token-sdk", + "static_assertions", + "strum", + "strum_macros", + "symlink", + "tar", + "tempfile", "thiserror", - "tiny-bip39", - "wasm-bindgen", - "zeroize", + "zstd", ] [[package]] name = "solana-sdk" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df43d3a1e1637397ab43cbc216a5a8f977ec8a3cc3f3ae8c3851c83a3255dbcf" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", "bincode", - "bitflags", + "bitflags 2.6.0", "borsh 1.5.1", "bs58 0.4.0", "bytemuck", @@ -1964,9 +4796,9 @@ dependencies = [ "libsecp256k1", "log", "memmap2", - "num-derive", + "num-derive 0.4.2", "num-traits", - "num_enum", + "num_enum 0.7.3", "pbkdf2 0.11.0", "qstring", "qualifier_attr", @@ -1978,7 +4810,7 @@ dependencies = [ "serde_bytes", "serde_derive", "serde_json", - "serde_with", + "serde_with 2.3.3", "sha2 0.10.8", "sha3 0.10.8", "siphasher", @@ -1994,15 +4826,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c76414183a325038ff020b22c07d1e9d2da0703ddc0244acfed37ee2921d96" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] @@ -2011,11 +4843,239 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" +[[package]] +name = "solana-send-transaction-service" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" +dependencies = [ + "crossbeam-channel", + "log", + "solana-client", + "solana-measure", + "solana-metrics", + "solana-runtime", + "solana-sdk", + "solana-tpu-client", +] + +[[package]] +name = "solana-stake-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" +dependencies = [ + "bincode", + "log", + "rustc_version", + "solana-config-program", + "solana-program-runtime", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-streamer" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.6.0", + "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-system-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-thin-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" +dependencies = [ + "bincode", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.6.0", + "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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "borsh 0.10.4", + "bs58 0.4.0", + "lazy_static", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "spl-associated-token-account 2.3.0", + "spl-memo", + "spl-token", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-udp-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-version" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" +dependencies = [ + "log", + "rustc_version", + "semver", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", +] + +[[package]] +name = "solana-vote" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" +dependencies = [ + "crossbeam-channel", + "itertools", + "log", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", + "solana-vote-program", + "thiserror", +] + +[[package]] +name = "solana-vote-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" +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-proof-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" +dependencies = [ + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", +] + [[package]] name = "solana-zk-token-sdk" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513407f88394e437b4ff5aad892bc5bf51a655ae2401e6e63549734d3695c46f" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -2027,7 +5087,7 @@ dependencies = [ "itertools", "lazy_static", "merlin", - "num-derive", + "num-derive 0.4.2", "num-traits", "rand 0.7.3", "serde", @@ -2040,27 +5100,84 @@ dependencies = [ "zeroize", ] +[[package]] +name = "solana_rbpf" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da5d083187e3b3f453e140f292c09186881da8a02a7b5e27f645ee26de3d9cc5" +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.4", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022 1.0.0", + "thiserror", +] + [[package]] name = "spl-associated-token-account" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" +checksum = "143109d789171379e6143ef23191786dfaac54289ad6e7917cfb26b36c432b10" dependencies = [ "assert_matches", "borsh 1.5.1", - "num-derive", + "num-derive 0.4.2", "num-traits", "solana-program", "spl-token", - "spl-token-2022", + "spl-token-2022 3.0.4", "thiserror", ] [[package]] name = "spl-discriminator" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" dependencies = [ "bytemuck", "solana-program", @@ -2069,9 +5186,9 @@ dependencies = [ [[package]] name = "spl-discriminator" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" +checksum = "210101376962bb22bb13be6daea34656ea1cbc248fce2164b146e39203b55e03" dependencies = [ "bytemuck", "solana-program", @@ -2086,7 +5203,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn 0.1.2", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] @@ -2097,7 +5214,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn 0.2.0", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] @@ -2109,7 +5226,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.68", + "syn 2.0.85", "thiserror", ] @@ -2122,51 +5239,52 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.68", + "syn 2.0.85", "thiserror", ] [[package]] name = "spl-memo" -version = "4.0.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e9bae02de3405079a057fe244c867a08f92d48327d231fc60da831f94caf0a" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" dependencies = [ "solana-program", ] [[package]] name = "spl-pod" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" dependencies = [ + "borsh 0.10.4", "bytemuck", "solana-program", "solana-zk-token-sdk", - "spl-program-error 0.3.1", + "spl-program-error 0.3.0", ] [[package]] name = "spl-pod" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" +checksum = "c52d84c55efeef8edcc226743dc089d7e3888b8e3474569aa3eff152b37b9996" dependencies = [ "borsh 1.5.1", "bytemuck", "solana-program", "solana-zk-token-sdk", - "spl-program-error 0.4.1", + "spl-program-error 0.4.4", ] [[package]] name = "spl-program-error" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" dependencies = [ - "num-derive", + "num-derive 0.4.2", "num-traits", "solana-program", "spl-program-error-derive 0.3.2", @@ -2175,11 +5293,11 @@ dependencies = [ [[package]] name = "spl-program-error" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49065093ea91f57b9b2bd81493ff705e2ad4e64507a07dbc02b085778e02770e" +checksum = "e45a49acb925db68aa501b926096b2164adbdcade7a0c24152af9f0742d0a602" dependencies = [ - "num-derive", + "num-derive 0.4.2", "num-traits", "solana-program", "spl-program-error-derive 0.4.1", @@ -2195,7 +5313,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] @@ -2207,187 +5325,270 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] name = "spl-tlv-account-resolution" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9" +checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", ] [[package]] name = "spl-tlv-account-resolution" -version = "0.5.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" +checksum = "fab8edfd37be5fa17c9e42c1bff86abbbaf0494b031b37957f2728ad2ff842ba" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", + "spl-type-length-value 0.4.6", ] [[package]] -name = "spl-tlv-account-resolution" -version = "0.6.3" +name = "spl-token" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" dependencies = [ + "arrayref", "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.6.1", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-type-length-value 0.4.3", + "thiserror", ] [[package]] -name = "spl-token" -version = "4.0.1" +name = "spl-token-2022" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ae123223633a389f95d1da9d49c2d0a50d499e7060b9624626a69e536ad2a4" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" dependencies = [ "arrayref", "bytemuck", - "num-derive", + "num-derive 0.4.2", "num-traits", - "num_enum", + "num_enum 0.7.3", "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod 0.1.0", + "spl-token", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", + "spl-transfer-hook-interface 0.4.1", + "spl-type-length-value 0.3.0", "thiserror", ] [[package]] name = "spl-token-2022" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" +checksum = "b01d1b2851964e257187c0bca43a0de38d0af59192479ca01ac3e2b58b1bd95a" dependencies = [ "arrayref", "bytemuck", - "num-derive", + "num-derive 0.4.2", "num-traits", - "num_enum", + "num_enum 0.7.3", "solana-program", "solana-security-txt", "solana-zk-token-sdk", "spl-memo", - "spl-pod 0.2.2", + "spl-pod 0.2.5", "spl-token", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface 0.6.3", - "spl-type-length-value 0.4.3", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", + "spl-transfer-hook-interface 0.6.5", + "spl-type-length-value 0.4.6", "thiserror", ] [[package]] name = "spl-token-group-interface" -version = "0.2.3" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" +checksum = "014817d6324b1e20c4bbc883e8ee30a5faa13e59d91d1b2b95df98b920150c17" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", ] [[package]] name = "spl-token-metadata-interface" -version = "0.3.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +dependencies = [ + "borsh 0.10.4", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3da00495b602ebcf5d8ba8b3ecff1ee454ce4c125c9077747be49c2d62335ba" dependencies = [ "borsh 1.5.1", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-type-length-value 0.4.3", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", + "spl-type-length-value 0.4.6", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.5.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6dfe329fcff44cbe2eea994bd8f737f0b0a69faed39e56f9b6ee03badf7e14" +checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-tlv-account-resolution 0.5.2", - "spl-type-length-value 0.3.1", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-tlv-account-resolution 0.5.1", + "spl-type-length-value 0.3.0", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" +checksum = "a9b5c08a89838e5a2931f79b17f611857f281a14a2100968a3ccef352cb7414b" dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-tlv-account-resolution 0.6.3", - "spl-type-length-value 0.4.3", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", + "spl-tlv-account-resolution 0.6.5", + "spl-type-length-value 0.4.6", ] [[package]] name = "spl-type-length-value" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", ] [[package]] name = "spl-type-length-value" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" +checksum = "c872f93d0600e743116501eba2d53460e73a12c9a496875a42a7d70e034fe06d" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.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 = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + [[package]] name = "subtle" version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + [[package]] name = "syn" version = "1.0.109" @@ -2401,9 +5602,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -2419,7 +5620,105 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", +] + +[[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 = "tar" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] @@ -2431,59 +5730,263 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", + "test-case-core", +] + +[[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.61" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] -name = "thiserror-impl" -version = "1.0.61" +name = "thiserror-impl" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "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.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", +] + +[[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-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.68", + "futures-core", + "pin-project-lite", + "tokio", ] [[package]] -name = "tiny-bip39" -version = "0.8.2" +name = "tokio-tungstenite" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" 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", + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.25.4", ] [[package]] -name = "tinyvec" -version = "1.6.1" +name = "tokio-util" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ - "tinyvec_macros", + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "tokio-util" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] [[package]] name = "toml" @@ -2496,47 +5999,137 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.22", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.6.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.20", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.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.85", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "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]] @@ -2545,26 +6138,44 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicode-bidi" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -2576,6 +6187,27 @@ dependencies = [ "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" @@ -2586,11 +6218,65 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +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 = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[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" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "walkdir" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[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" @@ -2606,34 +6292,47 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2641,76 +6340,84 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" 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 = "wen_new_standard" version = "0.4.2-alpha" +source = "git+https://github.com/ifelsedeveloper/wen-program-library?branch=main#fda5cce5817d40347546147433c94a1837aebe1a" dependencies = [ "anchor-lang", "anchor-spl", - "spl-tlv-account-resolution 0.4.0", - "spl-transfer-hook-interface 0.5.1", - "wen_royalty_distribution", + "spl-tlv-account-resolution 0.6.5", + "spl-transfer-hook-interface 0.6.5", + "wen_royalty_distribution 0.2.0-alpha (git+https://github.com/ifelsedeveloper/wen-program-library?branch=main)", ] [[package]] name = "wen_royalty_distribution" version = "0.2.0-alpha" +source = "git+https://github.com/ifelsedeveloper/wen-program-library?branch=main#fda5cce5817d40347546147433c94a1837aebe1a" dependencies = [ "anchor-lang", "anchor-spl", "bincode", "serde", - "spl-tlv-account-resolution 0.4.0", - "spl-transfer-hook-interface 0.5.1", -] - -[[package]] -name = "wen_transfer_guard" -version = "0.1.0" -dependencies = [ - "anchor-lang", - "anchor-spl", - "spl-pod 0.2.2", - "spl-tlv-account-resolution 0.4.0", - "spl-transfer-hook-interface 0.5.1", + "spl-tlv-account-resolution 0.6.5", + "spl-transfer-hook-interface 0.6.5", ] [[package]] -name = "wen_wns_marketplace" -version = "0.1.0" +name = "wen_royalty_distribution" +version = "0.2.0-alpha" +source = "git+https://github.com/ifelsedeveloper/wen-program-library#fda5cce5817d40347546147433c94a1837aebe1a" dependencies = [ "anchor-lang", "anchor-spl", - "spl-transfer-hook-interface 0.5.1", - "wen_new_standard", - "wen_royalty_distribution", + "bincode", + "serde", + "spl-tlv-account-resolution 0.6.5", + "spl-transfer-hook-interface 0.6.5", ] [[package]] @@ -2731,11 +6438,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2744,78 +6451,162 @@ 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.6", +] + +[[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", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-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.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -2828,31 +6619,80 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" 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 = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[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.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", ] [[package]] @@ -2872,5 +6712,34 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.85", +] + +[[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.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 62fad783..df3efce0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,27 +1,16 @@ [workspace] -members = ["programs/*"] +members = ["programs/*", "crates/*"] resolver = "2" -[workspace.dependencies] -anchor-lang = { version = "0.30.1", features = [ - "init-if-needed", - "interface-instructions", - "allow-missing-optionals", -] } -anchor-spl = { version = "0.30.1" } -wen_new_standard = { path = "programs/wen_new_standard", features = ["cpi"] } -wen_royalty_distribution = { path = "programs/wen_royalty_distribution", features = [ - "cpi", -] } -spl-transfer-hook-interface = "0.5.1" -spl-tlv-account-resolution = "0.4.0" -spl-pod = "0.2.2" +# [patch.crates-io] +# spl-transfer-hook-interface = { version = "=0.6.3" } [profile.release] overflow-checks = true lto = "fat" codegen-units = 1 + [profile.release.build-override] opt-level = 3 incremental = false -codegen-units = 1 +codegen-units = 1 \ No newline at end of file diff --git a/README.md b/README.md index 1cd97d04..eb7bafd1 100644 --- a/README.md +++ b/README.md @@ -2,34 +2,44 @@ A collection of Solana programs maintained by the WEN developer community. -## Contents - -- [Overview](#overview) -- [Building](#building) -- [Programs](#programs) -- [Testing](#testing) -- [Clients](#clients) -- [CLI](#cli) -- [License](#license) - -## Overview -WEN New Standard +IDL and json in export folder. -WEN New Standard is a specification for representing NFTs using Token Extensions (TE). This specification is enforced and encoded through a program that currently addresses missing features such as token groups and setting up required extensions on TE. +## Contents -WEN Royalty Distribution +- [WEN Program Library](#wen-program-library) + - [Contents](#contents) + - [Overview](#overview) + - [Building](#building) + - [Testing](#testing) + - [Programs](#programs) + - [rarible\_marketplace `Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic`](#rarible_marketplace-rarim7dmod45z1o25qwpswvtdfssedxaxriwwzlltic) + - [rarible\_editions `Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn`](#rarible_editions-rari9ftbd6vfdtpn8tdlwn2ze24kkkm5mleetnibmnn) + - [rarible\_editions\_controls `RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE`](#rarible_editions_controls-rariunm3vz1rwxpg8ujyran7rskxxgd2ncs2ddca4ze) + - [JavaScript](#javascript) + - [Rust](#rust) + - [Contributing](#contributing) + - [CLI](#cli) + - [License](#license) -WEN Royalty Distribution is a specification for royalties on WNS assets, which also enforces the payout of royalties through a Token Extension transfer hook. +## Overview ## Building To build the programs from the root directory of the repository: +```bash +npx lerna run clean +``` + ```bash yarn install ``` +```bash +npx lerna run build +``` + to install the required libraries, then: ```bash @@ -50,38 +60,20 @@ anchor test This project contains the following programs: -### [wen_new_standard](./programs/wen_new_standard/README.md) `wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM` +### [rarible_marketplace](https://eclipsescan.xyz/account/Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn?cluster=testnet) `Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic` -

- - - -

+### [rarible_editions](https://eclipsescan.xyz/account/Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn?cluster=testnet) `Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn` -The packages below can be used to interact with `wen_new_standard` program. +### [rarible_editions_controls](https://eclipsescan.xyz/account/Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn?cluster=testnet) `RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE` #### JavaScript -```bash -npm install @wen-community/wen-new-standard -``` +packages with lerna #### Rust -```bash -cargo add wen_new_standard -``` - -### [wen_royalty_distribution](./programs/wen_royalty_distribution/README.md) `diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay` - -## Clients - -Each program in the project contains autogenerated Javascript and Rust clients: +TBD -wen new standard: - -- [JavaScript](./clients/js/wen_new_standard/README.md) -- [Rust](./clients/rust/wen_new_standard/README.md) ## Contributing @@ -89,8 +81,7 @@ Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how t ## CLI -The Wen Program Library, now has a CLI allowing users to create collections and asset related operations. Click [here](./wpl_cli/README.md) to learn more about the commands present. - +The Rarible Program Library, now has a CLI allowing users to create collections and asset related operations. ## License Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/bins/readme.md b/bins/readme.md new file mode 100644 index 00000000..196156fe --- /dev/null +++ b/bins/readme.md @@ -0,0 +1,4 @@ +used token group example v0.3.0 from solana + + +solana-program-library-token-group-interface-v0.3.0 \ No newline at end of file diff --git a/bins/spl_token_group_example.so b/bins/spl_token_group_example.so new file mode 100755 index 00000000..ff14c3e7 Binary files /dev/null and b/bins/spl_token_group_example.so differ diff --git a/clients/js/package.json b/clients/js/package.json deleted file mode 100644 index f20a7865..00000000 --- a/clients/js/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "private": true, - "workspaces": [ - "wen_new_standard", - "wen_royalty_distribution", - "wen_transfer_guard", - "wen_wns_marketplace" - ], - "scripts": { - "build": "yarn workspaces run build", - "format": "yarn workspaces run format", - "lint": "yarn workspaces run lint" - } -} diff --git a/clients/js/wen_new_standard/.eslintrc.js b/clients/js/wen_new_standard/.eslintrc.js deleted file mode 100644 index a87f62c6..00000000 --- a/clients/js/wen_new_standard/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - extends: ['airbnb-base', 'airbnb-typescript/base', 'prettier'], - plugins: ['prettier'], - overrides: [], - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: 'tsconfig.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/no-unused-vars': 'off', - 'class-methods-use-this': 'off', - 'import/prefer-default-export': 'off', - 'import/no-cycle': 'off', - 'no-underscore-dangle': 'off', - 'max-classes-per-file': 'off', - 'no-param-reassign': 'off', - 'func-names': 'off', - 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], - }, - ignorePatterns: ['dist/**', '.eslintrc.js'], -}; diff --git a/clients/js/wen_new_standard/.gitignore b/clients/js/wen_new_standard/.gitignore deleted file mode 100644 index 8205f972..00000000 --- a/clients/js/wen_new_standard/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.vercel -docs -dist \ No newline at end of file diff --git a/clients/js/wen_new_standard/.prettierrc.json b/clients/js/wen_new_standard/.prettierrc.json deleted file mode 100644 index 3453ff69..00000000 --- a/clients/js/wen_new_standard/.prettierrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "trailingComma": "es5", - "useTabs": false, - "tabWidth": 2, - "arrowParens": "always", - "printWidth": 80, - "parser": "typescript" -} diff --git a/clients/js/wen_new_standard/README.md b/clients/js/wen_new_standard/README.md deleted file mode 100644 index 69d6325d..00000000 --- a/clients/js/wen_new_standard/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -A JavaScript library for WEN New Standard (WNS) [program](https://github.com/wen-community/wen-new-standard). - -## Getting started - -1. First, ensure you have `@solana/web3.js@2.0.0-preview.3` as dependency in your project. -2. Next, install this library using the package manager of your choice. - ```sh - npm install @wen-community/wen-new-standard - ``` -3. Finally, register the library with your Umi instance. - ```ts - import * from '@wen-community/wen-new-standard'; - ``` - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. \ No newline at end of file diff --git a/clients/js/wen_new_standard/env-shim.ts b/clients/js/wen_new_standard/env-shim.ts deleted file mode 100644 index 8963d75a..00000000 --- a/clients/js/wen_new_standard/env-shim.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV` -export const __DEV__ = /* @__PURE__ */ (() => - (process as any)['en' + 'v'].NODE_ENV === 'development')(); diff --git a/clients/js/wen_new_standard/package.json b/clients/js/wen_new_standard/package.json deleted file mode 100644 index 6b467989..00000000 --- a/clients/js/wen_new_standard/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@wen-foundation/wen-new-standard", - "version": "0.5.0-alpha", - "description": "An SDK for developing on the Open Source NFT Standard built on Solana Token Extensions.", - "main": "dist/src/index.js", - "types": "dist/src/index.d.ts", - "scripts": { - "build": "rimraf dist && tsc -p tsconfig.json", - "test": "ava", - "lint": "eslint --ext js,ts,tsx src && prettier --check src test", - "lint:fix": "eslint --fix --ext js,ts,tsx src && prettier --write src test" - }, - "files": [ - "/dist/src" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org" - }, - "homepage": "https://wenwencoin.com", - "repository": "https://github.com/wen-community/wen-program-libarary.git", - "author": "wen community", - "license": "MIT", - "keywords": [ - "solana", - "nft", - "blockchain", - "wen" - ], - "peerDependencies": { - "@solana/web3.js": "2.0.0-preview.3" - }, - "devDependencies": { - "@ava/typescript": "^4.1.0", - "@solana/eslint-config-solana": "^3.0.0", - "@solana/web3.js": "tp3", - "@solana/webcrypto-ed25519-polyfill": "tp3", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "ava": "^6.1.2", - "eslint": "^8.57.0", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tsup": "^8.0.2", - "typedoc": "^0.25.12", - "typedoc-plugin-missing-exports": "^2.2.0", - "typescript": "^5.4.2" - }, - "ava": { - "typescript": { - "compile": false, - "rewritePaths": { - "test/": "dist/test/" - } - } - } -} diff --git a/clients/js/wen_new_standard/src/generated/accounts/approveAccount.ts b/clients/js/wen_new_standard/src/generated/accounts/approveAccount.ts deleted file mode 100644 index c0efcaf1..00000000 --- a/clients/js/wen_new_standard/src/generated/accounts/approveAccount.ts +++ /dev/null @@ -1,135 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; - -export type ApproveAccount = { - discriminator: ReadonlyUint8Array; - slot: bigint; -}; - -export type ApproveAccountArgs = { slot: number | bigint }; - -export function getApproveAccountEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['slot', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([218, 253, 170, 2, 4, 47, 25, 99]), - }) - ); -} - -export function getApproveAccountDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['slot', getU64Decoder()], - ]); -} - -export function getApproveAccountCodec(): Codec< - ApproveAccountArgs, - ApproveAccount -> { - return combineCodec(getApproveAccountEncoder(), getApproveAccountDecoder()); -} - -export function decodeApproveAccount( - encodedAccount: EncodedAccount -): Account; -export function decodeApproveAccount( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeApproveAccount( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): Account | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getApproveAccountDecoder() - ); -} - -export async function fetchApproveAccount( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeApproveAccount(rpc, address, config); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeApproveAccount< - TAddress extends string = string, ->( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeApproveAccount(maybeAccount); -} - -export async function fetchAllApproveAccount( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeApproveAccount( - rpc, - addresses, - config - ); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeApproveAccount( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => - decodeApproveAccount(maybeAccount) - ); -} - -export function getApproveAccountSize(): number { - return 16; -} diff --git a/clients/js/wen_new_standard/src/generated/accounts/index.ts b/clients/js/wen_new_standard/src/generated/accounts/index.ts deleted file mode 100644 index a03ef9d8..00000000 --- a/clients/js/wen_new_standard/src/generated/accounts/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './approveAccount'; -export * from './manager'; -export * from './tokenGroup'; -export * from './tokenGroupMember'; diff --git a/clients/js/wen_new_standard/src/generated/accounts/manager.ts b/clients/js/wen_new_standard/src/generated/accounts/manager.ts deleted file mode 100644 index 6e3ebba4..00000000 --- a/clients/js/wen_new_standard/src/generated/accounts/manager.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; - -export type Manager = { discriminator: ReadonlyUint8Array }; - -export type ManagerArgs = {}; - -export function getManagerEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([221, 78, 171, 233, 213, 142, 113, 56]), - }) - ); -} - -export function getManagerDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getManagerCodec(): Codec { - return combineCodec(getManagerEncoder(), getManagerDecoder()); -} - -export function decodeManager( - encodedAccount: EncodedAccount -): Account; -export function decodeManager( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeManager( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): Account | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getManagerDecoder() - ); -} - -export async function fetchManager( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeManager(rpc, address, config); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeManager( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeManager(maybeAccount); -} - -export async function fetchAllManager( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeManager(rpc, addresses, config); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeManager( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => decodeManager(maybeAccount)); -} - -export function getManagerSize(): number { - return 8; -} diff --git a/clients/js/wen_new_standard/src/generated/accounts/tokenGroup.ts b/clients/js/wen_new_standard/src/generated/accounts/tokenGroup.ts deleted file mode 100644 index 79643c04..00000000 --- a/clients/js/wen_new_standard/src/generated/accounts/tokenGroup.ts +++ /dev/null @@ -1,154 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; - -export type TokenGroup = { - discriminator: ReadonlyUint8Array; - /** The authority that can sign to update the group */ - updateAuthority: Address; - /** - * The associated mint, used to counter spoofing to be sure that group - * belongs to a particular mint - */ - mint: Address; - /** The current number of group members */ - size: number; - /** The maximum number of group members */ - maxSize: number; -}; - -export type TokenGroupArgs = { - /** The authority that can sign to update the group */ - updateAuthority: Address; - /** - * The associated mint, used to counter spoofing to be sure that group - * belongs to a particular mint - */ - mint: Address; - /** The current number of group members */ - size: number; - /** The maximum number of group members */ - maxSize: number; -}; - -export function getTokenGroupEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['updateAuthority', getAddressEncoder()], - ['mint', getAddressEncoder()], - ['size', getU32Encoder()], - ['maxSize', getU32Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([184, 107, 4, 187, 196, 55, 142, 134]), - }) - ); -} - -export function getTokenGroupDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['updateAuthority', getAddressDecoder()], - ['mint', getAddressDecoder()], - ['size', getU32Decoder()], - ['maxSize', getU32Decoder()], - ]); -} - -export function getTokenGroupCodec(): Codec { - return combineCodec(getTokenGroupEncoder(), getTokenGroupDecoder()); -} - -export function decodeTokenGroup( - encodedAccount: EncodedAccount -): Account; -export function decodeTokenGroup( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeTokenGroup( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): Account | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getTokenGroupDecoder() - ); -} - -export async function fetchTokenGroup( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeTokenGroup(rpc, address, config); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeTokenGroup( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeTokenGroup(maybeAccount); -} - -export async function fetchAllTokenGroup( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeTokenGroup(rpc, addresses, config); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeTokenGroup( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => decodeTokenGroup(maybeAccount)); -} - -export function getTokenGroupSize(): number { - return 80; -} diff --git a/clients/js/wen_new_standard/src/generated/accounts/tokenGroupMember.ts b/clients/js/wen_new_standard/src/generated/accounts/tokenGroupMember.ts deleted file mode 100644 index 5826114e..00000000 --- a/clients/js/wen_new_standard/src/generated/accounts/tokenGroupMember.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; - -export type TokenGroupMember = { - discriminator: ReadonlyUint8Array; - /** - * The associated mint, used to counter spoofing to be sure that member - * belongs to a particular mint - */ - mint: Address; - /** The pubkey of the `TokenGroup` */ - group: Address; - /** The member number */ - memberNumber: number; -}; - -export type TokenGroupMemberArgs = { - /** - * The associated mint, used to counter spoofing to be sure that member - * belongs to a particular mint - */ - mint: Address; - /** The pubkey of the `TokenGroup` */ - group: Address; - /** The member number */ - memberNumber: number; -}; - -export function getTokenGroupMemberEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['mint', getAddressEncoder()], - ['group', getAddressEncoder()], - ['memberNumber', getU32Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([17, 208, 50, 173, 30, 127, 245, 94]), - }) - ); -} - -export function getTokenGroupMemberDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['mint', getAddressDecoder()], - ['group', getAddressDecoder()], - ['memberNumber', getU32Decoder()], - ]); -} - -export function getTokenGroupMemberCodec(): Codec< - TokenGroupMemberArgs, - TokenGroupMember -> { - return combineCodec( - getTokenGroupMemberEncoder(), - getTokenGroupMemberDecoder() - ); -} - -export function decodeTokenGroupMember( - encodedAccount: EncodedAccount -): Account; -export function decodeTokenGroupMember( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeTokenGroupMember( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): - | Account - | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getTokenGroupMemberDecoder() - ); -} - -export async function fetchTokenGroupMember( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeTokenGroupMember(rpc, address, config); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeTokenGroupMember< - TAddress extends string = string, ->( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeTokenGroupMember(maybeAccount); -} - -export async function fetchAllTokenGroupMember( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeTokenGroupMember( - rpc, - addresses, - config - ); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeTokenGroupMember( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => - decodeTokenGroupMember(maybeAccount) - ); -} - -export function getTokenGroupMemberSize(): number { - return 76; -} diff --git a/clients/js/wen_new_standard/src/generated/errors/index.ts b/clients/js/wen_new_standard/src/generated/errors/index.ts deleted file mode 100644 index 310c6dcd..00000000 --- a/clients/js/wen_new_standard/src/generated/errors/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenNewStandard'; diff --git a/clients/js/wen_new_standard/src/generated/errors/wenNewStandard.ts b/clients/js/wen_new_standard/src/generated/errors/wenNewStandard.ts deleted file mode 100644 index 4b2ad69a..00000000 --- a/clients/js/wen_new_standard/src/generated/errors/wenNewStandard.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -/** SizeExceedsMaxSize: Collection size exceeds max size. */ -export const WEN_NEW_STANDARD_ERROR__SIZE_EXCEEDS_MAX_SIZE = 0x1770; // 6000 -/** MaxSizeBelowCurrentSize: Max size cannot be reduced below current size. */ -export const WEN_NEW_STANDARD_ERROR__MAX_SIZE_BELOW_CURRENT_SIZE = 0x1771; // 6001 -/** CreatorShareInvalid: Creators shares must add up to 100. */ -export const WEN_NEW_STANDARD_ERROR__CREATOR_SHARE_INVALID = 0x1772; // 6002 -/** MissingApproveAccount: Missing approve account. */ -export const WEN_NEW_STANDARD_ERROR__MISSING_APPROVE_ACCOUNT = 0x1773; // 6003 -/** ExpiredApproveAccount: Approve account has expired. */ -export const WEN_NEW_STANDARD_ERROR__EXPIRED_APPROVE_ACCOUNT = 0x1774; // 6004 -/** InvalidField: Invalid field. You cannot use a public key as a field. */ -export const WEN_NEW_STANDARD_ERROR__INVALID_FIELD = 0x1775; // 6005 -/** CreatorAddressInvalid: The Address you provided is invalid. Please provide a valid address. */ -export const WEN_NEW_STANDARD_ERROR__CREATOR_ADDRESS_INVALID = 0x1776; // 6006 -/** RoyaltyBasisPointsInvalid: Royalty basis points must be less than or equal to 10000. */ -export const WEN_NEW_STANDARD_ERROR__ROYALTY_BASIS_POINTS_INVALID = 0x1777; // 6007 - -export type WenNewStandardError = - | typeof WEN_NEW_STANDARD_ERROR__CREATOR_ADDRESS_INVALID - | typeof WEN_NEW_STANDARD_ERROR__CREATOR_SHARE_INVALID - | typeof WEN_NEW_STANDARD_ERROR__EXPIRED_APPROVE_ACCOUNT - | typeof WEN_NEW_STANDARD_ERROR__INVALID_FIELD - | typeof WEN_NEW_STANDARD_ERROR__MAX_SIZE_BELOW_CURRENT_SIZE - | typeof WEN_NEW_STANDARD_ERROR__MISSING_APPROVE_ACCOUNT - | typeof WEN_NEW_STANDARD_ERROR__ROYALTY_BASIS_POINTS_INVALID - | typeof WEN_NEW_STANDARD_ERROR__SIZE_EXCEEDS_MAX_SIZE; - -let wenNewStandardErrorMessages: - | Record - | undefined; -if (process.env.NODE_ENV !== 'production') { - wenNewStandardErrorMessages = { - [WEN_NEW_STANDARD_ERROR__CREATOR_ADDRESS_INVALID]: `The Address you provided is invalid. Please provide a valid address.`, - [WEN_NEW_STANDARD_ERROR__CREATOR_SHARE_INVALID]: `Creators shares must add up to 100.`, - [WEN_NEW_STANDARD_ERROR__EXPIRED_APPROVE_ACCOUNT]: `Approve account has expired.`, - [WEN_NEW_STANDARD_ERROR__INVALID_FIELD]: `Invalid field. You cannot use a public key as a field.`, - [WEN_NEW_STANDARD_ERROR__MAX_SIZE_BELOW_CURRENT_SIZE]: `Max size cannot be reduced below current size.`, - [WEN_NEW_STANDARD_ERROR__MISSING_APPROVE_ACCOUNT]: `Missing approve account.`, - [WEN_NEW_STANDARD_ERROR__ROYALTY_BASIS_POINTS_INVALID]: `Royalty basis points must be less than or equal to 10000.`, - [WEN_NEW_STANDARD_ERROR__SIZE_EXCEEDS_MAX_SIZE]: `Collection size exceeds max size.`, - }; -} - -export function getWenNewStandardErrorMessage( - code: WenNewStandardError -): string { - if (process.env.NODE_ENV !== 'production') { - return (wenNewStandardErrorMessages as Record)[ - code - ]; - } - - return 'Error message not available in production bundles.'; -} diff --git a/clients/js/wen_new_standard/src/generated/index.ts b/clients/js/wen_new_standard/src/generated/index.ts deleted file mode 100644 index 4b1e4f3c..00000000 --- a/clients/js/wen_new_standard/src/generated/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './accounts'; -export * from './errors'; -export * from './instructions'; -export * from './programs'; -export * from './types'; diff --git a/clients/js/wen_new_standard/src/generated/instructions/addMetadata.ts b/clients/js/wen_new_standard/src/generated/instructions/addMetadata.ts deleted file mode 100644 index e37ea4a3..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/addMetadata.ts +++ /dev/null @@ -1,256 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; -import { - getAddMetadataArgsDecoder, - getAddMetadataArgsEncoder, - type AddMetadataArgs, - type AddMetadataArgsArgs, -} from '../types'; - -export type AddMetadataInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type AddMetadataInstructionData = { - discriminator: ReadonlyUint8Array; - args: Array; -}; - -export type AddMetadataInstructionDataArgs = { - args: Array; -}; - -export function getAddMetadataInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['args', getArrayEncoder(getAddMetadataArgsEncoder())], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([231, 195, 40, 240, 67, 231, 53, 136]), - }) - ); -} - -export function getAddMetadataInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['args', getArrayDecoder(getAddMetadataArgsDecoder())], - ]); -} - -export function getAddMetadataInstructionDataCodec(): Codec< - AddMetadataInstructionDataArgs, - AddMetadataInstructionData -> { - return combineCodec( - getAddMetadataInstructionDataEncoder(), - getAddMetadataInstructionDataDecoder() - ); -} - -export type AddMetadataInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - systemProgram?: Address; - tokenProgram?: Address; - args: AddMetadataInstructionDataArgs['args']; -}; - -export function getAddMetadataInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: AddMetadataInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - > -): AddMetadataInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getAddMetadataInstructionDataEncoder().encode( - args as AddMetadataInstructionDataArgs - ), - } as AddMetadataInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedAddMetadataInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - mint: TAccountMetas[2]; - systemProgram: TAccountMetas[3]; - tokenProgram: TAccountMetas[4]; - }; - data: AddMetadataInstructionData; -}; - -export function parseAddMetadataInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedAddMetadataInstruction { - if (instruction.accounts.length < 5) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - mint: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getAddMetadataInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/addMintToGroup.ts b/clients/js/wen_new_standard/src/generated/instructions/addMintToGroup.ts deleted file mode 100644 index b8e8b6c2..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/addMintToGroup.ts +++ /dev/null @@ -1,413 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type AddMintToGroupInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountGroup extends string | IAccountMeta = string, - TAccountMember extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountGroup extends string - ? WritableAccount - : TAccountGroup, - TAccountMember extends string - ? WritableAccount - : TAccountMember, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type AddMintToGroupInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type AddMintToGroupInstructionDataArgs = {}; - -export function getAddMintToGroupInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([236, 25, 99, 48, 185, 60, 235, 112]), - }) - ); -} - -export function getAddMintToGroupInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getAddMintToGroupInstructionDataCodec(): Codec< - AddMintToGroupInstructionDataArgs, - AddMintToGroupInstructionData -> { - return combineCodec( - getAddMintToGroupInstructionDataEncoder(), - getAddMintToGroupInstructionDataDecoder() - ); -} - -export type AddMintToGroupAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountGroup extends string = string, - TAccountMember extends string = string, - TAccountMint extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - group: Address; - member?: Address; - mint: Address; - manager?: Address; - systemProgram?: Address; - tokenProgram?: Address; -}; - -export async function getAddMintToGroupInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountGroup extends string, - TAccountMember extends string, - TAccountMint extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: AddMintToGroupAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - > -): Promise< - AddMintToGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - member: { value: input.member ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.member.value) { - accounts.member.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode(new Uint8Array([109, 101, 109, 98, 101, 114])), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.group), - getAccountMeta(accounts.member), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getAddMintToGroupInstructionDataEncoder().encode({}), - } as AddMintToGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type AddMintToGroupInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountGroup extends string = string, - TAccountMember extends string = string, - TAccountMint extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - group: Address; - member: Address; - mint: Address; - manager: Address; - systemProgram?: Address; - tokenProgram?: Address; -}; - -export function getAddMintToGroupInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountGroup extends string, - TAccountMember extends string, - TAccountMint extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: AddMintToGroupInput< - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - > -): AddMintToGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - member: { value: input.member ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.group), - getAccountMeta(accounts.member), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getAddMintToGroupInstructionDataEncoder().encode({}), - } as AddMintToGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedAddMintToGroupInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - group: TAccountMetas[2]; - member: TAccountMetas[3]; - mint: TAccountMetas[4]; - manager: TAccountMetas[5]; - systemProgram: TAccountMetas[6]; - tokenProgram: TAccountMetas[7]; - }; - data: AddMintToGroupInstructionData; -}; - -export function parseAddMintToGroupInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedAddMintToGroupInstruction { - if (instruction.accounts.length < 8) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - group: getNextAccount(), - member: getNextAccount(), - mint: getNextAccount(), - manager: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getAddMintToGroupInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/addRoyalties.ts b/clients/js/wen_new_standard/src/generated/instructions/addRoyalties.ts deleted file mode 100644 index de99275d..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/addRoyalties.ts +++ /dev/null @@ -1,393 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; -import { - getUpdateRoyaltiesArgsDecoder, - getUpdateRoyaltiesArgsEncoder, - type UpdateRoyaltiesArgs, - type UpdateRoyaltiesArgsArgs, -} from '../types'; - -export type AddRoyaltiesInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountExtraMetasAccount extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountExtraMetasAccount extends string - ? WritableAccount - : TAccountExtraMetasAccount, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type AddRoyaltiesInstructionData = { - discriminator: ReadonlyUint8Array; - args: UpdateRoyaltiesArgs; -}; - -export type AddRoyaltiesInstructionDataArgs = { args: UpdateRoyaltiesArgsArgs }; - -export function getAddRoyaltiesInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['args', getUpdateRoyaltiesArgsEncoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([195, 251, 126, 230, 187, 134, 168, 210]), - }) - ); -} - -export function getAddRoyaltiesInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['args', getUpdateRoyaltiesArgsDecoder()], - ]); -} - -export function getAddRoyaltiesInstructionDataCodec(): Codec< - AddRoyaltiesInstructionDataArgs, - AddRoyaltiesInstructionData -> { - return combineCodec( - getAddRoyaltiesInstructionDataEncoder(), - getAddRoyaltiesInstructionDataDecoder() - ); -} - -export type AddRoyaltiesAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountExtraMetasAccount extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - extraMetasAccount?: Address; - systemProgram?: Address; - tokenProgram?: Address; - args: AddRoyaltiesInstructionDataArgs['args']; -}; - -export async function getAddRoyaltiesInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountExtraMetasAccount extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: AddRoyaltiesAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountExtraMetasAccount, - TAccountSystemProgram, - TAccountTokenProgram - > -): Promise< - AddRoyaltiesInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountExtraMetasAccount, - TAccountSystemProgram, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.extraMetasAccount.value) { - accounts.extraMetasAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 101, 120, 116, 114, 97, 45, 97, 99, 99, 111, 117, 110, 116, 45, 109, - 101, 116, 97, 115, - ]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getAddRoyaltiesInstructionDataEncoder().encode( - args as AddRoyaltiesInstructionDataArgs - ), - } as AddRoyaltiesInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountExtraMetasAccount, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type AddRoyaltiesInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountExtraMetasAccount extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - extraMetasAccount: Address; - systemProgram?: Address; - tokenProgram?: Address; - args: AddRoyaltiesInstructionDataArgs['args']; -}; - -export function getAddRoyaltiesInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountExtraMetasAccount extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: AddRoyaltiesInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountExtraMetasAccount, - TAccountSystemProgram, - TAccountTokenProgram - > -): AddRoyaltiesInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountExtraMetasAccount, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getAddRoyaltiesInstructionDataEncoder().encode( - args as AddRoyaltiesInstructionDataArgs - ), - } as AddRoyaltiesInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountExtraMetasAccount, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedAddRoyaltiesInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - mint: TAccountMetas[2]; - extraMetasAccount: TAccountMetas[3]; - systemProgram: TAccountMetas[4]; - tokenProgram: TAccountMetas[5]; - }; - data: AddRoyaltiesInstructionData; -}; - -export function parseAddRoyaltiesInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedAddRoyaltiesInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - mint: getNextAccount(), - extraMetasAccount: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getAddRoyaltiesInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/approveTransfer.ts b/clients/js/wen_new_standard/src/generated/instructions/approveTransfer.ts deleted file mode 100644 index 6f2e5f6d..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/approveTransfer.ts +++ /dev/null @@ -1,562 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type ApproveTransferInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountApproveAccount extends string | IAccountMeta = string, - TAccountPaymentMint extends string | IAccountMeta = string, - TAccountDistributionTokenAccount extends - | string - | IAccountMeta = string, - TAccountAuthorityTokenAccount extends string | IAccountMeta = string, - TAccountDistributionAccount extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountDistributionProgram extends - | string - | IAccountMeta = 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TAccountPaymentTokenProgram extends string | IAccountMeta = string, - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountApproveAccount extends string - ? WritableAccount - : TAccountApproveAccount, - TAccountPaymentMint extends string - ? ReadonlyAccount - : TAccountPaymentMint, - TAccountDistributionTokenAccount extends string - ? WritableAccount - : TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount extends string - ? WritableAccount - : TAccountAuthorityTokenAccount, - TAccountDistributionAccount extends string - ? WritableAccount - : TAccountDistributionAccount, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountDistributionProgram extends string - ? ReadonlyAccount - : TAccountDistributionProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountPaymentTokenProgram extends string - ? ReadonlyAccount - : TAccountPaymentTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type ApproveTransferInstructionData = { - discriminator: ReadonlyUint8Array; - buyAmount: bigint; -}; - -export type ApproveTransferInstructionDataArgs = { buyAmount: number | bigint }; - -export function getApproveTransferInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['buyAmount', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([198, 217, 247, 150, 208, 60, 169, 244]), - }) - ); -} - -export function getApproveTransferInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['buyAmount', getU64Decoder()], - ]); -} - -export function getApproveTransferInstructionDataCodec(): Codec< - ApproveTransferInstructionDataArgs, - ApproveTransferInstructionData -> { - return combineCodec( - getApproveTransferInstructionDataEncoder(), - getApproveTransferInstructionDataDecoder() - ); -} - -export type ApproveTransferAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountApproveAccount extends string = string, - TAccountPaymentMint extends string = string, - TAccountDistributionTokenAccount extends string = string, - TAccountAuthorityTokenAccount extends string = string, - TAccountDistributionAccount extends string = string, - TAccountSystemProgram extends string = string, - TAccountDistributionProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountPaymentTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - approveAccount?: Address; - paymentMint: Address; - distributionTokenAccount?: Address; - authorityTokenAccount?: Address; - distributionAccount: Address; - systemProgram?: Address; - distributionProgram?: Address; - tokenProgram?: Address; - paymentTokenProgram?: Address; - buyAmount: ApproveTransferInstructionDataArgs['buyAmount']; -}; - -export async function getApproveTransferInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountApproveAccount extends string, - TAccountPaymentMint extends string, - TAccountDistributionTokenAccount extends string, - TAccountAuthorityTokenAccount extends string, - TAccountDistributionAccount extends string, - TAccountSystemProgram extends string, - TAccountDistributionProgram extends string, - TAccountTokenProgram extends string, - TAccountPaymentTokenProgram extends string, ->( - input: ApproveTransferAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountApproveAccount, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountDistributionAccount, - TAccountSystemProgram, - TAccountDistributionProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram - > -): Promise< - ApproveTransferInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountApproveAccount, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountDistributionAccount, - TAccountSystemProgram, - TAccountDistributionProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: false }, - approveAccount: { value: input.approveAccount ?? null, isWritable: true }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - distributionTokenAccount: { - value: input.distributionTokenAccount ?? null, - isWritable: true, - }, - authorityTokenAccount: { - value: input.authorityTokenAccount ?? null, - isWritable: true, - }, - distributionAccount: { - value: input.distributionAccount ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - distributionProgram: { - value: input.distributionProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - paymentTokenProgram: { - value: input.paymentTokenProgram ?? null, - isWritable: false, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.approveAccount.value) { - accounts.approveAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 97, 112, 112, 114, 111, 118, 101, 45, 97, 99, 99, 111, 117, 110, - 116, - ]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.distributionProgram.value) { - accounts.distributionProgram.value = - 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay' as Address<'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.approveAccount), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.distributionTokenAccount), - getAccountMeta(accounts.authorityTokenAccount), - getAccountMeta(accounts.distributionAccount), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.distributionProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.paymentTokenProgram), - ], - programAddress, - data: getApproveTransferInstructionDataEncoder().encode( - args as ApproveTransferInstructionDataArgs - ), - } as ApproveTransferInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountApproveAccount, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountDistributionAccount, - TAccountSystemProgram, - TAccountDistributionProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram - >; - - return instruction; -} - -export type ApproveTransferInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountApproveAccount extends string = string, - TAccountPaymentMint extends string = string, - TAccountDistributionTokenAccount extends string = string, - TAccountAuthorityTokenAccount extends string = string, - TAccountDistributionAccount extends string = string, - TAccountSystemProgram extends string = string, - TAccountDistributionProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountPaymentTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - approveAccount: Address; - paymentMint: Address; - distributionTokenAccount?: Address; - authorityTokenAccount?: Address; - distributionAccount: Address; - systemProgram?: Address; - distributionProgram?: Address; - tokenProgram?: Address; - paymentTokenProgram?: Address; - buyAmount: ApproveTransferInstructionDataArgs['buyAmount']; -}; - -export function getApproveTransferInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountApproveAccount extends string, - TAccountPaymentMint extends string, - TAccountDistributionTokenAccount extends string, - TAccountAuthorityTokenAccount extends string, - TAccountDistributionAccount extends string, - TAccountSystemProgram extends string, - TAccountDistributionProgram extends string, - TAccountTokenProgram extends string, - TAccountPaymentTokenProgram extends string, ->( - input: ApproveTransferInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountApproveAccount, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountDistributionAccount, - TAccountSystemProgram, - TAccountDistributionProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram - > -): ApproveTransferInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountApproveAccount, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountDistributionAccount, - TAccountSystemProgram, - TAccountDistributionProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: false }, - approveAccount: { value: input.approveAccount ?? null, isWritable: true }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - distributionTokenAccount: { - value: input.distributionTokenAccount ?? null, - isWritable: true, - }, - authorityTokenAccount: { - value: input.authorityTokenAccount ?? null, - isWritable: true, - }, - distributionAccount: { - value: input.distributionAccount ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - distributionProgram: { - value: input.distributionProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - paymentTokenProgram: { - value: input.paymentTokenProgram ?? null, - isWritable: false, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.distributionProgram.value) { - accounts.distributionProgram.value = - 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay' as Address<'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.approveAccount), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.distributionTokenAccount), - getAccountMeta(accounts.authorityTokenAccount), - getAccountMeta(accounts.distributionAccount), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.distributionProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.paymentTokenProgram), - ], - programAddress, - data: getApproveTransferInstructionDataEncoder().encode( - args as ApproveTransferInstructionDataArgs - ), - } as ApproveTransferInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountApproveAccount, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountDistributionAccount, - TAccountSystemProgram, - TAccountDistributionProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram - >; - - return instruction; -} - -export type ParsedApproveTransferInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - mint: TAccountMetas[2]; - approveAccount: TAccountMetas[3]; - paymentMint: TAccountMetas[4]; - distributionTokenAccount?: TAccountMetas[5] | undefined; - authorityTokenAccount?: TAccountMetas[6] | undefined; - distributionAccount: TAccountMetas[7]; - systemProgram: TAccountMetas[8]; - distributionProgram: TAccountMetas[9]; - tokenProgram: TAccountMetas[10]; - paymentTokenProgram?: TAccountMetas[11] | undefined; - }; - data: ApproveTransferInstructionData; -}; - -export function parseApproveTransferInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedApproveTransferInstruction { - if (instruction.accounts.length < 12) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - const getNextOptionalAccount = () => { - const accountMeta = getNextAccount(); - return accountMeta.address === WEN_NEW_STANDARD_PROGRAM_ADDRESS - ? undefined - : accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - mint: getNextAccount(), - approveAccount: getNextAccount(), - paymentMint: getNextAccount(), - distributionTokenAccount: getNextOptionalAccount(), - authorityTokenAccount: getNextOptionalAccount(), - distributionAccount: getNextAccount(), - systemProgram: getNextAccount(), - distributionProgram: getNextAccount(), - tokenProgram: getNextAccount(), - paymentTokenProgram: getNextOptionalAccount(), - }, - data: getApproveTransferInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/burnMintAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/burnMintAccount.ts deleted file mode 100644 index fc17c376..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/burnMintAccount.ts +++ /dev/null @@ -1,365 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type BurnMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountUser extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountMintTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountUser extends string - ? ReadonlySignerAccount & IAccountSignerMeta - : TAccountUser, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountMintTokenAccount extends string - ? WritableAccount - : TAccountMintTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type BurnMintAccountInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type BurnMintAccountInstructionDataArgs = {}; - -export function getBurnMintAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([60, 58, 247, 183, 185, 54, 114, 131]), - }) - ); -} - -export function getBurnMintAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getBurnMintAccountInstructionDataCodec(): Codec< - BurnMintAccountInstructionDataArgs, - BurnMintAccountInstructionData -> { - return combineCodec( - getBurnMintAccountInstructionDataEncoder(), - getBurnMintAccountInstructionDataDecoder() - ); -} - -export type BurnMintAccountAsyncInput< - TAccountPayer extends string = string, - TAccountUser extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - user: TransactionSigner; - mint: Address; - mintTokenAccount?: Address; - manager?: Address; - tokenProgram?: Address; -}; - -export async function getBurnMintAccountInstructionAsync< - TAccountPayer extends string, - TAccountUser extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountTokenProgram extends string, ->( - input: BurnMintAccountAsyncInput< - TAccountPayer, - TAccountUser, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -): Promise< - BurnMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountUser, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - user: { value: input.user ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.mintTokenAccount.value) { - accounts.mintTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.user.value)), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.user), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getBurnMintAccountInstructionDataEncoder().encode({}), - } as BurnMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountUser, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - >; - - return instruction; -} - -export type BurnMintAccountInput< - TAccountPayer extends string = string, - TAccountUser extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - user: TransactionSigner; - mint: Address; - mintTokenAccount: Address; - manager: Address; - tokenProgram?: Address; -}; - -export function getBurnMintAccountInstruction< - TAccountPayer extends string, - TAccountUser extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountTokenProgram extends string, ->( - input: BurnMintAccountInput< - TAccountPayer, - TAccountUser, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -): BurnMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountUser, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - user: { value: input.user ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.user), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getBurnMintAccountInstructionDataEncoder().encode({}), - } as BurnMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountUser, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedBurnMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - user: TAccountMetas[1]; - mint: TAccountMetas[2]; - mintTokenAccount: TAccountMetas[3]; - manager: TAccountMetas[4]; - tokenProgram: TAccountMetas[5]; - }; - data: BurnMintAccountInstructionData; -}; - -export function parseBurnMintAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedBurnMintAccountInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - user: getNextAccount(), - mint: getNextAccount(), - mintTokenAccount: getNextAccount(), - manager: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getBurnMintAccountInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/createGroupAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/createGroupAccount.ts deleted file mode 100644 index fb4df1f1..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/createGroupAccount.ts +++ /dev/null @@ -1,534 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type CreateGroupAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountReceiver extends string | IAccountMeta = string, - TAccountGroup extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountMintTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountAssociatedTokenProgram extends - | string - | IAccountMeta = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountReceiver extends string - ? ReadonlyAccount - : TAccountReceiver, - TAccountGroup extends string - ? WritableAccount - : TAccountGroup, - TAccountMint extends string - ? WritableSignerAccount & IAccountSignerMeta - : TAccountMint, - TAccountMintTokenAccount extends string - ? WritableAccount - : TAccountMintTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountAssociatedTokenProgram extends string - ? ReadonlyAccount - : TAccountAssociatedTokenProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type CreateGroupAccountInstructionData = { - discriminator: ReadonlyUint8Array; - name: string; - symbol: string; - uri: string; - maxSize: number; -}; - -export type CreateGroupAccountInstructionDataArgs = { - name: string; - symbol: string; - uri: string; - maxSize: number; -}; - -export function getCreateGroupAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['maxSize', getU32Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([34, 65, 118, 12, 64, 190, 211, 145]), - }) - ); -} - -export function getCreateGroupAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['maxSize', getU32Decoder()], - ]); -} - -export function getCreateGroupAccountInstructionDataCodec(): Codec< - CreateGroupAccountInstructionDataArgs, - CreateGroupAccountInstructionData -> { - return combineCodec( - getCreateGroupAccountInstructionDataEncoder(), - getCreateGroupAccountInstructionDataDecoder() - ); -} - -export type CreateGroupAccountAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountReceiver extends string = string, - TAccountGroup extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - receiver: Address; - group?: Address; - mint: TransactionSigner; - mintTokenAccount?: Address; - manager?: Address; - systemProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - name: CreateGroupAccountInstructionDataArgs['name']; - symbol: CreateGroupAccountInstructionDataArgs['symbol']; - uri: CreateGroupAccountInstructionDataArgs['uri']; - maxSize: CreateGroupAccountInstructionDataArgs['maxSize']; -}; - -export async function getCreateGroupAccountInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountReceiver extends string, - TAccountGroup extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, ->( - input: CreateGroupAccountAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountGroup, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - > -): Promise< - CreateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountGroup, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - receiver: { value: input.receiver ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.group.value) { - accounts.group.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode(new Uint8Array([103, 114, 111, 117, 112])), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.mintTokenAccount.value) { - accounts.mintTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.receiver.value)), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.receiver), - getAccountMeta(accounts.group), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getCreateGroupAccountInstructionDataEncoder().encode( - args as CreateGroupAccountInstructionDataArgs - ), - } as CreateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountGroup, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type CreateGroupAccountInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountReceiver extends string = string, - TAccountGroup extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - receiver: Address; - group: Address; - mint: TransactionSigner; - mintTokenAccount: Address; - manager: Address; - systemProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - name: CreateGroupAccountInstructionDataArgs['name']; - symbol: CreateGroupAccountInstructionDataArgs['symbol']; - uri: CreateGroupAccountInstructionDataArgs['uri']; - maxSize: CreateGroupAccountInstructionDataArgs['maxSize']; -}; - -export function getCreateGroupAccountInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountReceiver extends string, - TAccountGroup extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, ->( - input: CreateGroupAccountInput< - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountGroup, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - > -): CreateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountGroup, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - receiver: { value: input.receiver ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.receiver), - getAccountMeta(accounts.group), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getCreateGroupAccountInstructionDataEncoder().encode( - args as CreateGroupAccountInstructionDataArgs - ), - } as CreateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountGroup, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedCreateGroupAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - receiver: TAccountMetas[2]; - group: TAccountMetas[3]; - mint: TAccountMetas[4]; - mintTokenAccount: TAccountMetas[5]; - manager: TAccountMetas[6]; - systemProgram: TAccountMetas[7]; - associatedTokenProgram: TAccountMetas[8]; - tokenProgram: TAccountMetas[9]; - }; - data: CreateGroupAccountInstructionData; -}; - -export function parseCreateGroupAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedCreateGroupAccountInstruction { - if (instruction.accounts.length < 10) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - receiver: getNextAccount(), - group: getNextAccount(), - mint: getNextAccount(), - mintTokenAccount: getNextAccount(), - manager: getNextAccount(), - systemProgram: getNextAccount(), - associatedTokenProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getCreateGroupAccountInstructionDataDecoder().decode( - instruction.data - ), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/createMintAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/createMintAccount.ts deleted file mode 100644 index 53241a32..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/createMintAccount.ts +++ /dev/null @@ -1,506 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getOptionDecoder, - getOptionEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type Option, - type OptionOrNullable, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type CreateMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountReceiver extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountMintTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountAssociatedTokenProgram extends - | string - | IAccountMeta = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountReceiver extends string - ? ReadonlyAccount - : TAccountReceiver, - TAccountMint extends string - ? WritableSignerAccount & IAccountSignerMeta - : TAccountMint, - TAccountMintTokenAccount extends string - ? WritableAccount - : TAccountMintTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountAssociatedTokenProgram extends string - ? ReadonlyAccount - : TAccountAssociatedTokenProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type CreateMintAccountInstructionData = { - discriminator: ReadonlyUint8Array; - name: string; - symbol: string; - uri: string; - permanentDelegate: Option
; -}; - -export type CreateMintAccountInstructionDataArgs = { - name: string; - symbol: string; - uri: string; - permanentDelegate: OptionOrNullable
; -}; - -export function getCreateMintAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['permanentDelegate', getOptionEncoder(getAddressEncoder())], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([76, 184, 50, 62, 162, 141, 47, 103]), - }) - ); -} - -export function getCreateMintAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['permanentDelegate', getOptionDecoder(getAddressDecoder())], - ]); -} - -export function getCreateMintAccountInstructionDataCodec(): Codec< - CreateMintAccountInstructionDataArgs, - CreateMintAccountInstructionData -> { - return combineCodec( - getCreateMintAccountInstructionDataEncoder(), - getCreateMintAccountInstructionDataDecoder() - ); -} - -export type CreateMintAccountAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountReceiver extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - receiver: Address; - mint: TransactionSigner; - mintTokenAccount?: Address; - manager?: Address; - systemProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - name: CreateMintAccountInstructionDataArgs['name']; - symbol: CreateMintAccountInstructionDataArgs['symbol']; - uri: CreateMintAccountInstructionDataArgs['uri']; - permanentDelegate: CreateMintAccountInstructionDataArgs['permanentDelegate']; -}; - -export async function getCreateMintAccountInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountReceiver extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, ->( - input: CreateMintAccountAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - > -): Promise< - CreateMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - receiver: { value: input.receiver ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.mintTokenAccount.value) { - accounts.mintTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.receiver.value)), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.receiver), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getCreateMintAccountInstructionDataEncoder().encode( - args as CreateMintAccountInstructionDataArgs - ), - } as CreateMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type CreateMintAccountInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountReceiver extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - receiver: Address; - mint: TransactionSigner; - mintTokenAccount: Address; - manager: Address; - systemProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - name: CreateMintAccountInstructionDataArgs['name']; - symbol: CreateMintAccountInstructionDataArgs['symbol']; - uri: CreateMintAccountInstructionDataArgs['uri']; - permanentDelegate: CreateMintAccountInstructionDataArgs['permanentDelegate']; -}; - -export function getCreateMintAccountInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountReceiver extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, ->( - input: CreateMintAccountInput< - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - > -): CreateMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - receiver: { value: input.receiver ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.receiver), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getCreateMintAccountInstructionDataEncoder().encode( - args as CreateMintAccountInstructionDataArgs - ), - } as CreateMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountReceiver, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountSystemProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedCreateMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - receiver: TAccountMetas[2]; - mint: TAccountMetas[3]; - mintTokenAccount: TAccountMetas[4]; - manager: TAccountMetas[5]; - systemProgram: TAccountMetas[6]; - associatedTokenProgram: TAccountMetas[7]; - tokenProgram: TAccountMetas[8]; - }; - data: CreateMintAccountInstructionData; -}; - -export function parseCreateMintAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedCreateMintAccountInstruction { - if (instruction.accounts.length < 9) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - receiver: getNextAccount(), - mint: getNextAccount(), - mintTokenAccount: getNextAccount(), - manager: getNextAccount(), - systemProgram: getNextAccount(), - associatedTokenProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getCreateMintAccountInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/execute.ts b/clients/js/wen_new_standard/src/generated/instructions/execute.ts deleted file mode 100644 index 59614094..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/execute.ts +++ /dev/null @@ -1,344 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type ExecuteInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountSourceAccount extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountDestinationAccount extends string | IAccountMeta = string, - TAccountOwnerDelegate extends string | IAccountMeta = string, - TAccountExtraMetasAccount extends string | IAccountMeta = string, - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountSourceAccount extends string - ? ReadonlyAccount - : TAccountSourceAccount, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountDestinationAccount extends string - ? ReadonlyAccount - : TAccountDestinationAccount, - TAccountOwnerDelegate extends string - ? ReadonlyAccount - : TAccountOwnerDelegate, - TAccountExtraMetasAccount extends string - ? ReadonlyAccount - : TAccountExtraMetasAccount, - ...TRemainingAccounts, - ] - >; - -export type ExecuteInstructionData = { - discriminator: ReadonlyUint8Array; - amount: bigint; -}; - -export type ExecuteInstructionDataArgs = { amount: number | bigint }; - -export function getExecuteInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['amount', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([105, 37, 101, 197, 75, 251, 102, 26]), - }) - ); -} - -export function getExecuteInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['amount', getU64Decoder()], - ]); -} - -export function getExecuteInstructionDataCodec(): Codec< - ExecuteInstructionDataArgs, - ExecuteInstructionData -> { - return combineCodec( - getExecuteInstructionDataEncoder(), - getExecuteInstructionDataDecoder() - ); -} - -export type ExecuteAsyncInput< - TAccountSourceAccount extends string = string, - TAccountMint extends string = string, - TAccountDestinationAccount extends string = string, - TAccountOwnerDelegate extends string = string, - TAccountExtraMetasAccount extends string = string, -> = { - sourceAccount: Address; - mint: Address; - destinationAccount: Address; - ownerDelegate: Address; - extraMetasAccount?: Address; - amount: ExecuteInstructionDataArgs['amount']; -}; - -export async function getExecuteInstructionAsync< - TAccountSourceAccount extends string, - TAccountMint extends string, - TAccountDestinationAccount extends string, - TAccountOwnerDelegate extends string, - TAccountExtraMetasAccount extends string, ->( - input: ExecuteAsyncInput< - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount - > -): Promise< - ExecuteInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - sourceAccount: { value: input.sourceAccount ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: false }, - destinationAccount: { - value: input.destinationAccount ?? null, - isWritable: false, - }, - ownerDelegate: { value: input.ownerDelegate ?? null, isWritable: false }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: false, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.extraMetasAccount.value) { - accounts.extraMetasAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 101, 120, 116, 114, 97, 45, 97, 99, 99, 111, 117, 110, 116, 45, 109, - 101, 116, 97, 115, - ]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.sourceAccount), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.destinationAccount), - getAccountMeta(accounts.ownerDelegate), - getAccountMeta(accounts.extraMetasAccount), - ], - programAddress, - data: getExecuteInstructionDataEncoder().encode( - args as ExecuteInstructionDataArgs - ), - } as ExecuteInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount - >; - - return instruction; -} - -export type ExecuteInput< - TAccountSourceAccount extends string = string, - TAccountMint extends string = string, - TAccountDestinationAccount extends string = string, - TAccountOwnerDelegate extends string = string, - TAccountExtraMetasAccount extends string = string, -> = { - sourceAccount: Address; - mint: Address; - destinationAccount: Address; - ownerDelegate: Address; - extraMetasAccount: Address; - amount: ExecuteInstructionDataArgs['amount']; -}; - -export function getExecuteInstruction< - TAccountSourceAccount extends string, - TAccountMint extends string, - TAccountDestinationAccount extends string, - TAccountOwnerDelegate extends string, - TAccountExtraMetasAccount extends string, ->( - input: ExecuteInput< - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount - > -): ExecuteInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - sourceAccount: { value: input.sourceAccount ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: false }, - destinationAccount: { - value: input.destinationAccount ?? null, - isWritable: false, - }, - ownerDelegate: { value: input.ownerDelegate ?? null, isWritable: false }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: false, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.sourceAccount), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.destinationAccount), - getAccountMeta(accounts.ownerDelegate), - getAccountMeta(accounts.extraMetasAccount), - ], - programAddress, - data: getExecuteInstructionDataEncoder().encode( - args as ExecuteInstructionDataArgs - ), - } as ExecuteInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount - >; - - return instruction; -} - -export type ParsedExecuteInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - sourceAccount: TAccountMetas[0]; - mint: TAccountMetas[1]; - destinationAccount: TAccountMetas[2]; - ownerDelegate: TAccountMetas[3]; - extraMetasAccount: TAccountMetas[4]; - }; - data: ExecuteInstructionData; -}; - -export function parseExecuteInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedExecuteInstruction { - if (instruction.accounts.length < 5) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - sourceAccount: getNextAccount(), - mint: getNextAccount(), - destinationAccount: getNextAccount(), - ownerDelegate: getNextAccount(), - extraMetasAccount: getNextAccount(), - }, - data: getExecuteInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/freezeMintAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/freezeMintAccount.ts deleted file mode 100644 index 98866144..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/freezeMintAccount.ts +++ /dev/null @@ -1,370 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type FreezeMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser extends string | IAccountMeta = string, - TAccountDelegateAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountMintTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountUser extends string - ? ReadonlyAccount - : TAccountUser, - TAccountDelegateAuthority extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountDelegateAuthority, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountMintTokenAccount extends string - ? WritableAccount - : TAccountMintTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type FreezeMintAccountInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type FreezeMintAccountInstructionDataArgs = {}; - -export function getFreezeMintAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([171, 30, 154, 191, 27, 0, 134, 216]), - }) - ); -} - -export function getFreezeMintAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getFreezeMintAccountInstructionDataCodec(): Codec< - FreezeMintAccountInstructionDataArgs, - FreezeMintAccountInstructionData -> { - return combineCodec( - getFreezeMintAccountInstructionDataEncoder(), - getFreezeMintAccountInstructionDataDecoder() - ); -} - -export type FreezeMintAccountAsyncInput< - TAccountUser extends string = string, - TAccountDelegateAuthority extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountTokenProgram extends string = string, -> = { - user: Address; - delegateAuthority: TransactionSigner; - mint: Address; - mintTokenAccount?: Address; - manager?: Address; - tokenProgram?: Address; -}; - -export async function getFreezeMintAccountInstructionAsync< - TAccountUser extends string, - TAccountDelegateAuthority extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountTokenProgram extends string, ->( - input: FreezeMintAccountAsyncInput< - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -): Promise< - FreezeMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - user: { value: input.user ?? null, isWritable: false }, - delegateAuthority: { - value: input.delegateAuthority ?? null, - isWritable: true, - }, - mint: { value: input.mint ?? null, isWritable: false }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.mintTokenAccount.value) { - accounts.mintTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.user.value)), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.user), - getAccountMeta(accounts.delegateAuthority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getFreezeMintAccountInstructionDataEncoder().encode({}), - } as FreezeMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - >; - - return instruction; -} - -export type FreezeMintAccountInput< - TAccountUser extends string = string, - TAccountDelegateAuthority extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountTokenProgram extends string = string, -> = { - user: Address; - delegateAuthority: TransactionSigner; - mint: Address; - mintTokenAccount: Address; - manager: Address; - tokenProgram?: Address; -}; - -export function getFreezeMintAccountInstruction< - TAccountUser extends string, - TAccountDelegateAuthority extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountTokenProgram extends string, ->( - input: FreezeMintAccountInput< - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -): FreezeMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - user: { value: input.user ?? null, isWritable: false }, - delegateAuthority: { - value: input.delegateAuthority ?? null, - isWritable: true, - }, - mint: { value: input.mint ?? null, isWritable: false }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.user), - getAccountMeta(accounts.delegateAuthority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getFreezeMintAccountInstructionDataEncoder().encode({}), - } as FreezeMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedFreezeMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - user: TAccountMetas[0]; - delegateAuthority: TAccountMetas[1]; - mint: TAccountMetas[2]; - mintTokenAccount: TAccountMetas[3]; - manager: TAccountMetas[4]; - tokenProgram: TAccountMetas[5]; - }; - data: FreezeMintAccountInstructionData; -}; - -export function parseFreezeMintAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedFreezeMintAccountInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - user: getNextAccount(), - delegateAuthority: getNextAccount(), - mint: getNextAccount(), - mintTokenAccount: getNextAccount(), - manager: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getFreezeMintAccountInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/index.ts b/clients/js/wen_new_standard/src/generated/instructions/index.ts deleted file mode 100644 index 030ac8d5..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './addMetadata'; -export * from './addMintToGroup'; -export * from './addRoyalties'; -export * from './approveTransfer'; -export * from './burnMintAccount'; -export * from './createGroupAccount'; -export * from './createMintAccount'; -export * from './execute'; -export * from './freezeMintAccount'; -export * from './initManagerAccount'; -export * from './modifyRoyalties'; -export * from './removeMetadata'; -export * from './removeMintFromGroup'; -export * from './thawMintAccount'; -export * from './updateGroupAccount'; diff --git a/clients/js/wen_new_standard/src/generated/instructions/initManagerAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/initManagerAccount.ts deleted file mode 100644 index c64e9f1c..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/initManagerAccount.ts +++ /dev/null @@ -1,279 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; - -export type InitManagerAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountManager extends string - ? WritableAccount - : TAccountManager, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type InitManagerAccountInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type InitManagerAccountInstructionDataArgs = {}; - -export function getInitManagerAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([63, 114, 69, 118, 3, 198, 215, 72]), - }) - ); -} - -export function getInitManagerAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getInitManagerAccountInstructionDataCodec(): Codec< - InitManagerAccountInstructionDataArgs, - InitManagerAccountInstructionData -> { - return combineCodec( - getInitManagerAccountInstructionDataEncoder(), - getInitManagerAccountInstructionDataDecoder() - ); -} - -export type InitManagerAccountAsyncInput< - TAccountPayer extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - manager?: Address; - systemProgram?: Address; -}; - -export async function getInitManagerAccountInstructionAsync< - TAccountPayer extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, ->( - input: InitManagerAccountAsyncInput< - TAccountPayer, - TAccountManager, - TAccountSystemProgram - > -): Promise< - InitManagerAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountManager, - TAccountSystemProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getInitManagerAccountInstructionDataEncoder().encode({}), - } as InitManagerAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountManager, - TAccountSystemProgram - >; - - return instruction; -} - -export type InitManagerAccountInput< - TAccountPayer extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - manager: Address; - systemProgram?: Address; -}; - -export function getInitManagerAccountInstruction< - TAccountPayer extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, ->( - input: InitManagerAccountInput< - TAccountPayer, - TAccountManager, - TAccountSystemProgram - > -): InitManagerAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountManager, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getInitManagerAccountInstructionDataEncoder().encode({}), - } as InitManagerAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountManager, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedInitManagerAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - manager: TAccountMetas[1]; - systemProgram: TAccountMetas[2]; - }; - data: InitManagerAccountInstructionData; -}; - -export function parseInitManagerAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedInitManagerAccountInstruction { - if (instruction.accounts.length < 3) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - manager: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getInitManagerAccountInstructionDataDecoder().decode( - instruction.data - ), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/modifyRoyalties.ts b/clients/js/wen_new_standard/src/generated/instructions/modifyRoyalties.ts deleted file mode 100644 index 5f723d52..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/modifyRoyalties.ts +++ /dev/null @@ -1,254 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; -import { - getUpdateRoyaltiesArgsDecoder, - getUpdateRoyaltiesArgsEncoder, - type UpdateRoyaltiesArgs, - type UpdateRoyaltiesArgsArgs, -} from '../types'; - -export type ModifyRoyaltiesInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type ModifyRoyaltiesInstructionData = { - discriminator: ReadonlyUint8Array; - args: UpdateRoyaltiesArgs; -}; - -export type ModifyRoyaltiesInstructionDataArgs = { - args: UpdateRoyaltiesArgsArgs; -}; - -export function getModifyRoyaltiesInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['args', getUpdateRoyaltiesArgsEncoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([199, 95, 20, 107, 136, 161, 93, 137]), - }) - ); -} - -export function getModifyRoyaltiesInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['args', getUpdateRoyaltiesArgsDecoder()], - ]); -} - -export function getModifyRoyaltiesInstructionDataCodec(): Codec< - ModifyRoyaltiesInstructionDataArgs, - ModifyRoyaltiesInstructionData -> { - return combineCodec( - getModifyRoyaltiesInstructionDataEncoder(), - getModifyRoyaltiesInstructionDataDecoder() - ); -} - -export type ModifyRoyaltiesInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - systemProgram?: Address; - tokenProgram?: Address; - args: ModifyRoyaltiesInstructionDataArgs['args']; -}; - -export function getModifyRoyaltiesInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: ModifyRoyaltiesInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - > -): ModifyRoyaltiesInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getModifyRoyaltiesInstructionDataEncoder().encode( - args as ModifyRoyaltiesInstructionDataArgs - ), - } as ModifyRoyaltiesInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedModifyRoyaltiesInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - mint: TAccountMetas[2]; - systemProgram: TAccountMetas[3]; - tokenProgram: TAccountMetas[4]; - }; - data: ModifyRoyaltiesInstructionData; -}; - -export function parseModifyRoyaltiesInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedModifyRoyaltiesInstruction { - if (instruction.accounts.length < 5) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - mint: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getModifyRoyaltiesInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/removeMetadata.ts b/clients/js/wen_new_standard/src/generated/instructions/removeMetadata.ts deleted file mode 100644 index 94e644f4..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/removeMetadata.ts +++ /dev/null @@ -1,256 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; -import { - getRemoveMetadataArgsDecoder, - getRemoveMetadataArgsEncoder, - type RemoveMetadataArgs, - type RemoveMetadataArgsArgs, -} from '../types'; - -export type RemoveMetadataInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type RemoveMetadataInstructionData = { - discriminator: ReadonlyUint8Array; - args: Array; -}; - -export type RemoveMetadataInstructionDataArgs = { - args: Array; -}; - -export function getRemoveMetadataInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['args', getArrayEncoder(getRemoveMetadataArgsEncoder())], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([81, 68, 231, 49, 91, 8, 111, 160]), - }) - ); -} - -export function getRemoveMetadataInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['args', getArrayDecoder(getRemoveMetadataArgsDecoder())], - ]); -} - -export function getRemoveMetadataInstructionDataCodec(): Codec< - RemoveMetadataInstructionDataArgs, - RemoveMetadataInstructionData -> { - return combineCodec( - getRemoveMetadataInstructionDataEncoder(), - getRemoveMetadataInstructionDataDecoder() - ); -} - -export type RemoveMetadataInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - mint: Address; - systemProgram?: Address; - tokenProgram?: Address; - args: RemoveMetadataInstructionDataArgs['args']; -}; - -export function getRemoveMetadataInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountMint extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: RemoveMetadataInput< - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - > -): RemoveMetadataInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getRemoveMetadataInstructionDataEncoder().encode( - args as RemoveMetadataInstructionDataArgs - ), - } as RemoveMetadataInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedRemoveMetadataInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - mint: TAccountMetas[2]; - systemProgram: TAccountMetas[3]; - tokenProgram: TAccountMetas[4]; - }; - data: RemoveMetadataInstructionData; -}; - -export function parseRemoveMetadataInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedRemoveMetadataInstruction { - if (instruction.accounts.length < 5) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - mint: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getRemoveMetadataInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/removeMintFromGroup.ts b/clients/js/wen_new_standard/src/generated/instructions/removeMintFromGroup.ts deleted file mode 100644 index 2362514d..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/removeMintFromGroup.ts +++ /dev/null @@ -1,415 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type RemoveMintFromGroupInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountGroup extends string | IAccountMeta = string, - TAccountMember extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountGroup extends string - ? WritableAccount - : TAccountGroup, - TAccountMember extends string - ? WritableAccount - : TAccountMember, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type RemoveMintFromGroupInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type RemoveMintFromGroupInstructionDataArgs = {}; - -export function getRemoveMintFromGroupInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([231, 224, 145, 240, 192, 4, 204, 218]), - }) - ); -} - -export function getRemoveMintFromGroupInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getRemoveMintFromGroupInstructionDataCodec(): Codec< - RemoveMintFromGroupInstructionDataArgs, - RemoveMintFromGroupInstructionData -> { - return combineCodec( - getRemoveMintFromGroupInstructionDataEncoder(), - getRemoveMintFromGroupInstructionDataDecoder() - ); -} - -export type RemoveMintFromGroupAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountGroup extends string = string, - TAccountMember extends string = string, - TAccountMint extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - group: Address; - member?: Address; - mint: Address; - manager?: Address; - systemProgram?: Address; - tokenProgram?: Address; -}; - -export async function getRemoveMintFromGroupInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountGroup extends string, - TAccountMember extends string, - TAccountMint extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: RemoveMintFromGroupAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - > -): Promise< - RemoveMintFromGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - member: { value: input.member ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.member.value) { - accounts.member.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode(new Uint8Array([109, 101, 109, 98, 101, 114])), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.group), - getAccountMeta(accounts.member), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getRemoveMintFromGroupInstructionDataEncoder().encode({}), - } as RemoveMintFromGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type RemoveMintFromGroupInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountGroup extends string = string, - TAccountMember extends string = string, - TAccountMint extends string = string, - TAccountManager extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: TransactionSigner; - group: Address; - member: Address; - mint: Address; - manager: Address; - systemProgram?: Address; - tokenProgram?: Address; -}; - -export function getRemoveMintFromGroupInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountGroup extends string, - TAccountMember extends string, - TAccountMint extends string, - TAccountManager extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: RemoveMintFromGroupInput< - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - > -): RemoveMintFromGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - member: { value: input.member ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.group), - getAccountMeta(accounts.member), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getRemoveMintFromGroupInstructionDataEncoder().encode({}), - } as RemoveMintFromGroupInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMember, - TAccountMint, - TAccountManager, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedRemoveMintFromGroupInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - group: TAccountMetas[2]; - member: TAccountMetas[3]; - mint: TAccountMetas[4]; - manager: TAccountMetas[5]; - systemProgram: TAccountMetas[6]; - tokenProgram: TAccountMetas[7]; - }; - data: RemoveMintFromGroupInstructionData; -}; - -export function parseRemoveMintFromGroupInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedRemoveMintFromGroupInstruction { - if (instruction.accounts.length < 8) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - group: getNextAccount(), - member: getNextAccount(), - mint: getNextAccount(), - manager: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getRemoveMintFromGroupInstructionDataDecoder().decode( - instruction.data - ), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/thawMintAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/thawMintAccount.ts deleted file mode 100644 index c955be89..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/thawMintAccount.ts +++ /dev/null @@ -1,370 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type ThawMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser extends string | IAccountMeta = string, - TAccountDelegateAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountMintTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountUser extends string - ? ReadonlyAccount - : TAccountUser, - TAccountDelegateAuthority extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountDelegateAuthority, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountMintTokenAccount extends string - ? WritableAccount - : TAccountMintTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type ThawMintAccountInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type ThawMintAccountInstructionDataArgs = {}; - -export function getThawMintAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([27, 53, 61, 16, 162, 190, 27, 72]), - }) - ); -} - -export function getThawMintAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getThawMintAccountInstructionDataCodec(): Codec< - ThawMintAccountInstructionDataArgs, - ThawMintAccountInstructionData -> { - return combineCodec( - getThawMintAccountInstructionDataEncoder(), - getThawMintAccountInstructionDataDecoder() - ); -} - -export type ThawMintAccountAsyncInput< - TAccountUser extends string = string, - TAccountDelegateAuthority extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountTokenProgram extends string = string, -> = { - user: Address; - delegateAuthority: TransactionSigner; - mint: Address; - mintTokenAccount?: Address; - manager?: Address; - tokenProgram?: Address; -}; - -export async function getThawMintAccountInstructionAsync< - TAccountUser extends string, - TAccountDelegateAuthority extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountTokenProgram extends string, ->( - input: ThawMintAccountAsyncInput< - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -): Promise< - ThawMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - user: { value: input.user ?? null, isWritable: false }, - delegateAuthority: { - value: input.delegateAuthority ?? null, - isWritable: true, - }, - mint: { value: input.mint ?? null, isWritable: false }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.mintTokenAccount.value) { - accounts.mintTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.user.value)), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.manager.value) { - accounts.manager.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 110, 97, 103, 101, 114]) - ), - ], - }); - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.user), - getAccountMeta(accounts.delegateAuthority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getThawMintAccountInstructionDataEncoder().encode({}), - } as ThawMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - >; - - return instruction; -} - -export type ThawMintAccountInput< - TAccountUser extends string = string, - TAccountDelegateAuthority extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountTokenProgram extends string = string, -> = { - user: Address; - delegateAuthority: TransactionSigner; - mint: Address; - mintTokenAccount: Address; - manager: Address; - tokenProgram?: Address; -}; - -export function getThawMintAccountInstruction< - TAccountUser extends string, - TAccountDelegateAuthority extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountManager extends string, - TAccountTokenProgram extends string, ->( - input: ThawMintAccountInput< - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - > -): ThawMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - user: { value: input.user ?? null, isWritable: false }, - delegateAuthority: { - value: input.delegateAuthority ?? null, - isWritable: true, - }, - mint: { value: input.mint ?? null, isWritable: false }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.user), - getAccountMeta(accounts.delegateAuthority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getThawMintAccountInstructionDataEncoder().encode({}), - } as ThawMintAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountUser, - TAccountDelegateAuthority, - TAccountMint, - TAccountMintTokenAccount, - TAccountManager, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedThawMintAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - user: TAccountMetas[0]; - delegateAuthority: TAccountMetas[1]; - mint: TAccountMetas[2]; - mintTokenAccount: TAccountMetas[3]; - manager: TAccountMetas[4]; - tokenProgram: TAccountMetas[5]; - }; - data: ThawMintAccountInstructionData; -}; - -export function parseThawMintAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedThawMintAccountInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - user: getNextAccount(), - delegateAuthority: getNextAccount(), - mint: getNextAccount(), - mintTokenAccount: getNextAccount(), - manager: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getThawMintAccountInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/instructions/updateGroupAccount.ts b/clients/js/wen_new_standard/src/generated/instructions/updateGroupAccount.ts deleted file mode 100644 index 88669945..00000000 --- a/clients/js/wen_new_standard/src/generated/instructions/updateGroupAccount.ts +++ /dev/null @@ -1,402 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_NEW_STANDARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type UpdateGroupAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountAuthority extends string | IAccountMeta = string, - TAccountGroup extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAuthority extends string - ? ReadonlyAccount - : TAccountAuthority, - TAccountGroup extends string - ? WritableAccount - : TAccountGroup, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - ...TRemainingAccounts, - ] - >; - -export type UpdateGroupAccountInstructionData = { - discriminator: ReadonlyUint8Array; - name: string; - symbol: string; - uri: string; - maxSize: number; -}; - -export type UpdateGroupAccountInstructionDataArgs = { - name: string; - symbol: string; - uri: string; - maxSize: number; -}; - -export function getUpdateGroupAccountInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['maxSize', getU32Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([153, 106, 174, 53, 133, 171, 207, 52]), - }) - ); -} - -export function getUpdateGroupAccountInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['maxSize', getU32Decoder()], - ]); -} - -export function getUpdateGroupAccountInstructionDataCodec(): Codec< - UpdateGroupAccountInstructionDataArgs, - UpdateGroupAccountInstructionData -> { - return combineCodec( - getUpdateGroupAccountInstructionDataEncoder(), - getUpdateGroupAccountInstructionDataDecoder() - ); -} - -export type UpdateGroupAccountAsyncInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountGroup extends string = string, - TAccountMint extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: Address; - group?: Address; - mint: Address; - systemProgram?: Address; - tokenProgram?: Address; - name: UpdateGroupAccountInstructionDataArgs['name']; - symbol: UpdateGroupAccountInstructionDataArgs['symbol']; - uri: UpdateGroupAccountInstructionDataArgs['uri']; - maxSize: UpdateGroupAccountInstructionDataArgs['maxSize']; -}; - -export async function getUpdateGroupAccountInstructionAsync< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountGroup extends string, - TAccountMint extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: UpdateGroupAccountAsyncInput< - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - > -): Promise< - UpdateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - > -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.group.value) { - accounts.group.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode(new Uint8Array([103, 114, 111, 117, 112])), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.group), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getUpdateGroupAccountInstructionDataEncoder().encode( - args as UpdateGroupAccountInstructionDataArgs - ), - } as UpdateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type UpdateGroupAccountInput< - TAccountPayer extends string = string, - TAccountAuthority extends string = string, - TAccountGroup extends string = string, - TAccountMint extends string = string, - TAccountSystemProgram extends string = string, - TAccountTokenProgram extends string = string, -> = { - payer: TransactionSigner; - authority: Address; - group: Address; - mint: Address; - systemProgram?: Address; - tokenProgram?: Address; - name: UpdateGroupAccountInstructionDataArgs['name']; - symbol: UpdateGroupAccountInstructionDataArgs['symbol']; - uri: UpdateGroupAccountInstructionDataArgs['uri']; - maxSize: UpdateGroupAccountInstructionDataArgs['maxSize']; -}; - -export function getUpdateGroupAccountInstruction< - TAccountPayer extends string, - TAccountAuthority extends string, - TAccountGroup extends string, - TAccountMint extends string, - TAccountSystemProgram extends string, - TAccountTokenProgram extends string, ->( - input: UpdateGroupAccountInput< - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - > -): UpdateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram -> { - // Program address. - const programAddress = WEN_NEW_STANDARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - authority: { value: input.authority ?? null, isWritable: false }, - group: { value: input.group ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.authority), - getAccountMeta(accounts.group), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.tokenProgram), - ], - programAddress, - data: getUpdateGroupAccountInstructionDataEncoder().encode( - args as UpdateGroupAccountInstructionDataArgs - ), - } as UpdateGroupAccountInstruction< - typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountPayer, - TAccountAuthority, - TAccountGroup, - TAccountMint, - TAccountSystemProgram, - TAccountTokenProgram - >; - - return instruction; -} - -export type ParsedUpdateGroupAccountInstruction< - TProgram extends string = typeof WEN_NEW_STANDARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - authority: TAccountMetas[1]; - group: TAccountMetas[2]; - mint: TAccountMetas[3]; - systemProgram: TAccountMetas[4]; - tokenProgram: TAccountMetas[5]; - }; - data: UpdateGroupAccountInstructionData; -}; - -export function parseUpdateGroupAccountInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedUpdateGroupAccountInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - authority: getNextAccount(), - group: getNextAccount(), - mint: getNextAccount(), - systemProgram: getNextAccount(), - tokenProgram: getNextAccount(), - }, - data: getUpdateGroupAccountInstructionDataDecoder().decode( - instruction.data - ), - }; -} diff --git a/clients/js/wen_new_standard/src/generated/programs/index.ts b/clients/js/wen_new_standard/src/generated/programs/index.ts deleted file mode 100644 index 310c6dcd..00000000 --- a/clients/js/wen_new_standard/src/generated/programs/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenNewStandard'; diff --git a/clients/js/wen_new_standard/src/generated/programs/wenNewStandard.ts b/clients/js/wen_new_standard/src/generated/programs/wenNewStandard.ts deleted file mode 100644 index 5baf7209..00000000 --- a/clients/js/wen_new_standard/src/generated/programs/wenNewStandard.ts +++ /dev/null @@ -1,336 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - containsBytes, - fixEncoderSize, - getBytesEncoder, - type Address, -} from '@solana/web3.js'; -import { - type ParsedAddMetadataInstruction, - type ParsedAddMintToGroupInstruction, - type ParsedAddRoyaltiesInstruction, - type ParsedApproveTransferInstruction, - type ParsedBurnMintAccountInstruction, - type ParsedCreateGroupAccountInstruction, - type ParsedCreateMintAccountInstruction, - type ParsedExecuteInstruction, - type ParsedFreezeMintAccountInstruction, - type ParsedInitManagerAccountInstruction, - type ParsedModifyRoyaltiesInstruction, - type ParsedRemoveMetadataInstruction, - type ParsedRemoveMintFromGroupInstruction, - type ParsedThawMintAccountInstruction, - type ParsedUpdateGroupAccountInstruction, -} from '../instructions'; - -export const WEN_NEW_STANDARD_PROGRAM_ADDRESS = - 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM' as Address<'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'>; - -export enum WenNewStandardAccount { - ApproveAccount, - Manager, - TokenGroup, - TokenGroupMember, -} - -export function identifyWenNewStandardAccount( - account: { data: Uint8Array } | Uint8Array -): WenNewStandardAccount { - const data = account instanceof Uint8Array ? account : account.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([218, 253, 170, 2, 4, 47, 25, 99]) - ), - 0 - ) - ) { - return WenNewStandardAccount.ApproveAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([221, 78, 171, 233, 213, 142, 113, 56]) - ), - 0 - ) - ) { - return WenNewStandardAccount.Manager; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([184, 107, 4, 187, 196, 55, 142, 134]) - ), - 0 - ) - ) { - return WenNewStandardAccount.TokenGroup; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([17, 208, 50, 173, 30, 127, 245, 94]) - ), - 0 - ) - ) { - return WenNewStandardAccount.TokenGroupMember; - } - throw new Error( - 'The provided account could not be identified as a wenNewStandard account.' - ); -} - -export enum WenNewStandardInstruction { - AddMetadata, - AddMintToGroup, - AddRoyalties, - ApproveTransfer, - BurnMintAccount, - CreateGroupAccount, - CreateMintAccount, - Execute, - FreezeMintAccount, - InitManagerAccount, - ModifyRoyalties, - RemoveMetadata, - RemoveMintFromGroup, - ThawMintAccount, - UpdateGroupAccount, -} - -export function identifyWenNewStandardInstruction( - instruction: { data: Uint8Array } | Uint8Array -): WenNewStandardInstruction { - const data = - instruction instanceof Uint8Array ? instruction : instruction.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([231, 195, 40, 240, 67, 231, 53, 136]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.AddMetadata; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([236, 25, 99, 48, 185, 60, 235, 112]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.AddMintToGroup; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([195, 251, 126, 230, 187, 134, 168, 210]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.AddRoyalties; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([198, 217, 247, 150, 208, 60, 169, 244]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.ApproveTransfer; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([60, 58, 247, 183, 185, 54, 114, 131]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.BurnMintAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([34, 65, 118, 12, 64, 190, 211, 145]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.CreateGroupAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([76, 184, 50, 62, 162, 141, 47, 103]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.CreateMintAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([105, 37, 101, 197, 75, 251, 102, 26]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.Execute; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([171, 30, 154, 191, 27, 0, 134, 216]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.FreezeMintAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([63, 114, 69, 118, 3, 198, 215, 72]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.InitManagerAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([199, 95, 20, 107, 136, 161, 93, 137]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.ModifyRoyalties; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([81, 68, 231, 49, 91, 8, 111, 160]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.RemoveMetadata; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([231, 224, 145, 240, 192, 4, 204, 218]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.RemoveMintFromGroup; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([27, 53, 61, 16, 162, 190, 27, 72]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.ThawMintAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([153, 106, 174, 53, 133, 171, 207, 52]) - ), - 0 - ) - ) { - return WenNewStandardInstruction.UpdateGroupAccount; - } - throw new Error( - 'The provided instruction could not be identified as a wenNewStandard instruction.' - ); -} - -export type ParsedWenNewStandardInstruction< - TProgram extends string = 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM', -> = - | ({ - instructionType: WenNewStandardInstruction.AddMetadata; - } & ParsedAddMetadataInstruction) - | ({ - instructionType: WenNewStandardInstruction.AddMintToGroup; - } & ParsedAddMintToGroupInstruction) - | ({ - instructionType: WenNewStandardInstruction.AddRoyalties; - } & ParsedAddRoyaltiesInstruction) - | ({ - instructionType: WenNewStandardInstruction.ApproveTransfer; - } & ParsedApproveTransferInstruction) - | ({ - instructionType: WenNewStandardInstruction.BurnMintAccount; - } & ParsedBurnMintAccountInstruction) - | ({ - instructionType: WenNewStandardInstruction.CreateGroupAccount; - } & ParsedCreateGroupAccountInstruction) - | ({ - instructionType: WenNewStandardInstruction.CreateMintAccount; - } & ParsedCreateMintAccountInstruction) - | ({ - instructionType: WenNewStandardInstruction.Execute; - } & ParsedExecuteInstruction) - | ({ - instructionType: WenNewStandardInstruction.FreezeMintAccount; - } & ParsedFreezeMintAccountInstruction) - | ({ - instructionType: WenNewStandardInstruction.InitManagerAccount; - } & ParsedInitManagerAccountInstruction) - | ({ - instructionType: WenNewStandardInstruction.ModifyRoyalties; - } & ParsedModifyRoyaltiesInstruction) - | ({ - instructionType: WenNewStandardInstruction.RemoveMetadata; - } & ParsedRemoveMetadataInstruction) - | ({ - instructionType: WenNewStandardInstruction.RemoveMintFromGroup; - } & ParsedRemoveMintFromGroupInstruction) - | ({ - instructionType: WenNewStandardInstruction.ThawMintAccount; - } & ParsedThawMintAccountInstruction) - | ({ - instructionType: WenNewStandardInstruction.UpdateGroupAccount; - } & ParsedUpdateGroupAccountInstruction); diff --git a/clients/js/wen_new_standard/src/generated/shared/index.ts b/clients/js/wen_new_standard/src/generated/shared/index.ts deleted file mode 100644 index 278bf59f..00000000 --- a/clients/js/wen_new_standard/src/generated/shared/index.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - AccountRole, - isProgramDerivedAddress, - isTransactionSigner as web3JsIsTransactionSigner, - type Address, - type IAccountMeta, - type IAccountSignerMeta, - type ProgramDerivedAddress, - type TransactionSigner, - upgradeRoleToSigner, -} from '@solana/web3.js'; - -/** - * Asserts that the given value is not null or undefined. - * @internal - */ -export function expectSome(value: T | null | undefined): T { - if (value == null) { - throw new Error('Expected a value but received null or undefined.'); - } - return value; -} - -/** - * Asserts that the given value is a PublicKey. - * @internal - */ -export function expectAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): Address { - if (!value) { - throw new Error('Expected a Address.'); - } - if (typeof value === 'object' && 'address' in value) { - return value.address; - } - if (Array.isArray(value)) { - return value[0]; - } - return value as Address; -} - -/** - * Asserts that the given value is a PDA. - * @internal - */ -export function expectProgramDerivedAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): ProgramDerivedAddress { - if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) { - throw new Error('Expected a ProgramDerivedAddress.'); - } - return value; -} - -/** - * Asserts that the given value is a TransactionSigner. - * @internal - */ -export function expectTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): TransactionSigner { - if (!value || !isTransactionSigner(value)) { - throw new Error('Expected a TransactionSigner.'); - } - return value; -} - -/** - * Defines an instruction account to resolve. - * @internal - */ -export type ResolvedAccount< - T extends string = string, - U extends - | Address - | ProgramDerivedAddress - | TransactionSigner - | null = - | Address - | ProgramDerivedAddress - | TransactionSigner - | null, -> = { - isWritable: boolean; - value: U; -}; - -/** - * Defines an instruction that stores additional bytes on-chain. - * @internal - */ -export type IInstructionWithByteDelta = { - byteDelta: number; -}; - -/** - * Get account metas and signers from resolved accounts. - * @internal - */ -export function getAccountMetaFactory( - programAddress: Address, - optionalAccountStrategy: 'omitted' | 'programId' -) { - return ( - account: ResolvedAccount - ): IAccountMeta | IAccountSignerMeta | undefined => { - if (!account.value) { - if (optionalAccountStrategy === 'omitted') return; - return Object.freeze({ - address: programAddress, - role: AccountRole.READONLY, - }); - } - - const writableRole = account.isWritable - ? AccountRole.WRITABLE - : AccountRole.READONLY; - return Object.freeze({ - address: expectAddress(account.value), - role: isTransactionSigner(account.value) - ? upgradeRoleToSigner(writableRole) - : writableRole, - ...(isTransactionSigner(account.value) ? { signer: account.value } : {}), - }); - }; -} - -export function isTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner -): value is TransactionSigner { - return ( - !!value && - typeof value === 'object' && - 'address' in value && - web3JsIsTransactionSigner(value) - ); -} diff --git a/clients/js/wen_new_standard/src/generated/types/addMetadataArgs.ts b/clients/js/wen_new_standard/src/generated/types/addMetadataArgs.ts deleted file mode 100644 index 3083b5a3..00000000 --- a/clients/js/wen_new_standard/src/generated/types/addMetadataArgs.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - type Codec, - type Decoder, - type Encoder, -} from '@solana/web3.js'; - -export type AddMetadataArgs = { field: string; value: string }; - -export type AddMetadataArgsArgs = AddMetadataArgs; - -export function getAddMetadataArgsEncoder(): Encoder { - return getStructEncoder([ - ['field', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['value', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ]); -} - -export function getAddMetadataArgsDecoder(): Decoder { - return getStructDecoder([ - ['field', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['value', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ]); -} - -export function getAddMetadataArgsCodec(): Codec< - AddMetadataArgsArgs, - AddMetadataArgs -> { - return combineCodec(getAddMetadataArgsEncoder(), getAddMetadataArgsDecoder()); -} diff --git a/clients/js/wen_new_standard/src/generated/types/creatorWithShare.ts b/clients/js/wen_new_standard/src/generated/types/creatorWithShare.ts deleted file mode 100644 index f1b7418a..00000000 --- a/clients/js/wen_new_standard/src/generated/types/creatorWithShare.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - getAddressDecoder, - getAddressEncoder, - getStructDecoder, - getStructEncoder, - getU8Decoder, - getU8Encoder, - type Address, - type Codec, - type Decoder, - type Encoder, -} from '@solana/web3.js'; - -export type CreatorWithShare = { address: Address; share: number }; - -export type CreatorWithShareArgs = CreatorWithShare; - -export function getCreatorWithShareEncoder(): Encoder { - return getStructEncoder([ - ['address', getAddressEncoder()], - ['share', getU8Encoder()], - ]); -} - -export function getCreatorWithShareDecoder(): Decoder { - return getStructDecoder([ - ['address', getAddressDecoder()], - ['share', getU8Decoder()], - ]); -} - -export function getCreatorWithShareCodec(): Codec< - CreatorWithShareArgs, - CreatorWithShare -> { - return combineCodec( - getCreatorWithShareEncoder(), - getCreatorWithShareDecoder() - ); -} diff --git a/clients/js/wen_new_standard/src/generated/types/index.ts b/clients/js/wen_new_standard/src/generated/types/index.ts deleted file mode 100644 index 83bdc2c0..00000000 --- a/clients/js/wen_new_standard/src/generated/types/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './addMetadataArgs'; -export * from './creatorWithShare'; -export * from './removeMetadataArgs'; -export * from './updateRoyaltiesArgs'; diff --git a/clients/js/wen_new_standard/src/generated/types/removeMetadataArgs.ts b/clients/js/wen_new_standard/src/generated/types/removeMetadataArgs.ts deleted file mode 100644 index 7ea407e7..00000000 --- a/clients/js/wen_new_standard/src/generated/types/removeMetadataArgs.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - type Codec, - type Decoder, - type Encoder, -} from '@solana/web3.js'; - -export type RemoveMetadataArgs = { field: string; value: string }; - -export type RemoveMetadataArgsArgs = RemoveMetadataArgs; - -export function getRemoveMetadataArgsEncoder(): Encoder { - return getStructEncoder([ - ['field', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['value', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ]); -} - -export function getRemoveMetadataArgsDecoder(): Decoder { - return getStructDecoder([ - ['field', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['value', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ]); -} - -export function getRemoveMetadataArgsCodec(): Codec< - RemoveMetadataArgsArgs, - RemoveMetadataArgs -> { - return combineCodec( - getRemoveMetadataArgsEncoder(), - getRemoveMetadataArgsDecoder() - ); -} diff --git a/clients/js/wen_new_standard/src/generated/types/updateRoyaltiesArgs.ts b/clients/js/wen_new_standard/src/generated/types/updateRoyaltiesArgs.ts deleted file mode 100644 index 51764bf4..00000000 --- a/clients/js/wen_new_standard/src/generated/types/updateRoyaltiesArgs.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - getArrayDecoder, - getArrayEncoder, - getStructDecoder, - getStructEncoder, - getU16Decoder, - getU16Encoder, - type Codec, - type Decoder, - type Encoder, -} from '@solana/web3.js'; -import { - getCreatorWithShareDecoder, - getCreatorWithShareEncoder, - type CreatorWithShare, - type CreatorWithShareArgs, -} from '.'; - -export type UpdateRoyaltiesArgs = { - royaltyBasisPoints: number; - creators: Array; -}; - -export type UpdateRoyaltiesArgsArgs = { - royaltyBasisPoints: number; - creators: Array; -}; - -export function getUpdateRoyaltiesArgsEncoder(): Encoder { - return getStructEncoder([ - ['royaltyBasisPoints', getU16Encoder()], - ['creators', getArrayEncoder(getCreatorWithShareEncoder())], - ]); -} - -export function getUpdateRoyaltiesArgsDecoder(): Decoder { - return getStructDecoder([ - ['royaltyBasisPoints', getU16Decoder()], - ['creators', getArrayDecoder(getCreatorWithShareDecoder())], - ]); -} - -export function getUpdateRoyaltiesArgsCodec(): Codec< - UpdateRoyaltiesArgsArgs, - UpdateRoyaltiesArgs -> { - return combineCodec( - getUpdateRoyaltiesArgsEncoder(), - getUpdateRoyaltiesArgsDecoder() - ); -} diff --git a/clients/js/wen_new_standard/src/index.ts b/clients/js/wen_new_standard/src/index.ts deleted file mode 100644 index 69e4e4eb..00000000 --- a/clients/js/wen_new_standard/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './generated'; diff --git a/clients/js/wen_new_standard/tsconfig.declarations.json b/clients/js/wen_new_standard/tsconfig.declarations.json deleted file mode 100644 index de76d4dd..00000000 --- a/clients/js/wen_new_standard/tsconfig.declarations.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "outDir": "./dist/types" - }, - "extends": "./tsconfig.json" -} diff --git a/clients/js/wen_new_standard/tsconfig.json b/clients/js/wen_new_standard/tsconfig.json deleted file mode 100644 index be1a0524..00000000 --- a/clients/js/wen_new_standard/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist", - "baseUrl": ".", - "rootDir": ".", - "target": "ES2020", - "module": "commonjs", - "sourceMap": true, - "declaration": true, - "declarationMap": false, - "removeComments": false, - "moduleResolution": "node", - "noEmit": false, - "preserveWatchOutput": true, - "emitDeclarationOnly": false, - "importHelpers": false, - "strict": true, - "noUnusedLocals": true, - "noFallthroughCasesInSwitch": true, - "downlevelIteration": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "incremental": false, - "resolveJsonModule": true, - "skipLibCheck": true, - "useUnknownInCatchVariables": false - }, - "include": ["src"], - "exclude": ["node_modules", "dist", "build", "lib"] -} \ No newline at end of file diff --git a/clients/js/wen_new_standard/tsup.config.ts b/clients/js/wen_new_standard/tsup.config.ts deleted file mode 100644 index bc6a342d..00000000 --- a/clients/js/wen_new_standard/tsup.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { env } from 'node:process'; -import path from 'node:path'; -import { defineConfig, Options } from 'tsup'; - -const SHARED_OPTIONS: Options = { - define: { __VERSION__: `"${env.npm_package_version}"` }, - entry: ['./src/index.ts'], - inject: [path.resolve(__dirname, 'env-shim.ts')], - outDir: './dist/src', - outExtension: ({ format }) => ({ js: format === 'cjs' ? '.js' : '.mjs' }), - sourcemap: true, - treeshake: true, -}; - -export default defineConfig(() => [ - // Source. - { ...SHARED_OPTIONS, format: 'cjs' }, - { ...SHARED_OPTIONS, format: 'esm' }, - - // Tests. - { - ...SHARED_OPTIONS, - bundle: false, - entry: ['./test/*.ts'], - format: 'cjs', - outDir: './dist/test', - }, -]); diff --git a/clients/js/wen_royalty_distribution/.eslintrc.js b/clients/js/wen_royalty_distribution/.eslintrc.js deleted file mode 100644 index a87f62c6..00000000 --- a/clients/js/wen_royalty_distribution/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - extends: ['airbnb-base', 'airbnb-typescript/base', 'prettier'], - plugins: ['prettier'], - overrides: [], - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: 'tsconfig.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/no-unused-vars': 'off', - 'class-methods-use-this': 'off', - 'import/prefer-default-export': 'off', - 'import/no-cycle': 'off', - 'no-underscore-dangle': 'off', - 'max-classes-per-file': 'off', - 'no-param-reassign': 'off', - 'func-names': 'off', - 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], - }, - ignorePatterns: ['dist/**', '.eslintrc.js'], -}; diff --git a/clients/js/wen_royalty_distribution/.gitignore b/clients/js/wen_royalty_distribution/.gitignore deleted file mode 100644 index 8205f972..00000000 --- a/clients/js/wen_royalty_distribution/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.vercel -docs -dist \ No newline at end of file diff --git a/clients/js/wen_royalty_distribution/.prettierrc.json b/clients/js/wen_royalty_distribution/.prettierrc.json deleted file mode 100644 index 3453ff69..00000000 --- a/clients/js/wen_royalty_distribution/.prettierrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "trailingComma": "es5", - "useTabs": false, - "tabWidth": 2, - "arrowParens": "always", - "printWidth": 80, - "parser": "typescript" -} diff --git a/clients/js/wen_royalty_distribution/README.md b/clients/js/wen_royalty_distribution/README.md deleted file mode 100644 index 73531be8..00000000 --- a/clients/js/wen_royalty_distribution/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -A JavaScript library for WEN Royalty Distribution [program](https://github.com/wen-community/wen-program-library). - -## Getting started - -1. First, ensure you have `@solana/web3.js@2.0.0-preview.3` as dependency in your project. -2. Next, install this library using the package manager of your choice. - ```sh - npm install @wen-community/wen-royalty-distribution - ``` -3. Finally, register the library with your Umi instance. - ```ts - import * from '@wen-community/wen-royalty-distribution'; - ``` - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. \ No newline at end of file diff --git a/clients/js/wen_royalty_distribution/env-shim.ts b/clients/js/wen_royalty_distribution/env-shim.ts deleted file mode 100644 index 8963d75a..00000000 --- a/clients/js/wen_royalty_distribution/env-shim.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV` -export const __DEV__ = /* @__PURE__ */ (() => - (process as any)['en' + 'v'].NODE_ENV === 'development')(); diff --git a/clients/js/wen_royalty_distribution/package.json b/clients/js/wen_royalty_distribution/package.json deleted file mode 100644 index 16081c88..00000000 --- a/clients/js/wen_royalty_distribution/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@wen-foundation/wen-royalty-distribution", - "version": "0.5.0-alpha", - "description": "An SDK for developing on the Open Source NFT Standard built on Solana Token Extensions.", - "main": "dist/src/index.js", - "types": "dist/src/types/index.d.ts", - "scripts": { - "build": "rimraf dist && tsup && tsc -p ./tsconfig.declarations.json", - "test": "ava", - "lint": "eslint --ext js,ts,tsx src && prettier --check src test", - "lint:fix": "eslint --fix --ext js,ts,tsx src && prettier --write src test" - }, - "files": [ - "/dist/src" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org" - }, - "homepage": "https://wenwencoin.com", - "repository": "https://github.com/wen-community/wen-program-libarary.git", - "author": "wen community", - "license": "MIT", - "keywords": [ - "solana", - "nft", - "blockchain", - "wen" - ], - "peerDependencies": { - "@solana/web3.js": "2.0.0-preview.3" - }, - "devDependencies": { - "@ava/typescript": "^4.1.0", - "@solana/eslint-config-solana": "^3.0.0", - "@solana/web3.js": "tp3", - "@solana/webcrypto-ed25519-polyfill": "tp3", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "ava": "^6.1.2", - "eslint": "^8.57.0", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tsup": "^8.0.2", - "typedoc": "^0.25.12", - "typedoc-plugin-missing-exports": "^2.2.0", - "typescript": "^5.4.2" - }, - "ava": { - "typescript": { - "compile": false, - "rewritePaths": { - "test/": "dist/test/" - } - } - } -} diff --git a/clients/js/wen_royalty_distribution/src/generated/accounts/distributionAccount.ts b/clients/js/wen_royalty_distribution/src/generated/accounts/distributionAccount.ts deleted file mode 100644 index 9aacd2ec..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/accounts/distributionAccount.ts +++ /dev/null @@ -1,172 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU8Decoder, - getU8Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; -import { - getCreatorDecoder, - getCreatorEncoder, - type Creator, - type CreatorArgs, -} from '../types'; - -export type DistributionAccount = { - discriminator: ReadonlyUint8Array; - /** distribution version */ - version: number; - /** group to which the distribution account belongs to */ - groupMint: Address; - /** payment mint for the distribution account */ - paymentMint: Address; - claimData: Array; -}; - -export type DistributionAccountArgs = { - /** distribution version */ - version: number; - /** group to which the distribution account belongs to */ - groupMint: Address; - /** payment mint for the distribution account */ - paymentMint: Address; - claimData: Array; -}; - -export function getDistributionAccountEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['version', getU8Encoder()], - ['groupMint', getAddressEncoder()], - ['paymentMint', getAddressEncoder()], - ['claimData', getArrayEncoder(getCreatorEncoder())], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([98, 90, 112, 65, 49, 161, 198, 154]), - }) - ); -} - -export function getDistributionAccountDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['version', getU8Decoder()], - ['groupMint', getAddressDecoder()], - ['paymentMint', getAddressDecoder()], - ['claimData', getArrayDecoder(getCreatorDecoder())], - ]); -} - -export function getDistributionAccountCodec(): Codec< - DistributionAccountArgs, - DistributionAccount -> { - return combineCodec( - getDistributionAccountEncoder(), - getDistributionAccountDecoder() - ); -} - -export function decodeDistributionAccount( - encodedAccount: EncodedAccount -): Account; -export function decodeDistributionAccount( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeDistributionAccount( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): - | Account - | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getDistributionAccountDecoder() - ); -} - -export async function fetchDistributionAccount< - TAddress extends string = string, ->( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeDistributionAccount( - rpc, - address, - config - ); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeDistributionAccount< - TAddress extends string = string, ->( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeDistributionAccount(maybeAccount); -} - -export async function fetchAllDistributionAccount( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeDistributionAccount( - rpc, - addresses, - config - ); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeDistributionAccount( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => - decodeDistributionAccount(maybeAccount) - ); -} diff --git a/clients/js/wen_royalty_distribution/src/generated/accounts/index.ts b/clients/js/wen_royalty_distribution/src/generated/accounts/index.ts deleted file mode 100644 index b3771ffb..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/accounts/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './distributionAccount'; diff --git a/clients/js/wen_royalty_distribution/src/generated/errors/index.ts b/clients/js/wen_royalty_distribution/src/generated/errors/index.ts deleted file mode 100644 index aee8bbd2..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/errors/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenRoyaltyDistribution'; diff --git a/clients/js/wen_royalty_distribution/src/generated/errors/wenRoyaltyDistribution.ts b/clients/js/wen_royalty_distribution/src/generated/errors/wenRoyaltyDistribution.ts deleted file mode 100644 index d82d8fb9..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/errors/wenRoyaltyDistribution.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -/** InvalidGroupAuthority: Invalid Group Authority for collection account */ -export const WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_GROUP_AUTHORITY = 0x1770; // 6000 -/** InvalidCreatorPctAmount: Invalid creator pct amount. Must add up to 100 */ -export const WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_CREATOR_PCT_AMOUNT = 0x1771; // 6001 -/** InvalidPaymentTokenAccount: Invalid payment token account */ -export const WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_PAYMENT_TOKEN_ACCOUNT = 0x1772; // 6002 -/** InvalidPaymentTokenProgram: Invalid payment token program */ -export const WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_PAYMENT_TOKEN_PROGRAM = 0x1773; // 6003 -/** ArithmeticOverflow: Arithmetic overflow */ -export const WEN_ROYALTY_DISTRIBUTION_ERROR__ARITHMETIC_OVERFLOW = 0x1774; // 6004 - -export type WenRoyaltyDistributionError = - | typeof WEN_ROYALTY_DISTRIBUTION_ERROR__ARITHMETIC_OVERFLOW - | typeof WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_CREATOR_PCT_AMOUNT - | typeof WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_GROUP_AUTHORITY - | typeof WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_PAYMENT_TOKEN_ACCOUNT - | typeof WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_PAYMENT_TOKEN_PROGRAM; - -let wenRoyaltyDistributionErrorMessages: - | Record - | undefined; -if (process.env.NODE_ENV !== 'production') { - wenRoyaltyDistributionErrorMessages = { - [WEN_ROYALTY_DISTRIBUTION_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow`, - [WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_CREATOR_PCT_AMOUNT]: `Invalid creator pct amount. Must add up to 100`, - [WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_GROUP_AUTHORITY]: `Invalid Group Authority for collection account`, - [WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_PAYMENT_TOKEN_ACCOUNT]: `Invalid payment token account`, - [WEN_ROYALTY_DISTRIBUTION_ERROR__INVALID_PAYMENT_TOKEN_PROGRAM]: `Invalid payment token program`, - }; -} - -export function getWenRoyaltyDistributionErrorMessage( - code: WenRoyaltyDistributionError -): string { - if (process.env.NODE_ENV !== 'production') { - return ( - wenRoyaltyDistributionErrorMessages as Record< - WenRoyaltyDistributionError, - string - > - )[code]; - } - - return 'Error message not available in production bundles.'; -} diff --git a/clients/js/wen_royalty_distribution/src/generated/index.ts b/clients/js/wen_royalty_distribution/src/generated/index.ts deleted file mode 100644 index 4b1e4f3c..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './accounts'; -export * from './errors'; -export * from './instructions'; -export * from './programs'; -export * from './types'; diff --git a/clients/js/wen_royalty_distribution/src/generated/instructions/claimDistribution.ts b/clients/js/wen_royalty_distribution/src/generated/instructions/claimDistribution.ts deleted file mode 100644 index c1a27cfc..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/instructions/claimDistribution.ts +++ /dev/null @@ -1,275 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; - -export type ClaimDistributionInstruction< - TProgram extends string = typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountCreator extends string | IAccountMeta = string, - TAccountDistribution extends string | IAccountMeta = string, - TAccountPaymentMint extends string | IAccountMeta = string, - TAccountDistributionTokenAccount extends - | string - | IAccountMeta = string, - TAccountCreatorTokenAccount extends string | IAccountMeta = string, - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountCreator extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountCreator, - TAccountDistribution extends string - ? WritableAccount - : TAccountDistribution, - TAccountPaymentMint extends string - ? ReadonlyAccount - : TAccountPaymentMint, - TAccountDistributionTokenAccount extends string - ? WritableAccount - : TAccountDistributionTokenAccount, - TAccountCreatorTokenAccount extends string - ? WritableAccount - : TAccountCreatorTokenAccount, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type ClaimDistributionInstructionData = { - discriminator: ReadonlyUint8Array; -}; - -export type ClaimDistributionInstructionDataArgs = {}; - -export function getClaimDistributionInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([204, 156, 94, 85, 2, 125, 232, 180]), - }) - ); -} - -export function getClaimDistributionInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getClaimDistributionInstructionDataCodec(): Codec< - ClaimDistributionInstructionDataArgs, - ClaimDistributionInstructionData -> { - return combineCodec( - getClaimDistributionInstructionDataEncoder(), - getClaimDistributionInstructionDataDecoder() - ); -} - -export type ClaimDistributionInput< - TAccountCreator extends string = string, - TAccountDistribution extends string = string, - TAccountPaymentMint extends string = string, - TAccountDistributionTokenAccount extends string = string, - TAccountCreatorTokenAccount extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - creator: TransactionSigner; - distribution: Address; - paymentMint: Address; - distributionTokenAccount?: Address; - creatorTokenAccount?: Address; - tokenProgram?: Address; - systemProgram?: Address; -}; - -export function getClaimDistributionInstruction< - TAccountCreator extends string, - TAccountDistribution extends string, - TAccountPaymentMint extends string, - TAccountDistributionTokenAccount extends string, - TAccountCreatorTokenAccount extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: ClaimDistributionInput< - TAccountCreator, - TAccountDistribution, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountCreatorTokenAccount, - TAccountTokenProgram, - TAccountSystemProgram - > -): ClaimDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountCreator, - TAccountDistribution, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountCreatorTokenAccount, - TAccountTokenProgram, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - creator: { value: input.creator ?? null, isWritable: true }, - distribution: { value: input.distribution ?? null, isWritable: true }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - distributionTokenAccount: { - value: input.distributionTokenAccount ?? null, - isWritable: true, - }, - creatorTokenAccount: { - value: input.creatorTokenAccount ?? null, - isWritable: true, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.creator), - getAccountMeta(accounts.distribution), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.distributionTokenAccount), - getAccountMeta(accounts.creatorTokenAccount), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getClaimDistributionInstructionDataEncoder().encode({}), - } as ClaimDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountCreator, - TAccountDistribution, - TAccountPaymentMint, - TAccountDistributionTokenAccount, - TAccountCreatorTokenAccount, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedClaimDistributionInstruction< - TProgram extends string = typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - creator: TAccountMetas[0]; - distribution: TAccountMetas[1]; - paymentMint: TAccountMetas[2]; - distributionTokenAccount?: TAccountMetas[3] | undefined; - creatorTokenAccount?: TAccountMetas[4] | undefined; - tokenProgram: TAccountMetas[5]; - systemProgram: TAccountMetas[6]; - }; - data: ClaimDistributionInstructionData; -}; - -export function parseClaimDistributionInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedClaimDistributionInstruction { - if (instruction.accounts.length < 7) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - const getNextOptionalAccount = () => { - const accountMeta = getNextAccount(); - return accountMeta.address === WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS - ? undefined - : accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - creator: getNextAccount(), - distribution: getNextAccount(), - paymentMint: getNextAccount(), - distributionTokenAccount: getNextOptionalAccount(), - creatorTokenAccount: getNextOptionalAccount(), - tokenProgram: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getClaimDistributionInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_royalty_distribution/src/generated/instructions/index.ts b/clients/js/wen_royalty_distribution/src/generated/instructions/index.ts deleted file mode 100644 index 5b3ff400..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/instructions/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './claimDistribution'; -export * from './initializeDistribution'; -export * from './updateDistribution'; diff --git a/clients/js/wen_royalty_distribution/src/generated/instructions/initializeDistribution.ts b/clients/js/wen_royalty_distribution/src/generated/instructions/initializeDistribution.ts deleted file mode 100644 index 14cfb38d..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/instructions/initializeDistribution.ts +++ /dev/null @@ -1,332 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - expectSome, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type InitializeDistributionInstruction< - TProgram extends string = typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountGroupMint extends string | IAccountMeta = string, - TAccountDistributionAccount extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountGroupMint extends string - ? ReadonlyAccount - : TAccountGroupMint, - TAccountDistributionAccount extends string - ? WritableAccount - : TAccountDistributionAccount, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type InitializeDistributionInstructionData = { - discriminator: ReadonlyUint8Array; - paymentMint: Address; -}; - -export type InitializeDistributionInstructionDataArgs = { - paymentMint: Address; -}; - -export function getInitializeDistributionInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['paymentMint', getAddressEncoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([146, 158, 129, 53, 22, 89, 86, 207]), - }) - ); -} - -export function getInitializeDistributionInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['paymentMint', getAddressDecoder()], - ]); -} - -export function getInitializeDistributionInstructionDataCodec(): Codec< - InitializeDistributionInstructionDataArgs, - InitializeDistributionInstructionData -> { - return combineCodec( - getInitializeDistributionInstructionDataEncoder(), - getInitializeDistributionInstructionDataDecoder() - ); -} - -export type InitializeDistributionAsyncInput< - TAccountPayer extends string = string, - TAccountGroupMint extends string = string, - TAccountDistributionAccount extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - groupMint: Address; - distributionAccount?: Address; - systemProgram?: Address; - paymentMint: InitializeDistributionInstructionDataArgs['paymentMint']; -}; - -export async function getInitializeDistributionInstructionAsync< - TAccountPayer extends string, - TAccountGroupMint extends string, - TAccountDistributionAccount extends string, - TAccountSystemProgram extends string, ->( - input: InitializeDistributionAsyncInput< - TAccountPayer, - TAccountGroupMint, - TAccountDistributionAccount, - TAccountSystemProgram - > -): Promise< - InitializeDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountPayer, - TAccountGroupMint, - TAccountDistributionAccount, - TAccountSystemProgram - > -> { - // Program address. - const programAddress = WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - groupMint: { value: input.groupMint ?? null, isWritable: false }, - distributionAccount: { - value: input.distributionAccount ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.distributionAccount.value) { - accounts.distributionAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.groupMint.value)), - getAddressEncoder().encode(expectSome(args.paymentMint)), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.groupMint), - getAccountMeta(accounts.distributionAccount), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getInitializeDistributionInstructionDataEncoder().encode( - args as InitializeDistributionInstructionDataArgs - ), - } as InitializeDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountPayer, - TAccountGroupMint, - TAccountDistributionAccount, - TAccountSystemProgram - >; - - return instruction; -} - -export type InitializeDistributionInput< - TAccountPayer extends string = string, - TAccountGroupMint extends string = string, - TAccountDistributionAccount extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - groupMint: Address; - distributionAccount: Address; - systemProgram?: Address; - paymentMint: InitializeDistributionInstructionDataArgs['paymentMint']; -}; - -export function getInitializeDistributionInstruction< - TAccountPayer extends string, - TAccountGroupMint extends string, - TAccountDistributionAccount extends string, - TAccountSystemProgram extends string, ->( - input: InitializeDistributionInput< - TAccountPayer, - TAccountGroupMint, - TAccountDistributionAccount, - TAccountSystemProgram - > -): InitializeDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountPayer, - TAccountGroupMint, - TAccountDistributionAccount, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - groupMint: { value: input.groupMint ?? null, isWritable: false }, - distributionAccount: { - value: input.distributionAccount ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.groupMint), - getAccountMeta(accounts.distributionAccount), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getInitializeDistributionInstructionDataEncoder().encode( - args as InitializeDistributionInstructionDataArgs - ), - } as InitializeDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountPayer, - TAccountGroupMint, - TAccountDistributionAccount, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedInitializeDistributionInstruction< - TProgram extends string = typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - groupMint: TAccountMetas[1]; - distributionAccount: TAccountMetas[2]; - systemProgram: TAccountMetas[3]; - }; - data: InitializeDistributionInstructionData; -}; - -export function parseInitializeDistributionInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedInitializeDistributionInstruction { - if (instruction.accounts.length < 4) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - groupMint: getNextAccount(), - distributionAccount: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getInitializeDistributionInstructionDataDecoder().decode( - instruction.data - ), - }; -} diff --git a/clients/js/wen_royalty_distribution/src/generated/instructions/updateDistribution.ts b/clients/js/wen_royalty_distribution/src/generated/instructions/updateDistribution.ts deleted file mode 100644 index fa17d566..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/instructions/updateDistribution.ts +++ /dev/null @@ -1,324 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; - -export type UpdateDistributionInstruction< - TProgram extends string = typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountAuthority extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountPaymentMint extends string | IAccountMeta = string, - TAccountDistributionAccount extends string | IAccountMeta = string, - TAccountDistributionTokenAccount extends - | string - | IAccountMeta = string, - TAccountAuthorityTokenAccount extends string | IAccountMeta = string, - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', - TAccountPaymentTokenProgram extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountAuthority extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountAuthority, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountPaymentMint extends string - ? ReadonlyAccount - : TAccountPaymentMint, - TAccountDistributionAccount extends string - ? WritableAccount - : TAccountDistributionAccount, - TAccountDistributionTokenAccount extends string - ? WritableAccount - : TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount extends string - ? WritableAccount - : TAccountAuthorityTokenAccount, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountPaymentTokenProgram extends string - ? ReadonlyAccount - : TAccountPaymentTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type UpdateDistributionInstructionData = { - discriminator: ReadonlyUint8Array; - amount: bigint; -}; - -export type UpdateDistributionInstructionDataArgs = { amount: number | bigint }; - -export function getUpdateDistributionInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['amount', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([128, 196, 209, 174, 42, 209, 164, 222]), - }) - ); -} - -export function getUpdateDistributionInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['amount', getU64Decoder()], - ]); -} - -export function getUpdateDistributionInstructionDataCodec(): Codec< - UpdateDistributionInstructionDataArgs, - UpdateDistributionInstructionData -> { - return combineCodec( - getUpdateDistributionInstructionDataEncoder(), - getUpdateDistributionInstructionDataDecoder() - ); -} - -export type UpdateDistributionInput< - TAccountAuthority extends string = string, - TAccountMint extends string = string, - TAccountPaymentMint extends string = string, - TAccountDistributionAccount extends string = string, - TAccountDistributionTokenAccount extends string = string, - TAccountAuthorityTokenAccount extends string = string, - TAccountTokenProgram extends string = string, - TAccountPaymentTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - authority: TransactionSigner; - mint: Address; - paymentMint: Address; - distributionAccount: Address; - distributionTokenAccount?: Address; - authorityTokenAccount?: Address; - tokenProgram?: Address; - paymentTokenProgram?: Address; - systemProgram?: Address; - amount: UpdateDistributionInstructionDataArgs['amount']; -}; - -export function getUpdateDistributionInstruction< - TAccountAuthority extends string, - TAccountMint extends string, - TAccountPaymentMint extends string, - TAccountDistributionAccount extends string, - TAccountDistributionTokenAccount extends string, - TAccountAuthorityTokenAccount extends string, - TAccountTokenProgram extends string, - TAccountPaymentTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: UpdateDistributionInput< - TAccountAuthority, - TAccountMint, - TAccountPaymentMint, - TAccountDistributionAccount, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram - > -): UpdateDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountAuthority, - TAccountMint, - TAccountPaymentMint, - TAccountDistributionAccount, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - authority: { value: input.authority ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: false }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - distributionAccount: { - value: input.distributionAccount ?? null, - isWritable: true, - }, - distributionTokenAccount: { - value: input.distributionTokenAccount ?? null, - isWritable: true, - }, - authorityTokenAccount: { - value: input.authorityTokenAccount ?? null, - isWritable: true, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - paymentTokenProgram: { - value: input.paymentTokenProgram ?? null, - isWritable: false, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.authority), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.distributionAccount), - getAccountMeta(accounts.distributionTokenAccount), - getAccountMeta(accounts.authorityTokenAccount), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.paymentTokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getUpdateDistributionInstructionDataEncoder().encode( - args as UpdateDistributionInstructionDataArgs - ), - } as UpdateDistributionInstruction< - typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountAuthority, - TAccountMint, - TAccountPaymentMint, - TAccountDistributionAccount, - TAccountDistributionTokenAccount, - TAccountAuthorityTokenAccount, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedUpdateDistributionInstruction< - TProgram extends string = typeof WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - authority: TAccountMetas[0]; - mint: TAccountMetas[1]; - paymentMint: TAccountMetas[2]; - distributionAccount: TAccountMetas[3]; - distributionTokenAccount?: TAccountMetas[4] | undefined; - authorityTokenAccount?: TAccountMetas[5] | undefined; - tokenProgram: TAccountMetas[6]; - paymentTokenProgram?: TAccountMetas[7] | undefined; - systemProgram: TAccountMetas[8]; - }; - data: UpdateDistributionInstructionData; -}; - -export function parseUpdateDistributionInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedUpdateDistributionInstruction { - if (instruction.accounts.length < 9) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - const getNextOptionalAccount = () => { - const accountMeta = getNextAccount(); - return accountMeta.address === WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS - ? undefined - : accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - authority: getNextAccount(), - mint: getNextAccount(), - paymentMint: getNextAccount(), - distributionAccount: getNextAccount(), - distributionTokenAccount: getNextOptionalAccount(), - authorityTokenAccount: getNextOptionalAccount(), - tokenProgram: getNextAccount(), - paymentTokenProgram: getNextOptionalAccount(), - systemProgram: getNextAccount(), - }, - data: getUpdateDistributionInstructionDataDecoder().decode( - instruction.data - ), - }; -} diff --git a/clients/js/wen_royalty_distribution/src/generated/programs/index.ts b/clients/js/wen_royalty_distribution/src/generated/programs/index.ts deleted file mode 100644 index aee8bbd2..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/programs/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenRoyaltyDistribution'; diff --git a/clients/js/wen_royalty_distribution/src/generated/programs/wenRoyaltyDistribution.ts b/clients/js/wen_royalty_distribution/src/generated/programs/wenRoyaltyDistribution.ts deleted file mode 100644 index 5afa12fd..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/programs/wenRoyaltyDistribution.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - containsBytes, - fixEncoderSize, - getBytesEncoder, - type Address, -} from '@solana/web3.js'; -import { - type ParsedClaimDistributionInstruction, - type ParsedInitializeDistributionInstruction, - type ParsedUpdateDistributionInstruction, -} from '../instructions'; - -export const WEN_ROYALTY_DISTRIBUTION_PROGRAM_ADDRESS = - 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay' as Address<'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'>; - -export enum WenRoyaltyDistributionAccount { - DistributionAccount, -} - -export function identifyWenRoyaltyDistributionAccount( - account: { data: Uint8Array } | Uint8Array -): WenRoyaltyDistributionAccount { - const data = account instanceof Uint8Array ? account : account.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([98, 90, 112, 65, 49, 161, 198, 154]) - ), - 0 - ) - ) { - return WenRoyaltyDistributionAccount.DistributionAccount; - } - throw new Error( - 'The provided account could not be identified as a wenRoyaltyDistribution account.' - ); -} - -export enum WenRoyaltyDistributionInstruction { - ClaimDistribution, - InitializeDistribution, - UpdateDistribution, -} - -export function identifyWenRoyaltyDistributionInstruction( - instruction: { data: Uint8Array } | Uint8Array -): WenRoyaltyDistributionInstruction { - const data = - instruction instanceof Uint8Array ? instruction : instruction.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([204, 156, 94, 85, 2, 125, 232, 180]) - ), - 0 - ) - ) { - return WenRoyaltyDistributionInstruction.ClaimDistribution; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([146, 158, 129, 53, 22, 89, 86, 207]) - ), - 0 - ) - ) { - return WenRoyaltyDistributionInstruction.InitializeDistribution; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([128, 196, 209, 174, 42, 209, 164, 222]) - ), - 0 - ) - ) { - return WenRoyaltyDistributionInstruction.UpdateDistribution; - } - throw new Error( - 'The provided instruction could not be identified as a wenRoyaltyDistribution instruction.' - ); -} - -export type ParsedWenRoyaltyDistributionInstruction< - TProgram extends string = 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay', -> = - | ({ - instructionType: WenRoyaltyDistributionInstruction.ClaimDistribution; - } & ParsedClaimDistributionInstruction) - | ({ - instructionType: WenRoyaltyDistributionInstruction.InitializeDistribution; - } & ParsedInitializeDistributionInstruction) - | ({ - instructionType: WenRoyaltyDistributionInstruction.UpdateDistribution; - } & ParsedUpdateDistributionInstruction); diff --git a/clients/js/wen_royalty_distribution/src/generated/shared/index.ts b/clients/js/wen_royalty_distribution/src/generated/shared/index.ts deleted file mode 100644 index 278bf59f..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/shared/index.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - AccountRole, - isProgramDerivedAddress, - isTransactionSigner as web3JsIsTransactionSigner, - type Address, - type IAccountMeta, - type IAccountSignerMeta, - type ProgramDerivedAddress, - type TransactionSigner, - upgradeRoleToSigner, -} from '@solana/web3.js'; - -/** - * Asserts that the given value is not null or undefined. - * @internal - */ -export function expectSome(value: T | null | undefined): T { - if (value == null) { - throw new Error('Expected a value but received null or undefined.'); - } - return value; -} - -/** - * Asserts that the given value is a PublicKey. - * @internal - */ -export function expectAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): Address { - if (!value) { - throw new Error('Expected a Address.'); - } - if (typeof value === 'object' && 'address' in value) { - return value.address; - } - if (Array.isArray(value)) { - return value[0]; - } - return value as Address; -} - -/** - * Asserts that the given value is a PDA. - * @internal - */ -export function expectProgramDerivedAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): ProgramDerivedAddress { - if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) { - throw new Error('Expected a ProgramDerivedAddress.'); - } - return value; -} - -/** - * Asserts that the given value is a TransactionSigner. - * @internal - */ -export function expectTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): TransactionSigner { - if (!value || !isTransactionSigner(value)) { - throw new Error('Expected a TransactionSigner.'); - } - return value; -} - -/** - * Defines an instruction account to resolve. - * @internal - */ -export type ResolvedAccount< - T extends string = string, - U extends - | Address - | ProgramDerivedAddress - | TransactionSigner - | null = - | Address - | ProgramDerivedAddress - | TransactionSigner - | null, -> = { - isWritable: boolean; - value: U; -}; - -/** - * Defines an instruction that stores additional bytes on-chain. - * @internal - */ -export type IInstructionWithByteDelta = { - byteDelta: number; -}; - -/** - * Get account metas and signers from resolved accounts. - * @internal - */ -export function getAccountMetaFactory( - programAddress: Address, - optionalAccountStrategy: 'omitted' | 'programId' -) { - return ( - account: ResolvedAccount - ): IAccountMeta | IAccountSignerMeta | undefined => { - if (!account.value) { - if (optionalAccountStrategy === 'omitted') return; - return Object.freeze({ - address: programAddress, - role: AccountRole.READONLY, - }); - } - - const writableRole = account.isWritable - ? AccountRole.WRITABLE - : AccountRole.READONLY; - return Object.freeze({ - address: expectAddress(account.value), - role: isTransactionSigner(account.value) - ? upgradeRoleToSigner(writableRole) - : writableRole, - ...(isTransactionSigner(account.value) ? { signer: account.value } : {}), - }); - }; -} - -export function isTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner -): value is TransactionSigner { - return ( - !!value && - typeof value === 'object' && - 'address' in value && - web3JsIsTransactionSigner(value) - ); -} diff --git a/clients/js/wen_royalty_distribution/src/generated/types/creator.ts b/clients/js/wen_royalty_distribution/src/generated/types/creator.ts deleted file mode 100644 index f0af2bee..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/types/creator.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - getAddressDecoder, - getAddressEncoder, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - type Address, - type Codec, - type Decoder, - type Encoder, -} from '@solana/web3.js'; - -export type Creator = { - /** creator address */ - address: Address; - /** token amount that creator can claim */ - claimAmount: bigint; -}; - -export type CreatorArgs = { - /** creator address */ - address: Address; - /** token amount that creator can claim */ - claimAmount: number | bigint; -}; - -export function getCreatorEncoder(): Encoder { - return getStructEncoder([ - ['address', getAddressEncoder()], - ['claimAmount', getU64Encoder()], - ]); -} - -export function getCreatorDecoder(): Decoder { - return getStructDecoder([ - ['address', getAddressDecoder()], - ['claimAmount', getU64Decoder()], - ]); -} - -export function getCreatorCodec(): Codec { - return combineCodec(getCreatorEncoder(), getCreatorDecoder()); -} diff --git a/clients/js/wen_royalty_distribution/src/generated/types/index.ts b/clients/js/wen_royalty_distribution/src/generated/types/index.ts deleted file mode 100644 index 00a30b45..00000000 --- a/clients/js/wen_royalty_distribution/src/generated/types/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './creator'; diff --git a/clients/js/wen_royalty_distribution/src/index.ts b/clients/js/wen_royalty_distribution/src/index.ts deleted file mode 100644 index 69e4e4eb..00000000 --- a/clients/js/wen_royalty_distribution/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './generated'; diff --git a/clients/js/wen_royalty_distribution/tsconfig.declarations.json b/clients/js/wen_royalty_distribution/tsconfig.declarations.json deleted file mode 100644 index de76d4dd..00000000 --- a/clients/js/wen_royalty_distribution/tsconfig.declarations.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "outDir": "./dist/types" - }, - "extends": "./tsconfig.json" -} diff --git a/clients/js/wen_royalty_distribution/tsconfig.json b/clients/js/wen_royalty_distribution/tsconfig.json deleted file mode 100644 index d5835b07..00000000 --- a/clients/js/wen_royalty_distribution/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist", - "baseUrl": ".", - "rootDir": ".", - "target": "ES2020", - "module": "commonjs", - "sourceMap": true, - "declaration": true, - "declarationMap": false, - "removeComments": false, - "moduleResolution": "node", - "noEmit": false, - "preserveWatchOutput": true, - "emitDeclarationOnly": false, - "importHelpers": false, - "strict": true, - "noUnusedLocals": true, - "noFallthroughCasesInSwitch": true, - "downlevelIteration": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "incremental": false, - "resolveJsonModule": true, - "skipLibCheck": true, - "useUnknownInCatchVariables": false - }, - "include": ["src", "test"], - "exclude": ["node_modules", "dist", "build", "lib"] -} \ No newline at end of file diff --git a/clients/js/wen_royalty_distribution/tsup.config.ts b/clients/js/wen_royalty_distribution/tsup.config.ts deleted file mode 100644 index bc6a342d..00000000 --- a/clients/js/wen_royalty_distribution/tsup.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { env } from 'node:process'; -import path from 'node:path'; -import { defineConfig, Options } from 'tsup'; - -const SHARED_OPTIONS: Options = { - define: { __VERSION__: `"${env.npm_package_version}"` }, - entry: ['./src/index.ts'], - inject: [path.resolve(__dirname, 'env-shim.ts')], - outDir: './dist/src', - outExtension: ({ format }) => ({ js: format === 'cjs' ? '.js' : '.mjs' }), - sourcemap: true, - treeshake: true, -}; - -export default defineConfig(() => [ - // Source. - { ...SHARED_OPTIONS, format: 'cjs' }, - { ...SHARED_OPTIONS, format: 'esm' }, - - // Tests. - { - ...SHARED_OPTIONS, - bundle: false, - entry: ['./test/*.ts'], - format: 'cjs', - outDir: './dist/test', - }, -]); diff --git a/clients/js/wen_transfer_guard/.eslintrc.js b/clients/js/wen_transfer_guard/.eslintrc.js deleted file mode 100644 index a87f62c6..00000000 --- a/clients/js/wen_transfer_guard/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - extends: ['airbnb-base', 'airbnb-typescript/base', 'prettier'], - plugins: ['prettier'], - overrides: [], - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: 'tsconfig.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/no-unused-vars': 'off', - 'class-methods-use-this': 'off', - 'import/prefer-default-export': 'off', - 'import/no-cycle': 'off', - 'no-underscore-dangle': 'off', - 'max-classes-per-file': 'off', - 'no-param-reassign': 'off', - 'func-names': 'off', - 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], - }, - ignorePatterns: ['dist/**', '.eslintrc.js'], -}; diff --git a/clients/js/wen_transfer_guard/.gitignore b/clients/js/wen_transfer_guard/.gitignore deleted file mode 100644 index 8205f972..00000000 --- a/clients/js/wen_transfer_guard/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.vercel -docs -dist \ No newline at end of file diff --git a/clients/js/wen_transfer_guard/.prettierrc.json b/clients/js/wen_transfer_guard/.prettierrc.json deleted file mode 100644 index 3453ff69..00000000 --- a/clients/js/wen_transfer_guard/.prettierrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "trailingComma": "es5", - "useTabs": false, - "tabWidth": 2, - "arrowParens": "always", - "printWidth": 80, - "parser": "typescript" -} diff --git a/clients/js/wen_transfer_guard/README.md b/clients/js/wen_transfer_guard/README.md deleted file mode 100644 index 6183693e..00000000 --- a/clients/js/wen_transfer_guard/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -A JavaScript library for WEN Transfer Guard [program](https://github.com/wen-community/wen-program-library). - -## Getting started - -1. First, ensure you have `@solana/web3.js@2.0.0-preview.3` as dependency in your project. -2. Next, install this library using the package manager of your choice. - ```sh - npm install @wen-community/wen-royalty-distribution - ``` -3. Finally, register the library with your Umi instance. - ```ts - import * from '@wen-community/wen-transfer-guard'; - ``` - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. \ No newline at end of file diff --git a/clients/js/wen_transfer_guard/env-shim.ts b/clients/js/wen_transfer_guard/env-shim.ts deleted file mode 100644 index 8963d75a..00000000 --- a/clients/js/wen_transfer_guard/env-shim.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV` -export const __DEV__ = /* @__PURE__ */ (() => - (process as any)['en' + 'v'].NODE_ENV === 'development')(); diff --git a/clients/js/wen_transfer_guard/package.json b/clients/js/wen_transfer_guard/package.json deleted file mode 100644 index 6b933594..00000000 --- a/clients/js/wen_transfer_guard/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@wen-foundation/wen-transfer-guard", - "version": "0.5.0-alpha", - "description": "An SDK for developing on the Open Source NFT Standard built on Solana Token Extensions.", - "main": "dist/src/index.js", - "types": "dist/src/types/index.d.ts", - "scripts": { - "build": "rimraf dist && tsup && tsc -p ./tsconfig.declarations.json", - "test": "ava", - "lint": "eslint --ext js,ts,tsx src && prettier --check src test", - "lint:fix": "eslint --fix --ext js,ts,tsx src && prettier --write src test" - }, - "files": [ - "/dist/src" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org" - }, - "homepage": "https://wenwencoin.com", - "repository": "https://github.com/wen-community/wen-program-libarary.git", - "author": "wen community", - "license": "MIT", - "keywords": [ - "solana", - "nft", - "blockchain", - "wen" - ], - "peerDependencies": { - "@solana/web3.js": "2.0.0-preview.3" - }, - "devDependencies": { - "@ava/typescript": "^4.1.0", - "@solana/eslint-config-solana": "^3.0.0", - "@solana/web3.js": "tp3", - "@solana/webcrypto-ed25519-polyfill": "tp3", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "ava": "^6.1.2", - "eslint": "^8.57.0", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tsup": "^8.0.2", - "typedoc": "^0.25.12", - "typedoc-plugin-missing-exports": "^2.2.0", - "typescript": "^5.4.2" - }, - "ava": { - "typescript": { - "compile": false, - "rewritePaths": { - "test/": "dist/test/" - } - } - } -} diff --git a/clients/js/wen_transfer_guard/src/generated/accounts/guardV1.ts b/clients/js/wen_transfer_guard/src/generated/accounts/guardV1.ts deleted file mode 100644 index 4de0d13b..00000000 --- a/clients/js/wen_transfer_guard/src/generated/accounts/guardV1.ts +++ /dev/null @@ -1,176 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getOptionDecoder, - getOptionEncoder, - getStructDecoder, - getStructEncoder, - getU8Decoder, - getU8Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type Option, - type OptionOrNullable, - type ReadonlyUint8Array, -} from '@solana/web3.js'; -import { - getCpiRuleDecoder, - getCpiRuleEncoder, - getMetadataAdditionalFieldRuleDecoder, - getMetadataAdditionalFieldRuleEncoder, - getTransferAmountRuleDecoder, - getTransferAmountRuleEncoder, - type CpiRule, - type CpiRuleArgs, - type MetadataAdditionalFieldRule, - type MetadataAdditionalFieldRuleArgs, - type TransferAmountRule, - type TransferAmountRuleArgs, -} from '../types'; - -export type GuardV1 = { - discriminator: ReadonlyUint8Array; - /** Mint token representing the guard, do not confuse with the mint of the token being transferred. */ - mint: Address; - /** Bump seed for the guard account. */ - bump: number; - /** CPI ruleset for the guard. */ - cpiRule: Option; - /** Transfer amount ruleset for the guard. */ - transferAmountRule: Option; - /** Additional fields ruleset for the guard. */ - additionalFieldsRule: Array; -}; - -export type GuardV1Args = { - /** Mint token representing the guard, do not confuse with the mint of the token being transferred. */ - mint: Address; - /** Bump seed for the guard account. */ - bump: number; - /** CPI ruleset for the guard. */ - cpiRule: OptionOrNullable; - /** Transfer amount ruleset for the guard. */ - transferAmountRule: OptionOrNullable; - /** Additional fields ruleset for the guard. */ - additionalFieldsRule: Array; -}; - -export function getGuardV1Encoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['mint', getAddressEncoder()], - ['bump', getU8Encoder()], - ['cpiRule', getOptionEncoder(getCpiRuleEncoder())], - ['transferAmountRule', getOptionEncoder(getTransferAmountRuleEncoder())], - [ - 'additionalFieldsRule', - getArrayEncoder(getMetadataAdditionalFieldRuleEncoder()), - ], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([185, 149, 156, 78, 245, 108, 172, 68]), - }) - ); -} - -export function getGuardV1Decoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['mint', getAddressDecoder()], - ['bump', getU8Decoder()], - ['cpiRule', getOptionDecoder(getCpiRuleDecoder())], - ['transferAmountRule', getOptionDecoder(getTransferAmountRuleDecoder())], - [ - 'additionalFieldsRule', - getArrayDecoder(getMetadataAdditionalFieldRuleDecoder()), - ], - ]); -} - -export function getGuardV1Codec(): Codec { - return combineCodec(getGuardV1Encoder(), getGuardV1Decoder()); -} - -export function decodeGuardV1( - encodedAccount: EncodedAccount -): Account; -export function decodeGuardV1( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeGuardV1( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): Account | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getGuardV1Decoder() - ); -} - -export async function fetchGuardV1( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeGuardV1(rpc, address, config); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeGuardV1( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeGuardV1(maybeAccount); -} - -export async function fetchAllGuardV1( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeGuardV1(rpc, addresses, config); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeGuardV1( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => decodeGuardV1(maybeAccount)); -} diff --git a/clients/js/wen_transfer_guard/src/generated/accounts/index.ts b/clients/js/wen_transfer_guard/src/generated/accounts/index.ts deleted file mode 100644 index de1ebe8d..00000000 --- a/clients/js/wen_transfer_guard/src/generated/accounts/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './guardV1'; diff --git a/clients/js/wen_transfer_guard/src/generated/errors/index.ts b/clients/js/wen_transfer_guard/src/generated/errors/index.ts deleted file mode 100644 index 5a97dac0..00000000 --- a/clients/js/wen_transfer_guard/src/generated/errors/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenTransferGuard'; diff --git a/clients/js/wen_transfer_guard/src/generated/errors/wenTransferGuard.ts b/clients/js/wen_transfer_guard/src/generated/errors/wenTransferGuard.ts deleted file mode 100644 index f16494c7..00000000 --- a/clients/js/wen_transfer_guard/src/generated/errors/wenTransferGuard.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -/** CpiRuleEnforcementFailed: Cpi Rule Enforcement Failed */ -export const WEN_TRANSFER_GUARD_ERROR__CPI_RULE_ENFORCEMENT_FAILED = 0x1770; // 6000 -/** TransferAmountRuleEnforceFailed: Transfer Amount Rule Enforce Failed */ -export const WEN_TRANSFER_GUARD_ERROR__TRANSFER_AMOUNT_RULE_ENFORCE_FAILED = 0x1771; // 6001 -/** MetadataFieldDoesNotExist: Metadata Field Does Not Exist */ -export const WEN_TRANSFER_GUARD_ERROR__METADATA_FIELD_DOES_NOT_EXIST = 0x1772; // 6002 -/** MetadataFieldDoesNotPass: Metadata Field Does Not Pass */ -export const WEN_TRANSFER_GUARD_ERROR__METADATA_FIELD_DOES_NOT_PASS = 0x1773; // 6003 -/** GuardTokenAmountShouldBeAtLeastOne: Guard token amount should be at least 1 */ -export const WEN_TRANSFER_GUARD_ERROR__GUARD_TOKEN_AMOUNT_SHOULD_BE_AT_LEAST_ONE = 0x1774; // 6004 -/** NotOwnedByToken2022Program: Not owned by token 2022 program */ -export const WEN_TRANSFER_GUARD_ERROR__NOT_OWNED_BY_TOKEN2022_PROGRAM = 0x1775; // 6005 -/** MustBeInitializedByTransferHookAuthority: Must be initialized by Transfer Hook Authority */ -export const WEN_TRANSFER_GUARD_ERROR__MUST_BE_INITIALIZED_BY_TRANSFER_HOOK_AUTHORITY = 0x1776; // 6006 -/** MintAssignedTransferHookProgramIsNotThisOne: Mint's assigned Transfer Hook Program is not this one */ -export const WEN_TRANSFER_GUARD_ERROR__MINT_ASSIGNED_TRANSFER_HOOK_PROGRAM_IS_NOT_THIS_ONE = 0x1777; // 6007 - -export type WenTransferGuardError = - | typeof WEN_TRANSFER_GUARD_ERROR__CPI_RULE_ENFORCEMENT_FAILED - | typeof WEN_TRANSFER_GUARD_ERROR__GUARD_TOKEN_AMOUNT_SHOULD_BE_AT_LEAST_ONE - | typeof WEN_TRANSFER_GUARD_ERROR__METADATA_FIELD_DOES_NOT_EXIST - | typeof WEN_TRANSFER_GUARD_ERROR__METADATA_FIELD_DOES_NOT_PASS - | typeof WEN_TRANSFER_GUARD_ERROR__MINT_ASSIGNED_TRANSFER_HOOK_PROGRAM_IS_NOT_THIS_ONE - | typeof WEN_TRANSFER_GUARD_ERROR__MUST_BE_INITIALIZED_BY_TRANSFER_HOOK_AUTHORITY - | typeof WEN_TRANSFER_GUARD_ERROR__NOT_OWNED_BY_TOKEN2022_PROGRAM - | typeof WEN_TRANSFER_GUARD_ERROR__TRANSFER_AMOUNT_RULE_ENFORCE_FAILED; - -let wenTransferGuardErrorMessages: - | Record - | undefined; -if (process.env.NODE_ENV !== 'production') { - wenTransferGuardErrorMessages = { - [WEN_TRANSFER_GUARD_ERROR__CPI_RULE_ENFORCEMENT_FAILED]: `Cpi Rule Enforcement Failed`, - [WEN_TRANSFER_GUARD_ERROR__GUARD_TOKEN_AMOUNT_SHOULD_BE_AT_LEAST_ONE]: `Guard token amount should be at least 1`, - [WEN_TRANSFER_GUARD_ERROR__METADATA_FIELD_DOES_NOT_EXIST]: `Metadata Field Does Not Exist`, - [WEN_TRANSFER_GUARD_ERROR__METADATA_FIELD_DOES_NOT_PASS]: `Metadata Field Does Not Pass`, - [WEN_TRANSFER_GUARD_ERROR__MINT_ASSIGNED_TRANSFER_HOOK_PROGRAM_IS_NOT_THIS_ONE]: `Mint's assigned Transfer Hook Program is not this one`, - [WEN_TRANSFER_GUARD_ERROR__MUST_BE_INITIALIZED_BY_TRANSFER_HOOK_AUTHORITY]: `Must be initialized by Transfer Hook Authority`, - [WEN_TRANSFER_GUARD_ERROR__NOT_OWNED_BY_TOKEN2022_PROGRAM]: `Not owned by token 2022 program`, - [WEN_TRANSFER_GUARD_ERROR__TRANSFER_AMOUNT_RULE_ENFORCE_FAILED]: `Transfer Amount Rule Enforce Failed`, - }; -} - -export function getWenTransferGuardErrorMessage( - code: WenTransferGuardError -): string { - if (process.env.NODE_ENV !== 'production') { - return ( - wenTransferGuardErrorMessages as Record - )[code]; - } - - return 'Error message not available in production bundles.'; -} diff --git a/clients/js/wen_transfer_guard/src/generated/index.ts b/clients/js/wen_transfer_guard/src/generated/index.ts deleted file mode 100644 index 4b1e4f3c..00000000 --- a/clients/js/wen_transfer_guard/src/generated/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './accounts'; -export * from './errors'; -export * from './instructions'; -export * from './programs'; -export * from './types'; diff --git a/clients/js/wen_transfer_guard/src/generated/instructions/createGuard.ts b/clients/js/wen_transfer_guard/src/generated/instructions/createGuard.ts deleted file mode 100644 index 6a7fa5d1..00000000 --- a/clients/js/wen_transfer_guard/src/generated/instructions/createGuard.ts +++ /dev/null @@ -1,526 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getOptionDecoder, - getOptionEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type Option, - type OptionOrNullable, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_TRANSFER_GUARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; -import { - getCpiRuleDecoder, - getCpiRuleEncoder, - getMetadataAdditionalFieldRuleDecoder, - getMetadataAdditionalFieldRuleEncoder, - getTransferAmountRuleDecoder, - getTransferAmountRuleEncoder, - type CpiRule, - type CpiRuleArgs, - type MetadataAdditionalFieldRule, - type MetadataAdditionalFieldRuleArgs, - type TransferAmountRule, - type TransferAmountRuleArgs, -} from '../types'; - -export type CreateGuardInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountMintTokenAccount extends string | IAccountMeta = string, - TAccountGuardAuthority extends string | IAccountMeta = string, - TAccountPayer extends string | IAccountMeta = string, - TAccountAssociatedTokenProgram extends - | string - | IAccountMeta = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountGuard extends string - ? WritableAccount - : TAccountGuard, - TAccountMint extends string - ? WritableSignerAccount & IAccountSignerMeta - : TAccountMint, - TAccountMintTokenAccount extends string - ? WritableAccount - : TAccountMintTokenAccount, - TAccountGuardAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountGuardAuthority, - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountAssociatedTokenProgram extends string - ? ReadonlyAccount - : TAccountAssociatedTokenProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type CreateGuardInstructionData = { - discriminator: ReadonlyUint8Array; - name: string; - symbol: string; - uri: string; - cpiRule: Option; - transferAmountRule: Option; - additionalFieldsRule: Array; -}; - -export type CreateGuardInstructionDataArgs = { - name: string; - symbol: string; - uri: string; - cpiRule: OptionOrNullable; - transferAmountRule: OptionOrNullable; - additionalFieldsRule: Array; -}; - -export function getCreateGuardInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - ['cpiRule', getOptionEncoder(getCpiRuleEncoder())], - ['transferAmountRule', getOptionEncoder(getTransferAmountRuleEncoder())], - [ - 'additionalFieldsRule', - getArrayEncoder(getMetadataAdditionalFieldRuleEncoder()), - ], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([251, 254, 17, 198, 219, 218, 154, 99]), - }) - ); -} - -export function getCreateGuardInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - ['cpiRule', getOptionDecoder(getCpiRuleDecoder())], - ['transferAmountRule', getOptionDecoder(getTransferAmountRuleDecoder())], - [ - 'additionalFieldsRule', - getArrayDecoder(getMetadataAdditionalFieldRuleDecoder()), - ], - ]); -} - -export function getCreateGuardInstructionDataCodec(): Codec< - CreateGuardInstructionDataArgs, - CreateGuardInstructionData -> { - return combineCodec( - getCreateGuardInstructionDataEncoder(), - getCreateGuardInstructionDataDecoder() - ); -} - -export type CreateGuardAsyncInput< - TAccountGuard extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountGuardAuthority extends string = string, - TAccountPayer extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - guard?: Address; - mint: TransactionSigner; - mintTokenAccount?: Address; - guardAuthority: TransactionSigner; - payer: TransactionSigner; - associatedTokenProgram?: Address; - tokenProgram?: Address; - systemProgram?: Address; - name: CreateGuardInstructionDataArgs['name']; - symbol: CreateGuardInstructionDataArgs['symbol']; - uri: CreateGuardInstructionDataArgs['uri']; - cpiRule: CreateGuardInstructionDataArgs['cpiRule']; - transferAmountRule: CreateGuardInstructionDataArgs['transferAmountRule']; - additionalFieldsRule: CreateGuardInstructionDataArgs['additionalFieldsRule']; -}; - -export async function getCreateGuardInstructionAsync< - TAccountGuard extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountGuardAuthority extends string, - TAccountPayer extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: CreateGuardAsyncInput< - TAccountGuard, - TAccountMint, - TAccountMintTokenAccount, - TAccountGuardAuthority, - TAccountPayer, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -): Promise< - CreateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountMintTokenAccount, - TAccountGuardAuthority, - TAccountPayer, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - guard: { value: input.guard ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - guardAuthority: { value: input.guardAuthority ?? null, isWritable: false }, - payer: { value: input.payer ?? null, isWritable: true }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.guard.value) { - accounts.guard.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 119, 101, 110, 95, 116, 111, 107, 101, 110, 95, 116, 114, 97, 110, - 115, 102, 101, 114, 95, 103, 117, 97, 114, 100, - ]) - ), - getBytesEncoder().encode( - new Uint8Array([103, 117, 97, 114, 100, 95, 118, 49]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.mintTokenAccount.value) { - accounts.mintTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode( - expectAddress(accounts.guardAuthority.value) - ), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.guard), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.guardAuthority), - getAccountMeta(accounts.payer), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getCreateGuardInstructionDataEncoder().encode( - args as CreateGuardInstructionDataArgs - ), - } as CreateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountMintTokenAccount, - TAccountGuardAuthority, - TAccountPayer, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type CreateGuardInput< - TAccountGuard extends string = string, - TAccountMint extends string = string, - TAccountMintTokenAccount extends string = string, - TAccountGuardAuthority extends string = string, - TAccountPayer extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - guard: Address; - mint: TransactionSigner; - mintTokenAccount: Address; - guardAuthority: TransactionSigner; - payer: TransactionSigner; - associatedTokenProgram?: Address; - tokenProgram?: Address; - systemProgram?: Address; - name: CreateGuardInstructionDataArgs['name']; - symbol: CreateGuardInstructionDataArgs['symbol']; - uri: CreateGuardInstructionDataArgs['uri']; - cpiRule: CreateGuardInstructionDataArgs['cpiRule']; - transferAmountRule: CreateGuardInstructionDataArgs['transferAmountRule']; - additionalFieldsRule: CreateGuardInstructionDataArgs['additionalFieldsRule']; -}; - -export function getCreateGuardInstruction< - TAccountGuard extends string, - TAccountMint extends string, - TAccountMintTokenAccount extends string, - TAccountGuardAuthority extends string, - TAccountPayer extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: CreateGuardInput< - TAccountGuard, - TAccountMint, - TAccountMintTokenAccount, - TAccountGuardAuthority, - TAccountPayer, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -): CreateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountMintTokenAccount, - TAccountGuardAuthority, - TAccountPayer, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - guard: { value: input.guard ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - mintTokenAccount: { - value: input.mintTokenAccount ?? null, - isWritable: true, - }, - guardAuthority: { value: input.guardAuthority ?? null, isWritable: false }, - payer: { value: input.payer ?? null, isWritable: true }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.guard), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.mintTokenAccount), - getAccountMeta(accounts.guardAuthority), - getAccountMeta(accounts.payer), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getCreateGuardInstructionDataEncoder().encode( - args as CreateGuardInstructionDataArgs - ), - } as CreateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountMintTokenAccount, - TAccountGuardAuthority, - TAccountPayer, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedCreateGuardInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - guard: TAccountMetas[0]; - mint: TAccountMetas[1]; - mintTokenAccount: TAccountMetas[2]; - guardAuthority: TAccountMetas[3]; - payer: TAccountMetas[4]; - associatedTokenProgram: TAccountMetas[5]; - tokenProgram: TAccountMetas[6]; - systemProgram: TAccountMetas[7]; - }; - data: CreateGuardInstructionData; -}; - -export function parseCreateGuardInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedCreateGuardInstruction { - if (instruction.accounts.length < 8) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - guard: getNextAccount(), - mint: getNextAccount(), - mintTokenAccount: getNextAccount(), - guardAuthority: getNextAccount(), - payer: getNextAccount(), - associatedTokenProgram: getNextAccount(), - tokenProgram: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getCreateGuardInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_transfer_guard/src/generated/instructions/execute.ts b/clients/js/wen_transfer_guard/src/generated/instructions/execute.ts deleted file mode 100644 index 6fda1475..00000000 --- a/clients/js/wen_transfer_guard/src/generated/instructions/execute.ts +++ /dev/null @@ -1,406 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; -import { WEN_TRANSFER_GUARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type ExecuteInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountSourceAccount extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountDestinationAccount extends string | IAccountMeta = string, - TAccountOwnerDelegate extends string | IAccountMeta = string, - TAccountExtraMetasAccount extends string | IAccountMeta = string, - TAccountGuard extends string | IAccountMeta = string, - TAccountInstructionSysvarAccount extends - | string - | IAccountMeta = 'Sysvar1nstructions1111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountSourceAccount extends string - ? ReadonlyAccount - : TAccountSourceAccount, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountDestinationAccount extends string - ? ReadonlyAccount - : TAccountDestinationAccount, - TAccountOwnerDelegate extends string - ? ReadonlyAccount - : TAccountOwnerDelegate, - TAccountExtraMetasAccount extends string - ? ReadonlyAccount - : TAccountExtraMetasAccount, - TAccountGuard extends string - ? ReadonlyAccount - : TAccountGuard, - TAccountInstructionSysvarAccount extends string - ? ReadonlyAccount - : TAccountInstructionSysvarAccount, - ...TRemainingAccounts, - ] - >; - -export type ExecuteInstructionData = { - discriminator: ReadonlyUint8Array; - amount: bigint; -}; - -export type ExecuteInstructionDataArgs = { amount: number | bigint }; - -export function getExecuteInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['amount', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([105, 37, 101, 197, 75, 251, 102, 26]), - }) - ); -} - -export function getExecuteInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['amount', getU64Decoder()], - ]); -} - -export function getExecuteInstructionDataCodec(): Codec< - ExecuteInstructionDataArgs, - ExecuteInstructionData -> { - return combineCodec( - getExecuteInstructionDataEncoder(), - getExecuteInstructionDataDecoder() - ); -} - -export type ExecuteAsyncInput< - TAccountSourceAccount extends string = string, - TAccountMint extends string = string, - TAccountDestinationAccount extends string = string, - TAccountOwnerDelegate extends string = string, - TAccountExtraMetasAccount extends string = string, - TAccountGuard extends string = string, - TAccountInstructionSysvarAccount extends string = string, -> = { - sourceAccount: Address; - mint: Address; - destinationAccount: Address; - ownerDelegate: Address; - extraMetasAccount?: Address; - guard: Address; - instructionSysvarAccount?: Address; - amount: ExecuteInstructionDataArgs['amount']; -}; - -export async function getExecuteInstructionAsync< - TAccountSourceAccount extends string, - TAccountMint extends string, - TAccountDestinationAccount extends string, - TAccountOwnerDelegate extends string, - TAccountExtraMetasAccount extends string, - TAccountGuard extends string, - TAccountInstructionSysvarAccount extends string, ->( - input: ExecuteAsyncInput< - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountInstructionSysvarAccount - > -): Promise< - ExecuteInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountInstructionSysvarAccount - > -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - sourceAccount: { value: input.sourceAccount ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: false }, - destinationAccount: { - value: input.destinationAccount ?? null, - isWritable: false, - }, - ownerDelegate: { value: input.ownerDelegate ?? null, isWritable: false }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: false, - }, - guard: { value: input.guard ?? null, isWritable: false }, - instructionSysvarAccount: { - value: input.instructionSysvarAccount ?? null, - isWritable: false, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.extraMetasAccount.value) { - accounts.extraMetasAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 101, 120, 116, 114, 97, 45, 97, 99, 99, 111, 117, 110, 116, 45, 109, - 101, 116, 97, 115, - ]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.instructionSysvarAccount.value) { - accounts.instructionSysvarAccount.value = - 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.sourceAccount), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.destinationAccount), - getAccountMeta(accounts.ownerDelegate), - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.guard), - getAccountMeta(accounts.instructionSysvarAccount), - ], - programAddress, - data: getExecuteInstructionDataEncoder().encode( - args as ExecuteInstructionDataArgs - ), - } as ExecuteInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountInstructionSysvarAccount - >; - - return instruction; -} - -export type ExecuteInput< - TAccountSourceAccount extends string = string, - TAccountMint extends string = string, - TAccountDestinationAccount extends string = string, - TAccountOwnerDelegate extends string = string, - TAccountExtraMetasAccount extends string = string, - TAccountGuard extends string = string, - TAccountInstructionSysvarAccount extends string = string, -> = { - sourceAccount: Address; - mint: Address; - destinationAccount: Address; - ownerDelegate: Address; - extraMetasAccount: Address; - guard: Address; - instructionSysvarAccount?: Address; - amount: ExecuteInstructionDataArgs['amount']; -}; - -export function getExecuteInstruction< - TAccountSourceAccount extends string, - TAccountMint extends string, - TAccountDestinationAccount extends string, - TAccountOwnerDelegate extends string, - TAccountExtraMetasAccount extends string, - TAccountGuard extends string, - TAccountInstructionSysvarAccount extends string, ->( - input: ExecuteInput< - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountInstructionSysvarAccount - > -): ExecuteInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountInstructionSysvarAccount -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - sourceAccount: { value: input.sourceAccount ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: false }, - destinationAccount: { - value: input.destinationAccount ?? null, - isWritable: false, - }, - ownerDelegate: { value: input.ownerDelegate ?? null, isWritable: false }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: false, - }, - guard: { value: input.guard ?? null, isWritable: false }, - instructionSysvarAccount: { - value: input.instructionSysvarAccount ?? null, - isWritable: false, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.instructionSysvarAccount.value) { - accounts.instructionSysvarAccount.value = - 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.sourceAccount), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.destinationAccount), - getAccountMeta(accounts.ownerDelegate), - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.guard), - getAccountMeta(accounts.instructionSysvarAccount), - ], - programAddress, - data: getExecuteInstructionDataEncoder().encode( - args as ExecuteInstructionDataArgs - ), - } as ExecuteInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountSourceAccount, - TAccountMint, - TAccountDestinationAccount, - TAccountOwnerDelegate, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountInstructionSysvarAccount - >; - - return instruction; -} - -export type ParsedExecuteInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - sourceAccount: TAccountMetas[0]; - mint: TAccountMetas[1]; - destinationAccount: TAccountMetas[2]; - ownerDelegate: TAccountMetas[3]; - extraMetasAccount: TAccountMetas[4]; - guard: TAccountMetas[5]; - instructionSysvarAccount: TAccountMetas[6]; - }; - data: ExecuteInstructionData; -}; - -export function parseExecuteInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedExecuteInstruction { - if (instruction.accounts.length < 7) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - sourceAccount: getNextAccount(), - mint: getNextAccount(), - destinationAccount: getNextAccount(), - ownerDelegate: getNextAccount(), - extraMetasAccount: getNextAccount(), - guard: getNextAccount(), - instructionSysvarAccount: getNextAccount(), - }, - data: getExecuteInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_transfer_guard/src/generated/instructions/index.ts b/clients/js/wen_transfer_guard/src/generated/instructions/index.ts deleted file mode 100644 index c454adce..00000000 --- a/clients/js/wen_transfer_guard/src/generated/instructions/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './createGuard'; -export * from './execute'; -export * from './initialize'; -export * from './updateGuard'; diff --git a/clients/js/wen_transfer_guard/src/generated/instructions/initialize.ts b/clients/js/wen_transfer_guard/src/generated/instructions/initialize.ts deleted file mode 100644 index 636be1cb..00000000 --- a/clients/js/wen_transfer_guard/src/generated/instructions/initialize.ts +++ /dev/null @@ -1,363 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_TRANSFER_GUARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type InitializeInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountExtraMetasAccount extends string | IAccountMeta = string, - TAccountGuard extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountTransferHookAuthority extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountPayer extends string | IAccountMeta = string, - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountExtraMetasAccount extends string - ? WritableAccount - : TAccountExtraMetasAccount, - TAccountGuard extends string - ? ReadonlyAccount - : TAccountGuard, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountTransferHookAuthority extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountTransferHookAuthority, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - ...TRemainingAccounts, - ] - >; - -export type InitializeInstructionData = { discriminator: ReadonlyUint8Array }; - -export type InitializeInstructionDataArgs = {}; - -export function getInitializeInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([43, 34, 13, 49, 167, 88, 235, 235]), - }) - ); -} - -export function getInitializeInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getInitializeInstructionDataCodec(): Codec< - InitializeInstructionDataArgs, - InitializeInstructionData -> { - return combineCodec( - getInitializeInstructionDataEncoder(), - getInitializeInstructionDataDecoder() - ); -} - -export type InitializeAsyncInput< - TAccountExtraMetasAccount extends string = string, - TAccountGuard extends string = string, - TAccountMint extends string = string, - TAccountTransferHookAuthority extends string = string, - TAccountSystemProgram extends string = string, - TAccountPayer extends string = string, -> = { - extraMetasAccount?: Address; - guard: Address; - mint: Address; - transferHookAuthority: TransactionSigner; - systemProgram?: Address; - payer: TransactionSigner; -}; - -export async function getInitializeInstructionAsync< - TAccountExtraMetasAccount extends string, - TAccountGuard extends string, - TAccountMint extends string, - TAccountTransferHookAuthority extends string, - TAccountSystemProgram extends string, - TAccountPayer extends string, ->( - input: InitializeAsyncInput< - TAccountExtraMetasAccount, - TAccountGuard, - TAccountMint, - TAccountTransferHookAuthority, - TAccountSystemProgram, - TAccountPayer - > -): Promise< - InitializeInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountMint, - TAccountTransferHookAuthority, - TAccountSystemProgram, - TAccountPayer - > -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: true, - }, - guard: { value: input.guard ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: false }, - transferHookAuthority: { - value: input.transferHookAuthority ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - payer: { value: input.payer ?? null, isWritable: true }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.extraMetasAccount.value) { - accounts.extraMetasAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 101, 120, 116, 114, 97, 45, 97, 99, 99, 111, 117, 110, 116, 45, 109, - 101, 116, 97, 115, - ]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.guard), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.transferHookAuthority), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.payer), - ], - programAddress, - data: getInitializeInstructionDataEncoder().encode({}), - } as InitializeInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountMint, - TAccountTransferHookAuthority, - TAccountSystemProgram, - TAccountPayer - >; - - return instruction; -} - -export type InitializeInput< - TAccountExtraMetasAccount extends string = string, - TAccountGuard extends string = string, - TAccountMint extends string = string, - TAccountTransferHookAuthority extends string = string, - TAccountSystemProgram extends string = string, - TAccountPayer extends string = string, -> = { - extraMetasAccount: Address; - guard: Address; - mint: Address; - transferHookAuthority: TransactionSigner; - systemProgram?: Address; - payer: TransactionSigner; -}; - -export function getInitializeInstruction< - TAccountExtraMetasAccount extends string, - TAccountGuard extends string, - TAccountMint extends string, - TAccountTransferHookAuthority extends string, - TAccountSystemProgram extends string, - TAccountPayer extends string, ->( - input: InitializeInput< - TAccountExtraMetasAccount, - TAccountGuard, - TAccountMint, - TAccountTransferHookAuthority, - TAccountSystemProgram, - TAccountPayer - > -): InitializeInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountMint, - TAccountTransferHookAuthority, - TAccountSystemProgram, - TAccountPayer -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: true, - }, - guard: { value: input.guard ?? null, isWritable: false }, - mint: { value: input.mint ?? null, isWritable: false }, - transferHookAuthority: { - value: input.transferHookAuthority ?? null, - isWritable: true, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - payer: { value: input.payer ?? null, isWritable: true }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.guard), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.transferHookAuthority), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.payer), - ], - programAddress, - data: getInitializeInstructionDataEncoder().encode({}), - } as InitializeInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountExtraMetasAccount, - TAccountGuard, - TAccountMint, - TAccountTransferHookAuthority, - TAccountSystemProgram, - TAccountPayer - >; - - return instruction; -} - -export type ParsedInitializeInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - extraMetasAccount: TAccountMetas[0]; - guard: TAccountMetas[1]; - mint: TAccountMetas[2]; - transferHookAuthority: TAccountMetas[3]; - systemProgram: TAccountMetas[4]; - payer: TAccountMetas[5]; - }; - data: InitializeInstructionData; -}; - -export function parseInitializeInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedInitializeInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - extraMetasAccount: getNextAccount(), - guard: getNextAccount(), - mint: getNextAccount(), - transferHookAuthority: getNextAccount(), - systemProgram: getNextAccount(), - payer: getNextAccount(), - }, - data: getInitializeInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_transfer_guard/src/generated/instructions/updateGuard.ts b/clients/js/wen_transfer_guard/src/generated/instructions/updateGuard.ts deleted file mode 100644 index 2d17d9bf..00000000 --- a/clients/js/wen_transfer_guard/src/generated/instructions/updateGuard.ts +++ /dev/null @@ -1,434 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getOptionDecoder, - getOptionEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type Option, - type OptionOrNullable, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, -} from '@solana/web3.js'; -import { WEN_TRANSFER_GUARD_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; -import { - getCpiRuleDecoder, - getCpiRuleEncoder, - getMetadataAdditionalFieldRuleDecoder, - getMetadataAdditionalFieldRuleEncoder, - getTransferAmountRuleDecoder, - getTransferAmountRuleEncoder, - type CpiRule, - type CpiRuleArgs, - type MetadataAdditionalFieldRule, - type MetadataAdditionalFieldRuleArgs, - type TransferAmountRule, - type TransferAmountRuleArgs, -} from '../types'; - -export type UpdateGuardInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountTokenAccount extends string | IAccountMeta = string, - TAccountGuardAuthority extends string | IAccountMeta = string, - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountGuard extends string - ? WritableAccount - : TAccountGuard, - TAccountMint extends string - ? ReadonlyAccount - : TAccountMint, - TAccountTokenAccount extends string - ? ReadonlyAccount - : TAccountTokenAccount, - TAccountGuardAuthority extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountGuardAuthority, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type UpdateGuardInstructionData = { - discriminator: ReadonlyUint8Array; - cpiRule: Option; - transferAmountRule: Option; - additionalFieldsRule: Array; -}; - -export type UpdateGuardInstructionDataArgs = { - cpiRule: OptionOrNullable; - transferAmountRule: OptionOrNullable; - additionalFieldsRule: Array; -}; - -export function getUpdateGuardInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['cpiRule', getOptionEncoder(getCpiRuleEncoder())], - ['transferAmountRule', getOptionEncoder(getTransferAmountRuleEncoder())], - [ - 'additionalFieldsRule', - getArrayEncoder(getMetadataAdditionalFieldRuleEncoder()), - ], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([51, 38, 175, 180, 25, 249, 39, 24]), - }) - ); -} - -export function getUpdateGuardInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['cpiRule', getOptionDecoder(getCpiRuleDecoder())], - ['transferAmountRule', getOptionDecoder(getTransferAmountRuleDecoder())], - [ - 'additionalFieldsRule', - getArrayDecoder(getMetadataAdditionalFieldRuleDecoder()), - ], - ]); -} - -export function getUpdateGuardInstructionDataCodec(): Codec< - UpdateGuardInstructionDataArgs, - UpdateGuardInstructionData -> { - return combineCodec( - getUpdateGuardInstructionDataEncoder(), - getUpdateGuardInstructionDataDecoder() - ); -} - -export type UpdateGuardAsyncInput< - TAccountGuard extends string = string, - TAccountMint extends string = string, - TAccountTokenAccount extends string = string, - TAccountGuardAuthority extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - guard?: Address; - mint: Address; - tokenAccount?: Address; - guardAuthority: TransactionSigner; - tokenProgram?: Address; - systemProgram?: Address; - cpiRule: UpdateGuardInstructionDataArgs['cpiRule']; - transferAmountRule: UpdateGuardInstructionDataArgs['transferAmountRule']; - additionalFieldsRule: UpdateGuardInstructionDataArgs['additionalFieldsRule']; -}; - -export async function getUpdateGuardInstructionAsync< - TAccountGuard extends string, - TAccountMint extends string, - TAccountTokenAccount extends string, - TAccountGuardAuthority extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: UpdateGuardAsyncInput< - TAccountGuard, - TAccountMint, - TAccountTokenAccount, - TAccountGuardAuthority, - TAccountTokenProgram, - TAccountSystemProgram - > -): Promise< - UpdateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountTokenAccount, - TAccountGuardAuthority, - TAccountTokenProgram, - TAccountSystemProgram - > -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - guard: { value: input.guard ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: false }, - tokenAccount: { value: input.tokenAccount ?? null, isWritable: false }, - guardAuthority: { value: input.guardAuthority ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.guard.value) { - accounts.guard.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([ - 119, 101, 110, 95, 116, 111, 107, 101, 110, 95, 116, 114, 97, 110, - 115, 102, 101, 114, 95, 103, 117, 97, 114, 100, - ]) - ), - getBytesEncoder().encode( - new Uint8Array([103, 117, 97, 114, 100, 95, 118, 49]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.tokenAccount.value) { - accounts.tokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode( - expectAddress(accounts.guardAuthority.value) - ), - getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.guard), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.tokenAccount), - getAccountMeta(accounts.guardAuthority), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getUpdateGuardInstructionDataEncoder().encode( - args as UpdateGuardInstructionDataArgs - ), - } as UpdateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountTokenAccount, - TAccountGuardAuthority, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type UpdateGuardInput< - TAccountGuard extends string = string, - TAccountMint extends string = string, - TAccountTokenAccount extends string = string, - TAccountGuardAuthority extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - guard: Address; - mint: Address; - tokenAccount: Address; - guardAuthority: TransactionSigner; - tokenProgram?: Address; - systemProgram?: Address; - cpiRule: UpdateGuardInstructionDataArgs['cpiRule']; - transferAmountRule: UpdateGuardInstructionDataArgs['transferAmountRule']; - additionalFieldsRule: UpdateGuardInstructionDataArgs['additionalFieldsRule']; -}; - -export function getUpdateGuardInstruction< - TAccountGuard extends string, - TAccountMint extends string, - TAccountTokenAccount extends string, - TAccountGuardAuthority extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: UpdateGuardInput< - TAccountGuard, - TAccountMint, - TAccountTokenAccount, - TAccountGuardAuthority, - TAccountTokenProgram, - TAccountSystemProgram - > -): UpdateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountTokenAccount, - TAccountGuardAuthority, - TAccountTokenProgram, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_TRANSFER_GUARD_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - guard: { value: input.guard ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: false }, - tokenAccount: { value: input.tokenAccount ?? null, isWritable: false }, - guardAuthority: { value: input.guardAuthority ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.guard), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.tokenAccount), - getAccountMeta(accounts.guardAuthority), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getUpdateGuardInstructionDataEncoder().encode( - args as UpdateGuardInstructionDataArgs - ), - } as UpdateGuardInstruction< - typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountGuard, - TAccountMint, - TAccountTokenAccount, - TAccountGuardAuthority, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedUpdateGuardInstruction< - TProgram extends string = typeof WEN_TRANSFER_GUARD_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - guard: TAccountMetas[0]; - mint: TAccountMetas[1]; - tokenAccount: TAccountMetas[2]; - guardAuthority: TAccountMetas[3]; - tokenProgram: TAccountMetas[4]; - systemProgram: TAccountMetas[5]; - }; - data: UpdateGuardInstructionData; -}; - -export function parseUpdateGuardInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedUpdateGuardInstruction { - if (instruction.accounts.length < 6) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - guard: getNextAccount(), - mint: getNextAccount(), - tokenAccount: getNextAccount(), - guardAuthority: getNextAccount(), - tokenProgram: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getUpdateGuardInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_transfer_guard/src/generated/programs/index.ts b/clients/js/wen_transfer_guard/src/generated/programs/index.ts deleted file mode 100644 index 5a97dac0..00000000 --- a/clients/js/wen_transfer_guard/src/generated/programs/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenTransferGuard'; diff --git a/clients/js/wen_transfer_guard/src/generated/programs/wenTransferGuard.ts b/clients/js/wen_transfer_guard/src/generated/programs/wenTransferGuard.ts deleted file mode 100644 index d84d9c1d..00000000 --- a/clients/js/wen_transfer_guard/src/generated/programs/wenTransferGuard.ts +++ /dev/null @@ -1,124 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - containsBytes, - fixEncoderSize, - getBytesEncoder, - type Address, -} from '@solana/web3.js'; -import { - type ParsedCreateGuardInstruction, - type ParsedExecuteInstruction, - type ParsedInitializeInstruction, - type ParsedUpdateGuardInstruction, -} from '../instructions'; - -export const WEN_TRANSFER_GUARD_PROGRAM_ADDRESS = - 'LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw' as Address<'LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw'>; - -export enum WenTransferGuardAccount { - GuardV1, -} - -export function identifyWenTransferGuardAccount( - account: { data: Uint8Array } | Uint8Array -): WenTransferGuardAccount { - const data = account instanceof Uint8Array ? account : account.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([185, 149, 156, 78, 245, 108, 172, 68]) - ), - 0 - ) - ) { - return WenTransferGuardAccount.GuardV1; - } - throw new Error( - 'The provided account could not be identified as a wenTransferGuard account.' - ); -} - -export enum WenTransferGuardInstruction { - CreateGuard, - Execute, - Initialize, - UpdateGuard, -} - -export function identifyWenTransferGuardInstruction( - instruction: { data: Uint8Array } | Uint8Array -): WenTransferGuardInstruction { - const data = - instruction instanceof Uint8Array ? instruction : instruction.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([251, 254, 17, 198, 219, 218, 154, 99]) - ), - 0 - ) - ) { - return WenTransferGuardInstruction.CreateGuard; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([105, 37, 101, 197, 75, 251, 102, 26]) - ), - 0 - ) - ) { - return WenTransferGuardInstruction.Execute; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([43, 34, 13, 49, 167, 88, 235, 235]) - ), - 0 - ) - ) { - return WenTransferGuardInstruction.Initialize; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([51, 38, 175, 180, 25, 249, 39, 24]) - ), - 0 - ) - ) { - return WenTransferGuardInstruction.UpdateGuard; - } - throw new Error( - 'The provided instruction could not be identified as a wenTransferGuard instruction.' - ); -} - -export type ParsedWenTransferGuardInstruction< - TProgram extends string = 'LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw', -> = - | ({ - instructionType: WenTransferGuardInstruction.CreateGuard; - } & ParsedCreateGuardInstruction) - | ({ - instructionType: WenTransferGuardInstruction.Execute; - } & ParsedExecuteInstruction) - | ({ - instructionType: WenTransferGuardInstruction.Initialize; - } & ParsedInitializeInstruction) - | ({ - instructionType: WenTransferGuardInstruction.UpdateGuard; - } & ParsedUpdateGuardInstruction); diff --git a/clients/js/wen_transfer_guard/src/generated/shared/index.ts b/clients/js/wen_transfer_guard/src/generated/shared/index.ts deleted file mode 100644 index 278bf59f..00000000 --- a/clients/js/wen_transfer_guard/src/generated/shared/index.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - AccountRole, - isProgramDerivedAddress, - isTransactionSigner as web3JsIsTransactionSigner, - type Address, - type IAccountMeta, - type IAccountSignerMeta, - type ProgramDerivedAddress, - type TransactionSigner, - upgradeRoleToSigner, -} from '@solana/web3.js'; - -/** - * Asserts that the given value is not null or undefined. - * @internal - */ -export function expectSome(value: T | null | undefined): T { - if (value == null) { - throw new Error('Expected a value but received null or undefined.'); - } - return value; -} - -/** - * Asserts that the given value is a PublicKey. - * @internal - */ -export function expectAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): Address { - if (!value) { - throw new Error('Expected a Address.'); - } - if (typeof value === 'object' && 'address' in value) { - return value.address; - } - if (Array.isArray(value)) { - return value[0]; - } - return value as Address; -} - -/** - * Asserts that the given value is a PDA. - * @internal - */ -export function expectProgramDerivedAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): ProgramDerivedAddress { - if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) { - throw new Error('Expected a ProgramDerivedAddress.'); - } - return value; -} - -/** - * Asserts that the given value is a TransactionSigner. - * @internal - */ -export function expectTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): TransactionSigner { - if (!value || !isTransactionSigner(value)) { - throw new Error('Expected a TransactionSigner.'); - } - return value; -} - -/** - * Defines an instruction account to resolve. - * @internal - */ -export type ResolvedAccount< - T extends string = string, - U extends - | Address - | ProgramDerivedAddress - | TransactionSigner - | null = - | Address - | ProgramDerivedAddress - | TransactionSigner - | null, -> = { - isWritable: boolean; - value: U; -}; - -/** - * Defines an instruction that stores additional bytes on-chain. - * @internal - */ -export type IInstructionWithByteDelta = { - byteDelta: number; -}; - -/** - * Get account metas and signers from resolved accounts. - * @internal - */ -export function getAccountMetaFactory( - programAddress: Address, - optionalAccountStrategy: 'omitted' | 'programId' -) { - return ( - account: ResolvedAccount - ): IAccountMeta | IAccountSignerMeta | undefined => { - if (!account.value) { - if (optionalAccountStrategy === 'omitted') return; - return Object.freeze({ - address: programAddress, - role: AccountRole.READONLY, - }); - } - - const writableRole = account.isWritable - ? AccountRole.WRITABLE - : AccountRole.READONLY; - return Object.freeze({ - address: expectAddress(account.value), - role: isTransactionSigner(account.value) - ? upgradeRoleToSigner(writableRole) - : writableRole, - ...(isTransactionSigner(account.value) ? { signer: account.value } : {}), - }); - }; -} - -export function isTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner -): value is TransactionSigner { - return ( - !!value && - typeof value === 'object' && - 'address' in value && - web3JsIsTransactionSigner(value) - ); -} diff --git a/clients/js/wen_transfer_guard/src/generated/types/cpiRule.ts b/clients/js/wen_transfer_guard/src/generated/types/cpiRule.ts deleted file mode 100644 index eb3cc9c2..00000000 --- a/clients/js/wen_transfer_guard/src/generated/types/cpiRule.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - getAddressDecoder, - getAddressEncoder, - getArrayDecoder, - getArrayEncoder, - getDiscriminatedUnionDecoder, - getDiscriminatedUnionEncoder, - getStructDecoder, - getStructEncoder, - getTupleDecoder, - getTupleEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type GetDiscriminatedUnionVariant, - type GetDiscriminatedUnionVariantContent, -} from '@solana/web3.js'; - -/** - * Controls which protocols can interact with the token by - * enforcing Allow and Deny lists. - */ - -export type CpiRule = - | { __kind: 'Allow'; fields: readonly [Array
] } - | { __kind: 'Deny'; fields: readonly [Array
] }; - -export type CpiRuleArgs = CpiRule; - -export function getCpiRuleEncoder(): Encoder { - return getDiscriminatedUnionEncoder([ - [ - 'Allow', - getStructEncoder([ - ['fields', getTupleEncoder([getArrayEncoder(getAddressEncoder())])], - ]), - ], - [ - 'Deny', - getStructEncoder([ - ['fields', getTupleEncoder([getArrayEncoder(getAddressEncoder())])], - ]), - ], - ]); -} - -export function getCpiRuleDecoder(): Decoder { - return getDiscriminatedUnionDecoder([ - [ - 'Allow', - getStructDecoder([ - ['fields', getTupleDecoder([getArrayDecoder(getAddressDecoder())])], - ]), - ], - [ - 'Deny', - getStructDecoder([ - ['fields', getTupleDecoder([getArrayDecoder(getAddressDecoder())])], - ]), - ], - ]); -} - -export function getCpiRuleCodec(): Codec { - return combineCodec(getCpiRuleEncoder(), getCpiRuleDecoder()); -} - -// Data Enum Helpers. -export function cpiRule( - kind: 'Allow', - data: GetDiscriminatedUnionVariantContent< - CpiRuleArgs, - '__kind', - 'Allow' - >['fields'] -): GetDiscriminatedUnionVariant; -export function cpiRule( - kind: 'Deny', - data: GetDiscriminatedUnionVariantContent< - CpiRuleArgs, - '__kind', - 'Deny' - >['fields'] -): GetDiscriminatedUnionVariant; -export function cpiRule( - kind: K, - data?: Data -) { - return Array.isArray(data) - ? { __kind: kind, fields: data } - : { __kind: kind, ...(data ?? {}) }; -} - -export function isCpiRule( - kind: K, - value: CpiRule -): value is CpiRule & { __kind: K } { - return value.__kind === kind; -} diff --git a/clients/js/wen_transfer_guard/src/generated/types/index.ts b/clients/js/wen_transfer_guard/src/generated/types/index.ts deleted file mode 100644 index aa4f5f52..00000000 --- a/clients/js/wen_transfer_guard/src/generated/types/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './cpiRule'; -export * from './metadataAdditionalFieldRestriction'; -export * from './metadataAdditionalFieldRule'; -export * from './transferAmountRule'; diff --git a/clients/js/wen_transfer_guard/src/generated/types/metadataAdditionalFieldRestriction.ts b/clients/js/wen_transfer_guard/src/generated/types/metadataAdditionalFieldRestriction.ts deleted file mode 100644 index 34ac2608..00000000 --- a/clients/js/wen_transfer_guard/src/generated/types/metadataAdditionalFieldRestriction.ts +++ /dev/null @@ -1,158 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - getArrayDecoder, - getArrayEncoder, - getDiscriminatedUnionDecoder, - getDiscriminatedUnionEncoder, - getStructDecoder, - getStructEncoder, - getTupleDecoder, - getTupleEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - type Codec, - type Decoder, - type Encoder, - type GetDiscriminatedUnionVariant, - type GetDiscriminatedUnionVariantContent, -} from '@solana/web3.js'; - -/** - * Inner enum for the MetadataAdditionalFieldRestriction enum. - * * Includes - The field must include one of the values in the vector. - * * Excludes - The field must not include any of the values in the vector. - */ - -export type MetadataAdditionalFieldRestriction = - | { __kind: 'Includes'; fields: readonly [Array] } - | { __kind: 'Excludes'; fields: readonly [Array] }; - -export type MetadataAdditionalFieldRestrictionArgs = - MetadataAdditionalFieldRestriction; - -export function getMetadataAdditionalFieldRestrictionEncoder(): Encoder { - return getDiscriminatedUnionEncoder([ - [ - 'Includes', - getStructEncoder([ - [ - 'fields', - getTupleEncoder([ - getArrayEncoder( - addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()) - ), - ]), - ], - ]), - ], - [ - 'Excludes', - getStructEncoder([ - [ - 'fields', - getTupleEncoder([ - getArrayEncoder( - addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()) - ), - ]), - ], - ]), - ], - ]); -} - -export function getMetadataAdditionalFieldRestrictionDecoder(): Decoder { - return getDiscriminatedUnionDecoder([ - [ - 'Includes', - getStructDecoder([ - [ - 'fields', - getTupleDecoder([ - getArrayDecoder( - addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()) - ), - ]), - ], - ]), - ], - [ - 'Excludes', - getStructDecoder([ - [ - 'fields', - getTupleDecoder([ - getArrayDecoder( - addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()) - ), - ]), - ], - ]), - ], - ]); -} - -export function getMetadataAdditionalFieldRestrictionCodec(): Codec< - MetadataAdditionalFieldRestrictionArgs, - MetadataAdditionalFieldRestriction -> { - return combineCodec( - getMetadataAdditionalFieldRestrictionEncoder(), - getMetadataAdditionalFieldRestrictionDecoder() - ); -} - -// Data Enum Helpers. -export function metadataAdditionalFieldRestriction( - kind: 'Includes', - data: GetDiscriminatedUnionVariantContent< - MetadataAdditionalFieldRestrictionArgs, - '__kind', - 'Includes' - >['fields'] -): GetDiscriminatedUnionVariant< - MetadataAdditionalFieldRestrictionArgs, - '__kind', - 'Includes' ->; -export function metadataAdditionalFieldRestriction( - kind: 'Excludes', - data: GetDiscriminatedUnionVariantContent< - MetadataAdditionalFieldRestrictionArgs, - '__kind', - 'Excludes' - >['fields'] -): GetDiscriminatedUnionVariant< - MetadataAdditionalFieldRestrictionArgs, - '__kind', - 'Excludes' ->; -export function metadataAdditionalFieldRestriction< - K extends MetadataAdditionalFieldRestrictionArgs['__kind'], - Data, ->(kind: K, data?: Data) { - return Array.isArray(data) - ? { __kind: kind, fields: data } - : { __kind: kind, ...(data ?? {}) }; -} - -export function isMetadataAdditionalFieldRestriction< - K extends MetadataAdditionalFieldRestriction['__kind'], ->( - kind: K, - value: MetadataAdditionalFieldRestriction -): value is MetadataAdditionalFieldRestriction & { __kind: K } { - return value.__kind === kind; -} diff --git a/clients/js/wen_transfer_guard/src/generated/types/metadataAdditionalFieldRule.ts b/clients/js/wen_transfer_guard/src/generated/types/metadataAdditionalFieldRule.ts deleted file mode 100644 index 83758eca..00000000 --- a/clients/js/wen_transfer_guard/src/generated/types/metadataAdditionalFieldRule.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - addDecoderSizePrefix, - addEncoderSizePrefix, - combineCodec, - getOptionDecoder, - getOptionEncoder, - getStructDecoder, - getStructEncoder, - getU32Decoder, - getU32Encoder, - getUtf8Decoder, - getUtf8Encoder, - type Codec, - type Decoder, - type Encoder, - type Option, - type OptionOrNullable, -} from '@solana/web3.js'; -import { - getMetadataAdditionalFieldRestrictionDecoder, - getMetadataAdditionalFieldRestrictionEncoder, - type MetadataAdditionalFieldRestriction, - type MetadataAdditionalFieldRestrictionArgs, -} from '.'; - -/** - * Enforces rules on a single additional field in the mint metadata. - * The field must exist and the value must pass the restriction. - */ - -export type MetadataAdditionalFieldRule = { - field: string; - valueRestrictions: Option; -}; - -export type MetadataAdditionalFieldRuleArgs = { - field: string; - valueRestrictions: OptionOrNullable; -}; - -export function getMetadataAdditionalFieldRuleEncoder(): Encoder { - return getStructEncoder([ - ['field', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], - [ - 'valueRestrictions', - getOptionEncoder(getMetadataAdditionalFieldRestrictionEncoder()), - ], - ]); -} - -export function getMetadataAdditionalFieldRuleDecoder(): Decoder { - return getStructDecoder([ - ['field', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], - [ - 'valueRestrictions', - getOptionDecoder(getMetadataAdditionalFieldRestrictionDecoder()), - ], - ]); -} - -export function getMetadataAdditionalFieldRuleCodec(): Codec< - MetadataAdditionalFieldRuleArgs, - MetadataAdditionalFieldRule -> { - return combineCodec( - getMetadataAdditionalFieldRuleEncoder(), - getMetadataAdditionalFieldRuleDecoder() - ); -} diff --git a/clients/js/wen_transfer_guard/src/generated/types/transferAmountRule.ts b/clients/js/wen_transfer_guard/src/generated/types/transferAmountRule.ts deleted file mode 100644 index a922d812..00000000 --- a/clients/js/wen_transfer_guard/src/generated/types/transferAmountRule.ts +++ /dev/null @@ -1,146 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - getDiscriminatedUnionDecoder, - getDiscriminatedUnionEncoder, - getStructDecoder, - getStructEncoder, - getTupleDecoder, - getTupleEncoder, - getU64Decoder, - getU64Encoder, - type Codec, - type Decoder, - type Encoder, - type GetDiscriminatedUnionVariant, - type GetDiscriminatedUnionVariantContent, -} from '@solana/web3.js'; - -/** - * Enforces rules on the amount of tokens being transferred. - * The rules can be above, below, equal to, or within a range. - */ - -export type TransferAmountRule = - | { __kind: 'Above'; fields: readonly [bigint] } - | { __kind: 'Below'; fields: readonly [bigint] } - | { __kind: 'Equal'; fields: readonly [bigint] } - | { __kind: 'Rang'; fields: readonly [bigint, bigint] }; - -export type TransferAmountRuleArgs = - | { __kind: 'Above'; fields: readonly [number | bigint] } - | { __kind: 'Below'; fields: readonly [number | bigint] } - | { __kind: 'Equal'; fields: readonly [number | bigint] } - | { __kind: 'Rang'; fields: readonly [number | bigint, number | bigint] }; - -export function getTransferAmountRuleEncoder(): Encoder { - return getDiscriminatedUnionEncoder([ - [ - 'Above', - getStructEncoder([['fields', getTupleEncoder([getU64Encoder()])]]), - ], - [ - 'Below', - getStructEncoder([['fields', getTupleEncoder([getU64Encoder()])]]), - ], - [ - 'Equal', - getStructEncoder([['fields', getTupleEncoder([getU64Encoder()])]]), - ], - [ - 'Rang', - getStructEncoder([ - ['fields', getTupleEncoder([getU64Encoder(), getU64Encoder()])], - ]), - ], - ]); -} - -export function getTransferAmountRuleDecoder(): Decoder { - return getDiscriminatedUnionDecoder([ - [ - 'Above', - getStructDecoder([['fields', getTupleDecoder([getU64Decoder()])]]), - ], - [ - 'Below', - getStructDecoder([['fields', getTupleDecoder([getU64Decoder()])]]), - ], - [ - 'Equal', - getStructDecoder([['fields', getTupleDecoder([getU64Decoder()])]]), - ], - [ - 'Rang', - getStructDecoder([ - ['fields', getTupleDecoder([getU64Decoder(), getU64Decoder()])], - ]), - ], - ]); -} - -export function getTransferAmountRuleCodec(): Codec< - TransferAmountRuleArgs, - TransferAmountRule -> { - return combineCodec( - getTransferAmountRuleEncoder(), - getTransferAmountRuleDecoder() - ); -} - -// Data Enum Helpers. -export function transferAmountRule( - kind: 'Above', - data: GetDiscriminatedUnionVariantContent< - TransferAmountRuleArgs, - '__kind', - 'Above' - >['fields'] -): GetDiscriminatedUnionVariant; -export function transferAmountRule( - kind: 'Below', - data: GetDiscriminatedUnionVariantContent< - TransferAmountRuleArgs, - '__kind', - 'Below' - >['fields'] -): GetDiscriminatedUnionVariant; -export function transferAmountRule( - kind: 'Equal', - data: GetDiscriminatedUnionVariantContent< - TransferAmountRuleArgs, - '__kind', - 'Equal' - >['fields'] -): GetDiscriminatedUnionVariant; -export function transferAmountRule( - kind: 'Rang', - data: GetDiscriminatedUnionVariantContent< - TransferAmountRuleArgs, - '__kind', - 'Rang' - >['fields'] -): GetDiscriminatedUnionVariant; -export function transferAmountRule< - K extends TransferAmountRuleArgs['__kind'], - Data, ->(kind: K, data?: Data) { - return Array.isArray(data) - ? { __kind: kind, fields: data } - : { __kind: kind, ...(data ?? {}) }; -} - -export function isTransferAmountRule( - kind: K, - value: TransferAmountRule -): value is TransferAmountRule & { __kind: K } { - return value.__kind === kind; -} diff --git a/clients/js/wen_transfer_guard/src/index.ts b/clients/js/wen_transfer_guard/src/index.ts deleted file mode 100644 index 69e4e4eb..00000000 --- a/clients/js/wen_transfer_guard/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './generated'; diff --git a/clients/js/wen_transfer_guard/tsconfig.declarations.json b/clients/js/wen_transfer_guard/tsconfig.declarations.json deleted file mode 100644 index de76d4dd..00000000 --- a/clients/js/wen_transfer_guard/tsconfig.declarations.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "outDir": "./dist/types" - }, - "extends": "./tsconfig.json" -} diff --git a/clients/js/wen_transfer_guard/tsconfig.json b/clients/js/wen_transfer_guard/tsconfig.json deleted file mode 100644 index d5835b07..00000000 --- a/clients/js/wen_transfer_guard/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist", - "baseUrl": ".", - "rootDir": ".", - "target": "ES2020", - "module": "commonjs", - "sourceMap": true, - "declaration": true, - "declarationMap": false, - "removeComments": false, - "moduleResolution": "node", - "noEmit": false, - "preserveWatchOutput": true, - "emitDeclarationOnly": false, - "importHelpers": false, - "strict": true, - "noUnusedLocals": true, - "noFallthroughCasesInSwitch": true, - "downlevelIteration": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "incremental": false, - "resolveJsonModule": true, - "skipLibCheck": true, - "useUnknownInCatchVariables": false - }, - "include": ["src", "test"], - "exclude": ["node_modules", "dist", "build", "lib"] -} \ No newline at end of file diff --git a/clients/js/wen_transfer_guard/tsup.config.ts b/clients/js/wen_transfer_guard/tsup.config.ts deleted file mode 100644 index bc6a342d..00000000 --- a/clients/js/wen_transfer_guard/tsup.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { env } from 'node:process'; -import path from 'node:path'; -import { defineConfig, Options } from 'tsup'; - -const SHARED_OPTIONS: Options = { - define: { __VERSION__: `"${env.npm_package_version}"` }, - entry: ['./src/index.ts'], - inject: [path.resolve(__dirname, 'env-shim.ts')], - outDir: './dist/src', - outExtension: ({ format }) => ({ js: format === 'cjs' ? '.js' : '.mjs' }), - sourcemap: true, - treeshake: true, -}; - -export default defineConfig(() => [ - // Source. - { ...SHARED_OPTIONS, format: 'cjs' }, - { ...SHARED_OPTIONS, format: 'esm' }, - - // Tests. - { - ...SHARED_OPTIONS, - bundle: false, - entry: ['./test/*.ts'], - format: 'cjs', - outDir: './dist/test', - }, -]); diff --git a/clients/js/wen_wns_marketplace/.eslintrc.js b/clients/js/wen_wns_marketplace/.eslintrc.js deleted file mode 100644 index a87f62c6..00000000 --- a/clients/js/wen_wns_marketplace/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - extends: ['airbnb-base', 'airbnb-typescript/base', 'prettier'], - plugins: ['prettier'], - overrides: [], - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: 'tsconfig.json', - tsconfigRootDir: __dirname, - }, - rules: { - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/no-unused-vars': 'off', - 'class-methods-use-this': 'off', - 'import/prefer-default-export': 'off', - 'import/no-cycle': 'off', - 'no-underscore-dangle': 'off', - 'max-classes-per-file': 'off', - 'no-param-reassign': 'off', - 'func-names': 'off', - 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], - }, - ignorePatterns: ['dist/**', '.eslintrc.js'], -}; diff --git a/clients/js/wen_wns_marketplace/.gitignore b/clients/js/wen_wns_marketplace/.gitignore deleted file mode 100644 index 8205f972..00000000 --- a/clients/js/wen_wns_marketplace/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.vercel -docs -dist \ No newline at end of file diff --git a/clients/js/wen_wns_marketplace/.prettierrc.json b/clients/js/wen_wns_marketplace/.prettierrc.json deleted file mode 100644 index 3453ff69..00000000 --- a/clients/js/wen_wns_marketplace/.prettierrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "trailingComma": "es5", - "useTabs": false, - "tabWidth": 2, - "arrowParens": "always", - "printWidth": 80, - "parser": "typescript" -} diff --git a/clients/js/wen_wns_marketplace/README.md b/clients/js/wen_wns_marketplace/README.md deleted file mode 100644 index a9a7dad0..00000000 --- a/clients/js/wen_wns_marketplace/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -A JavaScript library for WEN WNS Marketplace Demo [program](https://github.com/wen-community/wen-program-library). - -## Getting started - -1. First, ensure you have `@solana/web3.js@2.0.0-preview.3` as dependency in your project. -2. Next, install this library using the package manager of your choice. - ```sh - npm install @wen-community/wen-royalty-distribution - ``` -3. Finally, register the library with your Umi instance. - ```ts - import * from '@wen-community/wen-wns-marketplace'; - ``` - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. \ No newline at end of file diff --git a/clients/js/wen_wns_marketplace/env-shim.ts b/clients/js/wen_wns_marketplace/env-shim.ts deleted file mode 100644 index 8963d75a..00000000 --- a/clients/js/wen_wns_marketplace/env-shim.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV` -export const __DEV__ = /* @__PURE__ */ (() => - (process as any)['en' + 'v'].NODE_ENV === 'development')(); diff --git a/clients/js/wen_wns_marketplace/package.json b/clients/js/wen_wns_marketplace/package.json deleted file mode 100644 index 27b2d3c5..00000000 --- a/clients/js/wen_wns_marketplace/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@wen-foundation/wen-wns-marketplace", - "version": "0.5.0-alpha", - "description": "An SDK for developing on the Open Source NFT Standard built on Solana Token Extensions.", - "main": "dist/src/index.js", - "types": "dist/src/types/index.d.ts", - "scripts": { - "build": "rimraf dist && tsup && tsc -p ./tsconfig.declarations.json", - "test": "ava", - "lint": "eslint --ext js,ts,tsx src && prettier --check src test", - "lint:fix": "eslint --fix --ext js,ts,tsx src && prettier --write src test" - }, - "files": [ - "/dist/src" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org" - }, - "homepage": "https://wenwencoin.com", - "repository": "https://github.com/wen-community/wen-program-libarary.git", - "author": "wen community", - "license": "MIT", - "keywords": [ - "solana", - "nft", - "blockchain", - "wen" - ], - "peerDependencies": { - "@solana/web3.js": "2.0.0-preview.3" - }, - "devDependencies": { - "@ava/typescript": "^4.1.0", - "@solana/eslint-config-solana": "^3.0.0", - "@solana/web3.js": "tp3", - "@solana/webcrypto-ed25519-polyfill": "tp3", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "ava": "^6.1.2", - "eslint": "^8.57.0", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "tsup": "^8.0.2", - "typedoc": "^0.25.12", - "typedoc-plugin-missing-exports": "^2.2.0", - "typescript": "^5.4.2" - }, - "ava": { - "typescript": { - "compile": false, - "rewritePaths": { - "test/": "dist/test/" - } - } - } -} diff --git a/clients/js/wen_wns_marketplace/src/generated/accounts/distributionAccount.ts b/clients/js/wen_wns_marketplace/src/generated/accounts/distributionAccount.ts deleted file mode 100644 index 9aacd2ec..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/accounts/distributionAccount.ts +++ /dev/null @@ -1,172 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getArrayDecoder, - getArrayEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU8Decoder, - getU8Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; -import { - getCreatorDecoder, - getCreatorEncoder, - type Creator, - type CreatorArgs, -} from '../types'; - -export type DistributionAccount = { - discriminator: ReadonlyUint8Array; - /** distribution version */ - version: number; - /** group to which the distribution account belongs to */ - groupMint: Address; - /** payment mint for the distribution account */ - paymentMint: Address; - claimData: Array; -}; - -export type DistributionAccountArgs = { - /** distribution version */ - version: number; - /** group to which the distribution account belongs to */ - groupMint: Address; - /** payment mint for the distribution account */ - paymentMint: Address; - claimData: Array; -}; - -export function getDistributionAccountEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['version', getU8Encoder()], - ['groupMint', getAddressEncoder()], - ['paymentMint', getAddressEncoder()], - ['claimData', getArrayEncoder(getCreatorEncoder())], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([98, 90, 112, 65, 49, 161, 198, 154]), - }) - ); -} - -export function getDistributionAccountDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['version', getU8Decoder()], - ['groupMint', getAddressDecoder()], - ['paymentMint', getAddressDecoder()], - ['claimData', getArrayDecoder(getCreatorDecoder())], - ]); -} - -export function getDistributionAccountCodec(): Codec< - DistributionAccountArgs, - DistributionAccount -> { - return combineCodec( - getDistributionAccountEncoder(), - getDistributionAccountDecoder() - ); -} - -export function decodeDistributionAccount( - encodedAccount: EncodedAccount -): Account; -export function decodeDistributionAccount( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeDistributionAccount( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): - | Account - | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getDistributionAccountDecoder() - ); -} - -export async function fetchDistributionAccount< - TAddress extends string = string, ->( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeDistributionAccount( - rpc, - address, - config - ); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeDistributionAccount< - TAddress extends string = string, ->( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeDistributionAccount(maybeAccount); -} - -export async function fetchAllDistributionAccount( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeDistributionAccount( - rpc, - addresses, - config - ); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeDistributionAccount( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => - decodeDistributionAccount(maybeAccount) - ); -} diff --git a/clients/js/wen_wns_marketplace/src/generated/accounts/index.ts b/clients/js/wen_wns_marketplace/src/generated/accounts/index.ts deleted file mode 100644 index e075a9b2..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/accounts/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './distributionAccount'; -export * from './listing'; diff --git a/clients/js/wen_wns_marketplace/src/generated/accounts/listing.ts b/clients/js/wen_wns_marketplace/src/generated/accounts/listing.ts deleted file mode 100644 index b55226c9..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/accounts/listing.ts +++ /dev/null @@ -1,150 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - assertAccountExists, - assertAccountsExist, - combineCodec, - decodeAccount, - fetchEncodedAccount, - fetchEncodedAccounts, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - getU8Decoder, - getU8Encoder, - transformEncoder, - type Account, - type Address, - type Codec, - type Decoder, - type EncodedAccount, - type Encoder, - type FetchAccountConfig, - type FetchAccountsConfig, - type MaybeAccount, - type MaybeEncodedAccount, - type ReadonlyUint8Array, -} from '@solana/web3.js'; - -export type Listing = { - discriminator: ReadonlyUint8Array; - bump: number; - mint: Address; - paymentMint: Address; - seller: Address; - sellerTokenAccount: Address; - listingAmount: bigint; -}; - -export type ListingArgs = { - bump: number; - mint: Address; - paymentMint: Address; - seller: Address; - sellerTokenAccount: Address; - listingAmount: number | bigint; -}; - -export function getListingEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['bump', getU8Encoder()], - ['mint', getAddressEncoder()], - ['paymentMint', getAddressEncoder()], - ['seller', getAddressEncoder()], - ['sellerTokenAccount', getAddressEncoder()], - ['listingAmount', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([218, 32, 50, 73, 43, 134, 26, 58]), - }) - ); -} - -export function getListingDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['bump', getU8Decoder()], - ['mint', getAddressDecoder()], - ['paymentMint', getAddressDecoder()], - ['seller', getAddressDecoder()], - ['sellerTokenAccount', getAddressDecoder()], - ['listingAmount', getU64Decoder()], - ]); -} - -export function getListingCodec(): Codec { - return combineCodec(getListingEncoder(), getListingDecoder()); -} - -export function decodeListing( - encodedAccount: EncodedAccount -): Account; -export function decodeListing( - encodedAccount: MaybeEncodedAccount -): MaybeAccount; -export function decodeListing( - encodedAccount: EncodedAccount | MaybeEncodedAccount -): Account | MaybeAccount { - return decodeAccount( - encodedAccount as MaybeEncodedAccount, - getListingDecoder() - ); -} - -export async function fetchListing( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchMaybeListing(rpc, address, config); - assertAccountExists(maybeAccount); - return maybeAccount; -} - -export async function fetchMaybeListing( - rpc: Parameters[0], - address: Address, - config?: FetchAccountConfig -): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); - return decodeListing(maybeAccount); -} - -export async function fetchAllListing( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchAllMaybeListing(rpc, addresses, config); - assertAccountsExist(maybeAccounts); - return maybeAccounts; -} - -export async function fetchAllMaybeListing( - rpc: Parameters[0], - addresses: Array
, - config?: FetchAccountsConfig -): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); - return maybeAccounts.map((maybeAccount) => decodeListing(maybeAccount)); -} - -export function getListingSize(): number { - return 145; -} diff --git a/clients/js/wen_wns_marketplace/src/generated/errors/index.ts b/clients/js/wen_wns_marketplace/src/generated/errors/index.ts deleted file mode 100644 index bb6b1b44..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/errors/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenWnsMarketplace'; diff --git a/clients/js/wen_wns_marketplace/src/generated/errors/wenWnsMarketplace.ts b/clients/js/wen_wns_marketplace/src/generated/errors/wenWnsMarketplace.ts deleted file mode 100644 index c0abc915..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/errors/wenWnsMarketplace.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -/** ListingAmountMismatch: Buy amount mismatch with listing amount */ -export const WEN_WNS_MARKETPLACE_ERROR__LISTING_AMOUNT_MISMATCH = 0x1770; // 6000 -/** PaymentTokenAccountNotExistant: SPL Payment token account required */ -export const WEN_WNS_MARKETPLACE_ERROR__PAYMENT_TOKEN_ACCOUNT_NOT_EXISTANT = 0x1771; // 6001 -/** InvalidPaymentTokenAccount: Invalid SPL Payment token account */ -export const WEN_WNS_MARKETPLACE_ERROR__INVALID_PAYMENT_TOKEN_ACCOUNT = 0x1772; // 6002 -/** ArithmeticError: Arithmetic error */ -export const WEN_WNS_MARKETPLACE_ERROR__ARITHMETIC_ERROR = 0x1773; // 6003 - -export type WenWnsMarketplaceError = - | typeof WEN_WNS_MARKETPLACE_ERROR__ARITHMETIC_ERROR - | typeof WEN_WNS_MARKETPLACE_ERROR__INVALID_PAYMENT_TOKEN_ACCOUNT - | typeof WEN_WNS_MARKETPLACE_ERROR__LISTING_AMOUNT_MISMATCH - | typeof WEN_WNS_MARKETPLACE_ERROR__PAYMENT_TOKEN_ACCOUNT_NOT_EXISTANT; - -let wenWnsMarketplaceErrorMessages: - | Record - | undefined; -if (process.env.NODE_ENV !== 'production') { - wenWnsMarketplaceErrorMessages = { - [WEN_WNS_MARKETPLACE_ERROR__ARITHMETIC_ERROR]: `Arithmetic error`, - [WEN_WNS_MARKETPLACE_ERROR__INVALID_PAYMENT_TOKEN_ACCOUNT]: `Invalid SPL Payment token account`, - [WEN_WNS_MARKETPLACE_ERROR__LISTING_AMOUNT_MISMATCH]: `Buy amount mismatch with listing amount`, - [WEN_WNS_MARKETPLACE_ERROR__PAYMENT_TOKEN_ACCOUNT_NOT_EXISTANT]: `SPL Payment token account required`, - }; -} - -export function getWenWnsMarketplaceErrorMessage( - code: WenWnsMarketplaceError -): string { - if (process.env.NODE_ENV !== 'production') { - return ( - wenWnsMarketplaceErrorMessages as Record - )[code]; - } - - return 'Error message not available in production bundles.'; -} diff --git a/clients/js/wen_wns_marketplace/src/generated/index.ts b/clients/js/wen_wns_marketplace/src/generated/index.ts deleted file mode 100644 index 4b1e4f3c..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './accounts'; -export * from './errors'; -export * from './instructions'; -export * from './programs'; -export * from './types'; diff --git a/clients/js/wen_wns_marketplace/src/generated/instructions/buy.ts b/clients/js/wen_wns_marketplace/src/generated/instructions/buy.ts deleted file mode 100644 index d415fee3..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/instructions/buy.ts +++ /dev/null @@ -1,806 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type BuyInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountListing extends string | IAccountMeta = string, - TAccountPaymentMint extends string | IAccountMeta = string, - TAccountBuyer extends string | IAccountMeta = string, - TAccountDistribution extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSellerTokenAccount extends string | IAccountMeta = string, - TAccountBuyerTokenAccount extends string | IAccountMeta = string, - TAccountSeller extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountExtraMetasAccount extends string | IAccountMeta = string, - TAccountApproveAccount extends string | IAccountMeta = string, - TAccountWnsProgram extends - | string - | IAccountMeta = 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM', - TAccountDistributionProgram extends - | string - | IAccountMeta = 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay', - TAccountAssociatedTokenProgram extends - | string - | IAccountMeta = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TAccountPaymentTokenProgram extends string | IAccountMeta = string, - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountSellerPaymentTokenAccount extends - | string - | IAccountMeta = string, - TAccountBuyerPaymentTokenAccount extends - | string - | IAccountMeta = string, - TAccountDistributionPaymentTokenAccount extends - | string - | IAccountMeta = string, - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountListing extends string - ? WritableAccount - : TAccountListing, - TAccountPaymentMint extends string - ? ReadonlyAccount - : TAccountPaymentMint, - TAccountBuyer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountBuyer, - TAccountDistribution extends string - ? WritableAccount - : TAccountDistribution, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSellerTokenAccount extends string - ? WritableAccount - : TAccountSellerTokenAccount, - TAccountBuyerTokenAccount extends string - ? WritableAccount - : TAccountBuyerTokenAccount, - TAccountSeller extends string - ? WritableAccount - : TAccountSeller, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountExtraMetasAccount extends string - ? ReadonlyAccount - : TAccountExtraMetasAccount, - TAccountApproveAccount extends string - ? WritableAccount - : TAccountApproveAccount, - TAccountWnsProgram extends string - ? ReadonlyAccount - : TAccountWnsProgram, - TAccountDistributionProgram extends string - ? ReadonlyAccount - : TAccountDistributionProgram, - TAccountAssociatedTokenProgram extends string - ? ReadonlyAccount - : TAccountAssociatedTokenProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountPaymentTokenProgram extends string - ? ReadonlyAccount - : TAccountPaymentTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountSellerPaymentTokenAccount extends string - ? WritableAccount - : TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount extends string - ? WritableAccount - : TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount extends string - ? WritableAccount - : TAccountDistributionPaymentTokenAccount, - ...TRemainingAccounts, - ] - >; - -export type BuyInstructionData = { - discriminator: ReadonlyUint8Array; - buyAmount: bigint; -}; - -export type BuyInstructionDataArgs = { buyAmount: number | bigint }; - -export function getBuyInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['buyAmount', getU64Encoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([102, 6, 61, 18, 1, 218, 235, 234]), - }) - ); -} - -export function getBuyInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['buyAmount', getU64Decoder()], - ]); -} - -export function getBuyInstructionDataCodec(): Codec< - BuyInstructionDataArgs, - BuyInstructionData -> { - return combineCodec( - getBuyInstructionDataEncoder(), - getBuyInstructionDataDecoder() - ); -} - -export type BuyAsyncInput< - TAccountPayer extends string = string, - TAccountListing extends string = string, - TAccountPaymentMint extends string = string, - TAccountBuyer extends string = string, - TAccountDistribution extends string = string, - TAccountMint extends string = string, - TAccountSellerTokenAccount extends string = string, - TAccountBuyerTokenAccount extends string = string, - TAccountSeller extends string = string, - TAccountManager extends string = string, - TAccountExtraMetasAccount extends string = string, - TAccountApproveAccount extends string = string, - TAccountWnsProgram extends string = string, - TAccountDistributionProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountPaymentTokenProgram extends string = string, - TAccountSystemProgram extends string = string, - TAccountSellerPaymentTokenAccount extends string = string, - TAccountBuyerPaymentTokenAccount extends string = string, - TAccountDistributionPaymentTokenAccount extends string = string, -> = { - payer: TransactionSigner; - listing: Address; - paymentMint: Address; - buyer: TransactionSigner; - distribution: Address; - mint: Address; - sellerTokenAccount: Address; - buyerTokenAccount?: Address; - seller: Address; - manager: Address; - extraMetasAccount: Address; - approveAccount: Address; - wnsProgram?: Address; - distributionProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - paymentTokenProgram?: Address; - systemProgram?: Address; - sellerPaymentTokenAccount?: Address; - buyerPaymentTokenAccount?: Address; - distributionPaymentTokenAccount?: Address; - buyAmount: BuyInstructionDataArgs['buyAmount']; -}; - -export async function getBuyInstructionAsync< - TAccountPayer extends string, - TAccountListing extends string, - TAccountPaymentMint extends string, - TAccountBuyer extends string, - TAccountDistribution extends string, - TAccountMint extends string, - TAccountSellerTokenAccount extends string, - TAccountBuyerTokenAccount extends string, - TAccountSeller extends string, - TAccountManager extends string, - TAccountExtraMetasAccount extends string, - TAccountApproveAccount extends string, - TAccountWnsProgram extends string, - TAccountDistributionProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, - TAccountPaymentTokenProgram extends string, - TAccountSystemProgram extends string, - TAccountSellerPaymentTokenAccount extends string, - TAccountBuyerPaymentTokenAccount extends string, - TAccountDistributionPaymentTokenAccount extends string, ->( - input: BuyAsyncInput< - TAccountPayer, - TAccountListing, - TAccountPaymentMint, - TAccountBuyer, - TAccountDistribution, - TAccountMint, - TAccountSellerTokenAccount, - TAccountBuyerTokenAccount, - TAccountSeller, - TAccountManager, - TAccountExtraMetasAccount, - TAccountApproveAccount, - TAccountWnsProgram, - TAccountDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram, - TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount - > -): Promise< - BuyInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountListing, - TAccountPaymentMint, - TAccountBuyer, - TAccountDistribution, - TAccountMint, - TAccountSellerTokenAccount, - TAccountBuyerTokenAccount, - TAccountSeller, - TAccountManager, - TAccountExtraMetasAccount, - TAccountApproveAccount, - TAccountWnsProgram, - TAccountDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram, - TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount - > -> { - // Program address. - const programAddress = WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - listing: { value: input.listing ?? null, isWritable: true }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - buyer: { value: input.buyer ?? null, isWritable: true }, - distribution: { value: input.distribution ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - sellerTokenAccount: { - value: input.sellerTokenAccount ?? null, - isWritable: true, - }, - buyerTokenAccount: { - value: input.buyerTokenAccount ?? null, - isWritable: true, - }, - seller: { value: input.seller ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: false }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: false, - }, - approveAccount: { value: input.approveAccount ?? null, isWritable: true }, - wnsProgram: { value: input.wnsProgram ?? null, isWritable: false }, - distributionProgram: { - value: input.distributionProgram ?? null, - isWritable: false, - }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - paymentTokenProgram: { - value: input.paymentTokenProgram ?? null, - isWritable: false, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - sellerPaymentTokenAccount: { - value: input.sellerPaymentTokenAccount ?? null, - isWritable: true, - }, - buyerPaymentTokenAccount: { - value: input.buyerPaymentTokenAccount ?? null, - isWritable: true, - }, - distributionPaymentTokenAccount: { - value: input.distributionPaymentTokenAccount ?? null, - isWritable: true, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.buyerTokenAccount.value) { - accounts.buyerTokenAccount.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getAddressEncoder().encode(expectAddress(accounts.buyer.value)), - getBytesEncoder().encode( - new Uint8Array([ - 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, - 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, - 126, 255, 0, 169, - ]) - ), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.wnsProgram.value) { - accounts.wnsProgram.value = - 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM' as Address<'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'>; - } - if (!accounts.distributionProgram.value) { - accounts.distributionProgram.value = - 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay' as Address<'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.listing), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.buyer), - getAccountMeta(accounts.distribution), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.sellerTokenAccount), - getAccountMeta(accounts.buyerTokenAccount), - getAccountMeta(accounts.seller), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.approveAccount), - getAccountMeta(accounts.wnsProgram), - getAccountMeta(accounts.distributionProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.paymentTokenProgram), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.sellerPaymentTokenAccount), - getAccountMeta(accounts.buyerPaymentTokenAccount), - getAccountMeta(accounts.distributionPaymentTokenAccount), - ], - programAddress, - data: getBuyInstructionDataEncoder().encode(args as BuyInstructionDataArgs), - } as BuyInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountListing, - TAccountPaymentMint, - TAccountBuyer, - TAccountDistribution, - TAccountMint, - TAccountSellerTokenAccount, - TAccountBuyerTokenAccount, - TAccountSeller, - TAccountManager, - TAccountExtraMetasAccount, - TAccountApproveAccount, - TAccountWnsProgram, - TAccountDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram, - TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount - >; - - return instruction; -} - -export type BuyInput< - TAccountPayer extends string = string, - TAccountListing extends string = string, - TAccountPaymentMint extends string = string, - TAccountBuyer extends string = string, - TAccountDistribution extends string = string, - TAccountMint extends string = string, - TAccountSellerTokenAccount extends string = string, - TAccountBuyerTokenAccount extends string = string, - TAccountSeller extends string = string, - TAccountManager extends string = string, - TAccountExtraMetasAccount extends string = string, - TAccountApproveAccount extends string = string, - TAccountWnsProgram extends string = string, - TAccountDistributionProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountPaymentTokenProgram extends string = string, - TAccountSystemProgram extends string = string, - TAccountSellerPaymentTokenAccount extends string = string, - TAccountBuyerPaymentTokenAccount extends string = string, - TAccountDistributionPaymentTokenAccount extends string = string, -> = { - payer: TransactionSigner; - listing: Address; - paymentMint: Address; - buyer: TransactionSigner; - distribution: Address; - mint: Address; - sellerTokenAccount: Address; - buyerTokenAccount: Address; - seller: Address; - manager: Address; - extraMetasAccount: Address; - approveAccount: Address; - wnsProgram?: Address; - distributionProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - paymentTokenProgram?: Address; - systemProgram?: Address; - sellerPaymentTokenAccount?: Address; - buyerPaymentTokenAccount?: Address; - distributionPaymentTokenAccount?: Address; - buyAmount: BuyInstructionDataArgs['buyAmount']; -}; - -export function getBuyInstruction< - TAccountPayer extends string, - TAccountListing extends string, - TAccountPaymentMint extends string, - TAccountBuyer extends string, - TAccountDistribution extends string, - TAccountMint extends string, - TAccountSellerTokenAccount extends string, - TAccountBuyerTokenAccount extends string, - TAccountSeller extends string, - TAccountManager extends string, - TAccountExtraMetasAccount extends string, - TAccountApproveAccount extends string, - TAccountWnsProgram extends string, - TAccountDistributionProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, - TAccountPaymentTokenProgram extends string, - TAccountSystemProgram extends string, - TAccountSellerPaymentTokenAccount extends string, - TAccountBuyerPaymentTokenAccount extends string, - TAccountDistributionPaymentTokenAccount extends string, ->( - input: BuyInput< - TAccountPayer, - TAccountListing, - TAccountPaymentMint, - TAccountBuyer, - TAccountDistribution, - TAccountMint, - TAccountSellerTokenAccount, - TAccountBuyerTokenAccount, - TAccountSeller, - TAccountManager, - TAccountExtraMetasAccount, - TAccountApproveAccount, - TAccountWnsProgram, - TAccountDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram, - TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount - > -): BuyInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountListing, - TAccountPaymentMint, - TAccountBuyer, - TAccountDistribution, - TAccountMint, - TAccountSellerTokenAccount, - TAccountBuyerTokenAccount, - TAccountSeller, - TAccountManager, - TAccountExtraMetasAccount, - TAccountApproveAccount, - TAccountWnsProgram, - TAccountDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram, - TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount -> { - // Program address. - const programAddress = WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - listing: { value: input.listing ?? null, isWritable: true }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - buyer: { value: input.buyer ?? null, isWritable: true }, - distribution: { value: input.distribution ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - sellerTokenAccount: { - value: input.sellerTokenAccount ?? null, - isWritable: true, - }, - buyerTokenAccount: { - value: input.buyerTokenAccount ?? null, - isWritable: true, - }, - seller: { value: input.seller ?? null, isWritable: true }, - manager: { value: input.manager ?? null, isWritable: false }, - extraMetasAccount: { - value: input.extraMetasAccount ?? null, - isWritable: false, - }, - approveAccount: { value: input.approveAccount ?? null, isWritable: true }, - wnsProgram: { value: input.wnsProgram ?? null, isWritable: false }, - distributionProgram: { - value: input.distributionProgram ?? null, - isWritable: false, - }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - paymentTokenProgram: { - value: input.paymentTokenProgram ?? null, - isWritable: false, - }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - sellerPaymentTokenAccount: { - value: input.sellerPaymentTokenAccount ?? null, - isWritable: true, - }, - buyerPaymentTokenAccount: { - value: input.buyerPaymentTokenAccount ?? null, - isWritable: true, - }, - distributionPaymentTokenAccount: { - value: input.distributionPaymentTokenAccount ?? null, - isWritable: true, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.wnsProgram.value) { - accounts.wnsProgram.value = - 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM' as Address<'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'>; - } - if (!accounts.distributionProgram.value) { - accounts.distributionProgram.value = - 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay' as Address<'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.listing), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.buyer), - getAccountMeta(accounts.distribution), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.sellerTokenAccount), - getAccountMeta(accounts.buyerTokenAccount), - getAccountMeta(accounts.seller), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.extraMetasAccount), - getAccountMeta(accounts.approveAccount), - getAccountMeta(accounts.wnsProgram), - getAccountMeta(accounts.distributionProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.paymentTokenProgram), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.sellerPaymentTokenAccount), - getAccountMeta(accounts.buyerPaymentTokenAccount), - getAccountMeta(accounts.distributionPaymentTokenAccount), - ], - programAddress, - data: getBuyInstructionDataEncoder().encode(args as BuyInstructionDataArgs), - } as BuyInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountListing, - TAccountPaymentMint, - TAccountBuyer, - TAccountDistribution, - TAccountMint, - TAccountSellerTokenAccount, - TAccountBuyerTokenAccount, - TAccountSeller, - TAccountManager, - TAccountExtraMetasAccount, - TAccountApproveAccount, - TAccountWnsProgram, - TAccountDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountPaymentTokenProgram, - TAccountSystemProgram, - TAccountSellerPaymentTokenAccount, - TAccountBuyerPaymentTokenAccount, - TAccountDistributionPaymentTokenAccount - >; - - return instruction; -} - -export type ParsedBuyInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - listing: TAccountMetas[1]; - paymentMint: TAccountMetas[2]; - buyer: TAccountMetas[3]; - distribution: TAccountMetas[4]; - mint: TAccountMetas[5]; - sellerTokenAccount: TAccountMetas[6]; - buyerTokenAccount: TAccountMetas[7]; - seller: TAccountMetas[8]; - manager: TAccountMetas[9]; - extraMetasAccount: TAccountMetas[10]; - approveAccount: TAccountMetas[11]; - wnsProgram: TAccountMetas[12]; - distributionProgram: TAccountMetas[13]; - associatedTokenProgram: TAccountMetas[14]; - tokenProgram: TAccountMetas[15]; - paymentTokenProgram?: TAccountMetas[16] | undefined; - systemProgram: TAccountMetas[17]; - sellerPaymentTokenAccount?: TAccountMetas[18] | undefined; - buyerPaymentTokenAccount?: TAccountMetas[19] | undefined; - distributionPaymentTokenAccount?: TAccountMetas[20] | undefined; - }; - data: BuyInstructionData; -}; - -export function parseBuyInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedBuyInstruction { - if (instruction.accounts.length < 21) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - const getNextOptionalAccount = () => { - const accountMeta = getNextAccount(); - return accountMeta.address === WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS - ? undefined - : accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - listing: getNextAccount(), - paymentMint: getNextAccount(), - buyer: getNextAccount(), - distribution: getNextAccount(), - mint: getNextAccount(), - sellerTokenAccount: getNextAccount(), - buyerTokenAccount: getNextAccount(), - seller: getNextAccount(), - manager: getNextAccount(), - extraMetasAccount: getNextAccount(), - approveAccount: getNextAccount(), - wnsProgram: getNextAccount(), - distributionProgram: getNextAccount(), - associatedTokenProgram: getNextAccount(), - tokenProgram: getNextAccount(), - paymentTokenProgram: getNextOptionalAccount(), - systemProgram: getNextAccount(), - sellerPaymentTokenAccount: getNextOptionalAccount(), - buyerPaymentTokenAccount: getNextOptionalAccount(), - distributionPaymentTokenAccount: getNextOptionalAccount(), - }, - data: getBuyInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_wns_marketplace/src/generated/instructions/claimRoyalty.ts b/clients/js/wen_wns_marketplace/src/generated/instructions/claimRoyalty.ts deleted file mode 100644 index 6e86971a..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/instructions/claimRoyalty.ts +++ /dev/null @@ -1,336 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; - -export type ClaimRoyaltyInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountCreator extends string | IAccountMeta = string, - TAccountPaymentMint extends string | IAccountMeta = string, - TAccountDistribution extends string | IAccountMeta = string, - TAccountWenDistributionProgram extends - | string - | IAccountMeta = 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay', - TAccountAssociatedTokenProgram extends - | string - | IAccountMeta = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TAccountDistributionPaymentTokenAccount extends - | string - | IAccountMeta = string, - TAccountCreatorPaymentTokenAccount extends - | string - | IAccountMeta = string, - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountCreator extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountCreator, - TAccountPaymentMint extends string - ? ReadonlyAccount - : TAccountPaymentMint, - TAccountDistribution extends string - ? WritableAccount - : TAccountDistribution, - TAccountWenDistributionProgram extends string - ? ReadonlyAccount - : TAccountWenDistributionProgram, - TAccountAssociatedTokenProgram extends string - ? ReadonlyAccount - : TAccountAssociatedTokenProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - TAccountDistributionPaymentTokenAccount extends string - ? WritableAccount - : TAccountDistributionPaymentTokenAccount, - TAccountCreatorPaymentTokenAccount extends string - ? WritableAccount - : TAccountCreatorPaymentTokenAccount, - ...TRemainingAccounts, - ] - >; - -export type ClaimRoyaltyInstructionData = { discriminator: ReadonlyUint8Array }; - -export type ClaimRoyaltyInstructionDataArgs = {}; - -export function getClaimRoyaltyInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([10, 75, 29, 207, 114, 170, 28, 108]), - }) - ); -} - -export function getClaimRoyaltyInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getClaimRoyaltyInstructionDataCodec(): Codec< - ClaimRoyaltyInstructionDataArgs, - ClaimRoyaltyInstructionData -> { - return combineCodec( - getClaimRoyaltyInstructionDataEncoder(), - getClaimRoyaltyInstructionDataDecoder() - ); -} - -export type ClaimRoyaltyInput< - TAccountPayer extends string = string, - TAccountCreator extends string = string, - TAccountPaymentMint extends string = string, - TAccountDistribution extends string = string, - TAccountWenDistributionProgram extends string = string, - TAccountAssociatedTokenProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, - TAccountDistributionPaymentTokenAccount extends string = string, - TAccountCreatorPaymentTokenAccount extends string = string, -> = { - payer: TransactionSigner; - creator: TransactionSigner; - paymentMint: Address; - distribution: Address; - wenDistributionProgram?: Address; - associatedTokenProgram?: Address; - tokenProgram?: Address; - systemProgram?: Address; - distributionPaymentTokenAccount?: Address; - creatorPaymentTokenAccount?: Address; -}; - -export function getClaimRoyaltyInstruction< - TAccountPayer extends string, - TAccountCreator extends string, - TAccountPaymentMint extends string, - TAccountDistribution extends string, - TAccountWenDistributionProgram extends string, - TAccountAssociatedTokenProgram extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, - TAccountDistributionPaymentTokenAccount extends string, - TAccountCreatorPaymentTokenAccount extends string, ->( - input: ClaimRoyaltyInput< - TAccountPayer, - TAccountCreator, - TAccountPaymentMint, - TAccountDistribution, - TAccountWenDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram, - TAccountDistributionPaymentTokenAccount, - TAccountCreatorPaymentTokenAccount - > -): ClaimRoyaltyInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountCreator, - TAccountPaymentMint, - TAccountDistribution, - TAccountWenDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram, - TAccountDistributionPaymentTokenAccount, - TAccountCreatorPaymentTokenAccount -> { - // Program address. - const programAddress = WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - creator: { value: input.creator ?? null, isWritable: true }, - paymentMint: { value: input.paymentMint ?? null, isWritable: false }, - distribution: { value: input.distribution ?? null, isWritable: true }, - wenDistributionProgram: { - value: input.wenDistributionProgram ?? null, - isWritable: false, - }, - associatedTokenProgram: { - value: input.associatedTokenProgram ?? null, - isWritable: false, - }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - distributionPaymentTokenAccount: { - value: input.distributionPaymentTokenAccount ?? null, - isWritable: true, - }, - creatorPaymentTokenAccount: { - value: input.creatorPaymentTokenAccount ?? null, - isWritable: true, - }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.wenDistributionProgram.value) { - accounts.wenDistributionProgram.value = - 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay' as Address<'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'>; - } - if (!accounts.associatedTokenProgram.value) { - accounts.associatedTokenProgram.value = - 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.creator), - getAccountMeta(accounts.paymentMint), - getAccountMeta(accounts.distribution), - getAccountMeta(accounts.wenDistributionProgram), - getAccountMeta(accounts.associatedTokenProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - getAccountMeta(accounts.distributionPaymentTokenAccount), - getAccountMeta(accounts.creatorPaymentTokenAccount), - ], - programAddress, - data: getClaimRoyaltyInstructionDataEncoder().encode({}), - } as ClaimRoyaltyInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountCreator, - TAccountPaymentMint, - TAccountDistribution, - TAccountWenDistributionProgram, - TAccountAssociatedTokenProgram, - TAccountTokenProgram, - TAccountSystemProgram, - TAccountDistributionPaymentTokenAccount, - TAccountCreatorPaymentTokenAccount - >; - - return instruction; -} - -export type ParsedClaimRoyaltyInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - creator: TAccountMetas[1]; - paymentMint: TAccountMetas[2]; - distribution: TAccountMetas[3]; - wenDistributionProgram: TAccountMetas[4]; - associatedTokenProgram: TAccountMetas[5]; - tokenProgram: TAccountMetas[6]; - systemProgram: TAccountMetas[7]; - distributionPaymentTokenAccount?: TAccountMetas[8] | undefined; - creatorPaymentTokenAccount?: TAccountMetas[9] | undefined; - }; - data: ClaimRoyaltyInstructionData; -}; - -export function parseClaimRoyaltyInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedClaimRoyaltyInstruction { - if (instruction.accounts.length < 10) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - const getNextOptionalAccount = () => { - const accountMeta = getNextAccount(); - return accountMeta.address === WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS - ? undefined - : accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - creator: getNextAccount(), - paymentMint: getNextAccount(), - distribution: getNextAccount(), - wenDistributionProgram: getNextAccount(), - associatedTokenProgram: getNextAccount(), - tokenProgram: getNextAccount(), - systemProgram: getNextAccount(), - distributionPaymentTokenAccount: getNextOptionalAccount(), - creatorPaymentTokenAccount: getNextOptionalAccount(), - }, - data: getClaimRoyaltyInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_wns_marketplace/src/generated/instructions/index.ts b/clients/js/wen_wns_marketplace/src/generated/instructions/index.ts deleted file mode 100644 index fd2bd3ea..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/instructions/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './buy'; -export * from './claimRoyalty'; -export * from './list'; -export * from './unlist'; diff --git a/clients/js/wen_wns_marketplace/src/generated/instructions/list.ts b/clients/js/wen_wns_marketplace/src/generated/instructions/list.ts deleted file mode 100644 index cee69b48..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/instructions/list.ts +++ /dev/null @@ -1,475 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getAddressDecoder, - getAddressEncoder, - getBytesDecoder, - getBytesEncoder, - getProgramDerivedAddress, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS } from '../programs'; -import { - expectAddress, - getAccountMetaFactory, - type ResolvedAccount, -} from '../shared'; - -export type ListInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountSeller extends string | IAccountMeta = string, - TAccountListing extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSellerTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountWnsProgram extends - | string - | IAccountMeta = 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountSeller extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountSeller, - TAccountListing extends string - ? WritableAccount - : TAccountListing, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSellerTokenAccount extends string - ? WritableAccount - : TAccountSellerTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountWnsProgram extends string - ? ReadonlyAccount - : TAccountWnsProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type ListInstructionData = { - discriminator: ReadonlyUint8Array; - listingAmount: bigint; - paymentMint: Address; -}; - -export type ListInstructionDataArgs = { - listingAmount: number | bigint; - paymentMint: Address; -}; - -export function getListInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([ - ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], - ['listingAmount', getU64Encoder()], - ['paymentMint', getAddressEncoder()], - ]), - (value) => ({ - ...value, - discriminator: new Uint8Array([54, 174, 193, 67, 17, 41, 132, 38]), - }) - ); -} - -export function getListInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ['listingAmount', getU64Decoder()], - ['paymentMint', getAddressDecoder()], - ]); -} - -export function getListInstructionDataCodec(): Codec< - ListInstructionDataArgs, - ListInstructionData -> { - return combineCodec( - getListInstructionDataEncoder(), - getListInstructionDataDecoder() - ); -} - -export type ListAsyncInput< - TAccountPayer extends string = string, - TAccountSeller extends string = string, - TAccountListing extends string = string, - TAccountMint extends string = string, - TAccountSellerTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountWnsProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - seller: TransactionSigner; - listing?: Address; - mint: Address; - sellerTokenAccount: Address; - manager: Address; - wnsProgram?: Address; - tokenProgram?: Address; - systemProgram?: Address; - listingAmount: ListInstructionDataArgs['listingAmount']; - paymentMint: ListInstructionDataArgs['paymentMint']; -}; - -export async function getListInstructionAsync< - TAccountPayer extends string, - TAccountSeller extends string, - TAccountListing extends string, - TAccountMint extends string, - TAccountSellerTokenAccount extends string, - TAccountManager extends string, - TAccountWnsProgram extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: ListAsyncInput< - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -): Promise< - ListInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -> { - // Program address. - const programAddress = WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - seller: { value: input.seller ?? null, isWritable: false }, - listing: { value: input.listing ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - sellerTokenAccount: { - value: input.sellerTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - wnsProgram: { value: input.wnsProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.listing.value) { - accounts.listing.value = await getProgramDerivedAddress({ - programAddress, - seeds: [ - getBytesEncoder().encode( - new Uint8Array([109, 97, 114, 107, 101, 116, 112, 108, 97, 99, 101]) - ), - getBytesEncoder().encode( - new Uint8Array([108, 105, 115, 116, 105, 110, 103]) - ), - getAddressEncoder().encode(expectAddress(accounts.seller.value)), - getAddressEncoder().encode(expectAddress(accounts.mint.value)), - ], - }); - } - if (!accounts.wnsProgram.value) { - accounts.wnsProgram.value = - 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM' as Address<'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.seller), - getAccountMeta(accounts.listing), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.sellerTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.wnsProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getListInstructionDataEncoder().encode( - args as ListInstructionDataArgs - ), - } as ListInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ListInput< - TAccountPayer extends string = string, - TAccountSeller extends string = string, - TAccountListing extends string = string, - TAccountMint extends string = string, - TAccountSellerTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountWnsProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - seller: TransactionSigner; - listing: Address; - mint: Address; - sellerTokenAccount: Address; - manager: Address; - wnsProgram?: Address; - tokenProgram?: Address; - systemProgram?: Address; - listingAmount: ListInstructionDataArgs['listingAmount']; - paymentMint: ListInstructionDataArgs['paymentMint']; -}; - -export function getListInstruction< - TAccountPayer extends string, - TAccountSeller extends string, - TAccountListing extends string, - TAccountMint extends string, - TAccountSellerTokenAccount extends string, - TAccountManager extends string, - TAccountWnsProgram extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: ListInput< - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -): ListInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - seller: { value: input.seller ?? null, isWritable: false }, - listing: { value: input.listing ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - sellerTokenAccount: { - value: input.sellerTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - wnsProgram: { value: input.wnsProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Original args. - const args = { ...input }; - - // Resolve default values. - if (!accounts.wnsProgram.value) { - accounts.wnsProgram.value = - 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM' as Address<'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.seller), - getAccountMeta(accounts.listing), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.sellerTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.wnsProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getListInstructionDataEncoder().encode( - args as ListInstructionDataArgs - ), - } as ListInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedListInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - seller: TAccountMetas[1]; - listing: TAccountMetas[2]; - mint: TAccountMetas[3]; - sellerTokenAccount: TAccountMetas[4]; - manager: TAccountMetas[5]; - wnsProgram: TAccountMetas[6]; - tokenProgram: TAccountMetas[7]; - systemProgram: TAccountMetas[8]; - }; - data: ListInstructionData; -}; - -export function parseListInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedListInstruction { - if (instruction.accounts.length < 9) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - seller: getNextAccount(), - listing: getNextAccount(), - mint: getNextAccount(), - sellerTokenAccount: getNextAccount(), - manager: getNextAccount(), - wnsProgram: getNextAccount(), - tokenProgram: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getListInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_wns_marketplace/src/generated/instructions/unlist.ts b/clients/js/wen_wns_marketplace/src/generated/instructions/unlist.ts deleted file mode 100644 index 2e26967b..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/instructions/unlist.ts +++ /dev/null @@ -1,298 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - fixDecoderSize, - fixEncoderSize, - getBytesDecoder, - getBytesEncoder, - getStructDecoder, - getStructEncoder, - transformEncoder, - type Address, - type Codec, - type Decoder, - type Encoder, - type IAccountMeta, - type IAccountSignerMeta, - type IInstruction, - type IInstructionWithAccounts, - type IInstructionWithData, - type ReadonlyAccount, - type ReadonlySignerAccount, - type ReadonlyUint8Array, - type TransactionSigner, - type WritableAccount, - type WritableSignerAccount, -} from '@solana/web3.js'; -import { WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS } from '../programs'; -import { getAccountMetaFactory, type ResolvedAccount } from '../shared'; - -export type UnlistInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer extends string | IAccountMeta = string, - TAccountSeller extends string | IAccountMeta = string, - TAccountListing extends string | IAccountMeta = string, - TAccountMint extends string | IAccountMeta = string, - TAccountSellerTokenAccount extends string | IAccountMeta = string, - TAccountManager extends string | IAccountMeta = string, - TAccountWnsProgram extends - | string - | IAccountMeta = 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM', - TAccountTokenProgram extends - | string - | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', - TAccountSystemProgram extends - | string - | IAccountMeta = '11111111111111111111111111111111', - TRemainingAccounts extends readonly IAccountMeta[] = [], -> = IInstruction & - IInstructionWithData & - IInstructionWithAccounts< - [ - TAccountPayer extends string - ? WritableSignerAccount & - IAccountSignerMeta - : TAccountPayer, - TAccountSeller extends string - ? ReadonlySignerAccount & - IAccountSignerMeta - : TAccountSeller, - TAccountListing extends string - ? WritableAccount - : TAccountListing, - TAccountMint extends string - ? WritableAccount - : TAccountMint, - TAccountSellerTokenAccount extends string - ? WritableAccount - : TAccountSellerTokenAccount, - TAccountManager extends string - ? ReadonlyAccount - : TAccountManager, - TAccountWnsProgram extends string - ? ReadonlyAccount - : TAccountWnsProgram, - TAccountTokenProgram extends string - ? ReadonlyAccount - : TAccountTokenProgram, - TAccountSystemProgram extends string - ? ReadonlyAccount - : TAccountSystemProgram, - ...TRemainingAccounts, - ] - >; - -export type UnlistInstructionData = { discriminator: ReadonlyUint8Array }; - -export type UnlistInstructionDataArgs = {}; - -export function getUnlistInstructionDataEncoder(): Encoder { - return transformEncoder( - getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), - (value) => ({ - ...value, - discriminator: new Uint8Array([185, 125, 20, 193, 209, 44, 13, 224]), - }) - ); -} - -export function getUnlistInstructionDataDecoder(): Decoder { - return getStructDecoder([ - ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], - ]); -} - -export function getUnlistInstructionDataCodec(): Codec< - UnlistInstructionDataArgs, - UnlistInstructionData -> { - return combineCodec( - getUnlistInstructionDataEncoder(), - getUnlistInstructionDataDecoder() - ); -} - -export type UnlistInput< - TAccountPayer extends string = string, - TAccountSeller extends string = string, - TAccountListing extends string = string, - TAccountMint extends string = string, - TAccountSellerTokenAccount extends string = string, - TAccountManager extends string = string, - TAccountWnsProgram extends string = string, - TAccountTokenProgram extends string = string, - TAccountSystemProgram extends string = string, -> = { - payer: TransactionSigner; - seller: TransactionSigner; - listing: Address; - mint: Address; - sellerTokenAccount: Address; - manager: Address; - wnsProgram?: Address; - tokenProgram?: Address; - systemProgram?: Address; -}; - -export function getUnlistInstruction< - TAccountPayer extends string, - TAccountSeller extends string, - TAccountListing extends string, - TAccountMint extends string, - TAccountSellerTokenAccount extends string, - TAccountManager extends string, - TAccountWnsProgram extends string, - TAccountTokenProgram extends string, - TAccountSystemProgram extends string, ->( - input: UnlistInput< - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - > -): UnlistInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram -> { - // Program address. - const programAddress = WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS; - - // Original accounts. - const originalAccounts = { - payer: { value: input.payer ?? null, isWritable: true }, - seller: { value: input.seller ?? null, isWritable: false }, - listing: { value: input.listing ?? null, isWritable: true }, - mint: { value: input.mint ?? null, isWritable: true }, - sellerTokenAccount: { - value: input.sellerTokenAccount ?? null, - isWritable: true, - }, - manager: { value: input.manager ?? null, isWritable: false }, - wnsProgram: { value: input.wnsProgram ?? null, isWritable: false }, - tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, - systemProgram: { value: input.systemProgram ?? null, isWritable: false }, - }; - const accounts = originalAccounts as Record< - keyof typeof originalAccounts, - ResolvedAccount - >; - - // Resolve default values. - if (!accounts.wnsProgram.value) { - accounts.wnsProgram.value = - 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM' as Address<'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'>; - } - if (!accounts.tokenProgram.value) { - accounts.tokenProgram.value = - 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>; - } - if (!accounts.systemProgram.value) { - accounts.systemProgram.value = - '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; - } - - const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); - const instruction = { - accounts: [ - getAccountMeta(accounts.payer), - getAccountMeta(accounts.seller), - getAccountMeta(accounts.listing), - getAccountMeta(accounts.mint), - getAccountMeta(accounts.sellerTokenAccount), - getAccountMeta(accounts.manager), - getAccountMeta(accounts.wnsProgram), - getAccountMeta(accounts.tokenProgram), - getAccountMeta(accounts.systemProgram), - ], - programAddress, - data: getUnlistInstructionDataEncoder().encode({}), - } as UnlistInstruction< - typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountPayer, - TAccountSeller, - TAccountListing, - TAccountMint, - TAccountSellerTokenAccount, - TAccountManager, - TAccountWnsProgram, - TAccountTokenProgram, - TAccountSystemProgram - >; - - return instruction; -} - -export type ParsedUnlistInstruction< - TProgram extends string = typeof WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS, - TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[], -> = { - programAddress: Address; - accounts: { - payer: TAccountMetas[0]; - seller: TAccountMetas[1]; - listing: TAccountMetas[2]; - mint: TAccountMetas[3]; - sellerTokenAccount: TAccountMetas[4]; - manager: TAccountMetas[5]; - wnsProgram: TAccountMetas[6]; - tokenProgram: TAccountMetas[7]; - systemProgram: TAccountMetas[8]; - }; - data: UnlistInstructionData; -}; - -export function parseUnlistInstruction< - TProgram extends string, - TAccountMetas extends readonly IAccountMeta[], ->( - instruction: IInstruction & - IInstructionWithAccounts & - IInstructionWithData -): ParsedUnlistInstruction { - if (instruction.accounts.length < 9) { - // TODO: Coded error. - throw new Error('Not enough accounts'); - } - let accountIndex = 0; - const getNextAccount = () => { - const accountMeta = instruction.accounts![accountIndex]!; - accountIndex += 1; - return accountMeta; - }; - return { - programAddress: instruction.programAddress, - accounts: { - payer: getNextAccount(), - seller: getNextAccount(), - listing: getNextAccount(), - mint: getNextAccount(), - sellerTokenAccount: getNextAccount(), - manager: getNextAccount(), - wnsProgram: getNextAccount(), - tokenProgram: getNextAccount(), - systemProgram: getNextAccount(), - }, - data: getUnlistInstructionDataDecoder().decode(instruction.data), - }; -} diff --git a/clients/js/wen_wns_marketplace/src/generated/programs/index.ts b/clients/js/wen_wns_marketplace/src/generated/programs/index.ts deleted file mode 100644 index bb6b1b44..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/programs/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './wenWnsMarketplace'; diff --git a/clients/js/wen_wns_marketplace/src/generated/programs/wenWnsMarketplace.ts b/clients/js/wen_wns_marketplace/src/generated/programs/wenWnsMarketplace.ts deleted file mode 100644 index 8ed2f523..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/programs/wenWnsMarketplace.ts +++ /dev/null @@ -1,136 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - containsBytes, - fixEncoderSize, - getBytesEncoder, - type Address, -} from '@solana/web3.js'; -import { - type ParsedBuyInstruction, - type ParsedClaimRoyaltyInstruction, - type ParsedListInstruction, - type ParsedUnlistInstruction, -} from '../instructions'; - -export const WEN_WNS_MARKETPLACE_PROGRAM_ADDRESS = - 'sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod' as Address<'sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod'>; - -export enum WenWnsMarketplaceAccount { - DistributionAccount, - Listing, -} - -export function identifyWenWnsMarketplaceAccount( - account: { data: Uint8Array } | Uint8Array -): WenWnsMarketplaceAccount { - const data = account instanceof Uint8Array ? account : account.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([98, 90, 112, 65, 49, 161, 198, 154]) - ), - 0 - ) - ) { - return WenWnsMarketplaceAccount.DistributionAccount; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([218, 32, 50, 73, 43, 134, 26, 58]) - ), - 0 - ) - ) { - return WenWnsMarketplaceAccount.Listing; - } - throw new Error( - 'The provided account could not be identified as a wenWnsMarketplace account.' - ); -} - -export enum WenWnsMarketplaceInstruction { - Buy, - ClaimRoyalty, - List, - Unlist, -} - -export function identifyWenWnsMarketplaceInstruction( - instruction: { data: Uint8Array } | Uint8Array -): WenWnsMarketplaceInstruction { - const data = - instruction instanceof Uint8Array ? instruction : instruction.data; - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([102, 6, 61, 18, 1, 218, 235, 234]) - ), - 0 - ) - ) { - return WenWnsMarketplaceInstruction.Buy; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([10, 75, 29, 207, 114, 170, 28, 108]) - ), - 0 - ) - ) { - return WenWnsMarketplaceInstruction.ClaimRoyalty; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([54, 174, 193, 67, 17, 41, 132, 38]) - ), - 0 - ) - ) { - return WenWnsMarketplaceInstruction.List; - } - if ( - containsBytes( - data, - fixEncoderSize(getBytesEncoder(), 8).encode( - new Uint8Array([185, 125, 20, 193, 209, 44, 13, 224]) - ), - 0 - ) - ) { - return WenWnsMarketplaceInstruction.Unlist; - } - throw new Error( - 'The provided instruction could not be identified as a wenWnsMarketplace instruction.' - ); -} - -export type ParsedWenWnsMarketplaceInstruction< - TProgram extends string = 'sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod', -> = - | ({ - instructionType: WenWnsMarketplaceInstruction.Buy; - } & ParsedBuyInstruction) - | ({ - instructionType: WenWnsMarketplaceInstruction.ClaimRoyalty; - } & ParsedClaimRoyaltyInstruction) - | ({ - instructionType: WenWnsMarketplaceInstruction.List; - } & ParsedListInstruction) - | ({ - instructionType: WenWnsMarketplaceInstruction.Unlist; - } & ParsedUnlistInstruction); diff --git a/clients/js/wen_wns_marketplace/src/generated/shared/index.ts b/clients/js/wen_wns_marketplace/src/generated/shared/index.ts deleted file mode 100644 index 278bf59f..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/shared/index.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - AccountRole, - isProgramDerivedAddress, - isTransactionSigner as web3JsIsTransactionSigner, - type Address, - type IAccountMeta, - type IAccountSignerMeta, - type ProgramDerivedAddress, - type TransactionSigner, - upgradeRoleToSigner, -} from '@solana/web3.js'; - -/** - * Asserts that the given value is not null or undefined. - * @internal - */ -export function expectSome(value: T | null | undefined): T { - if (value == null) { - throw new Error('Expected a value but received null or undefined.'); - } - return value; -} - -/** - * Asserts that the given value is a PublicKey. - * @internal - */ -export function expectAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): Address { - if (!value) { - throw new Error('Expected a Address.'); - } - if (typeof value === 'object' && 'address' in value) { - return value.address; - } - if (Array.isArray(value)) { - return value[0]; - } - return value as Address; -} - -/** - * Asserts that the given value is a PDA. - * @internal - */ -export function expectProgramDerivedAddress( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): ProgramDerivedAddress { - if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) { - throw new Error('Expected a ProgramDerivedAddress.'); - } - return value; -} - -/** - * Asserts that the given value is a TransactionSigner. - * @internal - */ -export function expectTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner - | null - | undefined -): TransactionSigner { - if (!value || !isTransactionSigner(value)) { - throw new Error('Expected a TransactionSigner.'); - } - return value; -} - -/** - * Defines an instruction account to resolve. - * @internal - */ -export type ResolvedAccount< - T extends string = string, - U extends - | Address - | ProgramDerivedAddress - | TransactionSigner - | null = - | Address - | ProgramDerivedAddress - | TransactionSigner - | null, -> = { - isWritable: boolean; - value: U; -}; - -/** - * Defines an instruction that stores additional bytes on-chain. - * @internal - */ -export type IInstructionWithByteDelta = { - byteDelta: number; -}; - -/** - * Get account metas and signers from resolved accounts. - * @internal - */ -export function getAccountMetaFactory( - programAddress: Address, - optionalAccountStrategy: 'omitted' | 'programId' -) { - return ( - account: ResolvedAccount - ): IAccountMeta | IAccountSignerMeta | undefined => { - if (!account.value) { - if (optionalAccountStrategy === 'omitted') return; - return Object.freeze({ - address: programAddress, - role: AccountRole.READONLY, - }); - } - - const writableRole = account.isWritable - ? AccountRole.WRITABLE - : AccountRole.READONLY; - return Object.freeze({ - address: expectAddress(account.value), - role: isTransactionSigner(account.value) - ? upgradeRoleToSigner(writableRole) - : writableRole, - ...(isTransactionSigner(account.value) ? { signer: account.value } : {}), - }); - }; -} - -export function isTransactionSigner( - value: - | Address - | ProgramDerivedAddress - | TransactionSigner -): value is TransactionSigner { - return ( - !!value && - typeof value === 'object' && - 'address' in value && - web3JsIsTransactionSigner(value) - ); -} diff --git a/clients/js/wen_wns_marketplace/src/generated/types/creator.ts b/clients/js/wen_wns_marketplace/src/generated/types/creator.ts deleted file mode 100644 index f0af2bee..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/types/creator.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -import { - combineCodec, - getAddressDecoder, - getAddressEncoder, - getStructDecoder, - getStructEncoder, - getU64Decoder, - getU64Encoder, - type Address, - type Codec, - type Decoder, - type Encoder, -} from '@solana/web3.js'; - -export type Creator = { - /** creator address */ - address: Address; - /** token amount that creator can claim */ - claimAmount: bigint; -}; - -export type CreatorArgs = { - /** creator address */ - address: Address; - /** token amount that creator can claim */ - claimAmount: number | bigint; -}; - -export function getCreatorEncoder(): Encoder { - return getStructEncoder([ - ['address', getAddressEncoder()], - ['claimAmount', getU64Encoder()], - ]); -} - -export function getCreatorDecoder(): Decoder { - return getStructDecoder([ - ['address', getAddressDecoder()], - ['claimAmount', getU64Decoder()], - ]); -} - -export function getCreatorCodec(): Codec { - return combineCodec(getCreatorEncoder(), getCreatorDecoder()); -} diff --git a/clients/js/wen_wns_marketplace/src/generated/types/index.ts b/clients/js/wen_wns_marketplace/src/generated/types/index.ts deleted file mode 100644 index 00a30b45..00000000 --- a/clients/js/wen_wns_marketplace/src/generated/types/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * This code was AUTOGENERATED using the kinobi library. - * Please DO NOT EDIT THIS FILE, instead use visitors - * to add features, then rerun kinobi to update it. - * - * @see https://github.com/kinobi-so/kinobi - */ - -export * from './creator'; diff --git a/clients/js/wen_wns_marketplace/src/index.ts b/clients/js/wen_wns_marketplace/src/index.ts deleted file mode 100644 index 69e4e4eb..00000000 --- a/clients/js/wen_wns_marketplace/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './generated'; diff --git a/clients/js/wen_wns_marketplace/test/stub.ts b/clients/js/wen_wns_marketplace/test/stub.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/clients/js/wen_wns_marketplace/tsconfig.declarations.json b/clients/js/wen_wns_marketplace/tsconfig.declarations.json deleted file mode 100644 index de76d4dd..00000000 --- a/clients/js/wen_wns_marketplace/tsconfig.declarations.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "outDir": "./dist/types" - }, - "extends": "./tsconfig.json" -} diff --git a/clients/js/wen_wns_marketplace/tsconfig.json b/clients/js/wen_wns_marketplace/tsconfig.json deleted file mode 100644 index d5835b07..00000000 --- a/clients/js/wen_wns_marketplace/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist", - "baseUrl": ".", - "rootDir": ".", - "target": "ES2020", - "module": "commonjs", - "sourceMap": true, - "declaration": true, - "declarationMap": false, - "removeComments": false, - "moduleResolution": "node", - "noEmit": false, - "preserveWatchOutput": true, - "emitDeclarationOnly": false, - "importHelpers": false, - "strict": true, - "noUnusedLocals": true, - "noFallthroughCasesInSwitch": true, - "downlevelIteration": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "incremental": false, - "resolveJsonModule": true, - "skipLibCheck": true, - "useUnknownInCatchVariables": false - }, - "include": ["src", "test"], - "exclude": ["node_modules", "dist", "build", "lib"] -} \ No newline at end of file diff --git a/clients/js/wen_wns_marketplace/tsup.config.ts b/clients/js/wen_wns_marketplace/tsup.config.ts deleted file mode 100644 index bc6a342d..00000000 --- a/clients/js/wen_wns_marketplace/tsup.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { env } from 'node:process'; -import path from 'node:path'; -import { defineConfig, Options } from 'tsup'; - -const SHARED_OPTIONS: Options = { - define: { __VERSION__: `"${env.npm_package_version}"` }, - entry: ['./src/index.ts'], - inject: [path.resolve(__dirname, 'env-shim.ts')], - outDir: './dist/src', - outExtension: ({ format }) => ({ js: format === 'cjs' ? '.js' : '.mjs' }), - sourcemap: true, - treeshake: true, -}; - -export default defineConfig(() => [ - // Source. - { ...SHARED_OPTIONS, format: 'cjs' }, - { ...SHARED_OPTIONS, format: 'esm' }, - - // Tests. - { - ...SHARED_OPTIONS, - bundle: false, - entry: ['./test/*.ts'], - format: 'cjs', - outDir: './dist/test', - }, -]); diff --git a/clients/js/yarn.lock b/clients/js/yarn.lock deleted file mode 100644 index 6b7f1998..00000000 --- a/clients/js/yarn.lock +++ /dev/null @@ -1,2899 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ava/typescript@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ava/typescript/-/typescript-4.1.0.tgz#0dde7b3bbcfe59c1424fb20eb289b4a2b3694418" - integrity sha512-1iWZQ/nr9iflhLK9VN8H+1oDZqe93qxNnyYUz+jTzkYPAHc5fdZXBrqmNIgIfFhWYXK5OaQ5YtC7OmLeTNhVEg== - dependencies: - escape-string-regexp "^5.0.0" - execa "^7.1.1" - -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== - -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== - -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== - -"@esbuild/darwin-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" - integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== - -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== - -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== - -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== - -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== - -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== - -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== - -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== - -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== - -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== - -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== - -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== - -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== - -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== - -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== - -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== - -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@^0.3.24": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@noble/ed25519@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-2.1.0.tgz#4bf661de9ee0ad775d41fcacbfc9aeec491f459c" - integrity sha512-KM4qTyXPinyCgMzeYJH/UudpdL+paJXtY3CHtHYZQtBkS8MZoPr4rOikZllIutJe0d06QDQKisyn02gxZ8TcQA== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@rollup/pluginutils@^4.0.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@rollup/rollup-android-arm-eabi@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz#f0da481244b7d9ea15296b35f7fe39cd81157396" - integrity sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA== - -"@rollup/rollup-android-arm64@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz#82ab3c575f4235fb647abea5e08eec6cf325964e" - integrity sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg== - -"@rollup/rollup-darwin-arm64@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz#6a530452e68a9152809ce58de1f89597632a085b" - integrity sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ== - -"@rollup/rollup-darwin-x64@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz#47727479f5ca292cf434d7e75af2725b724ecbc7" - integrity sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA== - -"@rollup/rollup-linux-arm-gnueabihf@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz#46193c498aa7902a8db89ac00128060320e84fef" - integrity sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g== - -"@rollup/rollup-linux-arm-musleabihf@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz#22d831fe239643c1d05c98906420325cee439d85" - integrity sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ== - -"@rollup/rollup-linux-arm64-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz#19abd33695ec9d588b4a858d122631433084e4a3" - integrity sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ== - -"@rollup/rollup-linux-arm64-musl@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz#d60af8c0b9be424424ff96a0ba19fce65d26f6ab" - integrity sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz#b1194e5ed6d138fdde0842d126fccde74a90f457" - integrity sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ== - -"@rollup/rollup-linux-riscv64-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz#f5a635c017b9bff8b856b0221fbd5c0e3373b7ec" - integrity sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg== - -"@rollup/rollup-linux-s390x-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz#f1043d9f4026bf6995863cb3f8dd4732606e4baa" - integrity sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg== - -"@rollup/rollup-linux-x64-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz#1e781730be445119f06c9df5f185e193bc82c610" - integrity sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g== - -"@rollup/rollup-linux-x64-musl@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz#08f12e1965d6f27d6898ff932592121cca6abc4b" - integrity sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ== - -"@rollup/rollup-win32-arm64-msvc@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz#4a5dcbbe7af7d41cac92b09798e7c1831da1f599" - integrity sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g== - -"@rollup/rollup-win32-ia32-msvc@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz#075b0713de627843a73b4cf0e087c56b53e9d780" - integrity sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg== - -"@rollup/rollup-win32-x64-msvc@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz#0cb240c147c0dfd0e3eaff4cc060a772d39e155c" - integrity sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw== - -"@sindresorhus/merge-streams@^2.1.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" - integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== - -"@solana/accounts@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/accounts/-/accounts-2.0.0-preview.3.tgz#aa47739d4018e36c4274e241eba955cb45b1df97" - integrity sha512-30GCO7SF3VRYqsumfCTW4bJ1fK67KwX62ZSi6nlU3+6ni4ZmmCT4jPYcqoBgO1kUzDJ4UORNeh/PbdFfbCA0FA== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/rpc-spec" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - -"@solana/addresses@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-2.0.0-preview.3.tgz#abd993f7b8d78885847a5030518faa9f0031b30b" - integrity sha512-JjiPOsVddQibd9EdzYEOiZtMSeveNHI7R6s9UADWVMvlIAqN9+uACficM0/XAdZmycZnvqKzS+Io0CNJClofUA== - dependencies: - "@solana/assertions" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/assertions@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.0.0-preview.3.tgz#05898d47f8bdc5722156832aa7401a9b1e65f589" - integrity sha512-K8ZwlDwuVJKeKOggejy524UoaTDGk6sthW1KvEQXOkIPqJdtST3I9Rco4Xh4hL2w/RnhKXqsQUa3bg+if2ifEg== - dependencies: - "@solana/errors" "2.0.0-preview.3" - -"@solana/codecs-core@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.3.tgz#7442318f670d1a0fa7942ade979163b9c63a7eee" - integrity sha512-xQz6USSBs82lUNoVa/wwnm6wa2y2eWtGwPLUwF/NOGGpR+QH9EODijXvJ8wuC9llyqerqdC+5mrmx9C8VSMNYg== - dependencies: - "@solana/errors" "2.0.0-preview.3" - -"@solana/codecs-data-structures@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.3.tgz#2621761c70cd3936a0d6b1eb4b9d173922ed1da9" - integrity sha512-PfXvZCf9qDF+Dv4WG6cb4xZoY9tj117bmZWS17iKimuNSsvuFSHpzERy0mmX2hwYEAM4CnQBd/9dgx+eAeMAsg== - dependencies: - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/codecs-numbers@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.3.tgz#4bf6d18ca280e6c922ceadf89c7adfbcf786d6e5" - integrity sha512-cjsHexVAj4GveDtG0+WjW121TKMbWN7AkOvGlf1qauOJgzJvX3V7KXHWuEg8wGGfRiLiXKEgh7KieQiB17EI3Q== - dependencies: - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/codecs-strings@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.3.tgz#77a8c8631b6ff744beda92e1a944befd621d015d" - integrity sha512-CUij3XgdoqbrEYncyy+kHCIXRHjqkcjiyJhf4hWVjMXM5nu2jreehhBiLFHFjlFw2U3vp1gig5QNxji8SjpQzw== - dependencies: - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/codecs@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.3.tgz#0c09185711e33b1e7d4dff3a3ce10f69fc15d5c0" - integrity sha512-uB0GMAY1VrNoJxZ9S4F1RBL57gI+8YwxnV9DD5EP5rU8iD7Wq4wbaB2IPcENyJi7rmzytIjKJg0MI6i2bBr+0w== - dependencies: - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-data-structures" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/options" "2.0.0-preview.3" - -"@solana/errors@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.3.tgz#57a79920b17f515d66ecd4950e594f13907794d0" - integrity sha512-IZAUMcKaV3Hn0QTfzlGmVsDaH1mVUq0uURJi+tm8K3n37cKrvXyS2GQsHtIMRaLdOVp1IbTtIc5YF3+qATlpyw== - dependencies: - chalk "^5.3.0" - commander "^12.0.0" - -"@solana/eslint-config-solana@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@solana/eslint-config-solana/-/eslint-config-solana-3.0.3.tgz#696d6fd4c38a7da51eb2584c2e2589df276dd2a8" - integrity sha512-yTaeCbOBwjmK4oUkknixOpwOzzAK8+4YWvJEJFNHuueESetieDnAeEHV7rzJllFgHEWa9nXps9Q3aD4/XJp71A== - -"@solana/fast-stable-stringify@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/fast-stable-stringify/-/fast-stable-stringify-2.0.0-preview.3.tgz#e664f8b8a4c222c6ddc401b6d0be51c850fe0141" - integrity sha512-JBx++3mFJ6WwvMtn6sZihtSicbD2pIP95tJ4hP2go18p6e2gFWRDpAmicKHhg0AT3qSkD6HdpfXtth+OQNnI2A== - -"@solana/functional@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.0.0-preview.3.tgz#ccdb2c0007ef6e3c22261805181631b2aa0c8934" - integrity sha512-Zf305CAzEPRcaGLQdXq9SilxBnPcbUQk46jztOpkNzNMqL4Ipw7sIYHdbn/O+RhM2d7mDnthz2IGcYVyMaseKg== - -"@solana/instructions@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.0.0-preview.3.tgz#2081772f277c13b3bf3681bb0a5f1853e605020a" - integrity sha512-P6Nkt++I/Ph7DFluVDAlgEYtFLtcvGFhRnqEa/BkkzRjbl28+HyDKRXcUPkP3o00+zuAqPjJ08qRxjywBOHPxg== - dependencies: - "@solana/errors" "2.0.0-preview.3" - -"@solana/keys@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.0.0-preview.3.tgz#3d23bca92c83c7c13238e8facdd1718e21be5239" - integrity sha512-TwQ0MQCafbKy277tDl4Q0CbIVuGAcd7NnlnrGXakhgNgO47N+vkEBhP+Zdw6YHWZwnuc30kdcXlaXSXPAMP2jQ== - dependencies: - "@solana/assertions" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/options@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.3.tgz#bd9f3201248e683f32aa9755712c6669b95bae4c" - integrity sha512-tT5O1CCJVE+rzo4VeeivYLNUL4L/2BjIeiy0MRh04lPxieiR346vUOPC1uCWGD6WqyTOOVUL0tsY4saYLmCTtA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-data-structures" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/programs@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/programs/-/programs-2.0.0-preview.3.tgz#b50451f3b949af34d20f12fa4bbcc0223177cb14" - integrity sha512-lGbXyAdoSu9a6GjMK34fUvm2id8dFY++ktOnOfJ9hiJ6JS9nK1CKzJUDNRESdF8B/y9t8Es4YzxF0VlDFy9QnQ== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/rpc-api@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-2.0.0-preview.3.tgz#8220fc2a1f96ce1bc28c86150dc9c31adade46f9" - integrity sha512-L6AQBPzR1n45tk2t0ROp4XPSUFQTPv2jjb6LwIkn/+ocrmzLgfvMA4EfYG3TqdLkDQqouN7Z5H/k3u7g0Tt6Fg== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/keys" "2.0.0-preview.3" - "@solana/rpc-parsed-types" "2.0.0-preview.3" - "@solana/rpc-spec" "2.0.0-preview.3" - "@solana/rpc-transformers" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - "@solana/transaction-messages" "2.0.0-preview.3" - "@solana/transactions" "2.0.0-preview.3" - -"@solana/rpc-parsed-types@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.0.0-preview.3.tgz#da8f3166dba5b0aefdfb9fec08d02ab70abbc6ee" - integrity sha512-FCGDUUM4rNTwoXGVNZ1m94f5piKY0xuTEFevUsrzHV+gdNQT57JoA6riz0tcdWJQ8vkYdh5oZSrnngxRfhrevg== - -"@solana/rpc-spec-types@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.0.0-preview.3.tgz#a4b6062f6cc487b3d60de0eff9f59a1fddef4cec" - integrity sha512-u56NbeoYpBc1ingOT6Fu5nIDYoNfF0wbzCXA7X2iCv6qOTf2gI6yP18OZHDbxB1QWTrd+cgeCC79ZZGuN1oXng== - -"@solana/rpc-spec@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.0.0-preview.3.tgz#13af4b14d69018fa55bc60acb456215dec8f61c6" - integrity sha512-WA7L3v5CPNuhtyaQSQWJ9DI6VRLIxm7uyKbiaFQLSd6XGRq/4aJTICwklftqyKgKRnLoXfbFth0y1ddlboCnrg== - dependencies: - "@solana/errors" "2.0.0-preview.3" - "@solana/rpc-spec-types" "2.0.0-preview.3" - -"@solana/rpc-subscriptions-api@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.0.0-preview.3.tgz#1d130a0329773fb7163780f40a23750333f6b51d" - integrity sha512-DVc17PVRTtrq2Y4B/KoOq5MpvQsmD4qijfv6rauZS9j/1Zp/ifNv3wlQT1ZPR5D7O3iG7YrZ9pPr8G/xUvhR7w== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/keys" "2.0.0-preview.3" - "@solana/rpc-subscriptions-spec" "2.0.0-preview.3" - "@solana/rpc-transformers" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - "@solana/transaction-messages" "2.0.0-preview.3" - "@solana/transactions" "2.0.0-preview.3" - -"@solana/rpc-subscriptions-spec@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-2.0.0-preview.3.tgz#b31c0008d0bd3b894a48527addbfeb526d7b430c" - integrity sha512-hdZJzcJe6qWW1lOP2scmsByh0D6D88PUI8MHbvJPvJcN2YtH05NTkA4zZERpn71YC8kLmEz7yYRncb1YgGeLCg== - dependencies: - "@solana/errors" "2.0.0-preview.3" - "@solana/rpc-spec-types" "2.0.0-preview.3" - -"@solana/rpc-subscriptions-transport-websocket@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-transport-websocket/-/rpc-subscriptions-transport-websocket-2.0.0-preview.3.tgz#411f8e0ed92d9b271fcff390be8a7305cd8d763f" - integrity sha512-lDdS8tZRssobOsWNlB46hTqP755ddIRwI9l6B3b16pORxKhWbKav5+9VMs81hJi8NIE8Yidy90NqrIgXnkavAw== - dependencies: - "@solana/errors" "2.0.0-preview.3" - "@solana/rpc-subscriptions-spec" "2.0.0-preview.3" - -"@solana/rpc-subscriptions@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions/-/rpc-subscriptions-2.0.0-preview.3.tgz#e73694b6938d92f1648bda65d4e184f5e4881dd9" - integrity sha512-TDMrA1io0ch2OlhM6ZU1hDPYl8v4uXdiqb1oC2YsRkP8Ee6hFSroYk21WEbM0ozlTmJslr4pEEM2eFKB8kPR7A== - dependencies: - "@solana/errors" "2.0.0-preview.3" - "@solana/fast-stable-stringify" "2.0.0-preview.3" - "@solana/functional" "2.0.0-preview.3" - "@solana/rpc-subscriptions-api" "2.0.0-preview.3" - "@solana/rpc-subscriptions-spec" "2.0.0-preview.3" - "@solana/rpc-subscriptions-transport-websocket" "2.0.0-preview.3" - "@solana/rpc-transformers" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - -"@solana/rpc-transformers@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-2.0.0-preview.3.tgz#6c5b6dfb62990129c451ead6988b9f1b1b189b7f" - integrity sha512-6JdtzomieglDGrktDywCc5C+jjnailrrlEiS8+6aoysVkvFFBWBS+er/jr0U7MI3v3khcAXokkzHePc+yC2jOg== - dependencies: - "@solana/functional" "2.0.0-preview.3" - "@solana/rpc-spec" "2.0.0-preview.3" - "@solana/rpc-subscriptions-spec" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - -"@solana/rpc-transport-http@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.0.0-preview.3.tgz#d89ff10bc5ecb151bbd05b2712edf6431642592b" - integrity sha512-mv6aK9aQ85lE0bMH+V9nU0HU5S7vCn3P805sEl+UPEVzZ/P74VWYZSx13hf/+0uirXG84Qx6GGpmY1nMAKn8DA== - dependencies: - "@solana/errors" "2.0.0-preview.3" - "@solana/rpc-spec" "2.0.0-preview.3" - undici-types "^6.13.0" - -"@solana/rpc-types@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-2.0.0-preview.3.tgz#674e4ab142d957f418881bb15e76ad2818c02c88" - integrity sha512-c58YHqG92BqElH0ISXnh1nKDEr1fg0K4g6Z+HjadbvBp45P3iPwCrS4nbGMzNrKgk6YoGWixSQYzw1Tg7vQs6A== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - -"@solana/rpc@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.0.0-preview.3.tgz#0d4ce7c5a09d8b5b4602bfda0ef61cd5b5cd04bb" - integrity sha512-cMqaILF1R/L71f1WVWKMP8mhkZKuHTo0wSbya2BZwK+6Kw4PngHNyjEzshej5NO0E72RhaXFdFzs3L7ezNiG2g== - dependencies: - "@solana/errors" "2.0.0-preview.3" - "@solana/fast-stable-stringify" "2.0.0-preview.3" - "@solana/functional" "2.0.0-preview.3" - "@solana/rpc-api" "2.0.0-preview.3" - "@solana/rpc-spec" "2.0.0-preview.3" - "@solana/rpc-transformers" "2.0.0-preview.3" - "@solana/rpc-transport-http" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - -"@solana/signers@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/signers/-/signers-2.0.0-preview.3.tgz#28ea6033d42cdf6c075f6a9298ad40b1d9bf6c83" - integrity sha512-j9k8KrivoFMxuNk9+vgDxRLXQzC+ZwDzUntfqaNhg6T6TqIiT9NITrQO5SqDfv1/Rj1nw+JLrtl8S1nrYR9w/A== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/instructions" "2.0.0-preview.3" - "@solana/keys" "2.0.0-preview.3" - "@solana/transaction-messages" "2.0.0-preview.3" - "@solana/transactions" "2.0.0-preview.3" - -"@solana/transaction-confirmation@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/transaction-confirmation/-/transaction-confirmation-2.0.0-preview.3.tgz#aaad4d5241c933a89de230f8650d97fa88a5903d" - integrity sha512-QCd1NutYo1kL7rUBxEQK1tM4OfdeOH6SzMY4luANduGzrPDOEnK1taatzNybZrrDt1VBz21N7ke2/WdQlKvMVg== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/keys" "2.0.0-preview.3" - "@solana/rpc" "2.0.0-preview.3" - "@solana/rpc-subscriptions" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - "@solana/transaction-messages" "2.0.0-preview.3" - "@solana/transactions" "2.0.0-preview.3" - -"@solana/transaction-messages@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-2.0.0-preview.3.tgz#db30f5c37746bbf1fd9b85489be71fc8c10bab21" - integrity sha512-8nfSMUe9L3CmD7D5iNVe4A9lu7d20OG5w1LhkkJNXpvenmK4IQ9WlwjWjD7gR+MzVgywICgPbw+e8FwTUFCKog== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-data-structures" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/functional" "2.0.0-preview.3" - "@solana/instructions" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - -"@solana/transactions@2.0.0-preview.3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.0.0-preview.3.tgz#fa69278798cbe8c0e6531faa30d7df96f5c7a72d" - integrity sha512-OJ7GDzWb/eA9iFNh1hYOn9tuiZqzIr1NDLQktOdR1DeiCAGrnuweEWLLYHCA1QyZ5J/X50lX8lasMFXYtzt6zA== - dependencies: - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs-core" "2.0.0-preview.3" - "@solana/codecs-data-structures" "2.0.0-preview.3" - "@solana/codecs-numbers" "2.0.0-preview.3" - "@solana/codecs-strings" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/functional" "2.0.0-preview.3" - "@solana/instructions" "2.0.0-preview.3" - "@solana/keys" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - "@solana/transaction-messages" "2.0.0-preview.3" - -"@solana/web3.js@tp3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-2.0.0-preview.3.tgz#07af2f622d7d770170da63bf27ffdadedf2a06a5" - integrity sha512-BivbEWn49waNJV3FLlyd9mYsm960snRZbj+i8PVKbYTVOejLeKyI7KEfUnz+BwbFQl+35PEO3CUp/xpdca3KOA== - dependencies: - "@solana/accounts" "2.0.0-preview.3" - "@solana/addresses" "2.0.0-preview.3" - "@solana/codecs" "2.0.0-preview.3" - "@solana/errors" "2.0.0-preview.3" - "@solana/functional" "2.0.0-preview.3" - "@solana/instructions" "2.0.0-preview.3" - "@solana/keys" "2.0.0-preview.3" - "@solana/programs" "2.0.0-preview.3" - "@solana/rpc" "2.0.0-preview.3" - "@solana/rpc-parsed-types" "2.0.0-preview.3" - "@solana/rpc-subscriptions" "2.0.0-preview.3" - "@solana/rpc-types" "2.0.0-preview.3" - "@solana/signers" "2.0.0-preview.3" - "@solana/transaction-confirmation" "2.0.0-preview.3" - "@solana/transaction-messages" "2.0.0-preview.3" - "@solana/transactions" "2.0.0-preview.3" - -"@solana/webcrypto-ed25519-polyfill@tp3": - version "2.0.0-preview.3" - resolved "https://registry.yarnpkg.com/@solana/webcrypto-ed25519-polyfill/-/webcrypto-ed25519-polyfill-2.0.0-preview.3.tgz#2ca77b00c3a15eb192bea4cb7d1bc0e81a7ca75a" - integrity sha512-MaV4swf8QJr+H7BVr9hJiZxn/nWedvCMSJB53GtHse5/EC+STdBMzfELICKXiQtycWC5V4vC9LKTOHIjx2zXhg== - dependencies: - "@noble/ed25519" "^2.0.0" - -"@types/estree@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@typescript-eslint/eslint-plugin@^7.3.1": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz#b3563927341eca15124a18c6f94215f779f5c02a" - integrity sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.16.0" - "@typescript-eslint/type-utils" "7.16.0" - "@typescript-eslint/utils" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/parser@^7.3.1": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.16.0.tgz#53fae8112f8c912024aea7b499cf7374487af6d8" - integrity sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw== - dependencies: - "@typescript-eslint/scope-manager" "7.16.0" - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/typescript-estree" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz#eb0757af5720c9c53c8010d7a0355ae27e17b7e5" - integrity sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw== - dependencies: - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" - -"@typescript-eslint/type-utils@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz#ec52b1932b8fb44a15a3e20208e0bd49d0b6bd00" - integrity sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg== - dependencies: - "@typescript-eslint/typescript-estree" "7.16.0" - "@typescript-eslint/utils" "7.16.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/types@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.16.0.tgz#60a19d7e7a6b1caa2c06fac860829d162a036ed2" - integrity sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw== - -"@typescript-eslint/typescript-estree@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz#98ac779d526fab2a781e5619c9250f3e33867c09" - integrity sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw== - dependencies: - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/visitor-keys" "7.16.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/utils@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.16.0.tgz#b38dc0ce1778e8182e227c98d91d3418449aa17f" - integrity sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.16.0" - "@typescript-eslint/types" "7.16.0" - "@typescript-eslint/typescript-estree" "7.16.0" - -"@typescript-eslint/visitor-keys@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz#a1d99fa7a3787962d6e0efd436575ef840e23b06" - integrity sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg== - dependencies: - "@typescript-eslint/types" "7.16.0" - eslint-visitor-keys "^3.4.3" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@vercel/nft@^0.26.2": - version "0.26.5" - resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.26.5.tgz#f21e40576b76446851b6cbff79f39a72dab4d6b2" - integrity sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - "@rollup/pluginutils" "^4.0.0" - acorn "^8.6.0" - acorn-import-attributes "^1.9.2" - async-sema "^3.1.1" - bindings "^1.4.0" - estree-walker "2.0.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - micromatch "^4.0.2" - node-gyp-build "^4.2.2" - resolve-from "^5.0.0" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-import-attributes@^1.9.2: - version "1.9.5" - resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" - integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.3.2: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.11.3, acorn@^8.6.0, acorn@^8.9.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-sequence-parser@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" - integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -arrgv@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arrgv/-/arrgv-1.0.2.tgz#025ed55a6a433cad9b604f8112fc4292715a6ec0" - integrity sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw== - -arrify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-3.0.0.tgz#ccdefb8eaf2a1d2ab0da1ca2ce53118759fd46bc" - integrity sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw== - -async-sema@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/async-sema/-/async-sema-3.1.1.tgz#e527c08758a0f8f6f9f15f799a173ff3c40ea808" - integrity sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg== - -ava@^6.1.2: - version "6.1.3" - resolved "https://registry.yarnpkg.com/ava/-/ava-6.1.3.tgz#aed54a4528653c7a62b6d68d0a53608b22a5b1dc" - integrity sha512-tkKbpF1pIiC+q09wNU9OfyTDYZa8yuWvU2up3+lFJ3lr1RmnYh2GBpPwzYUEB0wvTPIUysGjcZLNZr7STDviRA== - dependencies: - "@vercel/nft" "^0.26.2" - acorn "^8.11.3" - acorn-walk "^8.3.2" - ansi-styles "^6.2.1" - arrgv "^1.0.2" - arrify "^3.0.0" - callsites "^4.1.0" - cbor "^9.0.1" - chalk "^5.3.0" - chunkd "^2.0.1" - ci-info "^4.0.0" - ci-parallel-vars "^1.0.1" - cli-truncate "^4.0.0" - code-excerpt "^4.0.0" - common-path-prefix "^3.0.0" - concordance "^5.0.4" - currently-unhandled "^0.4.1" - debug "^4.3.4" - emittery "^1.0.1" - figures "^6.0.1" - globby "^14.0.0" - ignore-by-default "^2.1.0" - indent-string "^5.0.0" - is-plain-object "^5.0.0" - is-promise "^4.0.0" - matcher "^5.0.0" - memoize "^10.0.0" - ms "^2.1.3" - p-map "^7.0.1" - package-config "^5.0.0" - picomatch "^3.0.1" - plur "^5.1.0" - pretty-ms "^9.0.0" - resolve-cwd "^3.0.0" - stack-utils "^2.0.6" - strip-ansi "^7.1.0" - supertap "^3.0.1" - temp-dir "^3.0.0" - write-file-atomic "^5.0.1" - yargs "^17.7.2" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bindings@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -blueimp-md5@^2.10.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" - integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -bundle-require@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.2.1.tgz#4c450a5807381d20ade987bde8ac391544257919" - integrity sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA== - dependencies: - load-tsconfig "^0.2.3" - -cac@^6.7.12: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -callsites@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-4.2.0.tgz#98761d5be3ce092e4b9c92f7fb8c8eb9b83cadc8" - integrity sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ== - -cbor@^9.0.1: - version "9.0.2" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb" - integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ== - dependencies: - nofilter "^3.1.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -chokidar@^3.5.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chunkd@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-2.0.1.tgz#49cd1d7b06992dc4f7fccd962fe2a101ee7da920" - integrity sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ== - -ci-info@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" - integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== - -ci-parallel-vars@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz#e87ff0625ccf9d286985b29b4ada8485ca9ffbc2" - integrity sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg== - -cli-truncate@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" - integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== - dependencies: - slice-ansi "^5.0.0" - string-width "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -code-excerpt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-4.0.0.tgz#2de7d46e98514385cb01f7b3b741320115f4c95e" - integrity sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA== - dependencies: - convert-to-spaces "^2.0.1" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -commander@^12.0.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concordance@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/concordance/-/concordance-5.0.4.tgz#9896073261adced72f88d60e4d56f8efc4bbbbd2" - integrity sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw== - dependencies: - date-time "^3.1.0" - esutils "^2.0.3" - fast-diff "^1.2.0" - js-string-escape "^1.0.1" - lodash "^4.17.15" - md5-hex "^3.0.1" - semver "^7.3.2" - well-known-symbols "^2.0.0" - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -convert-to-spaces@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz#61a6c98f8aa626c16b296b862a91412a33bceb6b" - integrity sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== - dependencies: - array-find-index "^1.0.1" - -date-time@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e" - integrity sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg== - dependencies: - time-zone "^1.0.0" - -debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -emittery@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-1.0.3.tgz#c9d2a9c689870f15251bb13b31c67715c26d69ac" - integrity sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA== - -emoji-regex@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -esbuild@^0.21.4: - version "0.21.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" - -escalade@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@2.0.2, estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2, esutils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9, fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -figures@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-6.1.0.tgz#935479f51865fa7479f6fa94fc6fc7ac14e62c4a" - integrity sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg== - dependencies: - is-unicode-supported "^2.0.0" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up-simple@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.0.tgz#21d035fde9fdbd56c8f4d2f63f32fd93a1cfc368" - integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw== - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -foreground-child@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" - integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-east-asian-width@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" - integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^10.3.10, glob@^10.3.7: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^14.0.0: - version "14.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.2.tgz#06554a54ccfe9264e5a9ff8eded46aa1e306482f" - integrity sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw== - dependencies: - "@sindresorhus/merge-streams" "^2.1.0" - fast-glob "^3.3.2" - ignore "^5.2.4" - path-type "^5.0.0" - slash "^5.1.0" - unicorn-magic "^0.1.0" - -graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" - integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - -ignore-by-default@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-2.1.0.tgz#c0e0de1a99b6065bdc93315a6f728867981464db" - integrity sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw== - -ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" - integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -irregular-plurals@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.5.0.tgz#0835e6639aa8425bdc8b0d33d0dc4e89d9c01d2b" - integrity sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-fullwidth-code-point@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" - integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-unicode-supported@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz#fdf32df9ae98ff6ab2cedc155a5a6e895701c451" - integrity sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -joycon@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== - -js-yaml@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -jsonc-parser@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" - integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" - integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -load-json-file@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-7.0.1.tgz#a3c9fde6beffb6bedb5acf104fad6bb1604e1b00" - integrity sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ== - -load-tsconfig@^0.2.3: - version "0.2.5" - resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" - integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -marked@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" - integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== - -matcher@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-5.0.0.tgz#cd82f1c7ae7ee472a9eeaf8ec7cac45e0fe0da62" - integrity sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw== - dependencies: - escape-string-regexp "^5.0.0" - -md5-hex@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c" - integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw== - dependencies: - blueimp-md5 "^2.10.0" - -memoize@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/memoize/-/memoize-10.0.0.tgz#43fa66b2022363c7c50cf5dfab732a808a3d7147" - integrity sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA== - dependencies: - mimic-function "^5.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mimic-function@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" - integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.3, minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.2.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - -nofilter@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" - integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -object-assign@^4.0.1, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-7.0.2.tgz#7c5119fada4755660f70199a66aa3fe2f85a1fe8" - integrity sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q== - -package-config@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/package-config/-/package-config-5.0.0.tgz#cba78b7feb3396fa0149caca2c72677ff302b3c4" - integrity sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg== - dependencies: - find-up-simple "^1.0.0" - load-json-file "^7.0.1" - -package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-ms@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4" - integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -path-type@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" - integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" - integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== - -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -plur@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/plur/-/plur-5.1.0.tgz#bff58c9f557b9061d60d8ebf93959cf4b08594ae" - integrity sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg== - dependencies: - irregular-plurals "^3.3.0" - -postcss-load-config@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== - dependencies: - lilconfig "^3.0.0" - yaml "^2.3.4" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@^3.2.5: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== - -pretty-ms@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.0.0.tgz#53c57f81171c53be7ce3fd20bdd4265422bc5929" - integrity sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng== - dependencies: - parse-ms "^4.0.0" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^5.0.5: - version "5.0.9" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.9.tgz#c3baa1b886eadc2ec7981a06a593c3d01134ffe9" - integrity sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA== - dependencies: - glob "^10.3.7" - -rollup@^4.0.2: - version "4.18.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.1.tgz#18a606df5e76ca53b8a69f2d8eab256d69dda851" - integrity sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A== - dependencies: - "@types/estree" "1.0.5" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.18.1" - "@rollup/rollup-android-arm64" "4.18.1" - "@rollup/rollup-darwin-arm64" "4.18.1" - "@rollup/rollup-darwin-x64" "4.18.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.18.1" - "@rollup/rollup-linux-arm-musleabihf" "4.18.1" - "@rollup/rollup-linux-arm64-gnu" "4.18.1" - "@rollup/rollup-linux-arm64-musl" "4.18.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.18.1" - "@rollup/rollup-linux-riscv64-gnu" "4.18.1" - "@rollup/rollup-linux-s390x-gnu" "4.18.1" - "@rollup/rollup-linux-x64-gnu" "4.18.1" - "@rollup/rollup-linux-x64-musl" "4.18.1" - "@rollup/rollup-win32-arm64-msvc" "4.18.1" - "@rollup/rollup-win32-ia32-msvc" "4.18.1" - "@rollup/rollup-win32-x64-msvc" "4.18.1" - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^6.0.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2, semver@^7.3.5, semver@^7.6.0: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shiki@^0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.7.tgz#c3c9e1853e9737845f1d2ef81b31bcfb07056d4e" - integrity sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg== - dependencies: - ansi-sequence-parser "^1.1.0" - jsonc-parser "^3.2.0" - vscode-oniguruma "^1.7.0" - vscode-textmate "^8.0.0" - -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" - integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== - -slice-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" - integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== - dependencies: - ansi-styles "^6.0.0" - is-fullwidth-code-point "^4.0.0" - -source-map@0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string-width@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" - integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== - dependencies: - emoji-regex "^10.3.0" - get-east-asian-width "^1.0.0" - strip-ansi "^7.1.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1, strip-ansi@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -sucrase@^3.20.3: - version "3.35.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supertap@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/supertap/-/supertap-3.0.1.tgz#aa89e4522104402c6e8fe470a7d2db6dc4037c6a" - integrity sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw== - dependencies: - indent-string "^5.0.0" - js-yaml "^3.14.1" - serialize-error "^7.0.1" - strip-ansi "^7.0.1" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -tar@^6.1.11: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-3.0.0.tgz#7f147b42ee41234cc6ba3138cd8e8aa2302acffa" - integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -time-zone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" - integrity sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -tsup@^8.0.2: - version "8.1.0" - resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.1.0.tgz#354ce9def1721f5029564382ea2a42dc67fbb489" - integrity sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg== - dependencies: - bundle-require "^4.0.0" - cac "^6.7.12" - chokidar "^3.5.1" - debug "^4.3.1" - esbuild "^0.21.4" - execa "^5.0.0" - globby "^11.0.3" - joycon "^3.0.1" - postcss-load-config "^4.0.1" - resolve-from "^5.0.0" - rollup "^4.0.2" - source-map "0.8.0-beta.0" - sucrase "^3.20.3" - tree-kill "^1.2.2" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typedoc-plugin-missing-exports@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-2.3.0.tgz#ae0858bf383a08345cc09a99d428234cf6b85ecf" - integrity sha512-iI9ITNNLlbsLCBBeYDyu0Qqp3GN/9AGyWNKg8bctRXuZEPT7G1L+0+MNWG9MsHcf/BFmNbXL0nQ8mC/tXRicog== - -typedoc@^0.25.12: - version "0.25.13" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.13.tgz#9a98819e3b2d155a6d78589b46fa4c03768f0922" - integrity sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ== - dependencies: - lunr "^2.3.9" - marked "^4.3.0" - minimatch "^9.0.3" - shiki "^0.14.7" - -typescript@^5.4.2: - version "5.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" - integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== - -undici-types@^6.13.0: - version "6.19.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.2.tgz#215f35d42793966563f3bacb1f768cbc396e0a2c" - integrity sha512-jvI+p8VJnrOIQ8AU4PyB1ytW68EyrLnI2xvCO3e5umm3nmhNjpugMD1wo+X994PyvUT9dWS/k3vO1wwRIh730Q== - -unicorn-magic@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" - integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -vscode-oniguruma@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" - integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== - -vscode-textmate@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" - integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -well-known-symbols@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" - integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^2.3.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" - integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/clients/rarible-svm-ts/.eslintrc.js b/clients/rarible-svm-ts/.eslintrc.js new file mode 100644 index 00000000..cfc4a8de --- /dev/null +++ b/clients/rarible-svm-ts/.eslintrc.js @@ -0,0 +1,37 @@ +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: 'xo', + overrides: [ + { + env: { + node: true, + }, + files: [ + '.eslintrc.{js,cjs}', + ], + parserOptions: { + sourceType: 'script', + }, + }, + { + extends: [ + 'xo-typescript', + ], + files: [ + '*.ts', + '*.tsx', + ], + }, + ], + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: 'tsconfig.json', + tsconfigRootDir: __dirname, + }, + rules: { + }, +}; diff --git a/clients/rarible-svm-ts/package.json b/clients/rarible-svm-ts/package.json new file mode 100644 index 00000000..a271c699 --- /dev/null +++ b/clients/rarible-svm-ts/package.json @@ -0,0 +1,33 @@ +{ + "name": "@rarible/rarible-svm-ts", + "version": "0.1.0-alpha", + "description": "Rarible SVM SDK", + "homepage": "rarible.com", + "main": "dist/index", + "types": "dist/index", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsc" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.1", + "@metaplex-foundation/js": "^0.20.1", + "@solana/spl-token": "^0.3.11", + "@solana/web3.js": "^1.89.0", + "dotenv": "^16.4.4" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": ">=7.0.2", + "@typescript-eslint/parser": ">=7.0.2", + "eslint": ">=8.56.0", + "eslint-config-xo": "^0.44.0", + "eslint-config-xo-typescript": "^3.0.0", + "typescript": ">=5.0.0", + "vitest": "^1.3.1" + } +} diff --git a/clients/rarible-svm-ts/src/index.ts b/clients/rarible-svm-ts/src/index.ts new file mode 100644 index 00000000..22fbed24 --- /dev/null +++ b/clients/rarible-svm-ts/src/index.ts @@ -0,0 +1,3 @@ +export * from './instructions'; +export * from './utils'; +export * from './program'; diff --git a/clients/rarible-svm-ts/src/instructions/index.ts b/clients/rarible-svm-ts/src/instructions/index.ts new file mode 100644 index 00000000..2ba26c35 --- /dev/null +++ b/clients/rarible-svm-ts/src/instructions/index.ts @@ -0,0 +1,2 @@ +export * from './market'; +export * from './order'; diff --git a/clients/rarible-svm-ts/src/instructions/market.ts b/clients/rarible-svm-ts/src/instructions/market.ts new file mode 100644 index 00000000..fb40c7e9 --- /dev/null +++ b/clients/rarible-svm-ts/src/instructions/market.ts @@ -0,0 +1,61 @@ +import { + PublicKey, + SystemProgram, +} from '@solana/web3.js'; +import {type Provider, BN} from '@coral-xyz/anchor'; +import { + getEventAuthority, getMarketPda, getMarketplaceProgram, + getVerificationPda, + marketplaceProgramId, +} from '../utils'; + +export type InitMarketParams = { + marketIdentifier: string; + feeRecipients: string[]; + feeBps: number[]; +}; + +// Initialize Market +export const getInitializeMarket = async (provider: Provider, marketParams: InitMarketParams) => { + const marketProgram = getMarketplaceProgram(provider); + const market = getMarketPda(marketParams.marketIdentifier); + const eventAuthority = getEventAuthority(); + + let feeRecipients = marketParams.feeRecipients; + let feeBps = marketParams.feeBps; + + if (feeRecipients.length !== 3 || feeBps.length !== 3) { + throw Error("Invalid fee params"); + } + + const ix = await marketProgram.methods + .initMarket({ feeBps: marketParams.feeBps.map((f) => new BN(f)), feeRecipients: marketParams.feeRecipients.map((f) => new PublicKey(f)) }) + .accountsStrict({ + initializer: provider.publicKey, + marketIdentifier: marketParams.marketIdentifier, + market, + systemProgram: SystemProgram.programId, + program: marketplaceProgramId, + eventAuthority, + }) + .instruction(); + return ix; +}; + +// Verify Mint +export const getVerifyMint = async (provider: Provider, nftMint: string, marketAddress: string) => { + const marketProgram = getMarketplaceProgram(provider); + const verificationPda = getVerificationPda(marketAddress, nftMint); + + const ix = await marketProgram.methods + .verifyMint() + .accountsStrict({ + initializer: provider.publicKey, + market: marketAddress, + nftMint, + verification: verificationPda, + systemProgram: SystemProgram.programId, + }) + .instruction(); + return ix; +}; diff --git a/clients/rarible-svm-ts/src/instructions/order.ts b/clients/rarible-svm-ts/src/instructions/order.ts new file mode 100644 index 00000000..cb5f14b1 --- /dev/null +++ b/clients/rarible-svm-ts/src/instructions/order.ts @@ -0,0 +1,296 @@ +/* eslint-disable @typescript-eslint/no-unsafe-call */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import {type Provider, BN} from '@coral-xyz/anchor'; +import {ASSOCIATED_TOKEN_PROGRAM_ID, createWrappedNativeAccount} from '@solana/spl-token'; +import { + SYSVAR_INSTRUCTIONS_PUBKEY, SystemProgram, PublicKey, + Keypair, + type AccountMeta, +} from '@solana/web3.js'; +import { + getMarketplaceProgram, getMarketPda, getOrderAccount, getVerificationPda, getEventAuthority, marketplaceProgramId, fetchOrderByAddress, getTokenProgramFromMint, getNftProgramFromMint, getAtaAddress, + getRemainingAccountsForMint, + type WnsAccountParams, + fetchMarketByAddress, + getFeeAccountsFromMarket, +} from '../utils'; + +export type CreateOrderArgs = { + marketIdentifier: string; + nftMint: string | undefined; + paymentMint: string; + size: number; + price: number; + extraAccountParams: WnsAccountParams | undefined; // Add metaplex +}; +// List NFT +export const getListNft = async (provider: Provider, listingArgs: CreateOrderArgs) => { + const marketProgram = getMarketplaceProgram(provider); + const market = getMarketPda(listingArgs.marketIdentifier); + const initializer = provider.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const nftMint = listingArgs.nftMint; + if (!nftMint) return undefined; + + const nftTokenProgram = await getTokenProgramFromMint(provider, nftMint); + if (!nftTokenProgram) { + return undefined; + } + + const nonceKp = Keypair.generate(); + const nonce = nonceKp.publicKey; + + const nftProgram = await getNftProgramFromMint(provider, nftMint); + + const order = getOrderAccount(nonce.toString(), market.toString(), initializer); + const initializerNftTa = getAtaAddress(nftMint, initializer, nftTokenProgram.toString()); + + // const verification = getVerificationPda(market.toString(), nftMint); + const eventAuthority = getEventAuthority(); + + const remainingAccounts: AccountMeta[] = await getRemainingAccountsForMint(provider, nftMint, listingArgs.extraAccountParams); + + + const ix = await marketProgram.methods + .list({ + nonce, + paymentMint: new PublicKey(listingArgs.paymentMint), + price: new BN(listingArgs.price), + size: new BN(listingArgs.size) + }) + .accountsStrict({ + initializer: provider.publicKey, + market, + nftMint, + order, + initializerNftTa, + nftProgram: nftProgram ?? PublicKey.default, + nftTokenProgram, + sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketplaceProgramId, + eventAuthority, + }) + .remainingAccounts(remainingAccounts) + .instruction(); + + return ix; +}; + +export const getBid = async (provider: Provider, biddingArgs: CreateOrderArgs) => { + const marketProgram = getMarketplaceProgram(provider); + const market = getMarketPda(biddingArgs.marketIdentifier); + const initializer = provider.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const paymentTokenProgram = await getTokenProgramFromMint(provider, biddingArgs.paymentMint.toString()); + if (!paymentTokenProgram) { + return undefined; + } + + const nonceKp = Keypair.generate(); + const nonce = nonceKp.publicKey; + + const order = getOrderAccount(nonce.toString(), market.toString(), initializer); + const initializerPaymentTa = getAtaAddress(biddingArgs.paymentMint, initializer, paymentTokenProgram.toString()); + const orderPaymentTa = getAtaAddress(biddingArgs.paymentMint, order.toString(), paymentTokenProgram.toString()); + + const eventAuthority = getEventAuthority(); + + const ix = await marketProgram.methods + .bid({ + nonce, + price: new BN(biddingArgs.price), + size: new BN(biddingArgs.size), + }) + .accountsStrict({ + initializer: provider.publicKey, + market, + nftMint: biddingArgs.nftMint ?? PublicKey.default, + order, + initializerPaymentTa, + orderPaymentTa, + paymentTokenProgram, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketplaceProgramId, + eventAuthority, + paymentMint: biddingArgs.paymentMint, + }) + .instruction(); + + return ix; +}; + +export const fillOrder = async (provider: Provider, orderAddress: string, amountToFill: number, nftMint: string, extraAccountParams: WnsAccountParams | undefined) => { + const marketProgram = getMarketplaceProgram(provider); + + const initializer = provider.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const order = await fetchOrderByAddress(provider, orderAddress); + if (!order) { + return undefined; + } + + const market = await fetchMarketByAddress(provider, order.market.toString()); + if (!market) { + return undefined; + } + + const nftTokenProgram = await getTokenProgramFromMint(provider, nftMint); + const paymentTokenProgram = await getTokenProgramFromMint(provider, order.paymentMint.toString()); + if (!paymentTokenProgram || !nftTokenProgram) { + return undefined; + } + + const nftProgram = await getNftProgramFromMint(provider, nftMint); + + const isBuy = order.side === 0; + + const nftRecipient = isBuy ? order.owner.toString() : initializer; + const nftFunder = isBuy ? initializer : order.owner.toString(); + const paymentFunder = isBuy ? orderAddress : initializer.toString(); + const paymentRecipient = isBuy ? initializer : order.owner.toString(); + + const buyerPaymentTa = getAtaAddress(order.paymentMint.toString(), paymentFunder, paymentTokenProgram.toString()); + const sellerPaymentTa = getAtaAddress(order.paymentMint.toString(), paymentRecipient, paymentTokenProgram.toString()); + const buyerNftTa = getAtaAddress(nftMint, nftRecipient, nftTokenProgram.toString()); + const sellerNftTa = getAtaAddress(nftMint, nftFunder, nftTokenProgram.toString()); + + const eventAuthority = getEventAuthority(); + + const feeRemAccs = getFeeAccountsFromMarket(order.paymentMint, paymentTokenProgram, market); + + console.log({ feeRemAccs }); + const baseRemainingAccounts: AccountMeta[] = await getRemainingAccountsForMint(provider, nftMint, extraAccountParams); + const remainingAccounts = [...feeRemAccs, ...baseRemainingAccounts]; + + const ix = await marketProgram.methods + .fillOrder(new BN(amountToFill)) + .accountsStrict({ + taker: provider.publicKey, + maker: order.owner, + market: order.market, + order: orderAddress, + buyerNftTa, + buyerPaymentTa, + sellerNftTa, + sellerPaymentTa, + nftTokenProgram, + paymentTokenProgram, + nftProgram: nftProgram ?? PublicKey.default, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketplaceProgramId, + eventAuthority, + paymentMint: order.paymentMint, + nftMint, + sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY + }) + .remainingAccounts(remainingAccounts) + .instruction(); + + return ix; +}; + +// Cancel Listing +export const getCancelListing = async (provider: Provider, orderAddress: PublicKey, extraAccountParams: WnsAccountParams | undefined) => { + const marketProgram = getMarketplaceProgram(provider); + const initializer = provider.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const order = await fetchOrderByAddress(provider, orderAddress.toString()); + if (!order) { + return undefined; + } + + const {nftMint} = order; + + const nftTokenProgram = await getTokenProgramFromMint(provider, nftMint.toString()); + if (!nftTokenProgram) { + return undefined; + } + + const initializerNftTa = getAtaAddress(nftMint.toString(), initializer, nftTokenProgram.toString()); + + const nftProgram = await getNftProgramFromMint(provider, nftMint.toString()); + + const eventAuthority = getEventAuthority(); + const remainingAccounts: AccountMeta[] = await getRemainingAccountsForMint(provider, nftMint.toString(), extraAccountParams); + + const ix = await marketProgram.methods + .cancelListing() + .accountsStrict({ + initializer: provider.publicKey, + market: order.market, + nftMint, + order: orderAddress, + initializerNftTa, + nftProgram: nftProgram ?? PublicKey.default, + nftTokenProgram, + sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketplaceProgramId, + eventAuthority, + }) + .remainingAccounts(remainingAccounts) + .instruction(); + + return ix; +}; + +// Cancel Bid +export const getCancelBid = async (provider: Provider, orderAddress: PublicKey) => { + const marketProgram = getMarketplaceProgram(provider); + const initializer = provider.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const order = await fetchOrderByAddress(provider, orderAddress.toString()); + if (!order) { + return undefined; + } + + const paymentMint = order.paymentMint.toString(); + const paymentTokenProgram = await getTokenProgramFromMint(provider, paymentMint); + if (!paymentTokenProgram) { + return undefined; + } + + const initializerPaymentTa = getAtaAddress(paymentMint, initializer, paymentTokenProgram.toString()); + const orderPaymentTa = getAtaAddress(paymentMint, orderAddress.toString(), paymentTokenProgram.toString()); + + const eventAuthority = getEventAuthority(); + + const ix = await marketProgram.methods + .cancelBid() + .accountsStrict({ + initializer: provider.publicKey, + market: order.market, + paymentMint, + order: orderAddress, + initializerPaymentTa, + orderPaymentTa, + paymentTokenProgram, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketplaceProgramId, + eventAuthority, + }) + .instruction(); + + return ix; +}; diff --git a/clients/rarible-svm-ts/src/program/index.ts b/clients/rarible-svm-ts/src/program/index.ts new file mode 100644 index 00000000..c6eea373 --- /dev/null +++ b/clients/rarible-svm-ts/src/program/index.ts @@ -0,0 +1,7 @@ +import marketplaceIdl from './marketplace.json'; +import {type Marketplace} from './marketplace'; + +export { + marketplaceIdl, + type Marketplace, +}; diff --git a/clients/rarible-svm-ts/src/program/marketplace.json b/clients/rarible-svm-ts/src/program/marketplace.json new file mode 100644 index 00000000..9efa8428 --- /dev/null +++ b/clients/rarible-svm-ts/src/program/marketplace.json @@ -0,0 +1,1606 @@ +{ + "address": "4NSuQ6U7QdVqCW5gJY4a2U6X7s2qNvrUQUwTMsf6HARG", + "metadata": { + "name": "marketplace", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Base marketplace contracts on SVM for rarible" + }, + "instructions": [ + { + "name": "bid", + "docs": [ + "initializer a new bid" + ], + "discriminator": [ + 199, + 56, + 85, + 38, + 146, + 243, + 37, + 158 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "initializer_payment_ta", + "writable": true + }, + { + "name": "order_payment_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "payment_token_program" + }, + { + "kind": "account", + "path": "payment_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "payment_mint", + "writable": true + }, + { + "name": "payment_token_program" + }, + { + "name": "nft_mint" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "BidData" + } + } + } + ] + }, + { + "name": "cancel_bid", + "docs": [ + "cancel a buy order" + ], + "discriminator": [ + 40, + 243, + 190, + 217, + 208, + 253, + 86, + 206 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "Order" + }, + { + "kind": "account", + "path": "order.market", + "account": "Order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "initializer_payment_ta", + "writable": true + }, + { + "name": "order_payment_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "payment_token_program" + }, + { + "kind": "account", + "path": "payment_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "payment_mint", + "writable": true + }, + { + "name": "payment_token_program" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "cancel_listing", + "docs": [ + "cancel a sell order" + ], + "discriminator": [ + 41, + 183, + 50, + 232, + 230, + 233, + 157, + 70 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "Order" + }, + { + "kind": "account", + "path": "order.market", + "account": "Order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "nft_mint", + "writable": true + }, + { + "name": "initializer_nft_ta", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "sysvar_instructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nft_token_program" + }, + { + "name": "nft_program" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "fill_order", + "docs": [ + "fill a listing" + ], + "discriminator": [ + 232, + 122, + 115, + 25, + 199, + 143, + 136, + 162 + ], + "accounts": [ + { + "name": "taker", + "writable": true, + "signer": true + }, + { + "name": "maker", + "writable": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "Order" + }, + { + "kind": "account", + "path": "order.market", + "account": "Order" + }, + { + "kind": "account", + "path": "order.owner", + "account": "Order" + } + ] + } + }, + { + "name": "nft_mint", + "writable": true + }, + { + "name": "seller_nft_ta", + "writable": true + }, + { + "name": "buyer_nft_ta", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "nft_token_program" + }, + { + "name": "nft_program" + }, + { + "name": "seller_payment_ta", + "writable": true + }, + { + "name": "buyer_payment_ta", + "writable": true + }, + { + "name": "payment_mint", + "writable": true + }, + { + "name": "payment_token_program" + }, + { + "name": "sysvar_instructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "init_market", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 33, + 253, + 15, + 116, + 89, + 25, + 127, + 236 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market_identifier" + }, + { + "name": "market", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market_identifier" + } + ] + } + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "InitMarketParams" + } + } + } + ] + }, + { + "name": "list", + "docs": [ + "initializer a new listing" + ], + "discriminator": [ + 54, + 174, + 193, + 67, + 17, + 41, + 132, + 38 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "nft_mint" + }, + { + "name": "initializer_nft_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "nft_token_program" + }, + { + "kind": "account", + "path": "nft_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "sysvar_instructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "nft_token_program" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nft_program" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "ListData" + } + } + } + ] + }, + { + "name": "verify_mint", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 57, + 93, + 52, + 66, + 75, + 249, + 244, + 143 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market" + }, + { + "name": "nft_mint" + }, + { + "name": "verification", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 118, + 101, + 114, + 105, + 102, + 105, + 99, + 97, + 116, + 105, + 111, + 110 + ] + }, + { + "kind": "account", + "path": "nft_mint" + }, + { + "kind": "account", + "path": "market" + } + ] + } + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "Market", + "discriminator": [ + 219, + 190, + 213, + 55, + 0, + 227, + 198, + 154 + ] + }, + { + "name": "MintVerification", + "discriminator": [ + 152, + 183, + 224, + 35, + 143, + 133, + 78, + 176 + ] + }, + { + "name": "Order", + "discriminator": [ + 134, + 173, + 223, + 185, + 77, + 86, + 28, + 51 + ] + } + ], + "events": [ + { + "name": "MarketEditEvent", + "discriminator": [ + 160, + 230, + 206, + 202, + 154, + 28, + 249, + 246 + ] + }, + { + "name": "OrderEditEvent", + "discriminator": [ + 155, + 223, + 223, + 45, + 200, + 107, + 177, + 149 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "WrongAccount", + "msg": "Account passed in incorrectly" + }, + { + "code": 6001, + "name": "InsufficientOrderSize", + "msg": "Order too small" + }, + { + "code": 6002, + "name": "AmountOverflow", + "msg": "Amount overflow" + }, + { + "code": 6003, + "name": "AmountUnderflow", + "msg": "Amount underflow" + }, + { + "code": 6004, + "name": "UnsupportedNft", + "msg": "Unsupported NFT Type" + }, + { + "code": 6005, + "name": "InvalidNft", + "msg": "Invalid NFT for Market" + } + ], + "types": [ + { + "name": "BidData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "InitMarketParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "fee_recipients", + "type": { + "array": [ + "pubkey", + 3 + ] + } + }, + { + "name": "fee_bps", + "type": { + "array": [ + "u64", + 3 + ] + } + } + ] + } + }, + { + "name": "ListData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "payment_mint", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "Market", + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "market account version, used to conditionally parse accounts if changes are made to the struct" + ], + "type": "u8" + }, + { + "name": "market_identifier", + "docs": [ + "identifying of the index to which the NFTs belong to (WNS Collection, Metaplex collection, separate hash)" + ], + "type": "pubkey" + }, + { + "name": "initializer", + "docs": [ + "initializer of the market - can edit and close the market, admin key" + ], + "type": "pubkey" + }, + { + "name": "state", + "docs": [ + "state representing the market - open/closed" + ], + "type": "u8" + }, + { + "name": "fee_recipients", + "docs": [ + "address that should receive market fees" + ], + "type": { + "array": [ + "pubkey", + 3 + ] + } + }, + { + "name": "fee_bps", + "docs": [ + "fee basis points" + ], + "type": { + "array": [ + "u64", + 3 + ] + } + }, + { + "name": "reserve", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "MarketEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "edit_type", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "market_identifier", + "type": "string" + }, + { + "name": "initializer", + "type": "string" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "fee_recipient", + "type": { + "array": [ + "string", + 3 + ] + } + }, + { + "name": "fee_bps", + "type": { + "array": [ + "u64", + 3 + ] + } + } + ] + } + }, + { + "name": "MintVerification", + "type": { + "kind": "struct", + "fields": [ + { + "name": "verified", + "type": "u8" + } + ] + } + }, + { + "name": "Order", + "docs": [ + "order account - each listing has one order account" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "order account version" + ], + "type": "u8" + }, + { + "name": "nonce", + "docs": [ + "nonce for uniqueness" + ], + "type": "pubkey" + }, + { + "name": "market", + "docs": [ + "market to which the order belongs to, must be init'd" + ], + "type": "pubkey" + }, + { + "name": "owner", + "docs": [ + "owner of the order account" + ], + "type": "pubkey" + }, + { + "name": "side", + "docs": [ + "type of order - buy/sell" + ], + "type": "u8" + }, + { + "name": "size", + "docs": [ + "number of bids order is making", + "always for 1 for sell" + ], + "type": "u64" + }, + { + "name": "price", + "docs": [ + "bid amount in lamports" + ], + "type": "u64" + }, + { + "name": "state", + "docs": [ + "order state - ready/partial/closed" + ], + "type": "u8" + }, + { + "name": "init_time", + "docs": [ + "order account creation time" + ], + "type": "i64" + }, + { + "name": "last_edit_time", + "docs": [ + "last time the order was edited" + ], + "type": "i64" + }, + { + "name": "nft_mint", + "docs": [ + "nft mint in case order is a sell order" + ], + "type": "pubkey" + }, + { + "name": "payment_mint", + "docs": [ + "mint for the payment, default pubkey if SOL" + ], + "type": "pubkey" + }, + { + "name": "fees_on", + "docs": [ + "fees on for this order" + ], + "type": "bool" + }, + { + "name": "reserve_0", + "docs": [ + "reserved space for future changes split up due to serialization constraints" + ], + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "reserve_1", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "reserve_2", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "reserve_3", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve_4", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve_5", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 3 + ] + } + } + ] + } + }, + { + "name": "OrderEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "edit_type", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "nonce", + "type": "string" + }, + { + "name": "market", + "type": "string" + }, + { + "name": "owner", + "type": "string" + }, + { + "name": "side", + "type": "u8" + }, + { + "name": "size", + "type": "u64" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "init_time", + "type": "i64" + }, + { + "name": "last_edit_time", + "type": "i64" + }, + { + "name": "nft_mint", + "type": "string" + }, + { + "name": "payment_mint", + "type": "string" + }, + { + "name": "market_identifier", + "type": "string" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/clients/rarible-svm-ts/src/program/marketplace.ts b/clients/rarible-svm-ts/src/program/marketplace.ts new file mode 100644 index 00000000..79eb6bd7 --- /dev/null +++ b/clients/rarible-svm-ts/src/program/marketplace.ts @@ -0,0 +1,1612 @@ +/** + * Program IDL in camelCase format in order to be used in JS/TS. + * + * Note that this is only a type helper and is not the actual IDL. The original + * IDL can be found at `target/idl/marketplace.json`. + */ +export type Marketplace = { + "address": "4NSuQ6U7QdVqCW5gJY4a2U6X7s2qNvrUQUwTMsf6HARG", + "metadata": { + "name": "marketplace", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Base marketplace contracts on SVM for rarible" + }, + "instructions": [ + { + "name": "bid", + "docs": [ + "initializer a new bid" + ], + "discriminator": [ + 199, + 56, + 85, + 38, + 146, + 243, + 37, + 158 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "initializerPaymentTa", + "writable": true + }, + { + "name": "orderPaymentTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "paymentTokenProgram" + }, + { + "kind": "account", + "path": "paymentMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "paymentMint", + "writable": true + }, + { + "name": "paymentTokenProgram" + }, + { + "name": "nftMint" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "bidData" + } + } + } + ] + }, + { + "name": "cancelBid", + "docs": [ + "cancel a buy order" + ], + "discriminator": [ + 40, + 243, + 190, + 217, + 208, + 253, + 86, + 206 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "order" + }, + { + "kind": "account", + "path": "order.market", + "account": "order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "initializerPaymentTa", + "writable": true + }, + { + "name": "orderPaymentTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "paymentTokenProgram" + }, + { + "kind": "account", + "path": "paymentMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "paymentMint", + "writable": true + }, + { + "name": "paymentTokenProgram" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "cancelListing", + "docs": [ + "cancel a sell order" + ], + "discriminator": [ + 41, + 183, + 50, + 232, + 230, + 233, + 157, + 70 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "order" + }, + { + "kind": "account", + "path": "order.market", + "account": "order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "nftMint", + "writable": true + }, + { + "name": "initializerNftTa", + "writable": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "sysvarInstructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nftTokenProgram" + }, + { + "name": "nftProgram" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "fillOrder", + "docs": [ + "fill a listing" + ], + "discriminator": [ + 232, + 122, + 115, + 25, + 199, + 143, + 136, + 162 + ], + "accounts": [ + { + "name": "taker", + "writable": true, + "signer": true + }, + { + "name": "maker", + "writable": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "order" + }, + { + "kind": "account", + "path": "order.market", + "account": "order" + }, + { + "kind": "account", + "path": "order.owner", + "account": "order" + } + ] + } + }, + { + "name": "nftMint", + "writable": true + }, + { + "name": "sellerNftTa", + "writable": true + }, + { + "name": "buyerNftTa", + "writable": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "nftTokenProgram" + }, + { + "name": "nftProgram" + }, + { + "name": "sellerPaymentTa", + "writable": true + }, + { + "name": "buyerPaymentTa", + "writable": true + }, + { + "name": "paymentMint", + "writable": true + }, + { + "name": "paymentTokenProgram" + }, + { + "name": "sysvarInstructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "initMarket", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 33, + 253, + 15, + 116, + 89, + 25, + 127, + 236 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "marketIdentifier" + }, + { + "name": "market", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "marketIdentifier" + } + ] + } + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "initMarketParams" + } + } + } + ] + }, + { + "name": "list", + "docs": [ + "initializer a new listing" + ], + "discriminator": [ + 54, + 174, + 193, + 67, + 17, + 41, + 132, + 38 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "nftMint" + }, + { + "name": "initializerNftTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "nftTokenProgram" + }, + { + "kind": "account", + "path": "nftMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "sysvarInstructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "nftTokenProgram" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nftProgram" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "listData" + } + } + } + ] + }, + { + "name": "verifyMint", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 57, + 93, + 52, + 66, + 75, + 249, + 244, + 143 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market" + }, + { + "name": "nftMint" + }, + { + "name": "verification", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 118, + 101, + 114, + 105, + 102, + 105, + 99, + 97, + 116, + 105, + 111, + 110 + ] + }, + { + "kind": "account", + "path": "nftMint" + }, + { + "kind": "account", + "path": "market" + } + ] + } + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "market", + "discriminator": [ + 219, + 190, + 213, + 55, + 0, + 227, + 198, + 154 + ] + }, + { + "name": "mintVerification", + "discriminator": [ + 152, + 183, + 224, + 35, + 143, + 133, + 78, + 176 + ] + }, + { + "name": "order", + "discriminator": [ + 134, + 173, + 223, + 185, + 77, + 86, + 28, + 51 + ] + } + ], + "events": [ + { + "name": "marketEditEvent", + "discriminator": [ + 160, + 230, + 206, + 202, + 154, + 28, + 249, + 246 + ] + }, + { + "name": "orderEditEvent", + "discriminator": [ + 155, + 223, + 223, + 45, + 200, + 107, + 177, + 149 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "wrongAccount", + "msg": "Account passed in incorrectly" + }, + { + "code": 6001, + "name": "insufficientOrderSize", + "msg": "Order too small" + }, + { + "code": 6002, + "name": "amountOverflow", + "msg": "Amount overflow" + }, + { + "code": 6003, + "name": "amountUnderflow", + "msg": "Amount underflow" + }, + { + "code": 6004, + "name": "unsupportedNft", + "msg": "Unsupported NFT Type" + }, + { + "code": 6005, + "name": "invalidNft", + "msg": "Invalid NFT for Market" + } + ], + "types": [ + { + "name": "bidData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "initMarketParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeRecipients", + "type": { + "array": [ + "pubkey", + 3 + ] + } + }, + { + "name": "feeBps", + "type": { + "array": [ + "u64", + 3 + ] + } + } + ] + } + }, + { + "name": "listData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "paymentMint", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "market", + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "market account version, used to conditionally parse accounts if changes are made to the struct" + ], + "type": "u8" + }, + { + "name": "marketIdentifier", + "docs": [ + "identifying of the index to which the NFTs belong to (WNS Collection, Metaplex collection, separate hash)" + ], + "type": "pubkey" + }, + { + "name": "initializer", + "docs": [ + "initializer of the market - can edit and close the market, admin key" + ], + "type": "pubkey" + }, + { + "name": "state", + "docs": [ + "state representing the market - open/closed" + ], + "type": "u8" + }, + { + "name": "feeRecipients", + "docs": [ + "address that should receive market fees" + ], + "type": { + "array": [ + "pubkey", + 3 + ] + } + }, + { + "name": "feeBps", + "docs": [ + "fee basis points" + ], + "type": { + "array": [ + "u64", + 3 + ] + } + }, + { + "name": "reserve", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "marketEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editType", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "marketIdentifier", + "type": "string" + }, + { + "name": "initializer", + "type": "string" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "feeRecipient", + "type": { + "array": [ + "string", + 3 + ] + } + }, + { + "name": "feeBps", + "type": { + "array": [ + "u64", + 3 + ] + } + } + ] + } + }, + { + "name": "mintVerification", + "type": { + "kind": "struct", + "fields": [ + { + "name": "verified", + "type": "u8" + } + ] + } + }, + { + "name": "order", + "docs": [ + "order account - each listing has one order account" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "order account version" + ], + "type": "u8" + }, + { + "name": "nonce", + "docs": [ + "nonce for uniqueness" + ], + "type": "pubkey" + }, + { + "name": "market", + "docs": [ + "market to which the order belongs to, must be init'd" + ], + "type": "pubkey" + }, + { + "name": "owner", + "docs": [ + "owner of the order account" + ], + "type": "pubkey" + }, + { + "name": "side", + "docs": [ + "type of order - buy/sell" + ], + "type": "u8" + }, + { + "name": "size", + "docs": [ + "number of bids order is making", + "always for 1 for sell" + ], + "type": "u64" + }, + { + "name": "price", + "docs": [ + "bid amount in lamports" + ], + "type": "u64" + }, + { + "name": "state", + "docs": [ + "order state - ready/partial/closed" + ], + "type": "u8" + }, + { + "name": "initTime", + "docs": [ + "order account creation time" + ], + "type": "i64" + }, + { + "name": "lastEditTime", + "docs": [ + "last time the order was edited" + ], + "type": "i64" + }, + { + "name": "nftMint", + "docs": [ + "nft mint in case order is a sell order" + ], + "type": "pubkey" + }, + { + "name": "paymentMint", + "docs": [ + "mint for the payment, default pubkey if SOL" + ], + "type": "pubkey" + }, + { + "name": "feesOn", + "docs": [ + "fees on for this order" + ], + "type": "bool" + }, + { + "name": "reserve0", + "docs": [ + "reserved space for future changes split up due to serialization constraints" + ], + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "reserve1", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "reserve2", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "reserve3", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve4", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve5", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 3 + ] + } + } + ] + } + }, + { + "name": "orderEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editType", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "nonce", + "type": "string" + }, + { + "name": "market", + "type": "string" + }, + { + "name": "owner", + "type": "string" + }, + { + "name": "side", + "type": "u8" + }, + { + "name": "size", + "type": "u64" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "initTime", + "type": "i64" + }, + { + "name": "lastEditTime", + "type": "i64" + }, + { + "name": "nftMint", + "type": "string" + }, + { + "name": "paymentMint", + "type": "string" + }, + { + "name": "marketIdentifier", + "type": "string" + } + ] + } + } + ] +}; diff --git a/clients/rarible-svm-ts/src/utils/constants.ts b/clients/rarible-svm-ts/src/utils/constants.ts new file mode 100644 index 00000000..1a2ecf6e --- /dev/null +++ b/clients/rarible-svm-ts/src/utils/constants.ts @@ -0,0 +1,14 @@ +import {PublicKey} from '@solana/web3.js'; + +export const marketplaceProgramId = new PublicKey('4NSuQ6U7QdVqCW5gJY4a2U6X7s2qNvrUQUwTMsf6HARG'); + +// WNS PIDS +export const wnsDistributionProgramId = new PublicKey('diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'); +export const wnsProgramId = new PublicKey('wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'); + +// METAPLEX PIDS +export const metaplexMetadataProgramId = new PublicKey('wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'); + +export const metadataSeed = 'metadata'; + +export const listInstructionSize = 300_000; diff --git a/clients/rarible-svm-ts/src/utils/core.ts b/clients/rarible-svm-ts/src/utils/core.ts new file mode 100644 index 00000000..ac4f636f --- /dev/null +++ b/clients/rarible-svm-ts/src/utils/core.ts @@ -0,0 +1,289 @@ +import { + AnchorProvider, type Idl, type Instruction, Program, type Provider, + utils, +} from '@coral-xyz/anchor'; +import { + type AccountMeta, ComputeBudgetProgram, Connection, PublicKey, type TransactionInstruction, +} from '@solana/web3.js'; +import { + marketplaceProgramId, + metadataSeed, + metaplexMetadataProgramId, + wnsDistributionProgramId, + wnsProgramId, +} from './constants'; +import { + ASSOCIATED_TOKEN_PROGRAM_ID, createAssociatedTokenAccount, createAssociatedTokenAccountInstruction, getExtraAccountMetaAddress, getExtraAccountMetas, getMint, getTokenMetadata, TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, +} from '@solana/spl-token'; +import {type Marketplace, marketplaceIdl} from '../program'; + +export const getProvider = () => { + const connection = new Connection(process.env.RPC_URL ?? 'https://api.devnet.solana.com'); + const anchorProvider = AnchorProvider.local(); + const provider = new AnchorProvider(connection, anchorProvider.wallet, {...AnchorProvider.defaultOptions(), commitment: 'processed'}); + return provider; +}; + +export type ComputeBudgetParams = { + priorityFee?: number; + computeUnits?: number; +}; + +export const getComputeBudgetInstructions = (computeParams: ComputeBudgetParams) => { + const ixs: TransactionInstruction[] = []; + if (computeParams.computeUnits !== undefined) { + const computeIx = ComputeBudgetProgram.setComputeUnitLimit({units: computeParams.computeUnits}); + ixs.push(computeIx); + } + + if (computeParams.priorityFee !== undefined) { + const priceIx = ComputeBudgetProgram.setComputeUnitPrice({microLamports: computeParams.priorityFee}); + ixs.push(priceIx); + } + + return ixs; +}; + +export const getTokenProgramFromMint = async (provider: Provider, mint: string) => { + const mintPubkey = new PublicKey(mint); + try { + await getMint(provider.connection, mintPubkey, undefined, TOKEN_PROGRAM_ID); + return TOKEN_PROGRAM_ID; + } catch (e) { + try { + await getMint(provider.connection, mintPubkey, undefined, TOKEN_2022_PROGRAM_ID); + return TOKEN_2022_PROGRAM_ID; + } catch (e) { + return undefined; + } + } +}; + +export const getNftProgramFromMint = async (provider: Provider, nftMint: string) => { + const mintProgram = await getTokenProgramFromMint(provider, nftMint); + if (!mintProgram) { + return undefined; + } + + if (mintProgram === TOKEN_PROGRAM_ID) { + const isMetaplex = await isMetaplexMetadataAccount(provider, nftMint); + if (isMetaplex) { + return metaplexMetadataProgramId; + } + } + + if (mintProgram === TOKEN_2022_PROGRAM_ID) { + const isWns = await isWnsNft(provider, nftMint); + if (isWns) { + return wnsProgramId; + } + } + + return undefined; +}; + +export const isMetaplexMetadataAccount = async (provider: Provider, mint: string) => { + const mintPubkey = new PublicKey(mint); + const metadataAccount = getProgramAddress( + [Buffer.from(metadataSeed), metaplexMetadataProgramId.toBytes(), mintPubkey.toBytes()], + metaplexMetadataProgramId, + ); + + try { + await provider.connection.getAccountInfo(metadataAccount); + return true; + } catch (e) { + return false; + } +}; + +export const isWnsNft = async (provider: Provider, mint: string) => { + const mintPubkey = new PublicKey(mint); + const metadata = await getTokenMetadata(provider.connection, mintPubkey); + + if (metadata === null) { + return false; + } + + const extraMeta = metadata.additionalMetadata; + const royalties = extraMeta.filter(m => m[0] === 'royalty_basis_points'); + if (royalties.length > 0) { + return true; + } + + return false; +}; + +export type WnsAccountParams = { + groupMint: string; + paymentMint: string; +}; + +export const getFeeAccountsFromMarket = (paymentMint: PublicKey, paymentTokenProgram: PublicKey, marketAccount: any) => { + const feeRecipients = marketAccount.feeRecipients; + const feeTas = feeRecipients.map((f) => getAtaAddress(paymentMint.toString(), f.toString(), paymentTokenProgram.toString())); + + let remainingAccounts: AccountMeta[] = []; + for(let i = 0; i < feeRecipients.length; i++) { + remainingAccounts.push( + ...[ + { + pubkey: feeRecipients[i], + isWritable: true, + isSigner: false, + }, + { + pubkey: feeTas[i], + isWritable: true, + isSigner: false, + }, + ]); + } + + + return remainingAccounts; +} + +export const getRemainingAccountsForMint = async (provider: Provider, mint: string, wnsParams: WnsAccountParams | undefined) => { + const remainingAccounts: AccountMeta[] = []; + + const nftProgram = await getNftProgramFromMint(provider, mint); + + if (nftProgram === wnsProgramId) { + if (!wnsParams) { + return []; + } + + const extraMetaPda = getExtraMetasAccountPda(mint); + const approveAccount = getApproveAccountPda(mint); + const distributionAccount = getDistributionAccountPda(wnsParams.groupMint, wnsParams.paymentMint); + // const managerAccount = getManagerAccountPda(); + const paymentTokenProgram = await getTokenProgramFromMint(provider, wnsParams.paymentMint); + const groupMemberAccount = getGroupMemberAccount(mint); + const distributionTokenAccount = paymentTokenProgram && getAtaAddress(wnsParams.paymentMint, distributionAccount.toString(), paymentTokenProgram.toString()); + + remainingAccounts.push(...[ + { + pubkey: approveAccount, + isWritable: true, + isSigner: false, + }, + { + pubkey: distributionAccount, + isWritable: true, + isSigner: false, + }, + { + pubkey: distributionTokenAccount ?? distributionAccount, + isWritable: true, + isSigner: false, + }, + { + pubkey: wnsDistributionProgramId, + isWritable: false, + isSigner: false, + }, + { + pubkey: groupMemberAccount, + isWritable: false, + isSigner: false, + }, + { + pubkey: new PublicKey(wnsParams.paymentMint), + isWritable: false, + isSigner: false, + }, + { + pubkey: extraMetaPda, + isWritable: false, + isSigner: false, + }, + { + pubkey: approveAccount, + isWritable: false, + isSigner: false, + }, + { + pubkey: wnsProgramId, + isWritable: false, + isSigner: false, + }, + ]); + return remainingAccounts; + } + + // Need todo metaplex pNFT accounts + return []; +}; + +export const getMarketplaceProgram = (provider: Provider) => new Program( + marketplaceIdl as Idl, + provider, +) as unknown as Program; + +export const getProgramAddress = (seeds: Uint8Array[], programId: PublicKey) => { + const [key] = PublicKey.findProgramAddressSync(seeds, programId); + return key; +}; + +export const getAtaAddress = (mint: string, owner: string, tokenProgram: string): PublicKey => getProgramAddress( + [new PublicKey(owner).toBuffer(), new PublicKey(tokenProgram).toBuffer(), new PublicKey(mint).toBuffer()], + ASSOCIATED_TOKEN_PROGRAM_ID, +); + +// MARKET ACCOUNTS +export const getMarketPda = (marketIdentifier: string) => { + const [marketAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('market'), new PublicKey(marketIdentifier).toBuffer()], marketplaceProgramId); + + return marketAccount; +}; + +export const getVerificationPda = (marketAddress: string, nftMint: string) => { + const [marketAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('verification'), new PublicKey(nftMint).toBuffer(), new PublicKey(marketAddress).toBuffer()], marketplaceProgramId); + + return marketAccount; +}; + +export const getOrderAccount = (nonce: string, marketAddress: string, user: string) => { + const [marketAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('order'), new PublicKey(nonce).toBuffer(), new PublicKey(marketAddress).toBuffer(), new PublicKey(user).toBuffer()], marketplaceProgramId); + + return marketAccount; +}; + +export const getEventAuthority = () => { + const [eventAuthority] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('__event_authority')], marketplaceProgramId); + + return eventAuthority; +}; + +// WNS ACCOUNTS +export const getManagerAccountPda = () => { + const [managerAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('manager')], wnsProgramId); + + return managerAccount; +}; + +export const getExtraMetasAccountPda = (mint: string) => { + const [extraMetasAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('extra-account-metas'), new PublicKey(mint).toBuffer()], wnsProgramId); + + return extraMetasAccount; +}; + +export const getApproveAccountPda = (mint: string) => { + const [approveAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('approve-account'), new PublicKey(mint).toBuffer()], wnsProgramId); + + return approveAccount; +}; + +export const getDistributionAccountPda = (groupMint: string, paymentMint: string) => { + const [distributionAccount] = PublicKey.findProgramAddressSync([new PublicKey(groupMint).toBuffer(), new PublicKey(paymentMint).toBuffer()], wnsDistributionProgramId); + + return distributionAccount; +}; + +export const getGroupMemberAccount = (nftMint: string) => { + const [groupMemberAccount] = PublicKey.findProgramAddressSync([utils.bytes.utf8.encode('member'), new PublicKey(nftMint).toBuffer()], wnsProgramId); + + return groupMemberAccount; +}; + diff --git a/clients/rarible-svm-ts/src/utils/data.ts b/clients/rarible-svm-ts/src/utils/data.ts new file mode 100644 index 00000000..71b04146 --- /dev/null +++ b/clients/rarible-svm-ts/src/utils/data.ts @@ -0,0 +1,152 @@ +import {type Provider} from '@coral-xyz/anchor'; +import {getMarketplaceProgram, getVerificationPda} from './core'; +import {type PublicKey} from '@solana/web3.js'; + +// Fetch market +export const fetchMarketByAddress = async (provider: Provider, marketAddress: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + + try { + const marketAccount = await marketplaceProgram.account.market.fetch(marketAddress); + + return marketAccount; + } catch (e) { + return undefined; + } +}; + +// Fetch markets by initializer +export const fetchMarketByInitializer = async (provider: Provider, initializerAddress: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + + try { + const marketAccounts = await marketplaceProgram.account.market.all( + [ + { + memcmp: { + offset: 8 + 1 + 32, + bytes: initializerAddress, + }, + }, + ], + ); + + return marketAccounts; + } catch (e) { + return undefined; + } +}; + +// Fetch order +export const fetchOrderByAddress = async (provider: Provider, orderAddress: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + + try { + const orderAccount = await marketplaceProgram.account.order.fetch(orderAddress); + + return orderAccount; + } catch (e) { + return undefined; + } +}; + +// Fetch orders for market +export const fetchOrdersByMarket = async (provider: Provider, marketAddress: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + + try { + const orderAccounts = await marketplaceProgram.account.order.all( + [ + { + memcmp: { + offset: 8 + 1 + 32, + bytes: marketAddress, + }, + }, + ], + ); + + return orderAccounts; + } catch (e) { + return undefined; + } +}; + +// Fetch orders for mint +export const fetchOrdersByMint = async (provider: Provider, nftMint: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + + try { + const orderAccounts = await marketplaceProgram.account.order.all( + [ + { + memcmp: { + offset: 8 + 1 + 32 + 32 + 32 + 1 + 8 + 8 + 1 + 8 + 8, + bytes: nftMint, + }, + }, + ], + ); + + return orderAccounts; + } catch (e) { + return undefined; + } +}; + +// Fetch orders for user +export const fetchOrdersByUser = async (provider: Provider, user: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + + try { + const orderAccounts = await marketplaceProgram.account.order.all( + [ + { + memcmp: { + offset: 8 + 1 + 32 + 32, + bytes: user, + }, + }, + ], + ); + + return orderAccounts; + } catch (e) { + return undefined; + } +}; + +// Verfiy mint belongs in market +export const verifyMintInMarket = async (provider: Provider, nftMint: string, marketAddress: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + const verificationAddress = getVerificationPda(marketAddress, nftMint); + + try { + const verificationAccount = await marketplaceProgram.account.mintVerification.fetch(verificationAddress); + + return verificationAccount !== undefined; + } catch (e) { + return false; + } +}; + +export const test = async (provider: Provider, nftMint: string, marketAddress: string) => { + const marketplaceProgram = getMarketplaceProgram(provider); + return (typeof marketplaceProgram.account.order); +}; + +export type Order = { + version: number; + nonce: PublicKey; + market: PublicKey; + owner: PublicKey; + side: number; + size: number; + price: number; + state: number; + initTime: number; + lastEditTime: number; + nftMint: PublicKey; + paymentMint: PublicKey; + feesOn: boolean; +}; diff --git a/clients/rarible-svm-ts/src/utils/index.ts b/clients/rarible-svm-ts/src/utils/index.ts new file mode 100644 index 00000000..f1cad86b --- /dev/null +++ b/clients/rarible-svm-ts/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './constants'; +export * from './core'; +export * from './data'; diff --git a/clients/rarible-svm-ts/tsconfig.json b/clients/rarible-svm-ts/tsconfig.json new file mode 100644 index 00000000..d6355a57 --- /dev/null +++ b/clients/rarible-svm-ts/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "lib": ["es5", "es6", "esnext.asynciterable", "es2018", "esnext.bigint", "DOM"], + "types": ["node"], + "target": "ES2015", + "module": "commonjs", + "moduleResolution": "node", + "outDir": "dist", + "declaration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "sourceMap": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "strict": false, + "noImplicitOverride": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "allowSyntheticDefaultImports": true, + "strictNullChecks": true + } +} diff --git a/clients/rarible-svm-ts/yarn.lock b/clients/rarible-svm-ts/yarn.lock new file mode 100644 index 00000000..a050296d --- /dev/null +++ b/clients/rarible-svm-ts/yarn.lock @@ -0,0 +1,4049 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@babel/runtime@^7.10.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.23.4": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" + integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== + dependencies: + regenerator-runtime "^0.14.0" + +"@coral-xyz/anchor-errors@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== + +"@coral-xyz/anchor@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== + dependencies: + "@coral-xyz/anchor-errors" "^0.30.1" + "@coral-xyz/borsh" "^0.30.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/borsh@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/wallet@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@irys/arweave@^0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@irys/arweave/-/arweave-0.0.2.tgz#c0e73eb8c15e323342d33ea92701d4036fd22ae3" + integrity sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg== + dependencies: + asn1.js "^5.4.1" + async-retry "^1.3.3" + axios "^1.4.0" + base64-js "^1.5.1" + bignumber.js "^9.1.1" + +"@irys/query@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@irys/query/-/query-0.0.1.tgz#c0aa3eff9eef585d2b3d8d9e358b1c5942015414" + integrity sha512-7TCyR+Qn+F54IQQx5PlERgqNwgIQik8hY55iZl/silTHhCo1MI2pvx5BozqPUVCc8/KqRsc2nZd8Bc29XGUjRQ== + dependencies: + async-retry "^1.3.3" + axios "^1.4.0" + +"@irys/sdk@^0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@irys/sdk/-/sdk-0.0.2.tgz#36e86d44143ce6f7576fd3fe53800fe842697de8" + integrity sha512-un/e/CmTpgT042gDwCN3AtISrR9OYGMY6V+442pFmSWKrwrsDoIXZ8VlLiYKnrtTm+yquGhjfYy0LDqGWq41pA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/providers" "^5.7.2" + "@ethersproject/wallet" "^5.7.0" + "@irys/query" "^0.0.1" + "@near-js/crypto" "^0.0.3" + "@near-js/keystores-browser" "^0.0.3" + "@near-js/providers" "^0.0.4" + "@near-js/transactions" "^0.1.0" + "@solana/web3.js" "^1.36.0" + "@supercharge/promise-pool" "^3.0.0" + algosdk "^1.13.1" + aptos "=1.8.5" + arbundles "^0.10.0" + async-retry "^1.3.3" + axios "^1.4.0" + base64url "^3.0.1" + bignumber.js "^9.0.1" + bs58 "5.0.0" + commander "^8.2.0" + csv "5.5.3" + inquirer "^8.2.0" + js-sha256 "^0.9.0" + mime-types "^2.1.34" + near-seed-phrase "^0.2.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@metaplex-foundation/beet-solana@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.4.0.tgz#52891e78674aaa54e0031f1bca5bfbc40de12e8d" + integrity sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ== + dependencies: + "@metaplex-foundation/beet" ">=0.1.0" + "@solana/web3.js" "^1.56.2" + bs58 "^5.0.0" + debug "^4.3.4" + +"@metaplex-foundation/beet-solana@^0.3.0", "@metaplex-foundation/beet-solana@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" + integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g== + dependencies: + "@metaplex-foundation/beet" ">=0.1.0" + "@solana/web3.js" "^1.56.2" + bs58 "^5.0.0" + debug "^4.3.4" + +"@metaplex-foundation/beet-solana@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.4.1.tgz#255747aa7feee1c20202146a752c057feca1948f" + integrity sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ== + dependencies: + "@metaplex-foundation/beet" ">=0.1.0" + "@solana/web3.js" "^1.56.2" + bs58 "^5.0.0" + debug "^4.3.4" + +"@metaplex-foundation/beet@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.1.tgz#0975314211643f87b5f6f3e584fa31abcf4c612c" + integrity sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA== + dependencies: + ansicolors "^0.3.2" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.2.tgz#fa4726e4cfd4fb6fed6cddc9b5213c1c2a2d0b77" + integrity sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg== + dependencies: + ansicolors "^0.3.2" + assert "^2.1.0" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/beet@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.4.0.tgz#eb2a0a6eb084bb25d67dd9bed2f7387ee7e63a55" + integrity sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA== + dependencies: + ansicolors "^0.3.2" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/beet@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.6.1.tgz#6331bdde0648bf2cae6f9e482f8e3552db05d69f" + integrity sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw== + dependencies: + ansicolors "^0.3.2" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/cusper@^0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/cusper/-/cusper-0.0.2.tgz#dc2032a452d6c269e25f016aa4dd63600e2af975" + integrity sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA== + +"@metaplex-foundation/js@^0.20.1": + version "0.20.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/js/-/js-0.20.1.tgz#654974dfdb163435f9583478256e5917e2187a7b" + integrity sha512-aqiLoEiToXdfI5pS+17/GN/dIO2D31gLoVQvEKDQi9XcnOPVhfJerXDmwgKbhp79OGoYxtlvVw+b2suacoUzGQ== + dependencies: + "@irys/sdk" "^0.0.2" + "@metaplex-foundation/beet" "0.7.1" + "@metaplex-foundation/mpl-auction-house" "^2.3.0" + "@metaplex-foundation/mpl-bubblegum" "^0.6.2" + "@metaplex-foundation/mpl-candy-guard" "^0.3.0" + "@metaplex-foundation/mpl-candy-machine" "^5.0.0" + "@metaplex-foundation/mpl-candy-machine-core" "^0.1.2" + "@metaplex-foundation/mpl-token-metadata" "^2.11.0" + "@noble/ed25519" "^1.7.1" + "@noble/hashes" "^1.1.3" + "@solana/spl-account-compression" "^0.1.8" + "@solana/spl-token" "^0.3.5" + "@solana/web3.js" "^1.63.1" + bignumber.js "^9.0.2" + bn.js "^5.2.1" + bs58 "^5.0.0" + buffer "^6.0.3" + debug "^4.3.4" + eventemitter3 "^4.0.7" + lodash.clonedeep "^4.5.0" + lodash.isequal "^4.5.0" + merkletreejs "^0.3.11" + mime "^3.0.0" + node-fetch "^2.6.7" + +"@metaplex-foundation/mpl-auction-house@^2.3.0": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-auction-house/-/mpl-auction-house-2.5.1.tgz#ea0e21e594b0db5e73f88688eb2e7c9b748b378b" + integrity sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw== + dependencies: + "@metaplex-foundation/beet" "^0.6.1" + "@metaplex-foundation/beet-solana" "^0.3.1" + "@metaplex-foundation/cusper" "^0.0.2" + "@solana/spl-token" "^0.3.5" + "@solana/web3.js" "^1.56.2" + bn.js "^5.2.0" + +"@metaplex-foundation/mpl-bubblegum@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-bubblegum/-/mpl-bubblegum-0.6.2.tgz#e1b098ccef10899b0d759a03e3d4b1ae7bdc9f0c" + integrity sha512-4tF7/FFSNtpozuIGD7gMKcqK2D49eVXZ144xiowC5H1iBeu009/oj2m8Tj6n4DpYFKWJ2JQhhhk0a2q7x0Begw== + dependencies: + "@metaplex-foundation/beet" "0.7.1" + "@metaplex-foundation/beet-solana" "0.4.0" + "@metaplex-foundation/cusper" "^0.0.2" + "@metaplex-foundation/mpl-token-metadata" "^2.5.2" + "@solana/spl-account-compression" "^0.1.4" + "@solana/spl-token" "^0.1.8" + "@solana/web3.js" "^1.50.1" + bn.js "^5.2.0" + js-sha3 "^0.8.0" + +"@metaplex-foundation/mpl-candy-guard@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-candy-guard/-/mpl-candy-guard-0.3.2.tgz#426e89793676b42e9bbb5e523303fba36ccd5281" + integrity sha512-QWXzPDz+6OR3957LtfW6/rcGvFWS/0AeHJa/BUO2VEVQxN769dupsKGtrsS8o5RzXCeap3wrCtDSNxN3dnWu4Q== + dependencies: + "@metaplex-foundation/beet" "^0.4.0" + "@metaplex-foundation/beet-solana" "^0.3.0" + "@metaplex-foundation/cusper" "^0.0.2" + "@solana/web3.js" "^1.66.2" + bn.js "^5.2.0" + +"@metaplex-foundation/mpl-candy-machine-core@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-candy-machine-core/-/mpl-candy-machine-core-0.1.2.tgz#07e19558d0ef120fac1d8612ae4de90d52cd4d1f" + integrity sha512-jjDkRvMR+iykt7guQ7qVnOHTZedql0lq3xqWDMaenAUCH3Xrf2zKATThhJppIVNX1/YtgBOO3lGqhaFbaI4pCw== + dependencies: + "@metaplex-foundation/beet" "^0.4.0" + "@metaplex-foundation/beet-solana" "^0.3.0" + "@metaplex-foundation/cusper" "^0.0.2" + "@solana/web3.js" "^1.56.2" + bn.js "^5.2.0" + +"@metaplex-foundation/mpl-candy-machine@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-candy-machine/-/mpl-candy-machine-5.1.0.tgz#9469914b312ac36b7cf608123508f3f3f5080010" + integrity sha512-pjHpUpWVOCDxK3l6dXxfmJKNQmbjBqnm5ElOl1mJAygnzO8NIPQvrP89y6xSNyo8qZsJyt4ZMYUyD0TdbtKZXQ== + dependencies: + "@metaplex-foundation/beet" "^0.7.1" + "@metaplex-foundation/beet-solana" "^0.4.0" + "@metaplex-foundation/cusper" "^0.0.2" + "@solana/spl-token" "^0.3.6" + "@solana/web3.js" "^1.66.2" + +"@metaplex-foundation/mpl-token-metadata@^2.11.0", "@metaplex-foundation/mpl-token-metadata@^2.5.2": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz#ea498190ad4ed1d4c0b8218a72d03bd17a883d11" + integrity sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw== + dependencies: + "@metaplex-foundation/beet" "^0.7.1" + "@metaplex-foundation/beet-solana" "^0.4.0" + "@metaplex-foundation/cusper" "^0.0.2" + "@solana/spl-token" "^0.3.6" + "@solana/web3.js" "^1.66.2" + bn.js "^5.2.0" + debug "^4.3.4" + +"@near-js/crypto@0.0.3", "@near-js/crypto@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-0.0.3.tgz#4a33e526ab5fa75b703427067985694a279ff8bd" + integrity sha512-3WC2A1a1cH8Cqrx+0iDjp1ASEEhxN/KHEMENYb0KZH6Hp5bXIY7Akt4quC7JlgJS5ESvEiLa40tS5h0zAhBWGw== + dependencies: + "@near-js/types" "0.0.3" + bn.js "5.2.1" + borsh "^0.7.0" + tweetnacl "^1.0.1" + +"@near-js/crypto@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-0.0.4.tgz#7bb991da25f06096de51466c6331cb185314fad8" + integrity sha512-2mSIVv6mZway1rQvmkktrXAFoUvy7POjrHNH3LekKZCMCs7qMM/23Hz2+APgxZPqoV2kjarSNOEYJjxO7zQ/rQ== + dependencies: + "@near-js/types" "0.0.4" + bn.js "5.2.1" + borsh "^0.7.0" + tweetnacl "^1.0.1" + +"@near-js/keystores-browser@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.0.3.tgz#110b847cd9c358076c2401e9462cc1140e12a908" + integrity sha512-Ve/JQ1SBxdNk3B49lElJ8Y54AoBY+yOStLvdnUIpe2FBOczzwDCkcnPcMDV0NMwVlHpEnOWICWHbRbAkI5Vs+A== + dependencies: + "@near-js/crypto" "0.0.3" + "@near-js/keystores" "0.0.3" + +"@near-js/keystores@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.0.3.tgz#eb1e8e06936da166b5ed8dab3123eaa1bf7a8dab" + integrity sha512-mnwLYUt4Td8u1I4QE1FBx2d9hMt3ofiriE93FfOluJ4XiqRqVFakFYiHg6pExg5iEkej/sXugBUFeQ4QizUnew== + dependencies: + "@near-js/crypto" "0.0.3" + "@near-js/types" "0.0.3" + +"@near-js/keystores@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.0.4.tgz#da03069497bb14741a4d97f7ad4746baf9a09ea7" + integrity sha512-+vKafmDpQGrz5py1liot2hYSjPGXwihveeN+BL11aJlLqZnWBgYJUWCXG+uyGjGXZORuy2hzkKK6Hi+lbKOfVA== + dependencies: + "@near-js/crypto" "0.0.4" + "@near-js/types" "0.0.4" + +"@near-js/providers@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.0.4.tgz#90f84d765ff90370599d027f47c098a3e7e745d0" + integrity sha512-g/2pJTYmsIlTW4mGqeRlqDN9pZeN+1E2/wfoMIf3p++boBVxVlaSebtQgawXAf2lkfhb9RqXz5pHqewXIkTBSw== + dependencies: + "@near-js/transactions" "0.1.0" + "@near-js/types" "0.0.3" + "@near-js/utils" "0.0.3" + bn.js "5.2.1" + borsh "^0.7.0" + http-errors "^1.7.2" + optionalDependencies: + node-fetch "^2.6.1" + +"@near-js/signers@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.0.3.tgz#bfc8386613295fc6b51982cf65c79bdc9307aa5e" + integrity sha512-u1R+DDIua5PY1PDFnpVYqdMgQ7c4dyeZsfqMjE7CtgzdqupgTYCXzJjBubqMlAyAx843PoXmLt6CSSKcMm0WUA== + dependencies: + "@near-js/crypto" "0.0.3" + "@near-js/keystores" "0.0.3" + js-sha256 "^0.9.0" + +"@near-js/signers@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.0.4.tgz#a1904ccc718d6f87b05cd2e168f33bde0cfb269a" + integrity sha512-xCglo3U/WIGsz/izPGFMegS5Q3PxOHYB8a1E7RtVhNm5QdqTlQldLCm/BuMg2G/u1l1ZZ0wdvkqRTG9joauf3Q== + dependencies: + "@near-js/crypto" "0.0.4" + "@near-js/keystores" "0.0.4" + js-sha256 "^0.9.0" + +"@near-js/transactions@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-0.1.0.tgz#a03f529da6bb2eaf9dd0590093f2d0763b8ae72a" + integrity sha512-OrrDFqhX0rtH+6MV3U3iS+zmzcPQI+L4GJi9na4Uf8FgpaVPF0mtSmVrpUrS5CC3LwWCzcYF833xGYbXOV4Kfg== + dependencies: + "@near-js/crypto" "0.0.3" + "@near-js/signers" "0.0.3" + "@near-js/types" "0.0.3" + "@near-js/utils" "0.0.3" + bn.js "5.2.1" + borsh "^0.7.0" + js-sha256 "^0.9.0" + +"@near-js/transactions@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-0.1.1.tgz#3d4c9d8e3cf2543642d660c0c0b126f0a97d5d43" + integrity sha512-Fk83oLLFK7nz4thawpdv9bGyMVQ2i48iUtZEVYhuuuqevl17tSXMlhle9Me1ZbNyguJG/cWPdNybe1UMKpyGxA== + dependencies: + "@near-js/crypto" "0.0.4" + "@near-js/signers" "0.0.4" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.0.4" + bn.js "5.2.1" + borsh "^0.7.0" + js-sha256 "^0.9.0" + +"@near-js/types@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.0.3.tgz#d504222469f4d50a6299c522fb6905ba10905bd6" + integrity sha512-gC3iGUT+r2JjVsE31YharT+voat79ToMUMLCGozHjp/R/UW1M2z4hdpqTUoeWUBGBJuVc810gNTneHGx0jvzwQ== + dependencies: + bn.js "5.2.1" + +"@near-js/types@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.0.4.tgz#d941689df41c850aeeeaeb9d498418acec515404" + integrity sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg== + dependencies: + bn.js "5.2.1" + +"@near-js/utils@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.0.3.tgz#5e631f3dbdb7f0c6985bcbef08644db83b519978" + integrity sha512-J72n/EL0VfLRRb4xNUF4rmVrdzMkcmkwJOhBZSTWz3PAZ8LqNeU9ZConPfMvEr6lwdaD33ZuVv70DN6IIjPr1A== + dependencies: + "@near-js/types" "0.0.3" + bn.js "5.2.1" + depd "^2.0.0" + mustache "^4.0.0" + +"@near-js/utils@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.0.4.tgz#1a387f81974ebbfa4521c92590232be97e3335dd" + integrity sha512-mPUEPJbTCMicGitjEGvQqOe8AS7O4KkRCxqd0xuE/X6gXF1jz1pYMZn4lNUeUz2C84YnVSGLAM0o9zcN6Y4hiA== + dependencies: + "@near-js/types" "0.0.4" + bn.js "5.2.1" + depd "^2.0.0" + mustache "^4.0.0" + +"@noble/curves@1.3.0", "@noble/curves@~1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + +"@noble/curves@^1.2.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/ed25519@^1.6.1", "@noble/ed25519@^1.7.1": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== + +"@noble/hashes@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111" + integrity sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A== + +"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@noble/hashes@1.4.0", "@noble/hashes@^1.1.3", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@~1.1.1": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" + integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@randlabs/communication-bridge@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@randlabs/communication-bridge/-/communication-bridge-1.0.1.tgz#d1ecfc29157afcbb0ca2d73122d67905eecb5bf3" + integrity sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg== + +"@randlabs/myalgo-connect@^1.1.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@randlabs/myalgo-connect/-/myalgo-connect-1.4.2.tgz#ce3ad97b3889ea21da75852187511d3f6be0fa05" + integrity sha512-K9hEyUi7G8tqOp7kWIALJLVbGCByhilcy6123WfcorxWwiE1sbQupPyIU5f3YdQK6wMjBsyTWiLW52ZBMp7sXA== + dependencies: + "@randlabs/communication-bridge" "1.0.1" + +"@rollup/rollup-android-arm-eabi@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz#b98786c1304b4ff8db3a873180b778649b5dff2b" + integrity sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg== + +"@rollup/rollup-android-arm64@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz#8833679af11172b1bf1ab7cb3bad84df4caf0c9e" + integrity sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q== + +"@rollup/rollup-darwin-arm64@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz#ef02d73e0a95d406e0eb4fd61a53d5d17775659b" + integrity sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g== + +"@rollup/rollup-darwin-x64@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz#3ce5b9bcf92b3341a5c1c58a3e6bcce0ea9e7455" + integrity sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg== + +"@rollup/rollup-linux-arm-gnueabihf@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz#3d3d2c018bdd8e037c6bfedd52acfff1c97e4be4" + integrity sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ== + +"@rollup/rollup-linux-arm64-gnu@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz#5fc8cc978ff396eaa136d7bfe05b5b9138064143" + integrity sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w== + +"@rollup/rollup-linux-arm64-musl@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz#f2ae7d7bed416ffa26d6b948ac5772b520700eef" + integrity sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw== + +"@rollup/rollup-linux-riscv64-gnu@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz#303d57a328ee9a50c85385936f31cf62306d30b6" + integrity sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA== + +"@rollup/rollup-linux-x64-gnu@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz#f672f6508f090fc73f08ba40ff76c20b57424778" + integrity sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA== + +"@rollup/rollup-linux-x64-musl@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz#d2f34b1b157f3e7f13925bca3288192a66755a89" + integrity sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw== + +"@rollup/rollup-win32-arm64-msvc@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz#8ffecc980ae4d9899eb2f9c4ae471a8d58d2da6b" + integrity sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA== + +"@rollup/rollup-win32-ia32-msvc@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz#a7505884f415662e088365b9218b2b03a88fc6f2" + integrity sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw== + +"@rollup/rollup-win32-x64-msvc@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz#6abd79db7ff8d01a58865ba20a63cfd23d9e2a10" + integrity sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw== + +"@scure/base@~1.1.0", "@scure/base@~1.1.4": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" + integrity sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ== + +"@scure/bip32@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== + dependencies: + "@noble/curves" "~1.3.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== + dependencies: + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-experimental.8618508": + version "2.0.0-experimental.8618508" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-experimental.8618508.tgz#4f6709dd50e671267f3bea7d09209bc6471b7ad0" + integrity sha512-JCz7mKjVKtfZxkuDtwMAUgA7YvJcA2BwpZaA1NOLcted4OMC4Prwa3DUe3f3181ixPYaRyptbF0Ikq2MbDkYEA== + +"@solana/codecs-data-structures@2.0.0-experimental.8618508": + version "2.0.0-experimental.8618508" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-experimental.8618508.tgz#c16a704ac0f743a2e0bf73ada42d830b3402d848" + integrity sha512-sLpjL9sqzaDdkloBPV61Rht1tgaKq98BCtIKRuyscIrmVPu3wu0Bavk2n/QekmUzaTsj7K1pVSniM0YqCdnEBw== + dependencies: + "@solana/codecs-core" "2.0.0-experimental.8618508" + "@solana/codecs-numbers" "2.0.0-experimental.8618508" + +"@solana/codecs-numbers@2.0.0-experimental.8618508": + version "2.0.0-experimental.8618508" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-experimental.8618508.tgz#d84f9ed0521b22e19125eefc7d51e217fcaeb3e4" + integrity sha512-EXQKfzFr3CkKKNzKSZPOOOzchXsFe90TVONWsSnVkonO9z+nGKALE0/L9uBmIFGgdzhhU9QQVFvxBMclIDJo2Q== + dependencies: + "@solana/codecs-core" "2.0.0-experimental.8618508" + +"@solana/codecs-strings@2.0.0-experimental.8618508": + version "2.0.0-experimental.8618508" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-experimental.8618508.tgz#72457b884d9be80b59b263bcce73892b081e9402" + integrity sha512-b2yhinr1+oe+JDmnnsV0641KQqqDG8AQ16Z/x7GVWO+AWHMpRlHWVXOq8U1yhPMA4VXxl7i+D+C6ql0VGFp0GA== + dependencies: + "@solana/codecs-core" "2.0.0-experimental.8618508" + "@solana/codecs-numbers" "2.0.0-experimental.8618508" + +"@solana/options@2.0.0-experimental.8618508": + version "2.0.0-experimental.8618508" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-experimental.8618508.tgz#95385340e85f9e8a81b2bfba089404a61c8e9520" + integrity sha512-fy/nIRAMC3QHvnKi63KEd86Xr/zFBVxNW4nEpVEU2OT0gCEKwHY4Z55YHf7XujhyuM3PNpiBKg/YYw5QlRU4vg== + dependencies: + "@solana/codecs-core" "2.0.0-experimental.8618508" + "@solana/codecs-numbers" "2.0.0-experimental.8618508" + +"@solana/spl-account-compression@^0.1.4", "@solana/spl-account-compression@^0.1.8": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@solana/spl-account-compression/-/spl-account-compression-0.1.10.tgz#b3135ce89349d6090832b3b1d89095badd57e969" + integrity sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw== + dependencies: + "@metaplex-foundation/beet" "^0.7.1" + "@metaplex-foundation/beet-solana" "^0.4.0" + bn.js "^5.2.1" + borsh "^0.7.0" + js-sha3 "^0.8.0" + typescript-collections "^1.3.3" + +"@solana/spl-token-metadata@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.2.tgz#876e13432bd2960bd3cac16b9b0af63e69e37719" + integrity sha512-hJYnAJNkDrtkE2Q41YZhCpeOGU/0JgRFXbtrtOuGGeKc3pkEUHB9DDoxZAxx+XRno13GozUleyBi0qypz4c3bw== + dependencies: + "@solana/codecs-core" "2.0.0-experimental.8618508" + "@solana/codecs-data-structures" "2.0.0-experimental.8618508" + "@solana/codecs-numbers" "2.0.0-experimental.8618508" + "@solana/codecs-strings" "2.0.0-experimental.8618508" + "@solana/options" "2.0.0-experimental.8618508" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token@^0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.8.tgz#f06e746341ef8d04165e21fc7f555492a2a0faa6" + integrity sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ== + dependencies: + "@babel/runtime" "^7.10.5" + "@solana/web3.js" "^1.21.0" + bn.js "^5.1.0" + buffer "6.0.3" + buffer-layout "^1.2.0" + dotenv "10.0.0" + +"@solana/spl-token@^0.3.11", "@solana/spl-token@^0.3.5", "@solana/spl-token@^0.3.6": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" + integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-metadata" "^0.1.2" + buffer "^6.0.3" + +"@solana/spl-type-length-value@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" + integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== + dependencies: + buffer "^6.0.3" + +"@solana/web3.js@^1.21.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.50.1", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.63.1", "@solana/web3.js@^1.66.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.89.0": + version "1.91.1" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.91.1.tgz#d49d2f982b52070be3b987fd8d892fcbddd064b5" + integrity sha512-cPgjZXm688oM9cULvJ8u2VH6Qp5rvptE1N1VODVxn2mAbpZsWrvWNPjmASkMYT/HzyrtqFkPvFdSHg8Xjt7aQA== + dependencies: + "@babel/runtime" "^7.23.4" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.3" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.0" + node-fetch "^2.7.0" + rpc-websockets "^7.5.1" + superstruct "^0.14.2" + +"@supercharge/promise-pool@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@supercharge/promise-pool/-/promise-pool-3.1.1.tgz#237d4e151b8591e2ff4f0ae388f7d6b4741bacc0" + integrity sha512-TgCm6jVqMPv+OgD5uBNND/CkCwNDdXPQlcprtnXsWSBpTCy0q5CI6vRj+jsUiXE1xeRaKIX4UeaYJqzZBL92sg== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/estree@1.0.5", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@*": + version "20.11.28" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.28.tgz#4fd5b2daff2e580c12316e457473d68f15ee6f66" + integrity sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA== + dependencies: + undici-types "~5.26.4" + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/semver@^7.5.0": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@>=7.0.2": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz#5a5fcad1a7baed85c10080d71ad901f98c38d5b7" + integrity sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/type-utils" "7.2.0" + "@typescript-eslint/utils" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@>=7.0.2": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a" + integrity sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg== + dependencies: + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz#cfb437b09a84f95a0930a76b066e89e35d94e3da" + integrity sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + +"@typescript-eslint/type-utils@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz#7be5c30e9b4d49971b79095a1181324ef6089a19" + integrity sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA== + dependencies: + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/utils" "7.2.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" + integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== + +"@typescript-eslint/typescript-estree@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" + integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.2.0.tgz#fc8164be2f2a7068debb4556881acddbf0b7ce2a" + integrity sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" + integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== + dependencies: + "@typescript-eslint/types" "7.2.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@vitest/expect@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.4.0.tgz#d64e17838a20007fecd252397f9b96a1ca81bfb0" + integrity sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA== + dependencies: + "@vitest/spy" "1.4.0" + "@vitest/utils" "1.4.0" + chai "^4.3.10" + +"@vitest/runner@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.4.0.tgz#907c2d17ad5975b70882c25ab7a13b73e5a28da9" + integrity sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg== + dependencies: + "@vitest/utils" "1.4.0" + p-limit "^5.0.0" + pathe "^1.1.1" + +"@vitest/snapshot@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.4.0.tgz#2945b3fb53767a3f4f421919e93edfef2935b8bd" + integrity sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A== + dependencies: + magic-string "^0.30.5" + pathe "^1.1.1" + pretty-format "^29.7.0" + +"@vitest/spy@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.4.0.tgz#cf953c93ae54885e801cbe6b408a547ae613f26c" + integrity sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.4.0.tgz#ea6297e0d329f9ff0a106f4e1f6daf3ff6aad3f0" + integrity sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.11.3, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agentkeepalive@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +algo-msgpack-with-bigint@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/algo-msgpack-with-bigint/-/algo-msgpack-with-bigint-2.1.1.tgz#38bb717220525b3ff42232eefdcd9efb9ad405d6" + integrity sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ== + +algosdk@^1.13.1: + version "1.24.1" + resolved "https://registry.yarnpkg.com/algosdk/-/algosdk-1.24.1.tgz#afc4102457ae0c38a32de6b84f4d713aedfc9e89" + integrity sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww== + dependencies: + algo-msgpack-with-bigint "^2.1.1" + buffer "^6.0.2" + cross-fetch "^3.1.5" + hi-base32 "^0.5.1" + js-sha256 "^0.9.0" + js-sha3 "^0.8.0" + js-sha512 "^0.8.0" + json-bigint "^1.0.0" + tweetnacl "^1.0.3" + vlq "^2.0.4" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansicolors@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +aptos@=1.8.5: + version "1.8.5" + resolved "https://registry.yarnpkg.com/aptos/-/aptos-1.8.5.tgz#a17ac721066914785902b03cf1e7304495f6cd9d" + integrity sha512-iQxliWesNHjGQ5YYXCyss9eg4+bDGQWqAZa73vprqGQ9tungK0cRjUI2fmnp63Ed6UG6rurHrL+b0ckbZAOZZQ== + dependencies: + "@noble/hashes" "1.1.3" + "@scure/bip39" "1.1.0" + axios "0.27.2" + form-data "4.0.0" + tweetnacl "1.0.3" + +arbundles@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/arbundles/-/arbundles-0.10.1.tgz#1f542d9edf185a8a272994aef501a8ee12aaaa46" + integrity sha512-QYFepxessLCirvRkQK9iQmjxjHz+s50lMNGRwZwpyPWLohuf6ISyj1gkFXJHlMT+rNSrsHxb532glHnKbjwu3A== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/providers" "^5.7.2" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wallet" "^5.7.0" + "@irys/arweave" "^0.0.2" + "@noble/ed25519" "^1.6.1" + base64url "^3.0.1" + bs58 "^4.0.1" + keccak "^3.0.2" + secp256k1 "^5.0.0" + optionalDependencies: + "@randlabs/myalgo-connect" "^1.1.2" + algosdk "^1.13.1" + arweave-stream-tx "^1.1.0" + multistream "^4.1.0" + tmp-promise "^3.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +arweave-stream-tx@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/arweave-stream-tx/-/arweave-stream-tx-1.2.2.tgz#2d5c66554301baacd02586a152fbb198b422112f" + integrity sha512-bNt9rj0hbAEzoUZEF2s6WJbIz8nasZlZpxIw03Xm8fzb9gRiiZlZGW3lxQLjfc9Z0VRUWDzwtqoYeEoB/JDToQ== + dependencies: + exponential-backoff "^3.1.0" + +asn1.js@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axios@0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +axios@^1.4.0: + version "1.6.8" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" + integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.0.2, bignumber.js@^9.1.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip39-light@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/bip39-light/-/bip39-light-1.0.7.tgz#06a72f251b89389a136d3f177f29b03342adc5ba" + integrity sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + +bip39@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" + integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@5.2.1, bn.js@^5.1.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +bn.js@^4.0.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +bs58@5.0.0, bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +buffer-layout@^1.2.0, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer-reverse@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== + +buffer@6.0.3, buffer@^6.0.2, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai@^4.3.10: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^8.2.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@1.1.7, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-hash@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== + +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +csv-generate@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" + integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== + +csv-parse@^4.16.3: + version "4.16.3" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== + +csv-stringify@^5.6.5: + version "5.6.5" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== + +csv@5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" + integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== + dependencies: + csv-generate "^3.4.3" + csv-parse "^4.16.3" + csv-stringify "^5.6.5" + stream-transform "^2.1.3" + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dotenv@^16.4.4: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-xo-typescript@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-xo-typescript/-/eslint-config-xo-typescript-3.0.0.tgz#d6c36a9057eeebfb4f76d56f60d98a0bbd919832" + integrity sha512-8C1EFMHBHMxnFuY+0gSLrnOfSvGG766L85EEFYNqEfO7XmfAVvEKUDgLMwDQ34Dq/bEpOSvVx8gkN9Owx3iKEw== + +eslint-config-xo@^0.44.0: + version "0.44.0" + resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.44.0.tgz#b4a68da791ecfd329bc7e1f88f9edea3d4dca70c" + integrity sha512-YG4gdaor0mJJi8UBeRJqDPO42MedTWYMaUyucF5bhm2pi/HS98JIxfFQmTLuyj6hGpQlAazNfyVnn7JuDn+Sew== + dependencies: + confusing-browser-globals "1.0.11" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@>=8.56.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== + dependencies: + "@noble/curves" "1.3.0" + "@noble/hashes" "1.3.3" + "@scure/bip32" "1.3.3" + "@scure/bip39" "1.2.2" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + +exponential-backoff@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +follow-redirects@^1.14.9, follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +form-data@4.0.0, form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hi-base32@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" + integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-errors@^1.7.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^8.2.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jayson@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.0.tgz#60dc946a85197317f2b1439d672a8b0a99cea2f9" + integrity sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.4.5" + +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-sha512@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha512/-/js-sha512-0.8.0.tgz#dd22db8d02756faccf19f218e3ed61ec8249f7d4" + integrity sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ== + +js-tokens@^8.0.2: + version "8.0.3" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-8.0.3.tgz#1c407ec905643603b38b6be6977300406ec48775" + integrity sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonc-parser@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.30.5: + version "0.30.8" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merkletreejs@^0.3.11: + version "0.3.11" + resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.3.11.tgz#e0de05c3ca1fd368de05a12cb8efb954ef6fc04f" + integrity sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ== + dependencies: + bignumber.js "^9.0.1" + buffer-reverse "^1.0.1" + crypto-js "^4.2.0" + treeify "^1.1.0" + web3-utils "^1.3.4" + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +mixme@^0.5.1: + version "0.5.10" + resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.10.tgz#d653b2984b75d9018828f1ea333e51717ead5f51" + integrity sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q== + +mlly@^1.2.0, mlly@^1.4.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f" + integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.0.3" + ufo "^1.3.2" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multistream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8" + integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw== + dependencies: + once "^1.4.0" + readable-stream "^3.6.0" + +mustache@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +near-hd-key@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/near-hd-key/-/near-hd-key-1.2.1.tgz#f508ff15436cf8a439b543220f3cc72188a46756" + integrity sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg== + dependencies: + bip39 "3.0.2" + create-hmac "1.1.7" + tweetnacl "1.0.3" + +near-seed-phrase@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/near-seed-phrase/-/near-seed-phrase-0.2.0.tgz#fb7cf89682112b1160ab68abb50dc821f49be18a" + integrity sha512-NpmrnejpY1AdlRpDZ0schJQJtfBaoUheRfiYtQpcq9TkwPgqKZCRULV5L3hHmLc0ep7KRtikbPQ9R2ztN/3cyQ== + dependencies: + bip39-light "^1.0.7" + bs58 "^4.0.1" + near-hd-key "^1.2.1" + tweetnacl "^1.0.2" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +once@^1.3.0, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" + integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.0.1, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup@^4.2.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.13.0.tgz#dd2ae144b4cdc2ea25420477f68d4937a721237a" + integrity sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.13.0" + "@rollup/rollup-android-arm64" "4.13.0" + "@rollup/rollup-darwin-arm64" "4.13.0" + "@rollup/rollup-darwin-x64" "4.13.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.13.0" + "@rollup/rollup-linux-arm64-gnu" "4.13.0" + "@rollup/rollup-linux-arm64-musl" "4.13.0" + "@rollup/rollup-linux-riscv64-gnu" "4.13.0" + "@rollup/rollup-linux-x64-gnu" "4.13.0" + "@rollup/rollup-linux-x64-musl" "4.13.0" + "@rollup/rollup-win32-arm64-msvc" "4.13.0" + "@rollup/rollup-win32-ia32-msvc" "4.13.0" + "@rollup/rollup-win32-x64-msvc" "4.13.0" + fsevents "~2.3.2" + +rpc-websockets@^7.5.1: + version "7.9.0" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.9.0.tgz#a3938e16d6f134a3999fdfac422a503731bf8973" + integrity sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw== + dependencies: + "@babel/runtime" "^7.17.2" + eventemitter3 "^4.0.7" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" + integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + +semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +std-env@^3.5.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + +stream-transform@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" + integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== + dependencies: + mixme "^0.5.1" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-literal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-2.0.0.tgz#5d063580933e4e03ebb669b12db64d2200687527" + integrity sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA== + dependencies: + js-tokens "^8.0.2" + +superstruct@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" + integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== + +superstruct@^0.15.4: + version "0.15.5" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +"through@>=2.2.7 <3", through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinybench@^2.5.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" + integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA== + +tinypool@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.2.tgz#84013b03dc69dacb322563a475d4c0a9be00f82a" + integrity sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ== + +tinyspy@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" + integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== + +tmp-promise@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + +ts-api-utils@^1.0.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +tslib@^2.0.3, tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tweetnacl@1.0.3, tweetnacl@^1.0.1, tweetnacl@^1.0.2, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript-collections@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/typescript-collections/-/typescript-collections-1.3.3.tgz#62d50d93c018c094d425eabee649f00ec5cc0fea" + integrity sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ== + +typescript@>=5.0.0: + version "5.4.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" + integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== + +ufo@^1.3.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.1.tgz#ec42543a918def8d0ce185e498d080016f35daf6" + integrity sha512-HGyF79+/qZ4soRvM+nHERR2pJ3VXDZ/8sL1uLahdgEDf580NkgiWOxLk33FetExqOWp352JZRsgXbG/4MaGOSg== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +vite-node@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.4.0.tgz#265529d60570ca695ceb69391f87f92847934ad8" + integrity sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw== + dependencies: + cac "^6.7.14" + debug "^4.3.4" + pathe "^1.1.1" + picocolors "^1.0.0" + vite "^5.0.0" + +vite@^5.0.0: + version "5.1.6" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.6.tgz#706dae5fab9e97f57578469eef1405fc483943e4" + integrity sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.35" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.4.0.tgz#f5c812aaf5023818b89b7fc667fa45327396fece" + integrity sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw== + dependencies: + "@vitest/expect" "1.4.0" + "@vitest/runner" "1.4.0" + "@vitest/snapshot" "1.4.0" + "@vitest/spy" "1.4.0" + "@vitest/utils" "1.4.0" + acorn-walk "^8.3.2" + chai "^4.3.10" + debug "^4.3.4" + execa "^8.0.1" + local-pkg "^0.5.0" + magic-string "^0.30.5" + pathe "^1.1.1" + picocolors "^1.0.0" + std-env "^3.5.0" + strip-literal "^2.0.0" + tinybench "^2.5.1" + tinypool "^0.8.2" + vite "^5.0.0" + vite-node "1.4.0" + why-is-node-running "^2.2.2" + +vlq@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-2.0.4.tgz#6057b85729245b9829e3cc7755f95b228d4fe041" + integrity sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA== + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web3-utils@^1.3.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +why-is-node-running@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" + integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^7.4.5: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.5.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== diff --git a/clients/rust/wen_new_standard/CONTRIBUTING.md b/clients/rust/wen_new_standard/CONTRIBUTING.md deleted file mode 100644 index 6aa40090..00000000 --- a/clients/rust/wen_new_standard/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Contributing to the Rust client - -This is a quick guide to help you contribute to the Rust client of WNS. - -## Getting started - -To build and test the Rust client, you can use `cargo`. - -```sh -# Build the client -cargo build - -# Test the client (requires building the program first) -cargo test-sbf --sbf-out-dir ../../programs/.bin -``` - -When something changes in the program(s), make sure to run `yarn clients` in the root directory, to re-generate the clients accordingly. \ No newline at end of file diff --git a/clients/rust/wen_new_standard/Cargo.lock b/clients/rust/wen_new_standard/Cargo.lock deleted file mode 100644 index 18ea8556..00000000 --- a/clients/rust/wen_new_standard/Cargo.lock +++ /dev/null @@ -1,6210 +0,0 @@ -# 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 = "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.15", - "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.15", - "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 = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - -[[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.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" -dependencies = [ - "anchor-syn", - "bs58 0.5.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb2a5eb0860e661ab31aff7bb5e0288357b176380e985bade4ccb395981b42d" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58 0.5.1", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" -dependencies = [ - "anchor-syn", - "borsh-derive-internal 0.10.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6620c9486d9d36a4389cab5e37dc34a42ed0bfaa62e6a75a2999ce98f8f2e373" -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.21.7", - "bincode", - "borsh 0.10.3", - "bytemuck", - "getrandom 0.2.15", - "solana-program", - "thiserror", -] - -[[package]] -name = "anchor-lang-idl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "serde", - "serde_json", - "sha2 0.10.8", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99daacb53b55cfd37ce14d6c9905929721137fd4c67bbab44a19802aecb622f" -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 = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "aquamarine" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" -dependencies = [ - "include_dir", - "itertools", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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.5", - "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.5", - "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.5", -] - -[[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.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" -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.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[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 = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" -dependencies = [ - "borsh-derive 1.5.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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.64", - "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 = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" -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.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" -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.64", -] - -[[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 = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[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.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" -dependencies = [ - "jobserver", - "libc", - "once_cell", -] - -[[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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.5", -] - -[[package]] -name = "chrono-humanize" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" -dependencies = [ - "chrono", -] - -[[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", - "indexmap 1.9.3", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap 0.16.1", -] - -[[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 = "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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[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 = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[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 = "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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.64", -] - -[[package]] -name = "darling_macro" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.64", -] - -[[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.5", - "lock_api", - "once_cell", - "parking_lot_core", - "rayon", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[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.5", - "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", - "serde", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "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 = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - -[[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 = "dir-diff" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" -dependencies = [ - "walkdir", -] - -[[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.64", -] - -[[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.64", -] - -[[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[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 = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "either" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.5", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -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.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "feature-probe" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" - -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float-cmp" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[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 = "fragile" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" - -[[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.64", -] - -[[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-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.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[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 = "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 0.7.11", - "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" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.11", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[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.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[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 = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[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 = "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 = "include_dir" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "index_list" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70891286cb8e844fdfcf1178b47569699f9e20b5ecc4b45a6240a64771444638" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", - "serde", -] - -[[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.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -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.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -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 = "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.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[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-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.5", - "thiserror", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "lru" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lz4" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" -dependencies = [ - "libc", - "lz4-sys", -] - -[[package]] -name = "lz4-sys" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" -dependencies = [ - "cc", - "libc", -] - -[[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.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.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" -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 = "mockall" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" -dependencies = [ - "num-integer", - "num-traits", -] - -[[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.64", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_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.64", -] - -[[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.64", -] - -[[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-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - -[[package]] -name = "ouroboros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" -dependencies = [ - "aliasable", - "ouroboros_macro", -] - -[[package]] -name = "ouroboros_macro" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.1", - "smallvec", - "windows-targets 0.52.5", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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 = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "predicates" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" -dependencies = [ - "difflib", - "float-cmp", - "itertools", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[package]] -name = "predicates-core" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" - -[[package]] -name = "predicates-tree" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[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", - "syn 1.0.109", - "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.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" -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.64", -] - -[[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.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "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 = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", -] - -[[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 = "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", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-rustls", - "tokio-util 0.7.11", - "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.15", - "libc", - "spin 0.9.8", - "untrusted 0.9.0", - "windows-sys 0.52.0", -] - -[[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 = "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 = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -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.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[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.64", -] - -[[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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "seqlock" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" -dependencies = [ - "parking_lot", -] - -[[package]] -name = "serde" -version = "1.0.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" -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.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "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 2.3.3", -] - -[[package]] -name = "serde_with" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.2.6", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.8.1", - "time", -] - -[[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.64", -] - -[[package]] -name = "serde_with_macros" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -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.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solana-account-decoder" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1387123a0daab82dbd205c543f8bba0ed5345fc6b8eaa910ecd9dcb7469fc78" -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-accounts-db" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2033eae13b5ab9d3adc6c90ea06a37177cd2de4fe4c04159be5c583756a5414" -dependencies = [ - "arrayref", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lz4", - "memmap2", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "seqlock", - "serde", - "serde_derive", - "smallvec", - "solana-bucket-map", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-measure", - "solana-metrics", - "solana-nohash-hasher", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "static_assertions", - "strum", - "strum_macros", - "tar", - "tempfile", - "thiserror", -] - -[[package]] -name = "solana-address-lookup-table-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396a385d0c7cc65fca238c757cca29c41d09fe18734d5f85890c23cd6e0d3876" -dependencies = [ - "bincode", - "bytemuck", - "log", - "num-derive 0.4.2", - "num-traits", - "rustc_version", - "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-program", - "solana-program-runtime", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-banks-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a0af125d95032a260a9dbc020d571d8904874ada1505f3e860a88f915b4c00" -dependencies = [ - "borsh 1.5.0", - "futures", - "solana-banks-interface", - "solana-program", - "solana-sdk", - "tarpc", - "thiserror", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bf9ac405608785d26993bdc18b867b71736ba495714b1c5ef9efc2da9eb8c4" -dependencies = [ - "serde", - "solana-sdk", - "tarpc", -] - -[[package]] -name = "solana-banks-server" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2769555bcc726040169af9846f1815824f3a6479d0504157805a0cb6aea04c4" -dependencies = [ - "bincode", - "crossbeam-channel", - "futures", - "solana-accounts-db", - "solana-banks-interface", - "solana-client", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "tarpc", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8913b997267ef7816d07d54b61e236140069b3774b15dc1b9c8cc1d08793f1e" -dependencies = [ - "bincode", - "byteorder", - "libsecp256k1", - "log", - "scopeguard", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", - "solana_rbpf", - "thiserror", -] - -[[package]] -name = "solana-bucket-map" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7ee2b83c088999cc1b5c33039561603496dec7a069769ae1ba52512ce1c4ca" -dependencies = [ - "bv", - "bytemuck", - "log", - "memmap2", - "modular-bitfield", - "num_enum 0.7.2", - "rand 0.8.5", - "solana-measure", - "solana-sdk", - "tempfile", -] - -[[package]] -name = "solana-clap-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1bf62a854e86674baafa1db95de3574e134140ad694d79812699d0ff7dba98" -dependencies = [ - "chrono", - "clap 2.34.0", - "rpassword", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", -] - -[[package]] -name = "solana-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0b54e872d5d1de9e983d684f843ea622ba4b4432602a3aafd897626b25c339" -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-compute-budget-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e589e502a52f43dfc7a51e874e640c64d145e019e18162b7a43f2021038774e" -dependencies = [ - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-config-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0756e2a78554efdcb997a00a652b20291a823f2415c752adaa0dad7320460c9" -dependencies = [ - "bincode", - "chrono", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-connection-cache" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14821e889f3f010265d61814b5971e24837677fa51e2c4be2674aa4bcc8c77e5" -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-cost-model" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69710df9e1eb6863a5d676067d0c2e0d58fd498024cb1bc8dc9661d468590b0b" -dependencies = [ - "lazy_static", - "log", - "rustc_version", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-metrics", - "solana-program-runtime", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-frozen-abi" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d353eac7a178cd8a2ceaf5d304719d4a30c1d3f24f303145d5b029b8cc7c35f0" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc87189dcb2d2da407831fc983e4f05e70c58be12b5c713e9a05f873edb42637" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.64", -] - -[[package]] -name = "solana-loader-v4-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa7ce511c95953586638001e015b7ba2901fab5df6db02c1ce08faa7afb6408" -dependencies = [ - "log", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana_rbpf", -] - -[[package]] -name = "solana-logger" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d857a115710eeb1c5ac98a340141f0c49cc31854168767d0c5b855e212632a5" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-measure" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a32fb164205ddff073863f17a45e66fe44f88fa0fee2fa9790aa5cd730b616" -dependencies = [ - "log", - "solana-sdk", -] - -[[package]] -name = "solana-metrics" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374bb8daec434f2c867091ff7c1c494eb358c5c23a583cc44a5a6134609271c2" -dependencies = [ - "crossbeam-channel", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-net-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09abc9f1df58d9990cb085d1e8a489f682828fc78e1933856fd63cbb231748" -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-nohash-hasher" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" - -[[package]] -name = "solana-perf" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7d00801b85338f0ecf3fbb4c1d14dfccca4c1adc162f7fe28c5ee9ea7acc9f" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad73ff4d5c8d4943988ef18924f5fbd96881410ab20d5a0bfa32bb44d7d4cfce" -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.5.0", - "bs58 0.4.0", - "bv", - "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", - "itertools", - "js-sys", - "lazy_static", - "libc", - "libsecp256k1", - "light-poseidon", - "log", - "memoffset 0.9.1", - "num-bigint 0.4.5", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83375b909adeefd5ab9dc1473456df2b46f9377c8fa0d2447cc5a15a94ca407" -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-program-test" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5b1bbacdb3b9f0ad73b028e43d143374e3915627c18800f3d10cc6486eb516" -dependencies = [ - "assert_matches", - "async-trait", - "base64 0.21.7", - "bincode", - "chrono-humanize", - "crossbeam-channel", - "log", - "serde", - "solana-accounts-db", - "solana-banks-client", - "solana-banks-interface", - "solana-banks-server", - "solana-bpf-loader-program", - "solana-logger", - "solana-program-runtime", - "solana-runtime", - "solana-sdk", - "solana-vote-program", - "solana_rbpf", - "test-case", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-pubsub-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4425ce6449feac0d49b5ef9645d898c29d298ab93fa4851fe495223b1d2f4a11" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917e7772597c3e0ee2a9c39c846e1932e013abfaf43dd3bf86d8d29d57e66d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f16819b18fc045e4cbe9b1602931776c55eef9051bd88d109c9a2050cef31" -dependencies = [ - "lazy_static", - "num_cpus", -] - -[[package]] -name = "solana-remote-wallet" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62a3cb947b3bf30eb65d92f96be1539ebc21ab3bc12a4b6bbecffd7b0d922772" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f631266453395a9e0b614ca222747000ea186507e187ccf5f5d5498a98b0806" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668173de3d2a6629c6508c508c1a87a46e51dea305241816a71e68525edc1022" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b409bc942263f987bb25ab56f0a3e601344fdcfb9b277a494dd142f81c34a23" -dependencies = [ - "clap 2.34.0", - "solana-clap-utils", - "solana-rpc-client", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-runtime" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1fd97b1954a0566dffa5ecbc246a61715ae54c410c13de025dc15b19422481" -dependencies = [ - "aquamarine", - "arrayref", - "base64 0.21.7", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lru", - "lz4", - "memmap2", - "mockall", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "serde", - "serde_derive", - "serde_json", - "solana-accounts-db", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-bucket-map", - "solana-compute-budget-program", - "solana-config-program", - "solana-cost-model", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-measure", - "solana-metrics", - "solana-perf", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-version", - "solana-vote", - "solana-vote-program", - "solana-zk-token-proof-program", - "solana-zk-token-sdk", - "static_assertions", - "strum", - "strum_macros", - "symlink", - "tar", - "tempfile", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f518a377209223b09a0fb62abd53add4a11313a1e85f535f559fbcc0227117a" -dependencies = [ - "assert_matches", - "base64 0.21.7", - "bincode", - "bitflags 2.5.0", - "borsh 1.5.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 2.3.3", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2975b2c2ed6f06d2ffbb2e6b3e7fdd9ca6b2570a76d49a2173f393e6e84c9c71" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.64", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" - -[[package]] -name = "solana-send-transaction-service" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc964aa722903dbf5680159d157438772a61b90779bc282dd9bddcb2a9f87b61" -dependencies = [ - "crossbeam-channel", - "log", - "solana-client", - "solana-measure", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "solana-tpu-client", -] - -[[package]] -name = "solana-stake-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c6d7223338a3eff4ef783505f1444454cacdd9ce027efc23687b7bc1864f3c" -dependencies = [ - "bincode", - "log", - "rustc_version", - "solana-config-program", - "solana-program-runtime", - "solana-sdk", - "solana-vote-program", -] - -[[package]] -name = "solana-streamer" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3986d3106ccbfe6bb1eb647918d2af82621db8d5d797a7f6a7b8d6b6b582064" -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-system-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f212424483492b18f2c406f5aa035aae7de6d4ef4e791921cfc41c326b6fc02a" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-thin-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7283a5597db9dd9a7b9515d4b95fe4964881c67ee2d51658d5e5b73d83fba10" -dependencies = [ - "bincode", - "log", - "rayon", - "solana-connection-cache", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", -] - -[[package]] -name = "solana-tpu-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2a073779fcae0ac8ce7251a0a12f7ed275e4ea26f9621f873e4a2e3dca21d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9672c191c1a7a82d1472ff15ad2a0812e28a27858814ead611a1374b11a70d7" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b87180d368c00ecd82a56df7498953730136848699433d5571dacd7fd9c186" -dependencies = [ - "async-trait", - "solana-connection-cache", - "solana-net-utils", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-version" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf94f6a9ed0e1df165569f0353e286a4e219b72d4a5200f0c8b9cd55d90f474" -dependencies = [ - "log", - "rustc_version", - "semver", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", -] - -[[package]] -name = "solana-vote" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a8f50c270ae4b5791ec43c8d3bc89e3b03d62b38683c59ea7357e37ff4b59" -dependencies = [ - "crossbeam-channel", - "itertools", - "log", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", - "solana-vote-program", - "thiserror", -] - -[[package]] -name = "solana-vote-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5d7a037bc2264af884564ea33f545817411897d2634ea2b83c4bc033896a0f" -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-proof-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42ab9ac3707f1f52df43cdd4511d135df490a03e9360945d4d702f6e92d0820" -dependencies = [ - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cefc9878a202bf9606745e56712f7d56878ea31b29f2f89785b4b801b264322" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -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.64", -] - -[[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.64", - "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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "borsh 0.10.3", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -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.64", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.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 = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "symlink" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" - -[[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.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" -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.64", -] - -[[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 = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.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 = "termtree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" - -[[package]] -name = "test-case" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" -dependencies = [ - "test-case-macros", -] - -[[package]] -name = "test-case-core" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "test-case-macros" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", - "test-case-core", -] - -[[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.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "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 = "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.64", -] - -[[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-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[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.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" - -[[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", -] - -[[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", -] - -[[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.64", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "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 = "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.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" - -[[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 = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[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 = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[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.64", - "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.64", - "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 = "wen_new_standard" -version = "0.5.0-alpha" -dependencies = [ - "anchor-lang", - "assert_matches", - "borsh 0.10.3", - "num-derive 0.3.3", - "num-traits", - "serde", - "serde_with 3.8.1", - "solana-program", - "solana-program-test", - "solana-sdk", - "thiserror", -] - -[[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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.5", -] - -[[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.5", -] - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "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]] -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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[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.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 = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[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.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 = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -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 = "xattr" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" -dependencies = [ - "libc", - "linux-raw-sys", - "rustix", -] - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.64", -] - -[[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/clients/rust/wen_new_standard/Cargo.toml b/clients/rust/wen_new_standard/Cargo.toml deleted file mode 100644 index ba2c0c1c..00000000 --- a/clients/rust/wen_new_standard/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -description = "An open and composable NFT standard on Solana." -name = "wen_new_standard" -version = "0.5.0-alpha" -edition = "2021" -authors = ["Balmy Gazebo "] -license = "MIT" -repository = "https://github.com/wen-community/wen-program-library/clients/rust/wen_new_standard" -documentation = "https://docs.wenwencoin.com" -homepage = "https://wenwencoin.com" -keywords = ["wen", "wns", "nft", "solana", "blockchain"] -readme = "README.md" - -[workspace] - -[features] -anchor = ["dep:anchor-lang"] -test-sbf = [] -serde = ["dep:serde", "dep:serde_with"] - -[dependencies] -anchor-lang = { version = "0.30.1", optional = true } -borsh = "^0.10" -num-derive = "^0.3" -num-traits = "^0.2" -serde = { version = "^1.0", features = ["derive"], optional = true } -serde_with = { version = "^3.0", optional = true } -solana-program = "~1.18" -thiserror = "^1.0" - -[dev-dependencies] -assert_matches = "1.5.0" -solana-program-test = "~1.18" -solana-sdk = "~1.18" diff --git a/clients/rust/wen_new_standard/README.md b/clients/rust/wen_new_standard/README.md deleted file mode 100644 index 639d6bd7..00000000 --- a/clients/rust/wen_new_standard/README.md +++ /dev/null @@ -1,22 +0,0 @@ -A Rust client SDK for WEN New Standard [program](https://github.com/wen-community/wen-new-standard). - -## Getting started - -From your project folder: - -```bash -cargo add wen_new_standard -``` - -## Structure - -The SDK is divided into several modules: - -- `accounts`: structs representing the accounts of the program -- `errors`: enums representing the program errors -- `instructions`: structs to facilitate the creation of instructions, instruction arguments and CPI helpers -- `types`: structs representing types used by the program - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. \ No newline at end of file diff --git a/clients/rust/wen_new_standard/src/generated/accounts/approve_account.rs b/clients/rust/wen_new_standard/src/generated/accounts/approve_account.rs deleted file mode 100644 index e86d1087..00000000 --- a/clients/rust/wen_new_standard/src/generated/accounts/approve_account.rs +++ /dev/null @@ -1,62 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ApproveAccount { - pub discriminator: [u8; 8], - pub slot: u64, -} - -impl ApproveAccount { - pub const LEN: usize = 16; - - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for ApproveAccount { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for ApproveAccount { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for ApproveAccount {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for ApproveAccount { - fn owner() -> Pubkey { - crate::WEN_NEW_STANDARD_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for ApproveAccount {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for ApproveAccount { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_new_standard/src/generated/accounts/manager.rs b/clients/rust/wen_new_standard/src/generated/accounts/manager.rs deleted file mode 100644 index c8a7861f..00000000 --- a/clients/rust/wen_new_standard/src/generated/accounts/manager.rs +++ /dev/null @@ -1,61 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct Manager { - pub discriminator: [u8; 8], -} - -impl Manager { - pub const LEN: usize = 8; - - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for Manager { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for Manager { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for Manager {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for Manager { - fn owner() -> Pubkey { - crate::WEN_NEW_STANDARD_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for Manager {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for Manager { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_new_standard/src/generated/accounts/mod.rs b/clients/rust/wen_new_standard/src/generated/accounts/mod.rs deleted file mode 100644 index 08c80bc3..00000000 --- a/clients/rust/wen_new_standard/src/generated/accounts/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#approve_account; -pub(crate) mod r#manager; -pub(crate) mod r#token_group; -pub(crate) mod r#token_group_member; - -pub use self::r#approve_account::*; -pub use self::r#manager::*; -pub use self::r#token_group::*; -pub use self::r#token_group_member::*; diff --git a/clients/rust/wen_new_standard/src/generated/accounts/token_group.rs b/clients/rust/wen_new_standard/src/generated/accounts/token_group.rs deleted file mode 100644 index 20110502..00000000 --- a/clients/rust/wen_new_standard/src/generated/accounts/token_group.rs +++ /dev/null @@ -1,79 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct TokenGroup { - pub discriminator: [u8; 8], - /// The authority that can sign to update the group - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub update_authority: Pubkey, - /// The associated mint, used to counter spoofing to be sure that group - /// belongs to a particular mint - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub mint: Pubkey, - /// The current number of group members - pub size: u32, - /// The maximum number of group members - pub max_size: u32, -} - -impl TokenGroup { - pub const LEN: usize = 80; - - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for TokenGroup { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for TokenGroup { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for TokenGroup {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for TokenGroup { - fn owner() -> Pubkey { - crate::WEN_NEW_STANDARD_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for TokenGroup {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for TokenGroup { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_new_standard/src/generated/accounts/token_group_member.rs b/clients/rust/wen_new_standard/src/generated/accounts/token_group_member.rs deleted file mode 100644 index a5820f14..00000000 --- a/clients/rust/wen_new_standard/src/generated/accounts/token_group_member.rs +++ /dev/null @@ -1,77 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct TokenGroupMember { - pub discriminator: [u8; 8], - /// The associated mint, used to counter spoofing to be sure that member - /// belongs to a particular mint - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub mint: Pubkey, - /// The pubkey of the `TokenGroup` - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub group: Pubkey, - /// The member number - pub member_number: u32, -} - -impl TokenGroupMember { - pub const LEN: usize = 76; - - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for TokenGroupMember { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for TokenGroupMember { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for TokenGroupMember {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for TokenGroupMember { - fn owner() -> Pubkey { - crate::WEN_NEW_STANDARD_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for TokenGroupMember {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for TokenGroupMember { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_new_standard/src/generated/errors/mod.rs b/clients/rust/wen_new_standard/src/generated/errors/mod.rs deleted file mode 100644 index 7485b597..00000000 --- a/clients/rust/wen_new_standard/src/generated/errors/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod wen_new_standard; - -pub use self::wen_new_standard::WenNewStandardError; diff --git a/clients/rust/wen_new_standard/src/generated/errors/wen_new_standard.rs b/clients/rust/wen_new_standard/src/generated/errors/wen_new_standard.rs deleted file mode 100644 index 77caa747..00000000 --- a/clients/rust/wen_new_standard/src/generated/errors/wen_new_standard.rs +++ /dev/null @@ -1,43 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use num_derive::FromPrimitive; -use thiserror::Error; - -#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)] -pub enum WenNewStandardError { - /// 6000 - Collection size exceeds max size. - #[error("Collection size exceeds max size.")] - SizeExceedsMaxSize = 0x1770, - /// 6001 - Max size cannot be reduced below current size. - #[error("Max size cannot be reduced below current size.")] - MaxSizeBelowCurrentSize = 0x1771, - /// 6002 - Creators shares must add up to 100. - #[error("Creators shares must add up to 100.")] - CreatorShareInvalid = 0x1772, - /// 6003 - Missing approve account. - #[error("Missing approve account.")] - MissingApproveAccount = 0x1773, - /// 6004 - Approve account has expired. - #[error("Approve account has expired.")] - ExpiredApproveAccount = 0x1774, - /// 6005 - Invalid field. You cannot use a public key as a field. - #[error("Invalid field. You cannot use a public key as a field.")] - InvalidField = 0x1775, - /// 6006 - The Address you provided is invalid. Please provide a valid address. - #[error("The Address you provided is invalid. Please provide a valid address.")] - CreatorAddressInvalid = 0x1776, - /// 6007 - Royalty basis points must be less than or equal to 10000. - #[error("Royalty basis points must be less than or equal to 10000.")] - RoyaltyBasisPointsInvalid = 0x1777, -} - -impl solana_program::program_error::PrintProgramError for WenNewStandardError { - fn print(&self) { - solana_program::msg!(&self.to_string()); - } -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/add_metadata.rs b/clients/rust/wen_new_standard/src/generated/instructions/add_metadata.rs deleted file mode 100644 index d4a96c7b..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/add_metadata.rs +++ /dev/null @@ -1,479 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::AddMetadataArgs; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct AddMetadata { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl AddMetadata { - pub fn instruction( - &self, - args: AddMetadataInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: AddMetadataInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = AddMetadataInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct AddMetadataInstructionData { - discriminator: [u8; 8], -} - -impl AddMetadataInstructionData { - pub fn new() -> Self { - Self { - discriminator: [231, 195, 40, 240, 67, 231, 53, 136], - } - } -} - -impl Default for AddMetadataInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct AddMetadataInstructionArgs { - pub args: Vec, -} - -/// Instruction builder for `AddMetadata`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 4. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct AddMetadataBuilder { - payer: Option, - authority: Option, - mint: Option, - system_program: Option, - token_program: Option, - args: Option>, - __remaining_accounts: Vec, -} - -impl AddMetadataBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: Vec) -> &mut Self { - self.args = Some(args); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = AddMetadata { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - mint: self.mint.expect("mint is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = AddMetadataInstructionArgs { - args: self.args.clone().expect("args is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `add_metadata` CPI accounts. -pub struct AddMetadataCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `add_metadata` CPI instruction. -pub struct AddMetadataCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: AddMetadataInstructionArgs, -} - -impl<'a, 'b> AddMetadataCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: AddMetadataCpiAccounts<'a, 'b>, - args: AddMetadataInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - mint: accounts.mint, - system_program: accounts.system_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = AddMetadataInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(5 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `AddMetadata` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[]` system_program -/// 4. `[]` token_program -#[derive(Clone, Debug)] -pub struct AddMetadataCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> AddMetadataCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(AddMetadataCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - mint: None, - system_program: None, - token_program: None, - args: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: Vec) -> &mut Self { - self.instruction.args = Some(args); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = AddMetadataInstructionArgs { - args: self.instruction.args.clone().expect("args is not set"), - }; - let instruction = AddMetadataCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct AddMetadataCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - args: Option>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/add_mint_to_group.rs b/clients/rust/wen_new_standard/src/generated/instructions/add_mint_to_group.rs deleted file mode 100644 index 1699744a..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/add_mint_to_group.rs +++ /dev/null @@ -1,547 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct AddMintToGroup { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub group: solana_program::pubkey::Pubkey, - - pub member: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl AddMintToGroup { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(8 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.group, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.member, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = AddMintToGroupInstructionData::new().try_to_vec().unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct AddMintToGroupInstructionData { - discriminator: [u8; 8], -} - -impl AddMintToGroupInstructionData { - pub fn new() -> Self { - Self { - discriminator: [236, 25, 99, 48, 185, 60, 235, 112], - } - } -} - -impl Default for AddMintToGroupInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `AddMintToGroup`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` group -/// 3. `[writable]` member -/// 4. `[writable]` mint -/// 5. `[]` manager -/// 6. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 7. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct AddMintToGroupBuilder { - payer: Option, - authority: Option, - group: Option, - member: Option, - mint: Option, - manager: Option, - system_program: Option, - token_program: Option, - __remaining_accounts: Vec, -} - -impl AddMintToGroupBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn group(&mut self, group: solana_program::pubkey::Pubkey) -> &mut Self { - self.group = Some(group); - self - } - #[inline(always)] - pub fn member(&mut self, member: solana_program::pubkey::Pubkey) -> &mut Self { - self.member = Some(member); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = AddMintToGroup { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - group: self.group.expect("group is not set"), - member: self.member.expect("member is not set"), - mint: self.mint.expect("mint is not set"), - manager: self.manager.expect("manager is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `add_mint_to_group` CPI accounts. -pub struct AddMintToGroupCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub member: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `add_mint_to_group` CPI instruction. -pub struct AddMintToGroupCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub member: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> AddMintToGroupCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: AddMintToGroupCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - group: accounts.group, - member: accounts.member, - mint: accounts.mint, - manager: accounts.manager, - system_program: accounts.system_program, - token_program: accounts.token_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(8 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.group.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.member.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = AddMintToGroupInstructionData::new().try_to_vec().unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(8 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.group.clone()); - account_infos.push(self.member.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `AddMintToGroup` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` group -/// 3. `[writable]` member -/// 4. `[writable]` mint -/// 5. `[]` manager -/// 6. `[]` system_program -/// 7. `[]` token_program -#[derive(Clone, Debug)] -pub struct AddMintToGroupCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> AddMintToGroupCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(AddMintToGroupCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - group: None, - member: None, - mint: None, - manager: None, - system_program: None, - token_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn group(&mut self, group: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.group = Some(group); - self - } - #[inline(always)] - pub fn member( - &mut self, - member: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.member = Some(member); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = AddMintToGroupCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - group: self.instruction.group.expect("group is not set"), - - member: self.instruction.member.expect("member is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct AddMintToGroupCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - group: Option<&'b solana_program::account_info::AccountInfo<'a>>, - member: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/add_royalties.rs b/clients/rust/wen_new_standard/src/generated/instructions/add_royalties.rs deleted file mode 100644 index 4b96b0c9..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/add_royalties.rs +++ /dev/null @@ -1,524 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::UpdateRoyaltiesArgs; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct AddRoyalties { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub extra_metas_account: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl AddRoyalties { - pub fn instruction( - &self, - args: AddRoyaltiesInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: AddRoyaltiesInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.extra_metas_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = AddRoyaltiesInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct AddRoyaltiesInstructionData { - discriminator: [u8; 8], -} - -impl AddRoyaltiesInstructionData { - pub fn new() -> Self { - Self { - discriminator: [195, 251, 126, 230, 187, 134, 168, 210], - } - } -} - -impl Default for AddRoyaltiesInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct AddRoyaltiesInstructionArgs { - pub args: UpdateRoyaltiesArgs, -} - -/// Instruction builder for `AddRoyalties`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[writable]` extra_metas_account -/// 4. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 5. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct AddRoyaltiesBuilder { - payer: Option, - authority: Option, - mint: Option, - extra_metas_account: Option, - system_program: Option, - token_program: Option, - args: Option, - __remaining_accounts: Vec, -} - -impl AddRoyaltiesBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.extra_metas_account = Some(extra_metas_account); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: UpdateRoyaltiesArgs) -> &mut Self { - self.args = Some(args); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = AddRoyalties { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - mint: self.mint.expect("mint is not set"), - extra_metas_account: self - .extra_metas_account - .expect("extra_metas_account is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = AddRoyaltiesInstructionArgs { - args: self.args.clone().expect("args is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `add_royalties` CPI accounts. -pub struct AddRoyaltiesCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `add_royalties` CPI instruction. -pub struct AddRoyaltiesCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: AddRoyaltiesInstructionArgs, -} - -impl<'a, 'b> AddRoyaltiesCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: AddRoyaltiesCpiAccounts<'a, 'b>, - args: AddRoyaltiesInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - mint: accounts.mint, - extra_metas_account: accounts.extra_metas_account, - system_program: accounts.system_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.extra_metas_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = AddRoyaltiesInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.extra_metas_account.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `AddRoyalties` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[writable]` extra_metas_account -/// 4. `[]` system_program -/// 5. `[]` token_program -#[derive(Clone, Debug)] -pub struct AddRoyaltiesCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> AddRoyaltiesCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(AddRoyaltiesCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - mint: None, - extra_metas_account: None, - system_program: None, - token_program: None, - args: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: UpdateRoyaltiesArgs) -> &mut Self { - self.instruction.args = Some(args); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = AddRoyaltiesInstructionArgs { - args: self.instruction.args.clone().expect("args is not set"), - }; - let instruction = AddRoyaltiesCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - extra_metas_account: self - .instruction - .extra_metas_account - .expect("extra_metas_account is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct AddRoyaltiesCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - extra_metas_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - args: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/approve_transfer.rs b/clients/rust/wen_new_standard/src/generated/instructions/approve_transfer.rs deleted file mode 100644 index d0da8737..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/approve_transfer.rs +++ /dev/null @@ -1,830 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct ApproveTransfer { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub approve_account: solana_program::pubkey::Pubkey, - - pub payment_mint: solana_program::pubkey::Pubkey, - - pub distribution_token_account: Option, - - pub authority_token_account: Option, - - pub distribution_account: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub distribution_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub payment_token_program: Option, -} - -impl ApproveTransfer { - pub fn instruction( - &self, - args: ApproveTransferInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: ApproveTransferInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(12 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.approve_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.payment_mint, - false, - )); - if let Some(distribution_token_account) = self.distribution_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - distribution_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_NEW_STANDARD_ID, - false, - )); - } - if let Some(authority_token_account) = self.authority_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - authority_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_NEW_STANDARD_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new( - self.distribution_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.distribution_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - if let Some(payment_token_program) = self.payment_token_program { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - payment_token_program, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_NEW_STANDARD_ID, - false, - )); - } - accounts.extend_from_slice(remaining_accounts); - let mut data = ApproveTransferInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ApproveTransferInstructionData { - discriminator: [u8; 8], -} - -impl ApproveTransferInstructionData { - pub fn new() -> Self { - Self { - discriminator: [198, 217, 247, 150, 208, 60, 169, 244], - } - } -} - -impl Default for ApproveTransferInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ApproveTransferInstructionArgs { - pub buy_amount: u64, -} - -/// Instruction builder for `ApproveTransfer`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable, signer]` authority -/// 2. `[]` mint -/// 3. `[writable]` approve_account -/// 4. `[]` payment_mint -/// 5. `[writable, optional]` distribution_token_account -/// 6. `[writable, optional]` authority_token_account -/// 7. `[writable]` distribution_account -/// 8. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 9. `[optional]` distribution_program (default to `diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay`) -/// 10. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -/// 11. `[optional]` payment_token_program -#[derive(Clone, Debug, Default)] -pub struct ApproveTransferBuilder { - payer: Option, - authority: Option, - mint: Option, - approve_account: Option, - payment_mint: Option, - distribution_token_account: Option, - authority_token_account: Option, - distribution_account: Option, - system_program: Option, - distribution_program: Option, - token_program: Option, - payment_token_program: Option, - buy_amount: Option, - __remaining_accounts: Vec, -} - -impl ApproveTransferBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn approve_account( - &mut self, - approve_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.approve_account = Some(approve_account); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_token_account( - &mut self, - distribution_token_account: Option, - ) -> &mut Self { - self.distribution_token_account = distribution_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn authority_token_account( - &mut self, - authority_token_account: Option, - ) -> &mut Self { - self.authority_token_account = authority_token_account; - self - } - #[inline(always)] - pub fn distribution_account( - &mut self, - distribution_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.distribution_account = Some(distribution_account); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay']` - #[inline(always)] - pub fn distribution_program( - &mut self, - distribution_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.distribution_program = Some(distribution_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn payment_token_program( - &mut self, - payment_token_program: Option, - ) -> &mut Self { - self.payment_token_program = payment_token_program; - self - } - #[inline(always)] - pub fn buy_amount(&mut self, buy_amount: u64) -> &mut Self { - self.buy_amount = Some(buy_amount); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = ApproveTransfer { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - mint: self.mint.expect("mint is not set"), - approve_account: self.approve_account.expect("approve_account is not set"), - payment_mint: self.payment_mint.expect("payment_mint is not set"), - distribution_token_account: self.distribution_token_account, - authority_token_account: self.authority_token_account, - distribution_account: self - .distribution_account - .expect("distribution_account is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - distribution_program: self.distribution_program.unwrap_or(solana_program::pubkey!( - "diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay" - )), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - payment_token_program: self.payment_token_program, - }; - let args = ApproveTransferInstructionArgs { - buy_amount: self.buy_amount.clone().expect("buy_amount is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `approve_transfer` CPI accounts. -pub struct ApproveTransferCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub approve_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, -} - -/// `approve_transfer` CPI instruction. -pub struct ApproveTransferCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub approve_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// The arguments for the instruction. - pub __args: ApproveTransferInstructionArgs, -} - -impl<'a, 'b> ApproveTransferCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ApproveTransferCpiAccounts<'a, 'b>, - args: ApproveTransferInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - mint: accounts.mint, - approve_account: accounts.approve_account, - payment_mint: accounts.payment_mint, - distribution_token_account: accounts.distribution_token_account, - authority_token_account: accounts.authority_token_account, - distribution_account: accounts.distribution_account, - system_program: accounts.system_program, - distribution_program: accounts.distribution_program, - token_program: accounts.token_program, - payment_token_program: accounts.payment_token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(12 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.approve_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.payment_mint.key, - false, - )); - if let Some(distribution_token_account) = self.distribution_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *distribution_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_NEW_STANDARD_ID, - false, - )); - } - if let Some(authority_token_account) = self.authority_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *authority_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_NEW_STANDARD_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new( - *self.distribution_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.distribution_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - if let Some(payment_token_program) = self.payment_token_program { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *payment_token_program.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_NEW_STANDARD_ID, - false, - )); - } - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = ApproveTransferInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(12 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.approve_account.clone()); - account_infos.push(self.payment_mint.clone()); - if let Some(distribution_token_account) = self.distribution_token_account { - account_infos.push(distribution_token_account.clone()); - } - if let Some(authority_token_account) = self.authority_token_account { - account_infos.push(authority_token_account.clone()); - } - account_infos.push(self.distribution_account.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.distribution_program.clone()); - account_infos.push(self.token_program.clone()); - if let Some(payment_token_program) = self.payment_token_program { - account_infos.push(payment_token_program.clone()); - } - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `ApproveTransfer` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable, signer]` authority -/// 2. `[]` mint -/// 3. `[writable]` approve_account -/// 4. `[]` payment_mint -/// 5. `[writable, optional]` distribution_token_account -/// 6. `[writable, optional]` authority_token_account -/// 7. `[writable]` distribution_account -/// 8. `[]` system_program -/// 9. `[]` distribution_program -/// 10. `[]` token_program -/// 11. `[optional]` payment_token_program -#[derive(Clone, Debug)] -pub struct ApproveTransferCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ApproveTransferCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ApproveTransferCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - mint: None, - approve_account: None, - payment_mint: None, - distribution_token_account: None, - authority_token_account: None, - distribution_account: None, - system_program: None, - distribution_program: None, - token_program: None, - payment_token_program: None, - buy_amount: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn approve_account( - &mut self, - approve_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.approve_account = Some(approve_account); - self - } - #[inline(always)] - pub fn payment_mint( - &mut self, - payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_token_account( - &mut self, - distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.distribution_token_account = distribution_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn authority_token_account( - &mut self, - authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.authority_token_account = authority_token_account; - self - } - #[inline(always)] - pub fn distribution_account( - &mut self, - distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution_account = Some(distribution_account); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn distribution_program( - &mut self, - distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution_program = Some(distribution_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn payment_token_program( - &mut self, - payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.payment_token_program = payment_token_program; - self - } - #[inline(always)] - pub fn buy_amount(&mut self, buy_amount: u64) -> &mut Self { - self.instruction.buy_amount = Some(buy_amount); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = ApproveTransferInstructionArgs { - buy_amount: self - .instruction - .buy_amount - .clone() - .expect("buy_amount is not set"), - }; - let instruction = ApproveTransferCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - approve_account: self - .instruction - .approve_account - .expect("approve_account is not set"), - - payment_mint: self - .instruction - .payment_mint - .expect("payment_mint is not set"), - - distribution_token_account: self.instruction.distribution_token_account, - - authority_token_account: self.instruction.authority_token_account, - - distribution_account: self - .instruction - .distribution_account - .expect("distribution_account is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - distribution_program: self - .instruction - .distribution_program - .expect("distribution_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - payment_token_program: self.instruction.payment_token_program, - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ApproveTransferCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - approve_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - buy_amount: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/burn_mint_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/burn_mint_account.rs deleted file mode 100644 index 46668d4c..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/burn_mint_account.rs +++ /dev/null @@ -1,475 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct BurnMintAccount { - pub payer: solana_program::pubkey::Pubkey, - - pub user: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub mint_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl BurnMintAccount { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.user, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = BurnMintAccountInstructionData::new().try_to_vec().unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct BurnMintAccountInstructionData { - discriminator: [u8; 8], -} - -impl BurnMintAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [60, 58, 247, 183, 185, 54, 114, 131], - } - } -} - -impl Default for BurnMintAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `BurnMintAccount`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` user -/// 2. `[writable]` mint -/// 3. `[writable]` mint_token_account -/// 4. `[]` manager -/// 5. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct BurnMintAccountBuilder { - payer: Option, - user: Option, - mint: Option, - mint_token_account: Option, - manager: Option, - token_program: Option, - __remaining_accounts: Vec, -} - -impl BurnMintAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn user(&mut self, user: solana_program::pubkey::Pubkey) -> &mut Self { - self.user = Some(user); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = BurnMintAccount { - payer: self.payer.expect("payer is not set"), - user: self.user.expect("user is not set"), - mint: self.mint.expect("mint is not set"), - mint_token_account: self - .mint_token_account - .expect("mint_token_account is not set"), - manager: self.manager.expect("manager is not set"), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `burn_mint_account` CPI accounts. -pub struct BurnMintAccountCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub user: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `burn_mint_account` CPI instruction. -pub struct BurnMintAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub user: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> BurnMintAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: BurnMintAccountCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - user: accounts.user, - mint: accounts.mint, - mint_token_account: accounts.mint_token_account, - manager: accounts.manager, - token_program: accounts.token_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.user.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = BurnMintAccountInstructionData::new().try_to_vec().unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.user.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.mint_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `BurnMintAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` user -/// 2. `[writable]` mint -/// 3. `[writable]` mint_token_account -/// 4. `[]` manager -/// 5. `[]` token_program -#[derive(Clone, Debug)] -pub struct BurnMintAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> BurnMintAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(BurnMintAccountCpiBuilderInstruction { - __program: program, - payer: None, - user: None, - mint: None, - mint_token_account: None, - manager: None, - token_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn user(&mut self, user: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.user = Some(user); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = BurnMintAccountCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - user: self.instruction.user.expect("user is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - mint_token_account: self - .instruction - .mint_token_account - .expect("mint_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct BurnMintAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - user: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/create_group_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/create_group_account.rs deleted file mode 100644 index 7b5bacba..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/create_group_account.rs +++ /dev/null @@ -1,732 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct CreateGroupAccount { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub receiver: solana_program::pubkey::Pubkey, - - pub group: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub mint_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub associated_token_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl CreateGroupAccount { - pub fn instruction( - &self, - args: CreateGroupAccountInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: CreateGroupAccountInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(10 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.receiver, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.group, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.associated_token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = CreateGroupAccountInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct CreateGroupAccountInstructionData { - discriminator: [u8; 8], -} - -impl CreateGroupAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [34, 65, 118, 12, 64, 190, 211, 145], - } - } -} - -impl Default for CreateGroupAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct CreateGroupAccountInstructionArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub max_size: u32, -} - -/// Instruction builder for `CreateGroupAccount`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[]` receiver -/// 3. `[writable]` group -/// 4. `[writable, signer]` mint -/// 5. `[writable]` mint_token_account -/// 6. `[]` manager -/// 7. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 8. `[optional]` associated_token_program (default to `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`) -/// 9. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct CreateGroupAccountBuilder { - payer: Option, - authority: Option, - receiver: Option, - group: Option, - mint: Option, - mint_token_account: Option, - manager: Option, - system_program: Option, - associated_token_program: Option, - token_program: Option, - name: Option, - symbol: Option, - uri: Option, - max_size: Option, - __remaining_accounts: Vec, -} - -impl CreateGroupAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn receiver(&mut self, receiver: solana_program::pubkey::Pubkey) -> &mut Self { - self.receiver = Some(receiver); - self - } - #[inline(always)] - pub fn group(&mut self, group: solana_program::pubkey::Pubkey) -> &mut Self { - self.group = Some(group); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL']` - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.associated_token_program = Some(associated_token_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.uri = Some(uri); - self - } - #[inline(always)] - pub fn max_size(&mut self, max_size: u32) -> &mut Self { - self.max_size = Some(max_size); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = CreateGroupAccount { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - receiver: self.receiver.expect("receiver is not set"), - group: self.group.expect("group is not set"), - mint: self.mint.expect("mint is not set"), - mint_token_account: self - .mint_token_account - .expect("mint_token_account is not set"), - manager: self.manager.expect("manager is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - associated_token_program: self.associated_token_program.unwrap_or( - solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), - ), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = CreateGroupAccountInstructionArgs { - name: self.name.clone().expect("name is not set"), - symbol: self.symbol.clone().expect("symbol is not set"), - uri: self.uri.clone().expect("uri is not set"), - max_size: self.max_size.clone().expect("max_size is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `create_group_account` CPI accounts. -pub struct CreateGroupAccountCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub receiver: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `create_group_account` CPI instruction. -pub struct CreateGroupAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub receiver: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: CreateGroupAccountInstructionArgs, -} - -impl<'a, 'b> CreateGroupAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: CreateGroupAccountCpiAccounts<'a, 'b>, - args: CreateGroupAccountInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - receiver: accounts.receiver, - group: accounts.group, - mint: accounts.mint, - mint_token_account: accounts.mint_token_account, - manager: accounts.manager, - system_program: accounts.system_program, - associated_token_program: accounts.associated_token_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(10 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.receiver.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.group.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.associated_token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = CreateGroupAccountInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(10 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.receiver.clone()); - account_infos.push(self.group.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.mint_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.associated_token_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `CreateGroupAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[]` receiver -/// 3. `[writable]` group -/// 4. `[writable, signer]` mint -/// 5. `[writable]` mint_token_account -/// 6. `[]` manager -/// 7. `[]` system_program -/// 8. `[]` associated_token_program -/// 9. `[]` token_program -#[derive(Clone, Debug)] -pub struct CreateGroupAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> CreateGroupAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(CreateGroupAccountCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - receiver: None, - group: None, - mint: None, - mint_token_account: None, - manager: None, - system_program: None, - associated_token_program: None, - token_program: None, - name: None, - symbol: None, - uri: None, - max_size: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn receiver( - &mut self, - receiver: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.receiver = Some(receiver); - self - } - #[inline(always)] - pub fn group(&mut self, group: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.group = Some(group); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.associated_token_program = Some(associated_token_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.instruction.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.instruction.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.instruction.uri = Some(uri); - self - } - #[inline(always)] - pub fn max_size(&mut self, max_size: u32) -> &mut Self { - self.instruction.max_size = Some(max_size); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = CreateGroupAccountInstructionArgs { - name: self.instruction.name.clone().expect("name is not set"), - symbol: self.instruction.symbol.clone().expect("symbol is not set"), - uri: self.instruction.uri.clone().expect("uri is not set"), - max_size: self - .instruction - .max_size - .clone() - .expect("max_size is not set"), - }; - let instruction = CreateGroupAccountCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - receiver: self.instruction.receiver.expect("receiver is not set"), - - group: self.instruction.group.expect("group is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - mint_token_account: self - .instruction - .mint_token_account - .expect("mint_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - associated_token_program: self - .instruction - .associated_token_program - .expect("associated_token_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct CreateGroupAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - receiver: Option<&'b solana_program::account_info::AccountInfo<'a>>, - group: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - associated_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - name: Option, - symbol: Option, - uri: Option, - max_size: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/create_mint_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/create_mint_account.rs deleted file mode 100644 index 9c0c90b7..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/create_mint_account.rs +++ /dev/null @@ -1,698 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -/// Accounts. -pub struct CreateMintAccount { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub receiver: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub mint_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub associated_token_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl CreateMintAccount { - pub fn instruction( - &self, - args: CreateMintAccountInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: CreateMintAccountInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.receiver, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.associated_token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = CreateMintAccountInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct CreateMintAccountInstructionData { - discriminator: [u8; 8], -} - -impl CreateMintAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [76, 184, 50, 62, 162, 141, 47, 103], - } - } -} - -impl Default for CreateMintAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct CreateMintAccountInstructionArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub permanent_delegate: Option, -} - -/// Instruction builder for `CreateMintAccount`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[]` receiver -/// 3. `[writable, signer]` mint -/// 4. `[writable]` mint_token_account -/// 5. `[]` manager -/// 6. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 7. `[optional]` associated_token_program (default to `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`) -/// 8. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct CreateMintAccountBuilder { - payer: Option, - authority: Option, - receiver: Option, - mint: Option, - mint_token_account: Option, - manager: Option, - system_program: Option, - associated_token_program: Option, - token_program: Option, - name: Option, - symbol: Option, - uri: Option, - permanent_delegate: Option, - __remaining_accounts: Vec, -} - -impl CreateMintAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn receiver(&mut self, receiver: solana_program::pubkey::Pubkey) -> &mut Self { - self.receiver = Some(receiver); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL']` - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.associated_token_program = Some(associated_token_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.uri = Some(uri); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn permanent_delegate(&mut self, permanent_delegate: Pubkey) -> &mut Self { - self.permanent_delegate = Some(permanent_delegate); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = CreateMintAccount { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - receiver: self.receiver.expect("receiver is not set"), - mint: self.mint.expect("mint is not set"), - mint_token_account: self - .mint_token_account - .expect("mint_token_account is not set"), - manager: self.manager.expect("manager is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - associated_token_program: self.associated_token_program.unwrap_or( - solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), - ), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = CreateMintAccountInstructionArgs { - name: self.name.clone().expect("name is not set"), - symbol: self.symbol.clone().expect("symbol is not set"), - uri: self.uri.clone().expect("uri is not set"), - permanent_delegate: self.permanent_delegate.clone(), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `create_mint_account` CPI accounts. -pub struct CreateMintAccountCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub receiver: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `create_mint_account` CPI instruction. -pub struct CreateMintAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub receiver: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: CreateMintAccountInstructionArgs, -} - -impl<'a, 'b> CreateMintAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: CreateMintAccountCpiAccounts<'a, 'b>, - args: CreateMintAccountInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - receiver: accounts.receiver, - mint: accounts.mint, - mint_token_account: accounts.mint_token_account, - manager: accounts.manager, - system_program: accounts.system_program, - associated_token_program: accounts.associated_token_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.receiver.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.associated_token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = CreateMintAccountInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(9 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.receiver.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.mint_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.associated_token_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `CreateMintAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[]` receiver -/// 3. `[writable, signer]` mint -/// 4. `[writable]` mint_token_account -/// 5. `[]` manager -/// 6. `[]` system_program -/// 7. `[]` associated_token_program -/// 8. `[]` token_program -#[derive(Clone, Debug)] -pub struct CreateMintAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> CreateMintAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(CreateMintAccountCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - receiver: None, - mint: None, - mint_token_account: None, - manager: None, - system_program: None, - associated_token_program: None, - token_program: None, - name: None, - symbol: None, - uri: None, - permanent_delegate: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn receiver( - &mut self, - receiver: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.receiver = Some(receiver); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.associated_token_program = Some(associated_token_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.instruction.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.instruction.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.instruction.uri = Some(uri); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn permanent_delegate(&mut self, permanent_delegate: Pubkey) -> &mut Self { - self.instruction.permanent_delegate = Some(permanent_delegate); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = CreateMintAccountInstructionArgs { - name: self.instruction.name.clone().expect("name is not set"), - symbol: self.instruction.symbol.clone().expect("symbol is not set"), - uri: self.instruction.uri.clone().expect("uri is not set"), - permanent_delegate: self.instruction.permanent_delegate.clone(), - }; - let instruction = CreateMintAccountCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - receiver: self.instruction.receiver.expect("receiver is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - mint_token_account: self - .instruction - .mint_token_account - .expect("mint_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - associated_token_program: self - .instruction - .associated_token_program - .expect("associated_token_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct CreateMintAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - receiver: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - associated_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - name: Option, - symbol: Option, - uri: Option, - permanent_delegate: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/execute.rs b/clients/rust/wen_new_standard/src/generated/instructions/execute.rs deleted file mode 100644 index bab2f4c4..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/execute.rs +++ /dev/null @@ -1,492 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct Execute { - pub source_account: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub destination_account: solana_program::pubkey::Pubkey, - - pub owner_delegate: solana_program::pubkey::Pubkey, - - pub extra_metas_account: solana_program::pubkey::Pubkey, -} - -impl Execute { - pub fn instruction( - &self, - args: ExecuteInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: ExecuteInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.source_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.destination_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.owner_delegate, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.extra_metas_account, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = ExecuteInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ExecuteInstructionData { - discriminator: [u8; 8], -} - -impl ExecuteInstructionData { - pub fn new() -> Self { - Self { - discriminator: [105, 37, 101, 197, 75, 251, 102, 26], - } - } -} - -impl Default for ExecuteInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ExecuteInstructionArgs { - pub amount: u64, -} - -/// Instruction builder for `Execute`. -/// -/// ### Accounts: -/// -/// 0. `[]` source_account -/// 1. `[]` mint -/// 2. `[]` destination_account -/// 3. `[]` owner_delegate -/// 4. `[]` extra_metas_account -#[derive(Clone, Debug, Default)] -pub struct ExecuteBuilder { - source_account: Option, - mint: Option, - destination_account: Option, - owner_delegate: Option, - extra_metas_account: Option, - amount: Option, - __remaining_accounts: Vec, -} - -impl ExecuteBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn source_account(&mut self, source_account: solana_program::pubkey::Pubkey) -> &mut Self { - self.source_account = Some(source_account); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn destination_account( - &mut self, - destination_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.destination_account = Some(destination_account); - self - } - #[inline(always)] - pub fn owner_delegate(&mut self, owner_delegate: solana_program::pubkey::Pubkey) -> &mut Self { - self.owner_delegate = Some(owner_delegate); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn amount(&mut self, amount: u64) -> &mut Self { - self.amount = Some(amount); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = Execute { - source_account: self.source_account.expect("source_account is not set"), - mint: self.mint.expect("mint is not set"), - destination_account: self - .destination_account - .expect("destination_account is not set"), - owner_delegate: self.owner_delegate.expect("owner_delegate is not set"), - extra_metas_account: self - .extra_metas_account - .expect("extra_metas_account is not set"), - }; - let args = ExecuteInstructionArgs { - amount: self.amount.clone().expect("amount is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `execute` CPI accounts. -pub struct ExecuteCpiAccounts<'a, 'b> { - pub source_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub destination_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub owner_delegate: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `execute` CPI instruction. -pub struct ExecuteCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub source_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub destination_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub owner_delegate: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: ExecuteInstructionArgs, -} - -impl<'a, 'b> ExecuteCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ExecuteCpiAccounts<'a, 'b>, - args: ExecuteInstructionArgs, - ) -> Self { - Self { - __program: program, - source_account: accounts.source_account, - mint: accounts.mint, - destination_account: accounts.destination_account, - owner_delegate: accounts.owner_delegate, - extra_metas_account: accounts.extra_metas_account, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.source_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.destination_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.owner_delegate.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.extra_metas_account.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = ExecuteInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(5 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.source_account.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.destination_account.clone()); - account_infos.push(self.owner_delegate.clone()); - account_infos.push(self.extra_metas_account.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `Execute` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[]` source_account -/// 1. `[]` mint -/// 2. `[]` destination_account -/// 3. `[]` owner_delegate -/// 4. `[]` extra_metas_account -#[derive(Clone, Debug)] -pub struct ExecuteCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ExecuteCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ExecuteCpiBuilderInstruction { - __program: program, - source_account: None, - mint: None, - destination_account: None, - owner_delegate: None, - extra_metas_account: None, - amount: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn source_account( - &mut self, - source_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.source_account = Some(source_account); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn destination_account( - &mut self, - destination_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.destination_account = Some(destination_account); - self - } - #[inline(always)] - pub fn owner_delegate( - &mut self, - owner_delegate: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.owner_delegate = Some(owner_delegate); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn amount(&mut self, amount: u64) -> &mut Self { - self.instruction.amount = Some(amount); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = ExecuteInstructionArgs { - amount: self.instruction.amount.clone().expect("amount is not set"), - }; - let instruction = ExecuteCpi { - __program: self.instruction.__program, - - source_account: self - .instruction - .source_account - .expect("source_account is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - destination_account: self - .instruction - .destination_account - .expect("destination_account is not set"), - - owner_delegate: self - .instruction - .owner_delegate - .expect("owner_delegate is not set"), - - extra_metas_account: self - .instruction - .extra_metas_account - .expect("extra_metas_account is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ExecuteCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - source_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - destination_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - owner_delegate: Option<&'b solana_program::account_info::AccountInfo<'a>>, - extra_metas_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - amount: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/freeze_mint_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/freeze_mint_account.rs deleted file mode 100644 index 7c70c48e..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/freeze_mint_account.rs +++ /dev/null @@ -1,491 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct FreezeMintAccount { - pub user: solana_program::pubkey::Pubkey, - - pub delegate_authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub mint_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl FreezeMintAccount { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.user, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.delegate_authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = FreezeMintAccountInstructionData::new() - .try_to_vec() - .unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct FreezeMintAccountInstructionData { - discriminator: [u8; 8], -} - -impl FreezeMintAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [171, 30, 154, 191, 27, 0, 134, 216], - } - } -} - -impl Default for FreezeMintAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `FreezeMintAccount`. -/// -/// ### Accounts: -/// -/// 0. `[]` user -/// 1. `[writable, signer]` delegate_authority -/// 2. `[]` mint -/// 3. `[writable]` mint_token_account -/// 4. `[]` manager -/// 5. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct FreezeMintAccountBuilder { - user: Option, - delegate_authority: Option, - mint: Option, - mint_token_account: Option, - manager: Option, - token_program: Option, - __remaining_accounts: Vec, -} - -impl FreezeMintAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn user(&mut self, user: solana_program::pubkey::Pubkey) -> &mut Self { - self.user = Some(user); - self - } - #[inline(always)] - pub fn delegate_authority( - &mut self, - delegate_authority: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.delegate_authority = Some(delegate_authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = FreezeMintAccount { - user: self.user.expect("user is not set"), - delegate_authority: self - .delegate_authority - .expect("delegate_authority is not set"), - mint: self.mint.expect("mint is not set"), - mint_token_account: self - .mint_token_account - .expect("mint_token_account is not set"), - manager: self.manager.expect("manager is not set"), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `freeze_mint_account` CPI accounts. -pub struct FreezeMintAccountCpiAccounts<'a, 'b> { - pub user: &'b solana_program::account_info::AccountInfo<'a>, - - pub delegate_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `freeze_mint_account` CPI instruction. -pub struct FreezeMintAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub user: &'b solana_program::account_info::AccountInfo<'a>, - - pub delegate_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> FreezeMintAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: FreezeMintAccountCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - user: accounts.user, - delegate_authority: accounts.delegate_authority, - mint: accounts.mint, - mint_token_account: accounts.mint_token_account, - manager: accounts.manager, - token_program: accounts.token_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.user.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.delegate_authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = FreezeMintAccountInstructionData::new() - .try_to_vec() - .unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.user.clone()); - account_infos.push(self.delegate_authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.mint_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `FreezeMintAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[]` user -/// 1. `[writable, signer]` delegate_authority -/// 2. `[]` mint -/// 3. `[writable]` mint_token_account -/// 4. `[]` manager -/// 5. `[]` token_program -#[derive(Clone, Debug)] -pub struct FreezeMintAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> FreezeMintAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(FreezeMintAccountCpiBuilderInstruction { - __program: program, - user: None, - delegate_authority: None, - mint: None, - mint_token_account: None, - manager: None, - token_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn user(&mut self, user: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.user = Some(user); - self - } - #[inline(always)] - pub fn delegate_authority( - &mut self, - delegate_authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.delegate_authority = Some(delegate_authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = FreezeMintAccountCpi { - __program: self.instruction.__program, - - user: self.instruction.user.expect("user is not set"), - - delegate_authority: self - .instruction - .delegate_authority - .expect("delegate_authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - mint_token_account: self - .instruction - .mint_token_account - .expect("mint_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct FreezeMintAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - user: Option<&'b solana_program::account_info::AccountInfo<'a>>, - delegate_authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/init_manager_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/init_manager_account.rs deleted file mode 100644 index 5c41ae25..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/init_manager_account.rs +++ /dev/null @@ -1,368 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct InitManagerAccount { - pub payer: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl InitManagerAccount { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(3 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = InitManagerAccountInstructionData::new() - .try_to_vec() - .unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct InitManagerAccountInstructionData { - discriminator: [u8; 8], -} - -impl InitManagerAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [63, 114, 69, 118, 3, 198, 215, 72], - } - } -} - -impl Default for InitManagerAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `InitManagerAccount`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable]` manager -/// 2. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct InitManagerAccountBuilder { - payer: Option, - manager: Option, - system_program: Option, - __remaining_accounts: Vec, -} - -impl InitManagerAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = InitManagerAccount { - payer: self.payer.expect("payer is not set"), - manager: self.manager.expect("manager is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `init_manager_account` CPI accounts. -pub struct InitManagerAccountCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `init_manager_account` CPI instruction. -pub struct InitManagerAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> InitManagerAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: InitManagerAccountCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - manager: accounts.manager, - system_program: accounts.system_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(3 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = InitManagerAccountInstructionData::new() - .try_to_vec() - .unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(3 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `InitManagerAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable]` manager -/// 2. `[]` system_program -#[derive(Clone, Debug)] -pub struct InitManagerAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> InitManagerAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(InitManagerAccountCpiBuilderInstruction { - __program: program, - payer: None, - manager: None, - system_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = InitManagerAccountCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct InitManagerAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/mod.rs b/clients/rust/wen_new_standard/src/generated/instructions/mod.rs deleted file mode 100644 index c70146c6..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/mod.rs +++ /dev/null @@ -1,38 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#add_metadata; -pub(crate) mod r#add_mint_to_group; -pub(crate) mod r#add_royalties; -pub(crate) mod r#approve_transfer; -pub(crate) mod r#burn_mint_account; -pub(crate) mod r#create_group_account; -pub(crate) mod r#create_mint_account; -pub(crate) mod r#execute; -pub(crate) mod r#freeze_mint_account; -pub(crate) mod r#init_manager_account; -pub(crate) mod r#modify_royalties; -pub(crate) mod r#remove_metadata; -pub(crate) mod r#remove_mint_from_group; -pub(crate) mod r#thaw_mint_account; -pub(crate) mod r#update_group_account; - -pub use self::r#add_metadata::*; -pub use self::r#add_mint_to_group::*; -pub use self::r#add_royalties::*; -pub use self::r#approve_transfer::*; -pub use self::r#burn_mint_account::*; -pub use self::r#create_group_account::*; -pub use self::r#create_mint_account::*; -pub use self::r#execute::*; -pub use self::r#freeze_mint_account::*; -pub use self::r#init_manager_account::*; -pub use self::r#modify_royalties::*; -pub use self::r#remove_metadata::*; -pub use self::r#remove_mint_from_group::*; -pub use self::r#thaw_mint_account::*; -pub use self::r#update_group_account::*; diff --git a/clients/rust/wen_new_standard/src/generated/instructions/modify_royalties.rs b/clients/rust/wen_new_standard/src/generated/instructions/modify_royalties.rs deleted file mode 100644 index 099d59c3..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/modify_royalties.rs +++ /dev/null @@ -1,479 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::UpdateRoyaltiesArgs; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct ModifyRoyalties { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl ModifyRoyalties { - pub fn instruction( - &self, - args: ModifyRoyaltiesInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: ModifyRoyaltiesInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = ModifyRoyaltiesInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ModifyRoyaltiesInstructionData { - discriminator: [u8; 8], -} - -impl ModifyRoyaltiesInstructionData { - pub fn new() -> Self { - Self { - discriminator: [199, 95, 20, 107, 136, 161, 93, 137], - } - } -} - -impl Default for ModifyRoyaltiesInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ModifyRoyaltiesInstructionArgs { - pub args: UpdateRoyaltiesArgs, -} - -/// Instruction builder for `ModifyRoyalties`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 4. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct ModifyRoyaltiesBuilder { - payer: Option, - authority: Option, - mint: Option, - system_program: Option, - token_program: Option, - args: Option, - __remaining_accounts: Vec, -} - -impl ModifyRoyaltiesBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: UpdateRoyaltiesArgs) -> &mut Self { - self.args = Some(args); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = ModifyRoyalties { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - mint: self.mint.expect("mint is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = ModifyRoyaltiesInstructionArgs { - args: self.args.clone().expect("args is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `modify_royalties` CPI accounts. -pub struct ModifyRoyaltiesCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `modify_royalties` CPI instruction. -pub struct ModifyRoyaltiesCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: ModifyRoyaltiesInstructionArgs, -} - -impl<'a, 'b> ModifyRoyaltiesCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ModifyRoyaltiesCpiAccounts<'a, 'b>, - args: ModifyRoyaltiesInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - mint: accounts.mint, - system_program: accounts.system_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = ModifyRoyaltiesInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(5 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `ModifyRoyalties` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[]` system_program -/// 4. `[]` token_program -#[derive(Clone, Debug)] -pub struct ModifyRoyaltiesCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ModifyRoyaltiesCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ModifyRoyaltiesCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - mint: None, - system_program: None, - token_program: None, - args: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: UpdateRoyaltiesArgs) -> &mut Self { - self.instruction.args = Some(args); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = ModifyRoyaltiesInstructionArgs { - args: self.instruction.args.clone().expect("args is not set"), - }; - let instruction = ModifyRoyaltiesCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ModifyRoyaltiesCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - args: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/remove_metadata.rs b/clients/rust/wen_new_standard/src/generated/instructions/remove_metadata.rs deleted file mode 100644 index 0646c928..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/remove_metadata.rs +++ /dev/null @@ -1,479 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::RemoveMetadataArgs; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct RemoveMetadata { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl RemoveMetadata { - pub fn instruction( - &self, - args: RemoveMetadataInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: RemoveMetadataInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = RemoveMetadataInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct RemoveMetadataInstructionData { - discriminator: [u8; 8], -} - -impl RemoveMetadataInstructionData { - pub fn new() -> Self { - Self { - discriminator: [81, 68, 231, 49, 91, 8, 111, 160], - } - } -} - -impl Default for RemoveMetadataInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct RemoveMetadataInstructionArgs { - pub args: Vec, -} - -/// Instruction builder for `RemoveMetadata`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 4. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct RemoveMetadataBuilder { - payer: Option, - authority: Option, - mint: Option, - system_program: Option, - token_program: Option, - args: Option>, - __remaining_accounts: Vec, -} - -impl RemoveMetadataBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: Vec) -> &mut Self { - self.args = Some(args); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = RemoveMetadata { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - mint: self.mint.expect("mint is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = RemoveMetadataInstructionArgs { - args: self.args.clone().expect("args is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `remove_metadata` CPI accounts. -pub struct RemoveMetadataCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `remove_metadata` CPI instruction. -pub struct RemoveMetadataCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: RemoveMetadataInstructionArgs, -} - -impl<'a, 'b> RemoveMetadataCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: RemoveMetadataCpiAccounts<'a, 'b>, - args: RemoveMetadataInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - mint: accounts.mint, - system_program: accounts.system_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(5 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = RemoveMetadataInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(5 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `RemoveMetadata` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` mint -/// 3. `[]` system_program -/// 4. `[]` token_program -#[derive(Clone, Debug)] -pub struct RemoveMetadataCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> RemoveMetadataCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(RemoveMetadataCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - mint: None, - system_program: None, - token_program: None, - args: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn args(&mut self, args: Vec) -> &mut Self { - self.instruction.args = Some(args); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = RemoveMetadataInstructionArgs { - args: self.instruction.args.clone().expect("args is not set"), - }; - let instruction = RemoveMetadataCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct RemoveMetadataCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - args: Option>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/remove_mint_from_group.rs b/clients/rust/wen_new_standard/src/generated/instructions/remove_mint_from_group.rs deleted file mode 100644 index f7af275a..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/remove_mint_from_group.rs +++ /dev/null @@ -1,551 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct RemoveMintFromGroup { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub group: solana_program::pubkey::Pubkey, - - pub member: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl RemoveMintFromGroup { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(8 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.group, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.member, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = RemoveMintFromGroupInstructionData::new() - .try_to_vec() - .unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct RemoveMintFromGroupInstructionData { - discriminator: [u8; 8], -} - -impl RemoveMintFromGroupInstructionData { - pub fn new() -> Self { - Self { - discriminator: [231, 224, 145, 240, 192, 4, 204, 218], - } - } -} - -impl Default for RemoveMintFromGroupInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `RemoveMintFromGroup`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` group -/// 3. `[writable]` member -/// 4. `[writable]` mint -/// 5. `[]` manager -/// 6. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 7. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct RemoveMintFromGroupBuilder { - payer: Option, - authority: Option, - group: Option, - member: Option, - mint: Option, - manager: Option, - system_program: Option, - token_program: Option, - __remaining_accounts: Vec, -} - -impl RemoveMintFromGroupBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn group(&mut self, group: solana_program::pubkey::Pubkey) -> &mut Self { - self.group = Some(group); - self - } - #[inline(always)] - pub fn member(&mut self, member: solana_program::pubkey::Pubkey) -> &mut Self { - self.member = Some(member); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = RemoveMintFromGroup { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - group: self.group.expect("group is not set"), - member: self.member.expect("member is not set"), - mint: self.mint.expect("mint is not set"), - manager: self.manager.expect("manager is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `remove_mint_from_group` CPI accounts. -pub struct RemoveMintFromGroupCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub member: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `remove_mint_from_group` CPI instruction. -pub struct RemoveMintFromGroupCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub member: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> RemoveMintFromGroupCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: RemoveMintFromGroupCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - group: accounts.group, - member: accounts.member, - mint: accounts.mint, - manager: accounts.manager, - system_program: accounts.system_program, - token_program: accounts.token_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(8 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.group.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.member.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = RemoveMintFromGroupInstructionData::new() - .try_to_vec() - .unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(8 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.group.clone()); - account_infos.push(self.member.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `RemoveMintFromGroup` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` authority -/// 2. `[writable]` group -/// 3. `[writable]` member -/// 4. `[writable]` mint -/// 5. `[]` manager -/// 6. `[]` system_program -/// 7. `[]` token_program -#[derive(Clone, Debug)] -pub struct RemoveMintFromGroupCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> RemoveMintFromGroupCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(RemoveMintFromGroupCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - group: None, - member: None, - mint: None, - manager: None, - system_program: None, - token_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn group(&mut self, group: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.group = Some(group); - self - } - #[inline(always)] - pub fn member( - &mut self, - member: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.member = Some(member); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = RemoveMintFromGroupCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - group: self.instruction.group.expect("group is not set"), - - member: self.instruction.member.expect("member is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct RemoveMintFromGroupCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - group: Option<&'b solana_program::account_info::AccountInfo<'a>>, - member: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/thaw_mint_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/thaw_mint_account.rs deleted file mode 100644 index 3761a806..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/thaw_mint_account.rs +++ /dev/null @@ -1,487 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct ThawMintAccount { - pub user: solana_program::pubkey::Pubkey, - - pub delegate_authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub mint_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl ThawMintAccount { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.user, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.delegate_authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = ThawMintAccountInstructionData::new().try_to_vec().unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ThawMintAccountInstructionData { - discriminator: [u8; 8], -} - -impl ThawMintAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [27, 53, 61, 16, 162, 190, 27, 72], - } - } -} - -impl Default for ThawMintAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `ThawMintAccount`. -/// -/// ### Accounts: -/// -/// 0. `[]` user -/// 1. `[writable, signer]` delegate_authority -/// 2. `[]` mint -/// 3. `[writable]` mint_token_account -/// 4. `[]` manager -/// 5. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct ThawMintAccountBuilder { - user: Option, - delegate_authority: Option, - mint: Option, - mint_token_account: Option, - manager: Option, - token_program: Option, - __remaining_accounts: Vec, -} - -impl ThawMintAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn user(&mut self, user: solana_program::pubkey::Pubkey) -> &mut Self { - self.user = Some(user); - self - } - #[inline(always)] - pub fn delegate_authority( - &mut self, - delegate_authority: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.delegate_authority = Some(delegate_authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = ThawMintAccount { - user: self.user.expect("user is not set"), - delegate_authority: self - .delegate_authority - .expect("delegate_authority is not set"), - mint: self.mint.expect("mint is not set"), - mint_token_account: self - .mint_token_account - .expect("mint_token_account is not set"), - manager: self.manager.expect("manager is not set"), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `thaw_mint_account` CPI accounts. -pub struct ThawMintAccountCpiAccounts<'a, 'b> { - pub user: &'b solana_program::account_info::AccountInfo<'a>, - - pub delegate_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `thaw_mint_account` CPI instruction. -pub struct ThawMintAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub user: &'b solana_program::account_info::AccountInfo<'a>, - - pub delegate_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> ThawMintAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ThawMintAccountCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - user: accounts.user, - delegate_authority: accounts.delegate_authority, - mint: accounts.mint, - mint_token_account: accounts.mint_token_account, - manager: accounts.manager, - token_program: accounts.token_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.user.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.delegate_authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = ThawMintAccountInstructionData::new().try_to_vec().unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.user.clone()); - account_infos.push(self.delegate_authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.mint_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `ThawMintAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[]` user -/// 1. `[writable, signer]` delegate_authority -/// 2. `[]` mint -/// 3. `[writable]` mint_token_account -/// 4. `[]` manager -/// 5. `[]` token_program -#[derive(Clone, Debug)] -pub struct ThawMintAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ThawMintAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ThawMintAccountCpiBuilderInstruction { - __program: program, - user: None, - delegate_authority: None, - mint: None, - mint_token_account: None, - manager: None, - token_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn user(&mut self, user: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.user = Some(user); - self - } - #[inline(always)] - pub fn delegate_authority( - &mut self, - delegate_authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.delegate_authority = Some(delegate_authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = ThawMintAccountCpi { - __program: self.instruction.__program, - - user: self.instruction.user.expect("user is not set"), - - delegate_authority: self - .instruction - .delegate_authority - .expect("delegate_authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - mint_token_account: self - .instruction - .mint_token_account - .expect("mint_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ThawMintAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - user: Option<&'b solana_program::account_info::AccountInfo<'a>>, - delegate_authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/instructions/update_group_account.rs b/clients/rust/wen_new_standard/src/generated/instructions/update_group_account.rs deleted file mode 100644 index b9d55331..00000000 --- a/clients/rust/wen_new_standard/src/generated/instructions/update_group_account.rs +++ /dev/null @@ -1,567 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct UpdateGroupAccount { - pub payer: solana_program::pubkey::Pubkey, - - pub authority: solana_program::pubkey::Pubkey, - - pub group: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, -} - -impl UpdateGroupAccount { - pub fn instruction( - &self, - args: UpdateGroupAccountInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: UpdateGroupAccountInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.authority, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.group, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = UpdateGroupAccountInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct UpdateGroupAccountInstructionData { - discriminator: [u8; 8], -} - -impl UpdateGroupAccountInstructionData { - pub fn new() -> Self { - Self { - discriminator: [153, 106, 174, 53, 133, 171, 207, 52], - } - } -} - -impl Default for UpdateGroupAccountInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct UpdateGroupAccountInstructionArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub max_size: u32, -} - -/// Instruction builder for `UpdateGroupAccount`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[]` authority -/// 2. `[writable]` group -/// 3. `[writable]` mint -/// 4. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 5. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -#[derive(Clone, Debug, Default)] -pub struct UpdateGroupAccountBuilder { - payer: Option, - authority: Option, - group: Option, - mint: Option, - system_program: Option, - token_program: Option, - name: Option, - symbol: Option, - uri: Option, - max_size: Option, - __remaining_accounts: Vec, -} - -impl UpdateGroupAccountBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn group(&mut self, group: solana_program::pubkey::Pubkey) -> &mut Self { - self.group = Some(group); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.uri = Some(uri); - self - } - #[inline(always)] - pub fn max_size(&mut self, max_size: u32) -> &mut Self { - self.max_size = Some(max_size); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = UpdateGroupAccount { - payer: self.payer.expect("payer is not set"), - authority: self.authority.expect("authority is not set"), - group: self.group.expect("group is not set"), - mint: self.mint.expect("mint is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - }; - let args = UpdateGroupAccountInstructionArgs { - name: self.name.clone().expect("name is not set"), - symbol: self.symbol.clone().expect("symbol is not set"), - uri: self.uri.clone().expect("uri is not set"), - max_size: self.max_size.clone().expect("max_size is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `update_group_account` CPI accounts. -pub struct UpdateGroupAccountCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `update_group_account` CPI instruction. -pub struct UpdateGroupAccountCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub group: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: UpdateGroupAccountInstructionArgs, -} - -impl<'a, 'b> UpdateGroupAccountCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: UpdateGroupAccountCpiAccounts<'a, 'b>, - args: UpdateGroupAccountInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - authority: accounts.authority, - group: accounts.group, - mint: accounts.mint, - system_program: accounts.system_program, - token_program: accounts.token_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.authority.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.group.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = UpdateGroupAccountInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_NEW_STANDARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.group.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.token_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `UpdateGroupAccount` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[]` authority -/// 2. `[writable]` group -/// 3. `[writable]` mint -/// 4. `[]` system_program -/// 5. `[]` token_program -#[derive(Clone, Debug)] -pub struct UpdateGroupAccountCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> UpdateGroupAccountCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(UpdateGroupAccountCpiBuilderInstruction { - __program: program, - payer: None, - authority: None, - group: None, - mint: None, - system_program: None, - token_program: None, - name: None, - symbol: None, - uri: None, - max_size: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn group(&mut self, group: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.group = Some(group); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.instruction.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.instruction.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.instruction.uri = Some(uri); - self - } - #[inline(always)] - pub fn max_size(&mut self, max_size: u32) -> &mut Self { - self.instruction.max_size = Some(max_size); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = UpdateGroupAccountInstructionArgs { - name: self.instruction.name.clone().expect("name is not set"), - symbol: self.instruction.symbol.clone().expect("symbol is not set"), - uri: self.instruction.uri.clone().expect("uri is not set"), - max_size: self - .instruction - .max_size - .clone() - .expect("max_size is not set"), - }; - let instruction = UpdateGroupAccountCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - authority: self.instruction.authority.expect("authority is not set"), - - group: self.instruction.group.expect("group is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct UpdateGroupAccountCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - group: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - name: Option, - symbol: Option, - uri: Option, - max_size: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_new_standard/src/generated/mod.rs b/clients/rust/wen_new_standard/src/generated/mod.rs deleted file mode 100644 index a3793d7c..00000000 --- a/clients/rust/wen_new_standard/src/generated/mod.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub mod accounts; -pub mod errors; -pub mod instructions; -pub mod programs; -pub mod types; - -pub(crate) use programs::*; diff --git a/clients/rust/wen_new_standard/src/generated/programs.rs b/clients/rust/wen_new_standard/src/generated/programs.rs deleted file mode 100644 index 389fefad..00000000 --- a/clients/rust/wen_new_standard/src/generated/programs.rs +++ /dev/null @@ -1,11 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use solana_program::{pubkey, pubkey::Pubkey}; - -/// `wen_new_standard` program ID. -pub const WEN_NEW_STANDARD_ID: Pubkey = pubkey!("wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM"); diff --git a/clients/rust/wen_new_standard/src/generated/types/add_metadata_args.rs b/clients/rust/wen_new_standard/src/generated/types/add_metadata_args.rs deleted file mode 100644 index a34839cf..00000000 --- a/clients/rust/wen_new_standard/src/generated/types/add_metadata_args.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct AddMetadataArgs { - pub field: String, - pub value: String, -} diff --git a/clients/rust/wen_new_standard/src/generated/types/creator_with_share.rs b/clients/rust/wen_new_standard/src/generated/types/creator_with_share.rs deleted file mode 100644 index 33818b21..00000000 --- a/clients/rust/wen_new_standard/src/generated/types/creator_with_share.rs +++ /dev/null @@ -1,21 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct CreatorWithShare { - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub address: Pubkey, - pub share: u8, -} diff --git a/clients/rust/wen_new_standard/src/generated/types/mod.rs b/clients/rust/wen_new_standard/src/generated/types/mod.rs deleted file mode 100644 index fdeef7b8..00000000 --- a/clients/rust/wen_new_standard/src/generated/types/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#add_metadata_args; -pub(crate) mod r#creator_with_share; -pub(crate) mod r#remove_metadata_args; -pub(crate) mod r#update_royalties_args; - -pub use self::r#add_metadata_args::*; -pub use self::r#creator_with_share::*; -pub use self::r#remove_metadata_args::*; -pub use self::r#update_royalties_args::*; diff --git a/clients/rust/wen_new_standard/src/generated/types/remove_metadata_args.rs b/clients/rust/wen_new_standard/src/generated/types/remove_metadata_args.rs deleted file mode 100644 index 999d1c2c..00000000 --- a/clients/rust/wen_new_standard/src/generated/types/remove_metadata_args.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct RemoveMetadataArgs { - pub field: String, - pub value: String, -} diff --git a/clients/rust/wen_new_standard/src/generated/types/update_royalties_args.rs b/clients/rust/wen_new_standard/src/generated/types/update_royalties_args.rs deleted file mode 100644 index c6221e62..00000000 --- a/clients/rust/wen_new_standard/src/generated/types/update_royalties_args.rs +++ /dev/null @@ -1,17 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::CreatorWithShare; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct UpdateRoyaltiesArgs { - pub royalty_basis_points: u16, - pub creators: Vec, -} diff --git a/clients/rust/wen_new_standard/src/lib.rs b/clients/rust/wen_new_standard/src/lib.rs deleted file mode 100644 index 1ca779a0..00000000 --- a/clients/rust/wen_new_standard/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -mod generated; - -pub use generated::programs::WEN_NEW_STANDARD_ID as ID; -pub use generated::*; diff --git a/clients/rust/wen_royalty_distribution/CONTRIBUTING.md b/clients/rust/wen_royalty_distribution/CONTRIBUTING.md deleted file mode 100644 index 6aa40090..00000000 --- a/clients/rust/wen_royalty_distribution/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Contributing to the Rust client - -This is a quick guide to help you contribute to the Rust client of WNS. - -## Getting started - -To build and test the Rust client, you can use `cargo`. - -```sh -# Build the client -cargo build - -# Test the client (requires building the program first) -cargo test-sbf --sbf-out-dir ../../programs/.bin -``` - -When something changes in the program(s), make sure to run `yarn clients` in the root directory, to re-generate the clients accordingly. \ No newline at end of file diff --git a/clients/rust/wen_royalty_distribution/Cargo.lock b/clients/rust/wen_royalty_distribution/Cargo.lock deleted file mode 100644 index 95b62530..00000000 --- a/clients/rust/wen_royalty_distribution/Cargo.lock +++ /dev/null @@ -1,6210 +0,0 @@ -# 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 = "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.15", - "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.15", - "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 = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - -[[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.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" -dependencies = [ - "anchor-syn", - "bs58 0.5.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb2a5eb0860e661ab31aff7bb5e0288357b176380e985bade4ccb395981b42d" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58 0.5.1", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" -dependencies = [ - "anchor-syn", - "borsh-derive-internal 0.10.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6620c9486d9d36a4389cab5e37dc34a42ed0bfaa62e6a75a2999ce98f8f2e373" -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.21.7", - "bincode", - "borsh 0.10.3", - "bytemuck", - "getrandom 0.2.15", - "solana-program", - "thiserror", -] - -[[package]] -name = "anchor-lang-idl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "serde", - "serde_json", - "sha2 0.10.8", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99daacb53b55cfd37ce14d6c9905929721137fd4c67bbab44a19802aecb622f" -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 = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "aquamarine" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" -dependencies = [ - "include_dir", - "itertools", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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.5", - "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.5", - "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.5", -] - -[[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.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" -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.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[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 = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" -dependencies = [ - "borsh-derive 1.5.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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.64", - "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 = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" -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.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" -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.64", -] - -[[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 = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[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.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" -dependencies = [ - "jobserver", - "libc", - "once_cell", -] - -[[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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.5", -] - -[[package]] -name = "chrono-humanize" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" -dependencies = [ - "chrono", -] - -[[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", - "indexmap 1.9.3", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap 0.16.1", -] - -[[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 = "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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[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 = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[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 = "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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.64", -] - -[[package]] -name = "darling_macro" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.64", -] - -[[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.5", - "lock_api", - "once_cell", - "parking_lot_core", - "rayon", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[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.5", - "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", - "serde", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "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 = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - -[[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 = "dir-diff" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" -dependencies = [ - "walkdir", -] - -[[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.64", -] - -[[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.64", -] - -[[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[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 = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "either" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.5", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -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.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "feature-probe" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" - -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float-cmp" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[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 = "fragile" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" - -[[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.64", -] - -[[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-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.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[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 = "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 0.7.11", - "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" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.11", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[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.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[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 = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[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 = "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 = "include_dir" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "index_list" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70891286cb8e844fdfcf1178b47569699f9e20b5ecc4b45a6240a64771444638" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", - "serde", -] - -[[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.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -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.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -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 = "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.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[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-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.5", - "thiserror", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "lru" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lz4" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" -dependencies = [ - "libc", - "lz4-sys", -] - -[[package]] -name = "lz4-sys" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" -dependencies = [ - "cc", - "libc", -] - -[[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.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.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" -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 = "mockall" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" -dependencies = [ - "num-integer", - "num-traits", -] - -[[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.64", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_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.64", -] - -[[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.64", -] - -[[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-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - -[[package]] -name = "ouroboros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" -dependencies = [ - "aliasable", - "ouroboros_macro", -] - -[[package]] -name = "ouroboros_macro" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.1", - "smallvec", - "windows-targets 0.52.5", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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 = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "predicates" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" -dependencies = [ - "difflib", - "float-cmp", - "itertools", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[package]] -name = "predicates-core" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" - -[[package]] -name = "predicates-tree" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[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", - "syn 1.0.109", - "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.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" -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.64", -] - -[[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.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "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 = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", -] - -[[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 = "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", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-rustls", - "tokio-util 0.7.11", - "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.15", - "libc", - "spin 0.9.8", - "untrusted 0.9.0", - "windows-sys 0.52.0", -] - -[[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 = "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 = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -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.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[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.64", -] - -[[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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "seqlock" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" -dependencies = [ - "parking_lot", -] - -[[package]] -name = "serde" -version = "1.0.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" -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.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "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 2.3.3", -] - -[[package]] -name = "serde_with" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.2.6", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.8.1", - "time", -] - -[[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.64", -] - -[[package]] -name = "serde_with_macros" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -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.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solana-account-decoder" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1387123a0daab82dbd205c543f8bba0ed5345fc6b8eaa910ecd9dcb7469fc78" -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-accounts-db" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2033eae13b5ab9d3adc6c90ea06a37177cd2de4fe4c04159be5c583756a5414" -dependencies = [ - "arrayref", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lz4", - "memmap2", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "seqlock", - "serde", - "serde_derive", - "smallvec", - "solana-bucket-map", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-measure", - "solana-metrics", - "solana-nohash-hasher", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "static_assertions", - "strum", - "strum_macros", - "tar", - "tempfile", - "thiserror", -] - -[[package]] -name = "solana-address-lookup-table-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396a385d0c7cc65fca238c757cca29c41d09fe18734d5f85890c23cd6e0d3876" -dependencies = [ - "bincode", - "bytemuck", - "log", - "num-derive 0.4.2", - "num-traits", - "rustc_version", - "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-program", - "solana-program-runtime", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-banks-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a0af125d95032a260a9dbc020d571d8904874ada1505f3e860a88f915b4c00" -dependencies = [ - "borsh 1.5.0", - "futures", - "solana-banks-interface", - "solana-program", - "solana-sdk", - "tarpc", - "thiserror", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bf9ac405608785d26993bdc18b867b71736ba495714b1c5ef9efc2da9eb8c4" -dependencies = [ - "serde", - "solana-sdk", - "tarpc", -] - -[[package]] -name = "solana-banks-server" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2769555bcc726040169af9846f1815824f3a6479d0504157805a0cb6aea04c4" -dependencies = [ - "bincode", - "crossbeam-channel", - "futures", - "solana-accounts-db", - "solana-banks-interface", - "solana-client", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "tarpc", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8913b997267ef7816d07d54b61e236140069b3774b15dc1b9c8cc1d08793f1e" -dependencies = [ - "bincode", - "byteorder", - "libsecp256k1", - "log", - "scopeguard", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", - "solana_rbpf", - "thiserror", -] - -[[package]] -name = "solana-bucket-map" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7ee2b83c088999cc1b5c33039561603496dec7a069769ae1ba52512ce1c4ca" -dependencies = [ - "bv", - "bytemuck", - "log", - "memmap2", - "modular-bitfield", - "num_enum 0.7.2", - "rand 0.8.5", - "solana-measure", - "solana-sdk", - "tempfile", -] - -[[package]] -name = "solana-clap-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1bf62a854e86674baafa1db95de3574e134140ad694d79812699d0ff7dba98" -dependencies = [ - "chrono", - "clap 2.34.0", - "rpassword", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", -] - -[[package]] -name = "solana-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0b54e872d5d1de9e983d684f843ea622ba4b4432602a3aafd897626b25c339" -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-compute-budget-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e589e502a52f43dfc7a51e874e640c64d145e019e18162b7a43f2021038774e" -dependencies = [ - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-config-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0756e2a78554efdcb997a00a652b20291a823f2415c752adaa0dad7320460c9" -dependencies = [ - "bincode", - "chrono", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-connection-cache" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14821e889f3f010265d61814b5971e24837677fa51e2c4be2674aa4bcc8c77e5" -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-cost-model" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69710df9e1eb6863a5d676067d0c2e0d58fd498024cb1bc8dc9661d468590b0b" -dependencies = [ - "lazy_static", - "log", - "rustc_version", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-metrics", - "solana-program-runtime", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-frozen-abi" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d353eac7a178cd8a2ceaf5d304719d4a30c1d3f24f303145d5b029b8cc7c35f0" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc87189dcb2d2da407831fc983e4f05e70c58be12b5c713e9a05f873edb42637" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.64", -] - -[[package]] -name = "solana-loader-v4-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa7ce511c95953586638001e015b7ba2901fab5df6db02c1ce08faa7afb6408" -dependencies = [ - "log", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana_rbpf", -] - -[[package]] -name = "solana-logger" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d857a115710eeb1c5ac98a340141f0c49cc31854168767d0c5b855e212632a5" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-measure" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a32fb164205ddff073863f17a45e66fe44f88fa0fee2fa9790aa5cd730b616" -dependencies = [ - "log", - "solana-sdk", -] - -[[package]] -name = "solana-metrics" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374bb8daec434f2c867091ff7c1c494eb358c5c23a583cc44a5a6134609271c2" -dependencies = [ - "crossbeam-channel", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-net-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09abc9f1df58d9990cb085d1e8a489f682828fc78e1933856fd63cbb231748" -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-nohash-hasher" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" - -[[package]] -name = "solana-perf" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7d00801b85338f0ecf3fbb4c1d14dfccca4c1adc162f7fe28c5ee9ea7acc9f" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad73ff4d5c8d4943988ef18924f5fbd96881410ab20d5a0bfa32bb44d7d4cfce" -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.5.0", - "bs58 0.4.0", - "bv", - "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", - "itertools", - "js-sys", - "lazy_static", - "libc", - "libsecp256k1", - "light-poseidon", - "log", - "memoffset 0.9.1", - "num-bigint 0.4.5", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83375b909adeefd5ab9dc1473456df2b46f9377c8fa0d2447cc5a15a94ca407" -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-program-test" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5b1bbacdb3b9f0ad73b028e43d143374e3915627c18800f3d10cc6486eb516" -dependencies = [ - "assert_matches", - "async-trait", - "base64 0.21.7", - "bincode", - "chrono-humanize", - "crossbeam-channel", - "log", - "serde", - "solana-accounts-db", - "solana-banks-client", - "solana-banks-interface", - "solana-banks-server", - "solana-bpf-loader-program", - "solana-logger", - "solana-program-runtime", - "solana-runtime", - "solana-sdk", - "solana-vote-program", - "solana_rbpf", - "test-case", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-pubsub-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4425ce6449feac0d49b5ef9645d898c29d298ab93fa4851fe495223b1d2f4a11" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917e7772597c3e0ee2a9c39c846e1932e013abfaf43dd3bf86d8d29d57e66d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f16819b18fc045e4cbe9b1602931776c55eef9051bd88d109c9a2050cef31" -dependencies = [ - "lazy_static", - "num_cpus", -] - -[[package]] -name = "solana-remote-wallet" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62a3cb947b3bf30eb65d92f96be1539ebc21ab3bc12a4b6bbecffd7b0d922772" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f631266453395a9e0b614ca222747000ea186507e187ccf5f5d5498a98b0806" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668173de3d2a6629c6508c508c1a87a46e51dea305241816a71e68525edc1022" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b409bc942263f987bb25ab56f0a3e601344fdcfb9b277a494dd142f81c34a23" -dependencies = [ - "clap 2.34.0", - "solana-clap-utils", - "solana-rpc-client", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-runtime" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1fd97b1954a0566dffa5ecbc246a61715ae54c410c13de025dc15b19422481" -dependencies = [ - "aquamarine", - "arrayref", - "base64 0.21.7", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lru", - "lz4", - "memmap2", - "mockall", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "serde", - "serde_derive", - "serde_json", - "solana-accounts-db", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-bucket-map", - "solana-compute-budget-program", - "solana-config-program", - "solana-cost-model", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-measure", - "solana-metrics", - "solana-perf", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-version", - "solana-vote", - "solana-vote-program", - "solana-zk-token-proof-program", - "solana-zk-token-sdk", - "static_assertions", - "strum", - "strum_macros", - "symlink", - "tar", - "tempfile", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f518a377209223b09a0fb62abd53add4a11313a1e85f535f559fbcc0227117a" -dependencies = [ - "assert_matches", - "base64 0.21.7", - "bincode", - "bitflags 2.5.0", - "borsh 1.5.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 2.3.3", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2975b2c2ed6f06d2ffbb2e6b3e7fdd9ca6b2570a76d49a2173f393e6e84c9c71" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.64", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" - -[[package]] -name = "solana-send-transaction-service" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc964aa722903dbf5680159d157438772a61b90779bc282dd9bddcb2a9f87b61" -dependencies = [ - "crossbeam-channel", - "log", - "solana-client", - "solana-measure", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "solana-tpu-client", -] - -[[package]] -name = "solana-stake-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c6d7223338a3eff4ef783505f1444454cacdd9ce027efc23687b7bc1864f3c" -dependencies = [ - "bincode", - "log", - "rustc_version", - "solana-config-program", - "solana-program-runtime", - "solana-sdk", - "solana-vote-program", -] - -[[package]] -name = "solana-streamer" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3986d3106ccbfe6bb1eb647918d2af82621db8d5d797a7f6a7b8d6b6b582064" -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-system-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f212424483492b18f2c406f5aa035aae7de6d4ef4e791921cfc41c326b6fc02a" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-thin-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7283a5597db9dd9a7b9515d4b95fe4964881c67ee2d51658d5e5b73d83fba10" -dependencies = [ - "bincode", - "log", - "rayon", - "solana-connection-cache", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", -] - -[[package]] -name = "solana-tpu-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2a073779fcae0ac8ce7251a0a12f7ed275e4ea26f9621f873e4a2e3dca21d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9672c191c1a7a82d1472ff15ad2a0812e28a27858814ead611a1374b11a70d7" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b87180d368c00ecd82a56df7498953730136848699433d5571dacd7fd9c186" -dependencies = [ - "async-trait", - "solana-connection-cache", - "solana-net-utils", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-version" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf94f6a9ed0e1df165569f0353e286a4e219b72d4a5200f0c8b9cd55d90f474" -dependencies = [ - "log", - "rustc_version", - "semver", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", -] - -[[package]] -name = "solana-vote" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a8f50c270ae4b5791ec43c8d3bc89e3b03d62b38683c59ea7357e37ff4b59" -dependencies = [ - "crossbeam-channel", - "itertools", - "log", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", - "solana-vote-program", - "thiserror", -] - -[[package]] -name = "solana-vote-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5d7a037bc2264af884564ea33f545817411897d2634ea2b83c4bc033896a0f" -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-proof-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42ab9ac3707f1f52df43cdd4511d135df490a03e9360945d4d702f6e92d0820" -dependencies = [ - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cefc9878a202bf9606745e56712f7d56878ea31b29f2f89785b4b801b264322" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -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.64", -] - -[[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.64", - "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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "borsh 0.10.3", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -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.64", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.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 = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "symlink" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" - -[[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.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" -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.64", -] - -[[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 = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.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 = "termtree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" - -[[package]] -name = "test-case" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" -dependencies = [ - "test-case-macros", -] - -[[package]] -name = "test-case-core" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "test-case-macros" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", - "test-case-core", -] - -[[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.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "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 = "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.64", -] - -[[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-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[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.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" - -[[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", -] - -[[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", -] - -[[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.64", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "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 = "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.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" - -[[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 = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[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 = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[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.64", - "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.64", - "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 = "wen_new_standard" -version = "0.4.1-alpha" -dependencies = [ - "anchor-lang", - "assert_matches", - "borsh 0.10.3", - "num-derive 0.3.3", - "num-traits", - "serde", - "serde_with 3.8.1", - "solana-program", - "solana-program-test", - "solana-sdk", - "thiserror", -] - -[[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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.5", -] - -[[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.5", -] - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "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]] -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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[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.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 = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[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.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 = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -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 = "xattr" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" -dependencies = [ - "libc", - "linux-raw-sys", - "rustix", -] - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.64", -] - -[[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/clients/rust/wen_royalty_distribution/Cargo.toml b/clients/rust/wen_royalty_distribution/Cargo.toml deleted file mode 100644 index a6708942..00000000 --- a/clients/rust/wen_royalty_distribution/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -description = "An open and composable NFT standard on Solana." -name = "wen_royalty_distribution" -version = "0.5.0-alpha" -edition = "2021" -authors = ["Balmy Gazebo "] -license = "MIT" -repository = "https://github.com/wen-community/wen-program-library/clients/rust/wen_royalty_distribution" -documentation = "https://docs.wenwencoin.com" -homepage = "https://wenwencoin.com" -keywords = ["wen", "wns"] -categories = ["nft", "solana", "blockchain"] -readme = "README.md" - -[workspace] - -[features] -anchor = ["dep:anchor-lang"] -test-sbf = [] -serde = ["dep:serde", "dep:serde_with"] - -[dependencies] -anchor-lang = { version = "0.30.1", optional = true } -borsh = "^0.10" -num-derive = "^0.3" -num-traits = "^0.2" -serde = { version = "^1.0", features = ["derive"], optional = true } -serde_with = { version = "^3.0", optional = true } -solana-program = "~1.18" -thiserror = "^1.0" - -[dev-dependencies] -assert_matches = "1.5.0" -solana-program-test = "~1.18" -solana-sdk = "~1.18" diff --git a/clients/rust/wen_royalty_distribution/README.md b/clients/rust/wen_royalty_distribution/README.md deleted file mode 100644 index 00599008..00000000 --- a/clients/rust/wen_royalty_distribution/README.md +++ /dev/null @@ -1,22 +0,0 @@ -A Rust client SDK for WEN Royalty Distribution [program](https://github.com/wen-community/wen-program-library). - -## Getting started - -From your project folder: - -```bash -cargo add wen_royalty_distribution -``` - -## Structure - -The SDK is divided into several modules: - -- `accounts`: structs representing the accounts of the program -- `errors`: enums representing the program errors -- `instructions`: structs to facilitate the creation of instructions, instruction arguments and CPI helpers -- `types`: structs representing types used by the program - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. diff --git a/clients/rust/wen_royalty_distribution/src/generated/accounts/distribution_account.rs b/clients/rust/wen_royalty_distribution/src/generated/accounts/distribution_account.rs deleted file mode 100644 index f0089556..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/accounts/distribution_account.rs +++ /dev/null @@ -1,76 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::Creator; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct DistributionAccount { - pub discriminator: [u8; 8], - /// distribution version - pub version: u8, - /// group to which the distribution account belongs to - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub group_mint: Pubkey, - /// payment mint for the distribution account - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub payment_mint: Pubkey, - pub claim_data: Vec, -} - -impl DistributionAccount { - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for DistributionAccount { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for DistributionAccount { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for DistributionAccount {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for DistributionAccount { - fn owner() -> Pubkey { - crate::WEN_ROYALTY_DISTRIBUTION_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for DistributionAccount {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for DistributionAccount { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_royalty_distribution/src/generated/accounts/mod.rs b/clients/rust/wen_royalty_distribution/src/generated/accounts/mod.rs deleted file mode 100644 index d48fedec..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/accounts/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#distribution_account; - -pub use self::r#distribution_account::*; diff --git a/clients/rust/wen_royalty_distribution/src/generated/errors/mod.rs b/clients/rust/wen_royalty_distribution/src/generated/errors/mod.rs deleted file mode 100644 index 9d055c31..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/errors/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod wen_royalty_distribution; - -pub use self::wen_royalty_distribution::WenRoyaltyDistributionError; diff --git a/clients/rust/wen_royalty_distribution/src/generated/errors/wen_royalty_distribution.rs b/clients/rust/wen_royalty_distribution/src/generated/errors/wen_royalty_distribution.rs deleted file mode 100644 index 2a6e0eb4..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/errors/wen_royalty_distribution.rs +++ /dev/null @@ -1,34 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use num_derive::FromPrimitive; -use thiserror::Error; - -#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)] -pub enum WenRoyaltyDistributionError { - /// 6000 - Invalid Group Authority for collection account - #[error("Invalid Group Authority for collection account")] - InvalidGroupAuthority = 0x1770, - /// 6001 - Invalid creator pct amount. Must add up to 100 - #[error("Invalid creator pct amount. Must add up to 100")] - InvalidCreatorPctAmount = 0x1771, - /// 6002 - Invalid payment token account - #[error("Invalid payment token account")] - InvalidPaymentTokenAccount = 0x1772, - /// 6003 - Invalid payment token program - #[error("Invalid payment token program")] - InvalidPaymentTokenProgram = 0x1773, - /// 6004 - Arithmetic overflow - #[error("Arithmetic overflow")] - ArithmeticOverflow = 0x1774, -} - -impl solana_program::program_error::PrintProgramError for WenRoyaltyDistributionError { - fn print(&self) { - solana_program::msg!(&self.to_string()); - } -} diff --git a/clients/rust/wen_royalty_distribution/src/generated/instructions/claim_distribution.rs b/clients/rust/wen_royalty_distribution/src/generated/instructions/claim_distribution.rs deleted file mode 100644 index 03c9458e..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/instructions/claim_distribution.rs +++ /dev/null @@ -1,574 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct ClaimDistribution { - pub creator: solana_program::pubkey::Pubkey, - - pub distribution: solana_program::pubkey::Pubkey, - - pub payment_mint: solana_program::pubkey::Pubkey, - - pub distribution_token_account: Option, - - pub creator_token_account: Option, - - pub token_program: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl ClaimDistribution { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(7 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.creator, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.distribution, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.payment_mint, - false, - )); - if let Some(distribution_token_account) = self.distribution_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - distribution_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - if let Some(creator_token_account) = self.creator_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - creator_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = ClaimDistributionInstructionData::new() - .try_to_vec() - .unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_ROYALTY_DISTRIBUTION_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ClaimDistributionInstructionData { - discriminator: [u8; 8], -} - -impl ClaimDistributionInstructionData { - pub fn new() -> Self { - Self { - discriminator: [204, 156, 94, 85, 2, 125, 232, 180], - } - } -} - -impl Default for ClaimDistributionInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `ClaimDistribution`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` creator -/// 1. `[writable]` distribution -/// 2. `[]` payment_mint -/// 3. `[writable, optional]` distribution_token_account -/// 4. `[writable, optional]` creator_token_account -/// 5. `[optional]` token_program (default to `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`) -/// 6. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct ClaimDistributionBuilder { - creator: Option, - distribution: Option, - payment_mint: Option, - distribution_token_account: Option, - creator_token_account: Option, - token_program: Option, - system_program: Option, - __remaining_accounts: Vec, -} - -impl ClaimDistributionBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn creator(&mut self, creator: solana_program::pubkey::Pubkey) -> &mut Self { - self.creator = Some(creator); - self - } - #[inline(always)] - pub fn distribution(&mut self, distribution: solana_program::pubkey::Pubkey) -> &mut Self { - self.distribution = Some(distribution); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_token_account( - &mut self, - distribution_token_account: Option, - ) -> &mut Self { - self.distribution_token_account = distribution_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn creator_token_account( - &mut self, - creator_token_account: Option, - ) -> &mut Self { - self.creator_token_account = creator_token_account; - self - } - /// `[optional account, default to 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = ClaimDistribution { - creator: self.creator.expect("creator is not set"), - distribution: self.distribution.expect("distribution is not set"), - payment_mint: self.payment_mint.expect("payment_mint is not set"), - distribution_token_account: self.distribution_token_account, - creator_token_account: self.creator_token_account, - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - )), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `claim_distribution` CPI accounts. -pub struct ClaimDistributionCpiAccounts<'a, 'b> { - pub creator: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub creator_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `claim_distribution` CPI instruction. -pub struct ClaimDistributionCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub creator: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub creator_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> ClaimDistributionCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ClaimDistributionCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - creator: accounts.creator, - distribution: accounts.distribution, - payment_mint: accounts.payment_mint, - distribution_token_account: accounts.distribution_token_account, - creator_token_account: accounts.creator_token_account, - token_program: accounts.token_program, - system_program: accounts.system_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(7 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.creator.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.distribution.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.payment_mint.key, - false, - )); - if let Some(distribution_token_account) = self.distribution_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *distribution_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - if let Some(creator_token_account) = self.creator_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *creator_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = ClaimDistributionInstructionData::new() - .try_to_vec() - .unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_ROYALTY_DISTRIBUTION_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(7 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.creator.clone()); - account_infos.push(self.distribution.clone()); - account_infos.push(self.payment_mint.clone()); - if let Some(distribution_token_account) = self.distribution_token_account { - account_infos.push(distribution_token_account.clone()); - } - if let Some(creator_token_account) = self.creator_token_account { - account_infos.push(creator_token_account.clone()); - } - account_infos.push(self.token_program.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `ClaimDistribution` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` creator -/// 1. `[writable]` distribution -/// 2. `[]` payment_mint -/// 3. `[writable, optional]` distribution_token_account -/// 4. `[writable, optional]` creator_token_account -/// 5. `[]` token_program -/// 6. `[]` system_program -#[derive(Clone, Debug)] -pub struct ClaimDistributionCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ClaimDistributionCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ClaimDistributionCpiBuilderInstruction { - __program: program, - creator: None, - distribution: None, - payment_mint: None, - distribution_token_account: None, - creator_token_account: None, - token_program: None, - system_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn creator( - &mut self, - creator: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.creator = Some(creator); - self - } - #[inline(always)] - pub fn distribution( - &mut self, - distribution: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution = Some(distribution); - self - } - #[inline(always)] - pub fn payment_mint( - &mut self, - payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_token_account( - &mut self, - distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.distribution_token_account = distribution_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn creator_token_account( - &mut self, - creator_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.creator_token_account = creator_token_account; - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = ClaimDistributionCpi { - __program: self.instruction.__program, - - creator: self.instruction.creator.expect("creator is not set"), - - distribution: self - .instruction - .distribution - .expect("distribution is not set"), - - payment_mint: self - .instruction - .payment_mint - .expect("payment_mint is not set"), - - distribution_token_account: self.instruction.distribution_token_account, - - creator_token_account: self.instruction.creator_token_account, - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ClaimDistributionCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - creator: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - creator_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_royalty_distribution/src/generated/instructions/initialize_distribution.rs b/clients/rust/wen_royalty_distribution/src/generated/instructions/initialize_distribution.rs deleted file mode 100644 index 19df3bc8..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/instructions/initialize_distribution.rs +++ /dev/null @@ -1,456 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -/// Accounts. -pub struct InitializeDistribution { - pub payer: solana_program::pubkey::Pubkey, - - pub group_mint: solana_program::pubkey::Pubkey, - - pub distribution_account: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl InitializeDistribution { - pub fn instruction( - &self, - args: InitializeDistributionInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: InitializeDistributionInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(4 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.group_mint, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.distribution_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = InitializeDistributionInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_ROYALTY_DISTRIBUTION_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct InitializeDistributionInstructionData { - discriminator: [u8; 8], -} - -impl InitializeDistributionInstructionData { - pub fn new() -> Self { - Self { - discriminator: [146, 158, 129, 53, 22, 89, 86, 207], - } - } -} - -impl Default for InitializeDistributionInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct InitializeDistributionInstructionArgs { - pub payment_mint: Pubkey, -} - -/// Instruction builder for `InitializeDistribution`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[]` group_mint -/// 2. `[writable]` distribution_account -/// 3. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct InitializeDistributionBuilder { - payer: Option, - group_mint: Option, - distribution_account: Option, - system_program: Option, - payment_mint: Option, - __remaining_accounts: Vec, -} - -impl InitializeDistributionBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn group_mint(&mut self, group_mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.group_mint = Some(group_mint); - self - } - #[inline(always)] - pub fn distribution_account( - &mut self, - distribution_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.distribution_account = Some(distribution_account); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = InitializeDistribution { - payer: self.payer.expect("payer is not set"), - group_mint: self.group_mint.expect("group_mint is not set"), - distribution_account: self - .distribution_account - .expect("distribution_account is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - let args = InitializeDistributionInstructionArgs { - payment_mint: self.payment_mint.clone().expect("payment_mint is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `initialize_distribution` CPI accounts. -pub struct InitializeDistributionCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub group_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `initialize_distribution` CPI instruction. -pub struct InitializeDistributionCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub group_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: InitializeDistributionInstructionArgs, -} - -impl<'a, 'b> InitializeDistributionCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: InitializeDistributionCpiAccounts<'a, 'b>, - args: InitializeDistributionInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - group_mint: accounts.group_mint, - distribution_account: accounts.distribution_account, - system_program: accounts.system_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(4 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.group_mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.distribution_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = InitializeDistributionInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_ROYALTY_DISTRIBUTION_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(4 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.group_mint.clone()); - account_infos.push(self.distribution_account.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `InitializeDistribution` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[]` group_mint -/// 2. `[writable]` distribution_account -/// 3. `[]` system_program -#[derive(Clone, Debug)] -pub struct InitializeDistributionCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> InitializeDistributionCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(InitializeDistributionCpiBuilderInstruction { - __program: program, - payer: None, - group_mint: None, - distribution_account: None, - system_program: None, - payment_mint: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn group_mint( - &mut self, - group_mint: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.group_mint = Some(group_mint); - self - } - #[inline(always)] - pub fn distribution_account( - &mut self, - distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution_account = Some(distribution_account); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: Pubkey) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = InitializeDistributionInstructionArgs { - payment_mint: self - .instruction - .payment_mint - .clone() - .expect("payment_mint is not set"), - }; - let instruction = InitializeDistributionCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - group_mint: self.instruction.group_mint.expect("group_mint is not set"), - - distribution_account: self - .instruction - .distribution_account - .expect("distribution_account is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct InitializeDistributionCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - group_mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_mint: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_royalty_distribution/src/generated/instructions/mod.rs b/clients/rust/wen_royalty_distribution/src/generated/instructions/mod.rs deleted file mode 100644 index 0bb6a277..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/instructions/mod.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#claim_distribution; -pub(crate) mod r#initialize_distribution; -pub(crate) mod r#update_distribution; - -pub use self::r#claim_distribution::*; -pub use self::r#initialize_distribution::*; -pub use self::r#update_distribution::*; diff --git a/clients/rust/wen_royalty_distribution/src/generated/instructions/update_distribution.rs b/clients/rust/wen_royalty_distribution/src/generated/instructions/update_distribution.rs deleted file mode 100644 index de23048c..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/instructions/update_distribution.rs +++ /dev/null @@ -1,708 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct UpdateDistribution { - pub authority: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub payment_mint: solana_program::pubkey::Pubkey, - - pub distribution_account: solana_program::pubkey::Pubkey, - - pub distribution_token_account: Option, - - pub authority_token_account: Option, - - pub token_program: solana_program::pubkey::Pubkey, - - pub payment_token_program: Option, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl UpdateDistribution { - pub fn instruction( - &self, - args: UpdateDistributionInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: UpdateDistributionInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.payment_mint, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.distribution_account, - false, - )); - if let Some(distribution_token_account) = self.distribution_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - distribution_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - if let Some(authority_token_account) = self.authority_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - authority_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - if let Some(payment_token_program) = self.payment_token_program { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - payment_token_program, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = UpdateDistributionInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_ROYALTY_DISTRIBUTION_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct UpdateDistributionInstructionData { - discriminator: [u8; 8], -} - -impl UpdateDistributionInstructionData { - pub fn new() -> Self { - Self { - discriminator: [128, 196, 209, 174, 42, 209, 164, 222], - } - } -} - -impl Default for UpdateDistributionInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct UpdateDistributionInstructionArgs { - pub amount: u64, -} - -/// Instruction builder for `UpdateDistribution`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` authority -/// 1. `[]` mint -/// 2. `[]` payment_mint -/// 3. `[writable]` distribution_account -/// 4. `[writable, optional]` distribution_token_account -/// 5. `[writable, optional]` authority_token_account -/// 6. `[optional]` token_program (default to `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`) -/// 7. `[optional]` payment_token_program -/// 8. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct UpdateDistributionBuilder { - authority: Option, - mint: Option, - payment_mint: Option, - distribution_account: Option, - distribution_token_account: Option, - authority_token_account: Option, - token_program: Option, - payment_token_program: Option, - system_program: Option, - amount: Option, - __remaining_accounts: Vec, -} - -impl UpdateDistributionBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn authority(&mut self, authority: solana_program::pubkey::Pubkey) -> &mut Self { - self.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - #[inline(always)] - pub fn distribution_account( - &mut self, - distribution_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.distribution_account = Some(distribution_account); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_token_account( - &mut self, - distribution_token_account: Option, - ) -> &mut Self { - self.distribution_token_account = distribution_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn authority_token_account( - &mut self, - authority_token_account: Option, - ) -> &mut Self { - self.authority_token_account = authority_token_account; - self - } - /// `[optional account, default to 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn payment_token_program( - &mut self, - payment_token_program: Option, - ) -> &mut Self { - self.payment_token_program = payment_token_program; - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn amount(&mut self, amount: u64) -> &mut Self { - self.amount = Some(amount); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = UpdateDistribution { - authority: self.authority.expect("authority is not set"), - mint: self.mint.expect("mint is not set"), - payment_mint: self.payment_mint.expect("payment_mint is not set"), - distribution_account: self - .distribution_account - .expect("distribution_account is not set"), - distribution_token_account: self.distribution_token_account, - authority_token_account: self.authority_token_account, - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - )), - payment_token_program: self.payment_token_program, - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - let args = UpdateDistributionInstructionArgs { - amount: self.amount.clone().expect("amount is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `update_distribution` CPI accounts. -pub struct UpdateDistributionCpiAccounts<'a, 'b> { - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `update_distribution` CPI instruction. -pub struct UpdateDistributionCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: UpdateDistributionInstructionArgs, -} - -impl<'a, 'b> UpdateDistributionCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: UpdateDistributionCpiAccounts<'a, 'b>, - args: UpdateDistributionInstructionArgs, - ) -> Self { - Self { - __program: program, - authority: accounts.authority, - mint: accounts.mint, - payment_mint: accounts.payment_mint, - distribution_account: accounts.distribution_account, - distribution_token_account: accounts.distribution_token_account, - authority_token_account: accounts.authority_token_account, - token_program: accounts.token_program, - payment_token_program: accounts.payment_token_program, - system_program: accounts.system_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.payment_mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.distribution_account.key, - false, - )); - if let Some(distribution_token_account) = self.distribution_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *distribution_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - if let Some(authority_token_account) = self.authority_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *authority_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - if let Some(payment_token_program) = self.payment_token_program { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *payment_token_program.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_ROYALTY_DISTRIBUTION_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = UpdateDistributionInstructionData::new() - .try_to_vec() - .unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_ROYALTY_DISTRIBUTION_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(9 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.authority.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.payment_mint.clone()); - account_infos.push(self.distribution_account.clone()); - if let Some(distribution_token_account) = self.distribution_token_account { - account_infos.push(distribution_token_account.clone()); - } - if let Some(authority_token_account) = self.authority_token_account { - account_infos.push(authority_token_account.clone()); - } - account_infos.push(self.token_program.clone()); - if let Some(payment_token_program) = self.payment_token_program { - account_infos.push(payment_token_program.clone()); - } - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `UpdateDistribution` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` authority -/// 1. `[]` mint -/// 2. `[]` payment_mint -/// 3. `[writable]` distribution_account -/// 4. `[writable, optional]` distribution_token_account -/// 5. `[writable, optional]` authority_token_account -/// 6. `[]` token_program -/// 7. `[optional]` payment_token_program -/// 8. `[]` system_program -#[derive(Clone, Debug)] -pub struct UpdateDistributionCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> UpdateDistributionCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(UpdateDistributionCpiBuilderInstruction { - __program: program, - authority: None, - mint: None, - payment_mint: None, - distribution_account: None, - distribution_token_account: None, - authority_token_account: None, - token_program: None, - payment_token_program: None, - system_program: None, - amount: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn authority( - &mut self, - authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.authority = Some(authority); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn payment_mint( - &mut self, - payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - #[inline(always)] - pub fn distribution_account( - &mut self, - distribution_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution_account = Some(distribution_account); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_token_account( - &mut self, - distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.distribution_token_account = distribution_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn authority_token_account( - &mut self, - authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.authority_token_account = authority_token_account; - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn payment_token_program( - &mut self, - payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.payment_token_program = payment_token_program; - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn amount(&mut self, amount: u64) -> &mut Self { - self.instruction.amount = Some(amount); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = UpdateDistributionInstructionArgs { - amount: self.instruction.amount.clone().expect("amount is not set"), - }; - let instruction = UpdateDistributionCpi { - __program: self.instruction.__program, - - authority: self.instruction.authority.expect("authority is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - payment_mint: self - .instruction - .payment_mint - .expect("payment_mint is not set"), - - distribution_account: self - .instruction - .distribution_account - .expect("distribution_account is not set"), - - distribution_token_account: self.instruction.distribution_token_account, - - authority_token_account: self.instruction.authority_token_account, - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - payment_token_program: self.instruction.payment_token_program, - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct UpdateDistributionCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - authority_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - amount: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_royalty_distribution/src/generated/mod.rs b/clients/rust/wen_royalty_distribution/src/generated/mod.rs deleted file mode 100644 index a3793d7c..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/mod.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub mod accounts; -pub mod errors; -pub mod instructions; -pub mod programs; -pub mod types; - -pub(crate) use programs::*; diff --git a/clients/rust/wen_royalty_distribution/src/generated/programs.rs b/clients/rust/wen_royalty_distribution/src/generated/programs.rs deleted file mode 100644 index 384cfbbe..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/programs.rs +++ /dev/null @@ -1,12 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use solana_program::{pubkey, pubkey::Pubkey}; - -/// `wen_royalty_distribution` program ID. -pub const WEN_ROYALTY_DISTRIBUTION_ID: Pubkey = - pubkey!("diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay"); diff --git a/clients/rust/wen_royalty_distribution/src/generated/types/creator.rs b/clients/rust/wen_royalty_distribution/src/generated/types/creator.rs deleted file mode 100644 index 6a3184a6..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/types/creator.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct Creator { - /// creator address - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub address: Pubkey, - /// token amount that creator can claim - pub claim_amount: u64, -} diff --git a/clients/rust/wen_royalty_distribution/src/generated/types/mod.rs b/clients/rust/wen_royalty_distribution/src/generated/types/mod.rs deleted file mode 100644 index d7362ac2..00000000 --- a/clients/rust/wen_royalty_distribution/src/generated/types/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#creator; - -pub use self::r#creator::*; diff --git a/clients/rust/wen_royalty_distribution/src/lib.rs b/clients/rust/wen_royalty_distribution/src/lib.rs deleted file mode 100644 index cba48f8b..00000000 --- a/clients/rust/wen_royalty_distribution/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -mod generated; - -pub use generated::programs::WEN_ROYALTY_DISTRIBUTION_ID as ID; -pub use generated::*; diff --git a/clients/rust/wen_transfer_guard/CONTRIBUTING.md b/clients/rust/wen_transfer_guard/CONTRIBUTING.md deleted file mode 100644 index 6aa40090..00000000 --- a/clients/rust/wen_transfer_guard/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Contributing to the Rust client - -This is a quick guide to help you contribute to the Rust client of WNS. - -## Getting started - -To build and test the Rust client, you can use `cargo`. - -```sh -# Build the client -cargo build - -# Test the client (requires building the program first) -cargo test-sbf --sbf-out-dir ../../programs/.bin -``` - -When something changes in the program(s), make sure to run `yarn clients` in the root directory, to re-generate the clients accordingly. \ No newline at end of file diff --git a/clients/rust/wen_transfer_guard/Cargo.lock b/clients/rust/wen_transfer_guard/Cargo.lock deleted file mode 100644 index 0f0da8f1..00000000 --- a/clients/rust/wen_transfer_guard/Cargo.lock +++ /dev/null @@ -1,6210 +0,0 @@ -# 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 = "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.15", - "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.15", - "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 = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - -[[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.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" -dependencies = [ - "anchor-syn", - "bs58 0.5.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb2a5eb0860e661ab31aff7bb5e0288357b176380e985bade4ccb395981b42d" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58 0.5.1", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" -dependencies = [ - "anchor-syn", - "borsh-derive-internal 0.10.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6620c9486d9d36a4389cab5e37dc34a42ed0bfaa62e6a75a2999ce98f8f2e373" -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.21.7", - "bincode", - "borsh 0.10.3", - "bytemuck", - "getrandom 0.2.15", - "solana-program", - "thiserror", -] - -[[package]] -name = "anchor-lang-idl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "serde", - "serde_json", - "sha2 0.10.8", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99daacb53b55cfd37ce14d6c9905929721137fd4c67bbab44a19802aecb622f" -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 = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "aquamarine" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" -dependencies = [ - "include_dir", - "itertools", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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.5", - "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.5", - "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.5", -] - -[[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.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" -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.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[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 = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" -dependencies = [ - "borsh-derive 1.5.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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.64", - "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 = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" -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.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" -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.64", -] - -[[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 = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[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.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" -dependencies = [ - "jobserver", - "libc", - "once_cell", -] - -[[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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.5", -] - -[[package]] -name = "chrono-humanize" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" -dependencies = [ - "chrono", -] - -[[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", - "indexmap 1.9.3", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap 0.16.1", -] - -[[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 = "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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[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 = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[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 = "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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.64", -] - -[[package]] -name = "darling_macro" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.64", -] - -[[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.5", - "lock_api", - "once_cell", - "parking_lot_core", - "rayon", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[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.5", - "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", - "serde", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "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 = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - -[[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 = "dir-diff" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" -dependencies = [ - "walkdir", -] - -[[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.64", -] - -[[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.64", -] - -[[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[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 = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "either" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.5", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -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.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "feature-probe" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" - -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float-cmp" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[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 = "fragile" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" - -[[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.64", -] - -[[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-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.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[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 = "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 0.7.11", - "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" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.11", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[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.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[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 = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[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 = "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 = "include_dir" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "index_list" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70891286cb8e844fdfcf1178b47569699f9e20b5ecc4b45a6240a64771444638" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", - "serde", -] - -[[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.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -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.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -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 = "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.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[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-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.5", - "thiserror", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "lru" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lz4" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" -dependencies = [ - "libc", - "lz4-sys", -] - -[[package]] -name = "lz4-sys" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" -dependencies = [ - "cc", - "libc", -] - -[[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.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.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" -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 = "mockall" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" -dependencies = [ - "num-integer", - "num-traits", -] - -[[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.64", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_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.64", -] - -[[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.64", -] - -[[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-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - -[[package]] -name = "ouroboros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" -dependencies = [ - "aliasable", - "ouroboros_macro", -] - -[[package]] -name = "ouroboros_macro" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.1", - "smallvec", - "windows-targets 0.52.5", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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 = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "predicates" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" -dependencies = [ - "difflib", - "float-cmp", - "itertools", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[package]] -name = "predicates-core" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" - -[[package]] -name = "predicates-tree" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[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", - "syn 1.0.109", - "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.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" -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.64", -] - -[[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.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "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 = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", -] - -[[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 = "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", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-rustls", - "tokio-util 0.7.11", - "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.15", - "libc", - "spin 0.9.8", - "untrusted 0.9.0", - "windows-sys 0.52.0", -] - -[[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 = "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 = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -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.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[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.64", -] - -[[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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "seqlock" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" -dependencies = [ - "parking_lot", -] - -[[package]] -name = "serde" -version = "1.0.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" -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.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "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 2.3.3", -] - -[[package]] -name = "serde_with" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.2.6", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.8.1", - "time", -] - -[[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.64", -] - -[[package]] -name = "serde_with_macros" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -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.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solana-account-decoder" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1387123a0daab82dbd205c543f8bba0ed5345fc6b8eaa910ecd9dcb7469fc78" -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-accounts-db" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2033eae13b5ab9d3adc6c90ea06a37177cd2de4fe4c04159be5c583756a5414" -dependencies = [ - "arrayref", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lz4", - "memmap2", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "seqlock", - "serde", - "serde_derive", - "smallvec", - "solana-bucket-map", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-measure", - "solana-metrics", - "solana-nohash-hasher", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "static_assertions", - "strum", - "strum_macros", - "tar", - "tempfile", - "thiserror", -] - -[[package]] -name = "solana-address-lookup-table-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396a385d0c7cc65fca238c757cca29c41d09fe18734d5f85890c23cd6e0d3876" -dependencies = [ - "bincode", - "bytemuck", - "log", - "num-derive 0.4.2", - "num-traits", - "rustc_version", - "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-program", - "solana-program-runtime", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-banks-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a0af125d95032a260a9dbc020d571d8904874ada1505f3e860a88f915b4c00" -dependencies = [ - "borsh 1.5.0", - "futures", - "solana-banks-interface", - "solana-program", - "solana-sdk", - "tarpc", - "thiserror", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bf9ac405608785d26993bdc18b867b71736ba495714b1c5ef9efc2da9eb8c4" -dependencies = [ - "serde", - "solana-sdk", - "tarpc", -] - -[[package]] -name = "solana-banks-server" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2769555bcc726040169af9846f1815824f3a6479d0504157805a0cb6aea04c4" -dependencies = [ - "bincode", - "crossbeam-channel", - "futures", - "solana-accounts-db", - "solana-banks-interface", - "solana-client", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "tarpc", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8913b997267ef7816d07d54b61e236140069b3774b15dc1b9c8cc1d08793f1e" -dependencies = [ - "bincode", - "byteorder", - "libsecp256k1", - "log", - "scopeguard", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", - "solana_rbpf", - "thiserror", -] - -[[package]] -name = "solana-bucket-map" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7ee2b83c088999cc1b5c33039561603496dec7a069769ae1ba52512ce1c4ca" -dependencies = [ - "bv", - "bytemuck", - "log", - "memmap2", - "modular-bitfield", - "num_enum 0.7.2", - "rand 0.8.5", - "solana-measure", - "solana-sdk", - "tempfile", -] - -[[package]] -name = "solana-clap-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1bf62a854e86674baafa1db95de3574e134140ad694d79812699d0ff7dba98" -dependencies = [ - "chrono", - "clap 2.34.0", - "rpassword", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", -] - -[[package]] -name = "solana-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0b54e872d5d1de9e983d684f843ea622ba4b4432602a3aafd897626b25c339" -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-compute-budget-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e589e502a52f43dfc7a51e874e640c64d145e019e18162b7a43f2021038774e" -dependencies = [ - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-config-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0756e2a78554efdcb997a00a652b20291a823f2415c752adaa0dad7320460c9" -dependencies = [ - "bincode", - "chrono", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-connection-cache" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14821e889f3f010265d61814b5971e24837677fa51e2c4be2674aa4bcc8c77e5" -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-cost-model" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69710df9e1eb6863a5d676067d0c2e0d58fd498024cb1bc8dc9661d468590b0b" -dependencies = [ - "lazy_static", - "log", - "rustc_version", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-metrics", - "solana-program-runtime", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-frozen-abi" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d353eac7a178cd8a2ceaf5d304719d4a30c1d3f24f303145d5b029b8cc7c35f0" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc87189dcb2d2da407831fc983e4f05e70c58be12b5c713e9a05f873edb42637" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.64", -] - -[[package]] -name = "solana-loader-v4-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa7ce511c95953586638001e015b7ba2901fab5df6db02c1ce08faa7afb6408" -dependencies = [ - "log", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana_rbpf", -] - -[[package]] -name = "solana-logger" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d857a115710eeb1c5ac98a340141f0c49cc31854168767d0c5b855e212632a5" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-measure" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a32fb164205ddff073863f17a45e66fe44f88fa0fee2fa9790aa5cd730b616" -dependencies = [ - "log", - "solana-sdk", -] - -[[package]] -name = "solana-metrics" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374bb8daec434f2c867091ff7c1c494eb358c5c23a583cc44a5a6134609271c2" -dependencies = [ - "crossbeam-channel", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-net-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09abc9f1df58d9990cb085d1e8a489f682828fc78e1933856fd63cbb231748" -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-nohash-hasher" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" - -[[package]] -name = "solana-perf" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7d00801b85338f0ecf3fbb4c1d14dfccca4c1adc162f7fe28c5ee9ea7acc9f" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad73ff4d5c8d4943988ef18924f5fbd96881410ab20d5a0bfa32bb44d7d4cfce" -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.5.0", - "bs58 0.4.0", - "bv", - "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", - "itertools", - "js-sys", - "lazy_static", - "libc", - "libsecp256k1", - "light-poseidon", - "log", - "memoffset 0.9.1", - "num-bigint 0.4.5", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83375b909adeefd5ab9dc1473456df2b46f9377c8fa0d2447cc5a15a94ca407" -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-program-test" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5b1bbacdb3b9f0ad73b028e43d143374e3915627c18800f3d10cc6486eb516" -dependencies = [ - "assert_matches", - "async-trait", - "base64 0.21.7", - "bincode", - "chrono-humanize", - "crossbeam-channel", - "log", - "serde", - "solana-accounts-db", - "solana-banks-client", - "solana-banks-interface", - "solana-banks-server", - "solana-bpf-loader-program", - "solana-logger", - "solana-program-runtime", - "solana-runtime", - "solana-sdk", - "solana-vote-program", - "solana_rbpf", - "test-case", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-pubsub-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4425ce6449feac0d49b5ef9645d898c29d298ab93fa4851fe495223b1d2f4a11" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917e7772597c3e0ee2a9c39c846e1932e013abfaf43dd3bf86d8d29d57e66d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f16819b18fc045e4cbe9b1602931776c55eef9051bd88d109c9a2050cef31" -dependencies = [ - "lazy_static", - "num_cpus", -] - -[[package]] -name = "solana-remote-wallet" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62a3cb947b3bf30eb65d92f96be1539ebc21ab3bc12a4b6bbecffd7b0d922772" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f631266453395a9e0b614ca222747000ea186507e187ccf5f5d5498a98b0806" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668173de3d2a6629c6508c508c1a87a46e51dea305241816a71e68525edc1022" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b409bc942263f987bb25ab56f0a3e601344fdcfb9b277a494dd142f81c34a23" -dependencies = [ - "clap 2.34.0", - "solana-clap-utils", - "solana-rpc-client", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-runtime" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1fd97b1954a0566dffa5ecbc246a61715ae54c410c13de025dc15b19422481" -dependencies = [ - "aquamarine", - "arrayref", - "base64 0.21.7", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lru", - "lz4", - "memmap2", - "mockall", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "serde", - "serde_derive", - "serde_json", - "solana-accounts-db", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-bucket-map", - "solana-compute-budget-program", - "solana-config-program", - "solana-cost-model", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-measure", - "solana-metrics", - "solana-perf", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-version", - "solana-vote", - "solana-vote-program", - "solana-zk-token-proof-program", - "solana-zk-token-sdk", - "static_assertions", - "strum", - "strum_macros", - "symlink", - "tar", - "tempfile", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f518a377209223b09a0fb62abd53add4a11313a1e85f535f559fbcc0227117a" -dependencies = [ - "assert_matches", - "base64 0.21.7", - "bincode", - "bitflags 2.5.0", - "borsh 1.5.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 2.3.3", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2975b2c2ed6f06d2ffbb2e6b3e7fdd9ca6b2570a76d49a2173f393e6e84c9c71" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.64", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" - -[[package]] -name = "solana-send-transaction-service" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc964aa722903dbf5680159d157438772a61b90779bc282dd9bddcb2a9f87b61" -dependencies = [ - "crossbeam-channel", - "log", - "solana-client", - "solana-measure", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "solana-tpu-client", -] - -[[package]] -name = "solana-stake-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c6d7223338a3eff4ef783505f1444454cacdd9ce027efc23687b7bc1864f3c" -dependencies = [ - "bincode", - "log", - "rustc_version", - "solana-config-program", - "solana-program-runtime", - "solana-sdk", - "solana-vote-program", -] - -[[package]] -name = "solana-streamer" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3986d3106ccbfe6bb1eb647918d2af82621db8d5d797a7f6a7b8d6b6b582064" -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-system-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f212424483492b18f2c406f5aa035aae7de6d4ef4e791921cfc41c326b6fc02a" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-thin-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7283a5597db9dd9a7b9515d4b95fe4964881c67ee2d51658d5e5b73d83fba10" -dependencies = [ - "bincode", - "log", - "rayon", - "solana-connection-cache", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", -] - -[[package]] -name = "solana-tpu-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2a073779fcae0ac8ce7251a0a12f7ed275e4ea26f9621f873e4a2e3dca21d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9672c191c1a7a82d1472ff15ad2a0812e28a27858814ead611a1374b11a70d7" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b87180d368c00ecd82a56df7498953730136848699433d5571dacd7fd9c186" -dependencies = [ - "async-trait", - "solana-connection-cache", - "solana-net-utils", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-version" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf94f6a9ed0e1df165569f0353e286a4e219b72d4a5200f0c8b9cd55d90f474" -dependencies = [ - "log", - "rustc_version", - "semver", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", -] - -[[package]] -name = "solana-vote" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a8f50c270ae4b5791ec43c8d3bc89e3b03d62b38683c59ea7357e37ff4b59" -dependencies = [ - "crossbeam-channel", - "itertools", - "log", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", - "solana-vote-program", - "thiserror", -] - -[[package]] -name = "solana-vote-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5d7a037bc2264af884564ea33f545817411897d2634ea2b83c4bc033896a0f" -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-proof-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42ab9ac3707f1f52df43cdd4511d135df490a03e9360945d4d702f6e92d0820" -dependencies = [ - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cefc9878a202bf9606745e56712f7d56878ea31b29f2f89785b4b801b264322" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -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.64", -] - -[[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.64", - "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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "borsh 0.10.3", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -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.64", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.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 = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "symlink" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" - -[[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.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" -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.64", -] - -[[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 = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.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 = "termtree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" - -[[package]] -name = "test-case" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" -dependencies = [ - "test-case-macros", -] - -[[package]] -name = "test-case-core" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "test-case-macros" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", - "test-case-core", -] - -[[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.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "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 = "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.64", -] - -[[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-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[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.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" - -[[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", -] - -[[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", -] - -[[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.64", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "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 = "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.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" - -[[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 = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[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 = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[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.64", - "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.64", - "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 = "wen_transfer_guard" -version = "0.5.0-alpha" -dependencies = [ - "anchor-lang", - "assert_matches", - "borsh 0.10.3", - "num-derive 0.3.3", - "num-traits", - "serde", - "serde_with 3.8.1", - "solana-program", - "solana-program-test", - "solana-sdk", - "thiserror", -] - -[[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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.5", -] - -[[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.5", -] - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "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]] -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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[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.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 = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[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.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 = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -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 = "xattr" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" -dependencies = [ - "libc", - "linux-raw-sys", - "rustix", -] - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.64", -] - -[[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/clients/rust/wen_transfer_guard/Cargo.toml b/clients/rust/wen_transfer_guard/Cargo.toml deleted file mode 100644 index 71e256f3..00000000 --- a/clients/rust/wen_transfer_guard/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -description = "An open and composable NFT standard on Solana." -name = "wen_transfer_guard" -version = "0.5.0-alpha" -edition = "2021" -authors = ["Balmy Gazebo "] -license = "MIT" -repository = "https://github.com/wen-community/wen-program-library/clients/rust/wen_transfer_guard" -documentation = "https://docs.wenwencoin.com" -homepage = "https://wenwencoin.com" -keywords = ["wen", "wns"] -categories = ["nft", "solana", "blockchain"] -readme = "README.md" - -[workspace] - -[features] -anchor = ["dep:anchor-lang"] -test-sbf = [] -serde = ["dep:serde", "dep:serde_with"] - -[dependencies] -anchor-lang = { version = "0.30.1", optional = true } -borsh = "^0.10" -num-derive = "^0.3" -num-traits = "^0.2" -serde = { version = "^1.0", features = ["derive"], optional = true } -serde_with = { version = "^3.0", optional = true } -solana-program = "~1.18" -thiserror = "^1.0" - -[dev-dependencies] -assert_matches = "1.5.0" -solana-program-test = "~1.18" -solana-sdk = "~1.18" diff --git a/clients/rust/wen_transfer_guard/README.md b/clients/rust/wen_transfer_guard/README.md deleted file mode 100644 index 2c9fa37c..00000000 --- a/clients/rust/wen_transfer_guard/README.md +++ /dev/null @@ -1,22 +0,0 @@ -A Rust client SDK for WEN Transfer Guard [program](https://github.com/wen-community/wen-program-library). - -## Getting started - -From your project folder: - -```bash -cargo add wen_transfer_guard -``` - -## Structure - -The SDK is divided into several modules: - -- `accounts`: structs representing the accounts of the program -- `errors`: enums representing the program errors -- `instructions`: structs to facilitate the creation of instructions, instruction arguments and CPI helpers -- `types`: structs representing types used by the program - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. diff --git a/clients/rust/wen_transfer_guard/src/generated/accounts/guard_v1.rs b/clients/rust/wen_transfer_guard/src/generated/accounts/guard_v1.rs deleted file mode 100644 index a6575486..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/accounts/guard_v1.rs +++ /dev/null @@ -1,77 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::CpiRule; -use crate::generated::types::MetadataAdditionalFieldRule; -use crate::generated::types::TransferAmountRule; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct GuardV1 { - pub discriminator: [u8; 8], - /// Mint token representing the guard, do not confuse with the mint of the token being transferred. - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub mint: Pubkey, - /// Bump seed for the guard account. - pub bump: u8, - /// CPI ruleset for the guard. - pub cpi_rule: Option, - /// Transfer amount ruleset for the guard. - pub transfer_amount_rule: Option, - /// Additional fields ruleset for the guard. - pub additional_fields_rule: Vec, -} - -impl GuardV1 { - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for GuardV1 { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for GuardV1 { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for GuardV1 {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for GuardV1 { - fn owner() -> Pubkey { - crate::WEN_TRANSFER_GUARD_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for GuardV1 {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for GuardV1 { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_transfer_guard/src/generated/accounts/mod.rs b/clients/rust/wen_transfer_guard/src/generated/accounts/mod.rs deleted file mode 100644 index ebbd49ad..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/accounts/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#guard_v1; - -pub use self::r#guard_v1::*; diff --git a/clients/rust/wen_transfer_guard/src/generated/errors/mod.rs b/clients/rust/wen_transfer_guard/src/generated/errors/mod.rs deleted file mode 100644 index edea33cb..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/errors/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod wen_transfer_guard; - -pub use self::wen_transfer_guard::WenTransferGuardError; diff --git a/clients/rust/wen_transfer_guard/src/generated/errors/wen_transfer_guard.rs b/clients/rust/wen_transfer_guard/src/generated/errors/wen_transfer_guard.rs deleted file mode 100644 index 1b29449a..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/errors/wen_transfer_guard.rs +++ /dev/null @@ -1,43 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use num_derive::FromPrimitive; -use thiserror::Error; - -#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)] -pub enum WenTransferGuardError { - /// 6000 - Cpi Rule Enforcement Failed - #[error("Cpi Rule Enforcement Failed")] - CpiRuleEnforcementFailed = 0x1770, - /// 6001 - Transfer Amount Rule Enforce Failed - #[error("Transfer Amount Rule Enforce Failed")] - TransferAmountRuleEnforceFailed = 0x1771, - /// 6002 - Metadata Field Does Not Exist - #[error("Metadata Field Does Not Exist")] - MetadataFieldDoesNotExist = 0x1772, - /// 6003 - Metadata Field Does Not Pass - #[error("Metadata Field Does Not Pass")] - MetadataFieldDoesNotPass = 0x1773, - /// 6004 - Guard token amount should be at least 1 - #[error("Guard token amount should be at least 1")] - GuardTokenAmountShouldBeAtLeastOne = 0x1774, - /// 6005 - Not owned by token 2022 program - #[error("Not owned by token 2022 program")] - NotOwnedByToken2022Program = 0x1775, - /// 6006 - Must be initialized by Transfer Hook Authority - #[error("Must be initialized by Transfer Hook Authority")] - MustBeInitializedByTransferHookAuthority = 0x1776, - /// 6007 - Mint's assigned Transfer Hook Program is not this one - #[error("Mint's assigned Transfer Hook Program is not this one")] - MintAssignedTransferHookProgramIsNotThisOne = 0x1777, -} - -impl solana_program::program_error::PrintProgramError for WenTransferGuardError { - fn print(&self) { - solana_program::msg!(&self.to_string()); - } -} diff --git a/clients/rust/wen_transfer_guard/src/generated/instructions/create_guard.rs b/clients/rust/wen_transfer_guard/src/generated/instructions/create_guard.rs deleted file mode 100644 index ec99b728..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/instructions/create_guard.rs +++ /dev/null @@ -1,708 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::CpiRule; -use crate::generated::types::MetadataAdditionalFieldRule; -use crate::generated::types::TransferAmountRule; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct CreateGuard { - pub guard: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub mint_token_account: solana_program::pubkey::Pubkey, - - pub guard_authority: solana_program::pubkey::Pubkey, - - pub payer: solana_program::pubkey::Pubkey, - - pub associated_token_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl CreateGuard { - pub fn instruction( - &self, - args: CreateGuardInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: CreateGuardInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(8 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.guard, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.guard_authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.associated_token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = CreateGuardInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct CreateGuardInstructionData { - discriminator: [u8; 8], -} - -impl CreateGuardInstructionData { - pub fn new() -> Self { - Self { - discriminator: [251, 254, 17, 198, 219, 218, 154, 99], - } - } -} - -impl Default for CreateGuardInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct CreateGuardInstructionArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub cpi_rule: Option, - pub transfer_amount_rule: Option, - pub additional_fields_rule: Vec, -} - -/// Instruction builder for `CreateGuard`. -/// -/// ### Accounts: -/// -/// 0. `[writable]` guard -/// 1. `[writable, signer]` mint -/// 2. `[writable]` mint_token_account -/// 3. `[signer]` guard_authority -/// 4. `[writable, signer]` payer -/// 5. `[optional]` associated_token_program (default to `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`) -/// 6. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -/// 7. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct CreateGuardBuilder { - guard: Option, - mint: Option, - mint_token_account: Option, - guard_authority: Option, - payer: Option, - associated_token_program: Option, - token_program: Option, - system_program: Option, - name: Option, - symbol: Option, - uri: Option, - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Option>, - __remaining_accounts: Vec, -} - -impl CreateGuardBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn guard(&mut self, guard: solana_program::pubkey::Pubkey) -> &mut Self { - self.guard = Some(guard); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn guard_authority( - &mut self, - guard_authority: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.guard_authority = Some(guard_authority); - self - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - /// `[optional account, default to 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL']` - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.associated_token_program = Some(associated_token_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.uri = Some(uri); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn cpi_rule(&mut self, cpi_rule: CpiRule) -> &mut Self { - self.cpi_rule = Some(cpi_rule); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn transfer_amount_rule(&mut self, transfer_amount_rule: TransferAmountRule) -> &mut Self { - self.transfer_amount_rule = Some(transfer_amount_rule); - self - } - #[inline(always)] - pub fn additional_fields_rule( - &mut self, - additional_fields_rule: Vec, - ) -> &mut Self { - self.additional_fields_rule = Some(additional_fields_rule); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = CreateGuard { - guard: self.guard.expect("guard is not set"), - mint: self.mint.expect("mint is not set"), - mint_token_account: self - .mint_token_account - .expect("mint_token_account is not set"), - guard_authority: self.guard_authority.expect("guard_authority is not set"), - payer: self.payer.expect("payer is not set"), - associated_token_program: self.associated_token_program.unwrap_or( - solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), - ), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - let args = CreateGuardInstructionArgs { - name: self.name.clone().expect("name is not set"), - symbol: self.symbol.clone().expect("symbol is not set"), - uri: self.uri.clone().expect("uri is not set"), - cpi_rule: self.cpi_rule.clone(), - transfer_amount_rule: self.transfer_amount_rule.clone(), - additional_fields_rule: self - .additional_fields_rule - .clone() - .expect("additional_fields_rule is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `create_guard` CPI accounts. -pub struct CreateGuardCpiAccounts<'a, 'b> { - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `create_guard` CPI instruction. -pub struct CreateGuardCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: CreateGuardInstructionArgs, -} - -impl<'a, 'b> CreateGuardCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: CreateGuardCpiAccounts<'a, 'b>, - args: CreateGuardInstructionArgs, - ) -> Self { - Self { - __program: program, - guard: accounts.guard, - mint: accounts.mint, - mint_token_account: accounts.mint_token_account, - guard_authority: accounts.guard_authority, - payer: accounts.payer, - associated_token_program: accounts.associated_token_program, - token_program: accounts.token_program, - system_program: accounts.system_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(8 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.guard.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.guard_authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.associated_token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = CreateGuardInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(8 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.guard.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.mint_token_account.clone()); - account_infos.push(self.guard_authority.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.associated_token_program.clone()); - account_infos.push(self.token_program.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `CreateGuard` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable]` guard -/// 1. `[writable, signer]` mint -/// 2. `[writable]` mint_token_account -/// 3. `[signer]` guard_authority -/// 4. `[writable, signer]` payer -/// 5. `[]` associated_token_program -/// 6. `[]` token_program -/// 7. `[]` system_program -#[derive(Clone, Debug)] -pub struct CreateGuardCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> CreateGuardCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(CreateGuardCpiBuilderInstruction { - __program: program, - guard: None, - mint: None, - mint_token_account: None, - guard_authority: None, - payer: None, - associated_token_program: None, - token_program: None, - system_program: None, - name: None, - symbol: None, - uri: None, - cpi_rule: None, - transfer_amount_rule: None, - additional_fields_rule: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn guard(&mut self, guard: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.guard = Some(guard); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn mint_token_account( - &mut self, - mint_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.mint_token_account = Some(mint_token_account); - self - } - #[inline(always)] - pub fn guard_authority( - &mut self, - guard_authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.guard_authority = Some(guard_authority); - self - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.associated_token_program = Some(associated_token_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn name(&mut self, name: String) -> &mut Self { - self.instruction.name = Some(name); - self - } - #[inline(always)] - pub fn symbol(&mut self, symbol: String) -> &mut Self { - self.instruction.symbol = Some(symbol); - self - } - #[inline(always)] - pub fn uri(&mut self, uri: String) -> &mut Self { - self.instruction.uri = Some(uri); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn cpi_rule(&mut self, cpi_rule: CpiRule) -> &mut Self { - self.instruction.cpi_rule = Some(cpi_rule); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn transfer_amount_rule(&mut self, transfer_amount_rule: TransferAmountRule) -> &mut Self { - self.instruction.transfer_amount_rule = Some(transfer_amount_rule); - self - } - #[inline(always)] - pub fn additional_fields_rule( - &mut self, - additional_fields_rule: Vec, - ) -> &mut Self { - self.instruction.additional_fields_rule = Some(additional_fields_rule); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = CreateGuardInstructionArgs { - name: self.instruction.name.clone().expect("name is not set"), - symbol: self.instruction.symbol.clone().expect("symbol is not set"), - uri: self.instruction.uri.clone().expect("uri is not set"), - cpi_rule: self.instruction.cpi_rule.clone(), - transfer_amount_rule: self.instruction.transfer_amount_rule.clone(), - additional_fields_rule: self - .instruction - .additional_fields_rule - .clone() - .expect("additional_fields_rule is not set"), - }; - let instruction = CreateGuardCpi { - __program: self.instruction.__program, - - guard: self.instruction.guard.expect("guard is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - mint_token_account: self - .instruction - .mint_token_account - .expect("mint_token_account is not set"), - - guard_authority: self - .instruction - .guard_authority - .expect("guard_authority is not set"), - - payer: self.instruction.payer.expect("payer is not set"), - - associated_token_program: self - .instruction - .associated_token_program - .expect("associated_token_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct CreateGuardCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - guard: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - guard_authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - associated_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - name: Option, - symbol: Option, - uri: Option, - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Option>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_transfer_guard/src/generated/instructions/execute.rs b/clients/rust/wen_transfer_guard/src/generated/instructions/execute.rs deleted file mode 100644 index f6c2863d..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/instructions/execute.rs +++ /dev/null @@ -1,571 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct Execute { - pub source_account: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub destination_account: solana_program::pubkey::Pubkey, - - pub owner_delegate: solana_program::pubkey::Pubkey, - - pub extra_metas_account: solana_program::pubkey::Pubkey, - - pub guard: solana_program::pubkey::Pubkey, - - pub instruction_sysvar_account: solana_program::pubkey::Pubkey, -} - -impl Execute { - pub fn instruction( - &self, - args: ExecuteInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: ExecuteInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(7 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.source_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.destination_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.owner_delegate, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.extra_metas_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.guard, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.instruction_sysvar_account, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = ExecuteInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ExecuteInstructionData { - discriminator: [u8; 8], -} - -impl ExecuteInstructionData { - pub fn new() -> Self { - Self { - discriminator: [105, 37, 101, 197, 75, 251, 102, 26], - } - } -} - -impl Default for ExecuteInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ExecuteInstructionArgs { - pub amount: u64, -} - -/// Instruction builder for `Execute`. -/// -/// ### Accounts: -/// -/// 0. `[]` source_account -/// 1. `[]` mint -/// 2. `[]` destination_account -/// 3. `[]` owner_delegate -/// 4. `[]` extra_metas_account -/// 5. `[]` guard -/// 6. `[optional]` instruction_sysvar_account (default to `Sysvar1nstructions1111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct ExecuteBuilder { - source_account: Option, - mint: Option, - destination_account: Option, - owner_delegate: Option, - extra_metas_account: Option, - guard: Option, - instruction_sysvar_account: Option, - amount: Option, - __remaining_accounts: Vec, -} - -impl ExecuteBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn source_account(&mut self, source_account: solana_program::pubkey::Pubkey) -> &mut Self { - self.source_account = Some(source_account); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn destination_account( - &mut self, - destination_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.destination_account = Some(destination_account); - self - } - #[inline(always)] - pub fn owner_delegate(&mut self, owner_delegate: solana_program::pubkey::Pubkey) -> &mut Self { - self.owner_delegate = Some(owner_delegate); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn guard(&mut self, guard: solana_program::pubkey::Pubkey) -> &mut Self { - self.guard = Some(guard); - self - } - /// `[optional account, default to 'Sysvar1nstructions1111111111111111111111111']` - #[inline(always)] - pub fn instruction_sysvar_account( - &mut self, - instruction_sysvar_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.instruction_sysvar_account = Some(instruction_sysvar_account); - self - } - #[inline(always)] - pub fn amount(&mut self, amount: u64) -> &mut Self { - self.amount = Some(amount); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = Execute { - source_account: self.source_account.expect("source_account is not set"), - mint: self.mint.expect("mint is not set"), - destination_account: self - .destination_account - .expect("destination_account is not set"), - owner_delegate: self.owner_delegate.expect("owner_delegate is not set"), - extra_metas_account: self - .extra_metas_account - .expect("extra_metas_account is not set"), - guard: self.guard.expect("guard is not set"), - instruction_sysvar_account: self.instruction_sysvar_account.unwrap_or( - solana_program::pubkey!("Sysvar1nstructions1111111111111111111111111"), - ), - }; - let args = ExecuteInstructionArgs { - amount: self.amount.clone().expect("amount is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `execute` CPI accounts. -pub struct ExecuteCpiAccounts<'a, 'b> { - pub source_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub destination_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub owner_delegate: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub instruction_sysvar_account: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `execute` CPI instruction. -pub struct ExecuteCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub source_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub destination_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub owner_delegate: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub instruction_sysvar_account: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: ExecuteInstructionArgs, -} - -impl<'a, 'b> ExecuteCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ExecuteCpiAccounts<'a, 'b>, - args: ExecuteInstructionArgs, - ) -> Self { - Self { - __program: program, - source_account: accounts.source_account, - mint: accounts.mint, - destination_account: accounts.destination_account, - owner_delegate: accounts.owner_delegate, - extra_metas_account: accounts.extra_metas_account, - guard: accounts.guard, - instruction_sysvar_account: accounts.instruction_sysvar_account, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(7 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.source_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.destination_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.owner_delegate.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.extra_metas_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.guard.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.instruction_sysvar_account.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = ExecuteInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(7 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.source_account.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.destination_account.clone()); - account_infos.push(self.owner_delegate.clone()); - account_infos.push(self.extra_metas_account.clone()); - account_infos.push(self.guard.clone()); - account_infos.push(self.instruction_sysvar_account.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `Execute` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[]` source_account -/// 1. `[]` mint -/// 2. `[]` destination_account -/// 3. `[]` owner_delegate -/// 4. `[]` extra_metas_account -/// 5. `[]` guard -/// 6. `[]` instruction_sysvar_account -#[derive(Clone, Debug)] -pub struct ExecuteCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ExecuteCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ExecuteCpiBuilderInstruction { - __program: program, - source_account: None, - mint: None, - destination_account: None, - owner_delegate: None, - extra_metas_account: None, - guard: None, - instruction_sysvar_account: None, - amount: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn source_account( - &mut self, - source_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.source_account = Some(source_account); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn destination_account( - &mut self, - destination_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.destination_account = Some(destination_account); - self - } - #[inline(always)] - pub fn owner_delegate( - &mut self, - owner_delegate: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.owner_delegate = Some(owner_delegate); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn guard(&mut self, guard: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.guard = Some(guard); - self - } - #[inline(always)] - pub fn instruction_sysvar_account( - &mut self, - instruction_sysvar_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.instruction_sysvar_account = Some(instruction_sysvar_account); - self - } - #[inline(always)] - pub fn amount(&mut self, amount: u64) -> &mut Self { - self.instruction.amount = Some(amount); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = ExecuteInstructionArgs { - amount: self.instruction.amount.clone().expect("amount is not set"), - }; - let instruction = ExecuteCpi { - __program: self.instruction.__program, - - source_account: self - .instruction - .source_account - .expect("source_account is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - destination_account: self - .instruction - .destination_account - .expect("destination_account is not set"), - - owner_delegate: self - .instruction - .owner_delegate - .expect("owner_delegate is not set"), - - extra_metas_account: self - .instruction - .extra_metas_account - .expect("extra_metas_account is not set"), - - guard: self.instruction.guard.expect("guard is not set"), - - instruction_sysvar_account: self - .instruction - .instruction_sysvar_account - .expect("instruction_sysvar_account is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ExecuteCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - source_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - destination_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - owner_delegate: Option<&'b solana_program::account_info::AccountInfo<'a>>, - extra_metas_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - guard: Option<&'b solana_program::account_info::AccountInfo<'a>>, - instruction_sysvar_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - amount: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_transfer_guard/src/generated/instructions/initialize.rs b/clients/rust/wen_transfer_guard/src/generated/instructions/initialize.rs deleted file mode 100644 index 092912d5..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/instructions/initialize.rs +++ /dev/null @@ -1,483 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct Initialize { - pub extra_metas_account: solana_program::pubkey::Pubkey, - - pub guard: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub transfer_hook_authority: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub payer: solana_program::pubkey::Pubkey, -} - -impl Initialize { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.extra_metas_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.guard, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.transfer_hook_authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.extend_from_slice(remaining_accounts); - let data = InitializeInstructionData::new().try_to_vec().unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct InitializeInstructionData { - discriminator: [u8; 8], -} - -impl InitializeInstructionData { - pub fn new() -> Self { - Self { - discriminator: [43, 34, 13, 49, 167, 88, 235, 235], - } - } -} - -impl Default for InitializeInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `Initialize`. -/// -/// ### Accounts: -/// -/// 0. `[writable]` extra_metas_account -/// 1. `[]` guard -/// 2. `[]` mint -/// 3. `[writable, signer]` transfer_hook_authority -/// 4. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 5. `[writable, signer]` payer -#[derive(Clone, Debug, Default)] -pub struct InitializeBuilder { - extra_metas_account: Option, - guard: Option, - mint: Option, - transfer_hook_authority: Option, - system_program: Option, - payer: Option, - __remaining_accounts: Vec, -} - -impl InitializeBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn guard(&mut self, guard: solana_program::pubkey::Pubkey) -> &mut Self { - self.guard = Some(guard); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn transfer_hook_authority( - &mut self, - transfer_hook_authority: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.transfer_hook_authority = Some(transfer_hook_authority); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = Initialize { - extra_metas_account: self - .extra_metas_account - .expect("extra_metas_account is not set"), - guard: self.guard.expect("guard is not set"), - mint: self.mint.expect("mint is not set"), - transfer_hook_authority: self - .transfer_hook_authority - .expect("transfer_hook_authority is not set"), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - payer: self.payer.expect("payer is not set"), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `initialize` CPI accounts. -pub struct InitializeCpiAccounts<'a, 'b> { - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub transfer_hook_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `initialize` CPI instruction. -pub struct InitializeCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub transfer_hook_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> InitializeCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: InitializeCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - extra_metas_account: accounts.extra_metas_account, - guard: accounts.guard, - mint: accounts.mint, - transfer_hook_authority: accounts.transfer_hook_authority, - system_program: accounts.system_program, - payer: accounts.payer, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.extra_metas_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.guard.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.transfer_hook_authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = InitializeInstructionData::new().try_to_vec().unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.extra_metas_account.clone()); - account_infos.push(self.guard.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.transfer_hook_authority.clone()); - account_infos.push(self.system_program.clone()); - account_infos.push(self.payer.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `Initialize` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable]` extra_metas_account -/// 1. `[]` guard -/// 2. `[]` mint -/// 3. `[writable, signer]` transfer_hook_authority -/// 4. `[]` system_program -/// 5. `[writable, signer]` payer -#[derive(Clone, Debug)] -pub struct InitializeCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> InitializeCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(InitializeCpiBuilderInstruction { - __program: program, - extra_metas_account: None, - guard: None, - mint: None, - transfer_hook_authority: None, - system_program: None, - payer: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn guard(&mut self, guard: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.guard = Some(guard); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn transfer_hook_authority( - &mut self, - transfer_hook_authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.transfer_hook_authority = Some(transfer_hook_authority); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = InitializeCpi { - __program: self.instruction.__program, - - extra_metas_account: self - .instruction - .extra_metas_account - .expect("extra_metas_account is not set"), - - guard: self.instruction.guard.expect("guard is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - transfer_hook_authority: self - .instruction - .transfer_hook_authority - .expect("transfer_hook_authority is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - payer: self.instruction.payer.expect("payer is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct InitializeCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - extra_metas_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - guard: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - transfer_hook_authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_transfer_guard/src/generated/instructions/mod.rs b/clients/rust/wen_transfer_guard/src/generated/instructions/mod.rs deleted file mode 100644 index 95c585c7..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/instructions/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#create_guard; -pub(crate) mod r#execute; -pub(crate) mod r#initialize; -pub(crate) mod r#update_guard; - -pub use self::r#create_guard::*; -pub use self::r#execute::*; -pub use self::r#initialize::*; -pub use self::r#update_guard::*; diff --git a/clients/rust/wen_transfer_guard/src/generated/instructions/update_guard.rs b/clients/rust/wen_transfer_guard/src/generated/instructions/update_guard.rs deleted file mode 100644 index 9abffb76..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/instructions/update_guard.rs +++ /dev/null @@ -1,576 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::CpiRule; -use crate::generated::types::MetadataAdditionalFieldRule; -use crate::generated::types::TransferAmountRule; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct UpdateGuard { - pub guard: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub token_account: solana_program::pubkey::Pubkey, - - pub guard_authority: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl UpdateGuard { - pub fn instruction( - &self, - args: UpdateGuardInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: UpdateGuardInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.guard, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.guard_authority, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = UpdateGuardInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct UpdateGuardInstructionData { - discriminator: [u8; 8], -} - -impl UpdateGuardInstructionData { - pub fn new() -> Self { - Self { - discriminator: [51, 38, 175, 180, 25, 249, 39, 24], - } - } -} - -impl Default for UpdateGuardInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct UpdateGuardInstructionArgs { - pub cpi_rule: Option, - pub transfer_amount_rule: Option, - pub additional_fields_rule: Vec, -} - -/// Instruction builder for `UpdateGuard`. -/// -/// ### Accounts: -/// -/// 0. `[writable]` guard -/// 1. `[]` mint -/// 2. `[]` token_account -/// 3. `[signer]` guard_authority -/// 4. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -/// 5. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct UpdateGuardBuilder { - guard: Option, - mint: Option, - token_account: Option, - guard_authority: Option, - token_program: Option, - system_program: Option, - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Option>, - __remaining_accounts: Vec, -} - -impl UpdateGuardBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn guard(&mut self, guard: solana_program::pubkey::Pubkey) -> &mut Self { - self.guard = Some(guard); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn token_account(&mut self, token_account: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_account = Some(token_account); - self - } - #[inline(always)] - pub fn guard_authority( - &mut self, - guard_authority: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.guard_authority = Some(guard_authority); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn cpi_rule(&mut self, cpi_rule: CpiRule) -> &mut Self { - self.cpi_rule = Some(cpi_rule); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn transfer_amount_rule(&mut self, transfer_amount_rule: TransferAmountRule) -> &mut Self { - self.transfer_amount_rule = Some(transfer_amount_rule); - self - } - #[inline(always)] - pub fn additional_fields_rule( - &mut self, - additional_fields_rule: Vec, - ) -> &mut Self { - self.additional_fields_rule = Some(additional_fields_rule); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = UpdateGuard { - guard: self.guard.expect("guard is not set"), - mint: self.mint.expect("mint is not set"), - token_account: self.token_account.expect("token_account is not set"), - guard_authority: self.guard_authority.expect("guard_authority is not set"), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - let args = UpdateGuardInstructionArgs { - cpi_rule: self.cpi_rule.clone(), - transfer_amount_rule: self.transfer_amount_rule.clone(), - additional_fields_rule: self - .additional_fields_rule - .clone() - .expect("additional_fields_rule is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `update_guard` CPI accounts. -pub struct UpdateGuardCpiAccounts<'a, 'b> { - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `update_guard` CPI instruction. -pub struct UpdateGuardCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub guard_authority: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: UpdateGuardInstructionArgs, -} - -impl<'a, 'b> UpdateGuardCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: UpdateGuardCpiAccounts<'a, 'b>, - args: UpdateGuardInstructionArgs, - ) -> Self { - Self { - __program: program, - guard: accounts.guard, - mint: accounts.mint, - token_account: accounts.token_account, - guard_authority: accounts.guard_authority, - token_program: accounts.token_program, - system_program: accounts.system_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(6 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.guard.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.guard_authority.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = UpdateGuardInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_TRANSFER_GUARD_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(6 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.guard.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.token_account.clone()); - account_infos.push(self.guard_authority.clone()); - account_infos.push(self.token_program.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `UpdateGuard` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable]` guard -/// 1. `[]` mint -/// 2. `[]` token_account -/// 3. `[signer]` guard_authority -/// 4. `[]` token_program -/// 5. `[]` system_program -#[derive(Clone, Debug)] -pub struct UpdateGuardCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> UpdateGuardCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(UpdateGuardCpiBuilderInstruction { - __program: program, - guard: None, - mint: None, - token_account: None, - guard_authority: None, - token_program: None, - system_program: None, - cpi_rule: None, - transfer_amount_rule: None, - additional_fields_rule: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn guard(&mut self, guard: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.guard = Some(guard); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn token_account( - &mut self, - token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_account = Some(token_account); - self - } - #[inline(always)] - pub fn guard_authority( - &mut self, - guard_authority: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.guard_authority = Some(guard_authority); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn cpi_rule(&mut self, cpi_rule: CpiRule) -> &mut Self { - self.instruction.cpi_rule = Some(cpi_rule); - self - } - /// `[optional argument]` - #[inline(always)] - pub fn transfer_amount_rule(&mut self, transfer_amount_rule: TransferAmountRule) -> &mut Self { - self.instruction.transfer_amount_rule = Some(transfer_amount_rule); - self - } - #[inline(always)] - pub fn additional_fields_rule( - &mut self, - additional_fields_rule: Vec, - ) -> &mut Self { - self.instruction.additional_fields_rule = Some(additional_fields_rule); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = UpdateGuardInstructionArgs { - cpi_rule: self.instruction.cpi_rule.clone(), - transfer_amount_rule: self.instruction.transfer_amount_rule.clone(), - additional_fields_rule: self - .instruction - .additional_fields_rule - .clone() - .expect("additional_fields_rule is not set"), - }; - let instruction = UpdateGuardCpi { - __program: self.instruction.__program, - - guard: self.instruction.guard.expect("guard is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - token_account: self - .instruction - .token_account - .expect("token_account is not set"), - - guard_authority: self - .instruction - .guard_authority - .expect("guard_authority is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct UpdateGuardCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - guard: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - guard_authority: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Option>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_transfer_guard/src/generated/mod.rs b/clients/rust/wen_transfer_guard/src/generated/mod.rs deleted file mode 100644 index a3793d7c..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/mod.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub mod accounts; -pub mod errors; -pub mod instructions; -pub mod programs; -pub mod types; - -pub(crate) use programs::*; diff --git a/clients/rust/wen_transfer_guard/src/generated/programs.rs b/clients/rust/wen_transfer_guard/src/generated/programs.rs deleted file mode 100644 index 47becce7..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/programs.rs +++ /dev/null @@ -1,11 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use solana_program::{pubkey, pubkey::Pubkey}; - -/// `wen_transfer_guard` program ID. -pub const WEN_TRANSFER_GUARD_ID: Pubkey = pubkey!("LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw"); diff --git a/clients/rust/wen_transfer_guard/src/generated/types/cpi_rule.rs b/clients/rust/wen_transfer_guard/src/generated/types/cpi_rule.rs deleted file mode 100644 index 58315cfa..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/types/cpi_rule.rs +++ /dev/null @@ -1,27 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -/// Controls which protocols can interact with the token by -/// enforcing Allow and Deny lists. -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub enum CpiRule { - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::>") - )] - Allow(Vec), - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::>") - )] - Deny(Vec), -} diff --git a/clients/rust/wen_transfer_guard/src/generated/types/metadata_additional_field_restriction.rs b/clients/rust/wen_transfer_guard/src/generated/types/metadata_additional_field_restriction.rs deleted file mode 100644 index 8060e784..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/types/metadata_additional_field_restriction.rs +++ /dev/null @@ -1,19 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Inner enum for the MetadataAdditionalFieldRestriction enum. -/// * Includes - The field must include one of the values in the vector. -/// * Excludes - The field must not include any of the values in the vector. -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub enum MetadataAdditionalFieldRestriction { - Includes(Vec), - Excludes(Vec), -} diff --git a/clients/rust/wen_transfer_guard/src/generated/types/metadata_additional_field_rule.rs b/clients/rust/wen_transfer_guard/src/generated/types/metadata_additional_field_rule.rs deleted file mode 100644 index 81126642..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/types/metadata_additional_field_rule.rs +++ /dev/null @@ -1,19 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::MetadataAdditionalFieldRestriction; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Enforces rules on a single additional field in the mint metadata. -/// The field must exist and the value must pass the restriction. -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct MetadataAdditionalFieldRule { - pub field: String, - pub value_restrictions: Option, -} diff --git a/clients/rust/wen_transfer_guard/src/generated/types/mod.rs b/clients/rust/wen_transfer_guard/src/generated/types/mod.rs deleted file mode 100644 index 6b7dc514..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/types/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#cpi_rule; -pub(crate) mod r#metadata_additional_field_restriction; -pub(crate) mod r#metadata_additional_field_rule; -pub(crate) mod r#transfer_amount_rule; - -pub use self::r#cpi_rule::*; -pub use self::r#metadata_additional_field_restriction::*; -pub use self::r#metadata_additional_field_rule::*; -pub use self::r#transfer_amount_rule::*; diff --git a/clients/rust/wen_transfer_guard/src/generated/types/transfer_amount_rule.rs b/clients/rust/wen_transfer_guard/src/generated/types/transfer_amount_rule.rs deleted file mode 100644 index 5753e61f..00000000 --- a/clients/rust/wen_transfer_guard/src/generated/types/transfer_amount_rule.rs +++ /dev/null @@ -1,20 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Enforces rules on the amount of tokens being transferred. -/// The rules can be above, below, equal to, or within a range. -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub enum TransferAmountRule { - Above(u64), - Below(u64), - Equal(u64), - Rang(u64, u64), -} diff --git a/clients/rust/wen_transfer_guard/src/lib.rs b/clients/rust/wen_transfer_guard/src/lib.rs deleted file mode 100644 index 9974b792..00000000 --- a/clients/rust/wen_transfer_guard/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -mod generated; - -pub use generated::programs::WEN_TRANSFER_GUARD_ID as ID; -pub use generated::*; diff --git a/clients/rust/wen_wns_marketplace/CONTRIBUTING.md b/clients/rust/wen_wns_marketplace/CONTRIBUTING.md deleted file mode 100644 index 6aa40090..00000000 --- a/clients/rust/wen_wns_marketplace/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Contributing to the Rust client - -This is a quick guide to help you contribute to the Rust client of WNS. - -## Getting started - -To build and test the Rust client, you can use `cargo`. - -```sh -# Build the client -cargo build - -# Test the client (requires building the program first) -cargo test-sbf --sbf-out-dir ../../programs/.bin -``` - -When something changes in the program(s), make sure to run `yarn clients` in the root directory, to re-generate the clients accordingly. \ No newline at end of file diff --git a/clients/rust/wen_wns_marketplace/Cargo.lock b/clients/rust/wen_wns_marketplace/Cargo.lock deleted file mode 100644 index b76af010..00000000 --- a/clients/rust/wen_wns_marketplace/Cargo.lock +++ /dev/null @@ -1,6210 +0,0 @@ -# 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 = "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.15", - "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.15", - "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 = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - -[[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.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" -dependencies = [ - "anchor-syn", - "bs58 0.5.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb2a5eb0860e661ab31aff7bb5e0288357b176380e985bade4ccb395981b42d" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58 0.5.1", - "heck 0.3.3", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" -dependencies = [ - "anchor-syn", - "borsh-derive-internal 0.10.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6620c9486d9d36a4389cab5e37dc34a42ed0bfaa62e6a75a2999ce98f8f2e373" -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.21.7", - "bincode", - "borsh 0.10.3", - "bytemuck", - "getrandom 0.2.15", - "solana-program", - "thiserror", -] - -[[package]] -name = "anchor-lang-idl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" -dependencies = [ - "anchor-lang-idl-spec", - "anyhow", - "heck 0.3.3", - "serde", - "serde_json", - "sha2 0.10.8", -] - -[[package]] -name = "anchor-lang-idl-spec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" -dependencies = [ - "anyhow", - "serde", -] - -[[package]] -name = "anchor-syn" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99daacb53b55cfd37ce14d6c9905929721137fd4c67bbab44a19802aecb622f" -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 = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "aquamarine" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" -dependencies = [ - "include_dir", - "itertools", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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.5", - "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.5", - "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.5", -] - -[[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.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" -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.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[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 = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" -dependencies = [ - "borsh-derive 1.5.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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.64", - "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 = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" -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.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" -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.64", -] - -[[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 = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[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.97" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" -dependencies = [ - "jobserver", - "libc", - "once_cell", -] - -[[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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.5", -] - -[[package]] -name = "chrono-humanize" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" -dependencies = [ - "chrono", -] - -[[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", - "indexmap 1.9.3", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap 0.16.1", -] - -[[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 = "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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[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 = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[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 = "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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.64", -] - -[[package]] -name = "darling_macro" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.64", -] - -[[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.5", - "lock_api", - "once_cell", - "parking_lot_core", - "rayon", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[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.5", - "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", - "serde", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "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 = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - -[[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 = "dir-diff" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" -dependencies = [ - "walkdir", -] - -[[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.64", -] - -[[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.64", -] - -[[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[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 = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "either" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint 0.4.5", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -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.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "feature-probe" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" - -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float-cmp" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[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 = "fragile" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" - -[[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.64", -] - -[[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-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.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[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 = "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 0.7.11", - "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" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.11", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[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.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[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 = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[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 = "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 = "include_dir" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "index_list" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70891286cb8e844fdfcf1178b47569699f9e20b5ecc4b45a6240a64771444638" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", - "serde", -] - -[[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.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -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.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -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 = "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.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[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-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.5", - "thiserror", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "lru" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lz4" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" -dependencies = [ - "libc", - "lz4-sys", -] - -[[package]] -name = "lz4-sys" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" -dependencies = [ - "cc", - "libc", -] - -[[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.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.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" -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 = "mockall" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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 = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" -dependencies = [ - "num-integer", - "num-traits", -] - -[[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.64", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_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.64", -] - -[[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.64", -] - -[[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-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - -[[package]] -name = "ouroboros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" -dependencies = [ - "aliasable", - "ouroboros_macro", -] - -[[package]] -name = "ouroboros_macro" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.1", - "smallvec", - "windows-targets 0.52.5", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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 = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "predicates" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" -dependencies = [ - "difflib", - "float-cmp", - "itertools", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[package]] -name = "predicates-core" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" - -[[package]] -name = "predicates-tree" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[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", - "syn 1.0.109", - "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.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" -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.64", -] - -[[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.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "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 = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", -] - -[[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 = "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", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-rustls", - "tokio-util 0.7.11", - "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.15", - "libc", - "spin 0.9.8", - "untrusted 0.9.0", - "windows-sys 0.52.0", -] - -[[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 = "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 = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -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.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[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.64", -] - -[[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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "seqlock" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" -dependencies = [ - "parking_lot", -] - -[[package]] -name = "serde" -version = "1.0.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" -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.202" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "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 2.3.3", -] - -[[package]] -name = "serde_with" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.2.6", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.8.1", - "time", -] - -[[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.64", -] - -[[package]] -name = "serde_with_macros" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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 = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -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.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solana-account-decoder" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1387123a0daab82dbd205c543f8bba0ed5345fc6b8eaa910ecd9dcb7469fc78" -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-accounts-db" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2033eae13b5ab9d3adc6c90ea06a37177cd2de4fe4c04159be5c583756a5414" -dependencies = [ - "arrayref", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lz4", - "memmap2", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "seqlock", - "serde", - "serde_derive", - "smallvec", - "solana-bucket-map", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-measure", - "solana-metrics", - "solana-nohash-hasher", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", - "static_assertions", - "strum", - "strum_macros", - "tar", - "tempfile", - "thiserror", -] - -[[package]] -name = "solana-address-lookup-table-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396a385d0c7cc65fca238c757cca29c41d09fe18734d5f85890c23cd6e0d3876" -dependencies = [ - "bincode", - "bytemuck", - "log", - "num-derive 0.4.2", - "num-traits", - "rustc_version", - "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-program", - "solana-program-runtime", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-banks-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a0af125d95032a260a9dbc020d571d8904874ada1505f3e860a88f915b4c00" -dependencies = [ - "borsh 1.5.0", - "futures", - "solana-banks-interface", - "solana-program", - "solana-sdk", - "tarpc", - "thiserror", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-banks-interface" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bf9ac405608785d26993bdc18b867b71736ba495714b1c5ef9efc2da9eb8c4" -dependencies = [ - "serde", - "solana-sdk", - "tarpc", -] - -[[package]] -name = "solana-banks-server" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2769555bcc726040169af9846f1815824f3a6479d0504157805a0cb6aea04c4" -dependencies = [ - "bincode", - "crossbeam-channel", - "futures", - "solana-accounts-db", - "solana-banks-interface", - "solana-client", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "tarpc", - "tokio", - "tokio-serde", -] - -[[package]] -name = "solana-bpf-loader-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8913b997267ef7816d07d54b61e236140069b3774b15dc1b9c8cc1d08793f1e" -dependencies = [ - "bincode", - "byteorder", - "libsecp256k1", - "log", - "scopeguard", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", - "solana_rbpf", - "thiserror", -] - -[[package]] -name = "solana-bucket-map" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7ee2b83c088999cc1b5c33039561603496dec7a069769ae1ba52512ce1c4ca" -dependencies = [ - "bv", - "bytemuck", - "log", - "memmap2", - "modular-bitfield", - "num_enum 0.7.2", - "rand 0.8.5", - "solana-measure", - "solana-sdk", - "tempfile", -] - -[[package]] -name = "solana-clap-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1bf62a854e86674baafa1db95de3574e134140ad694d79812699d0ff7dba98" -dependencies = [ - "chrono", - "clap 2.34.0", - "rpassword", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", -] - -[[package]] -name = "solana-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0b54e872d5d1de9e983d684f843ea622ba4b4432602a3aafd897626b25c339" -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-compute-budget-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e589e502a52f43dfc7a51e874e640c64d145e019e18162b7a43f2021038774e" -dependencies = [ - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-config-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0756e2a78554efdcb997a00a652b20291a823f2415c752adaa0dad7320460c9" -dependencies = [ - "bincode", - "chrono", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-connection-cache" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14821e889f3f010265d61814b5971e24837677fa51e2c4be2674aa4bcc8c77e5" -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-cost-model" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69710df9e1eb6863a5d676067d0c2e0d58fd498024cb1bc8dc9661d468590b0b" -dependencies = [ - "lazy_static", - "log", - "rustc_version", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-metrics", - "solana-program-runtime", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-frozen-abi" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d353eac7a178cd8a2ceaf5d304719d4a30c1d3f24f303145d5b029b8cc7c35f0" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc87189dcb2d2da407831fc983e4f05e70c58be12b5c713e9a05f873edb42637" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.64", -] - -[[package]] -name = "solana-loader-v4-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa7ce511c95953586638001e015b7ba2901fab5df6db02c1ce08faa7afb6408" -dependencies = [ - "log", - "solana-measure", - "solana-program-runtime", - "solana-sdk", - "solana_rbpf", -] - -[[package]] -name = "solana-logger" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d857a115710eeb1c5ac98a340141f0c49cc31854168767d0c5b855e212632a5" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-measure" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a32fb164205ddff073863f17a45e66fe44f88fa0fee2fa9790aa5cd730b616" -dependencies = [ - "log", - "solana-sdk", -] - -[[package]] -name = "solana-metrics" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374bb8daec434f2c867091ff7c1c494eb358c5c23a583cc44a5a6134609271c2" -dependencies = [ - "crossbeam-channel", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-net-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09abc9f1df58d9990cb085d1e8a489f682828fc78e1933856fd63cbb231748" -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-nohash-hasher" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" - -[[package]] -name = "solana-perf" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7d00801b85338f0ecf3fbb4c1d14dfccca4c1adc162f7fe28c5ee9ea7acc9f" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad73ff4d5c8d4943988ef18924f5fbd96881410ab20d5a0bfa32bb44d7d4cfce" -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.5.0", - "bs58 0.4.0", - "bv", - "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", - "itertools", - "js-sys", - "lazy_static", - "libc", - "libsecp256k1", - "light-poseidon", - "log", - "memoffset 0.9.1", - "num-bigint 0.4.5", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83375b909adeefd5ab9dc1473456df2b46f9377c8fa0d2447cc5a15a94ca407" -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-program-test" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5b1bbacdb3b9f0ad73b028e43d143374e3915627c18800f3d10cc6486eb516" -dependencies = [ - "assert_matches", - "async-trait", - "base64 0.21.7", - "bincode", - "chrono-humanize", - "crossbeam-channel", - "log", - "serde", - "solana-accounts-db", - "solana-banks-client", - "solana-banks-interface", - "solana-banks-server", - "solana-bpf-loader-program", - "solana-logger", - "solana-program-runtime", - "solana-runtime", - "solana-sdk", - "solana-vote-program", - "solana_rbpf", - "test-case", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-pubsub-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4425ce6449feac0d49b5ef9645d898c29d298ab93fa4851fe495223b1d2f4a11" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917e7772597c3e0ee2a9c39c846e1932e013abfaf43dd3bf86d8d29d57e66d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f16819b18fc045e4cbe9b1602931776c55eef9051bd88d109c9a2050cef31" -dependencies = [ - "lazy_static", - "num_cpus", -] - -[[package]] -name = "solana-remote-wallet" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62a3cb947b3bf30eb65d92f96be1539ebc21ab3bc12a4b6bbecffd7b0d922772" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f631266453395a9e0b614ca222747000ea186507e187ccf5f5d5498a98b0806" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668173de3d2a6629c6508c508c1a87a46e51dea305241816a71e68525edc1022" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b409bc942263f987bb25ab56f0a3e601344fdcfb9b277a494dd142f81c34a23" -dependencies = [ - "clap 2.34.0", - "solana-clap-utils", - "solana-rpc-client", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-runtime" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1fd97b1954a0566dffa5ecbc246a61715ae54c410c13de025dc15b19422481" -dependencies = [ - "aquamarine", - "arrayref", - "base64 0.21.7", - "bincode", - "blake3", - "bv", - "bytemuck", - "byteorder", - "bzip2", - "crossbeam-channel", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "im", - "index_list", - "itertools", - "lazy_static", - "log", - "lru", - "lz4", - "memmap2", - "mockall", - "modular-bitfield", - "num-derive 0.4.2", - "num-traits", - "num_cpus", - "num_enum 0.7.2", - "ouroboros", - "percentage", - "qualifier_attr", - "rand 0.8.5", - "rayon", - "regex", - "rustc_version", - "serde", - "serde_derive", - "serde_json", - "solana-accounts-db", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-bucket-map", - "solana-compute-budget-program", - "solana-config-program", - "solana-cost-model", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-loader-v4-program", - "solana-measure", - "solana-metrics", - "solana-perf", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-stake-program", - "solana-system-program", - "solana-version", - "solana-vote", - "solana-vote-program", - "solana-zk-token-proof-program", - "solana-zk-token-sdk", - "static_assertions", - "strum", - "strum_macros", - "symlink", - "tar", - "tempfile", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f518a377209223b09a0fb62abd53add4a11313a1e85f535f559fbcc0227117a" -dependencies = [ - "assert_matches", - "base64 0.21.7", - "bincode", - "bitflags 2.5.0", - "borsh 1.5.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 2.3.3", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2975b2c2ed6f06d2ffbb2e6b3e7fdd9ca6b2570a76d49a2173f393e6e84c9c71" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.64", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" - -[[package]] -name = "solana-send-transaction-service" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc964aa722903dbf5680159d157438772a61b90779bc282dd9bddcb2a9f87b61" -dependencies = [ - "crossbeam-channel", - "log", - "solana-client", - "solana-measure", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "solana-tpu-client", -] - -[[package]] -name = "solana-stake-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c6d7223338a3eff4ef783505f1444454cacdd9ce027efc23687b7bc1864f3c" -dependencies = [ - "bincode", - "log", - "rustc_version", - "solana-config-program", - "solana-program-runtime", - "solana-sdk", - "solana-vote-program", -] - -[[package]] -name = "solana-streamer" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3986d3106ccbfe6bb1eb647918d2af82621db8d5d797a7f6a7b8d6b6b582064" -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-system-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f212424483492b18f2c406f5aa035aae7de6d4ef4e791921cfc41c326b6fc02a" -dependencies = [ - "bincode", - "log", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-thin-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7283a5597db9dd9a7b9515d4b95fe4964881c67ee2d51658d5e5b73d83fba10" -dependencies = [ - "bincode", - "log", - "rayon", - "solana-connection-cache", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", -] - -[[package]] -name = "solana-tpu-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2a073779fcae0ac8ce7251a0a12f7ed275e4ea26f9621f873e4a2e3dca21d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9672c191c1a7a82d1472ff15ad2a0812e28a27858814ead611a1374b11a70d7" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b87180d368c00ecd82a56df7498953730136848699433d5571dacd7fd9c186" -dependencies = [ - "async-trait", - "solana-connection-cache", - "solana-net-utils", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-version" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf94f6a9ed0e1df165569f0353e286a4e219b72d4a5200f0c8b9cd55d90f474" -dependencies = [ - "log", - "rustc_version", - "semver", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", -] - -[[package]] -name = "solana-vote" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a8f50c270ae4b5791ec43c8d3bc89e3b03d62b38683c59ea7357e37ff4b59" -dependencies = [ - "crossbeam-channel", - "itertools", - "log", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-sdk", - "solana-vote-program", - "thiserror", -] - -[[package]] -name = "solana-vote-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5d7a037bc2264af884564ea33f545817411897d2634ea2b83c4bc033896a0f" -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-proof-program" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42ab9ac3707f1f52df43cdd4511d135df490a03e9360945d4d702f6e92d0820" -dependencies = [ - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", -] - -[[package]] -name = "solana-zk-token-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cefc9878a202bf9606745e56712f7d56878ea31b29f2f89785b4b801b264322" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -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.64", -] - -[[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.64", - "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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "borsh 0.10.3", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -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.64", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.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 = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "symlink" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" - -[[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.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" -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.64", -] - -[[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 = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tarpc" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" -dependencies = [ - "anyhow", - "fnv", - "futures", - "humantime", - "opentelemetry", - "pin-project", - "rand 0.8.5", - "serde", - "static_assertions", - "tarpc-plugins", - "thiserror", - "tokio", - "tokio-serde", - "tokio-util 0.6.10", - "tracing", - "tracing-opentelemetry", -] - -[[package]] -name = "tarpc-plugins" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tempfile" -version = "3.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 = "termtree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" - -[[package]] -name = "test-case" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" -dependencies = [ - "test-case-macros", -] - -[[package]] -name = "test-case-core" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "test-case-macros" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", - "test-case-core", -] - -[[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.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "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 = "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.64", -] - -[[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-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe", - "futures-core", - "futures-sink", - "pin-project", - "serde", - "serde_json", -] - -[[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.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" - -[[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", -] - -[[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", -] - -[[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.64", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "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 = "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.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" - -[[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 = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[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 = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[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.64", - "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.64", - "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 = "wen_wns_marketplace" -version = "0.5.0-alpha" -dependencies = [ - "anchor-lang", - "assert_matches", - "borsh 0.10.3", - "num-derive 0.3.3", - "num-traits", - "serde", - "serde_with 3.8.1", - "solana-program", - "solana-program-test", - "solana-sdk", - "thiserror", -] - -[[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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.5", -] - -[[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.5", -] - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "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]] -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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[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.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 = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[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.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 = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -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 = "xattr" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" -dependencies = [ - "libc", - "linux-raw-sys", - "rustix", -] - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.64", -] - -[[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.64", -] - -[[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/clients/rust/wen_wns_marketplace/Cargo.toml b/clients/rust/wen_wns_marketplace/Cargo.toml deleted file mode 100644 index b6430dce..00000000 --- a/clients/rust/wen_wns_marketplace/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -description = "An open and composable NFT standard on Solana." -name = "wen_wns_marketplace" -version = "0.5.0-alpha" -edition = "2021" -authors = ["Balmy Gazebo "] -license = "MIT" -repository = "https://github.com/wen-community/wen-program-library/clients/rust/wen_wns_marketplace" -documentation = "https://docs.wenwencoin.com" -homepage = "https://wenwencoin.com" -keywords = ["wen", "wns"] -categories = ["nft", "solana", "blockchain"] -readme = "README.md" - -[workspace] - -[features] -anchor = ["dep:anchor-lang"] -test-sbf = [] -serde = ["dep:serde", "dep:serde_with"] - -[dependencies] -anchor-lang = { version = "0.30.1", optional = true } -borsh = "^0.10" -num-derive = "^0.3" -num-traits = "^0.2" -serde = { version = "^1.0", features = ["derive"], optional = true } -serde_with = { version = "^3.0", optional = true } -solana-program = "~1.18" -thiserror = "^1.0" - -[dev-dependencies] -assert_matches = "1.5.0" -solana-program-test = "~1.18" -solana-sdk = "~1.18" diff --git a/clients/rust/wen_wns_marketplace/README.md b/clients/rust/wen_wns_marketplace/README.md deleted file mode 100644 index 66a344a1..00000000 --- a/clients/rust/wen_wns_marketplace/README.md +++ /dev/null @@ -1,22 +0,0 @@ -A Rust client SDK for WEN WNS Marketplace [program](https://github.com/wen-community/wen-program-library). - -## Getting started - -From your project folder: - -```bash -cargo add wen_wns_marketplace -``` - -## Structure - -The SDK is divided into several modules: - -- `accounts`: structs representing the accounts of the program -- `errors`: enums representing the program errors -- `instructions`: structs to facilitate the creation of instructions, instruction arguments and CPI helpers -- `types`: structs representing types used by the program - -## Contributing - -Check out the [Contributing Guide](./CONTRIBUTING.md) the learn more about how to contribute to this library. diff --git a/clients/rust/wen_wns_marketplace/src/generated/accounts/distribution_account.rs b/clients/rust/wen_wns_marketplace/src/generated/accounts/distribution_account.rs deleted file mode 100644 index 3c10b1d3..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/accounts/distribution_account.rs +++ /dev/null @@ -1,76 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use crate::generated::types::Creator; -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct DistributionAccount { - pub discriminator: [u8; 8], - /// distribution version - pub version: u8, - /// group to which the distribution account belongs to - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub group_mint: Pubkey, - /// payment mint for the distribution account - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub payment_mint: Pubkey, - pub claim_data: Vec, -} - -impl DistributionAccount { - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for DistributionAccount { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for DistributionAccount { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for DistributionAccount {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for DistributionAccount { - fn owner() -> Pubkey { - crate::WEN_WNS_MARKETPLACE_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for DistributionAccount {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for DistributionAccount { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/accounts/listing.rs b/clients/rust/wen_wns_marketplace/src/generated/accounts/listing.rs deleted file mode 100644 index f79cb5ad..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/accounts/listing.rs +++ /dev/null @@ -1,84 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct Listing { - pub discriminator: [u8; 8], - pub bump: u8, - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub mint: Pubkey, - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub payment_mint: Pubkey, - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub seller: Pubkey, - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub seller_token_account: Pubkey, - pub listing_amount: u64, -} - -impl Listing { - pub const LEN: usize = 145; - - #[inline(always)] - pub fn from_bytes(data: &[u8]) -> Result { - let mut data = data; - Self::deserialize(&mut data) - } -} - -impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for Listing { - type Error = std::io::Error; - - fn try_from( - account_info: &solana_program::account_info::AccountInfo<'a>, - ) -> Result { - let mut data: &[u8] = &(*account_info.data).borrow(); - Self::deserialize(&mut data) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountDeserialize for Listing { - fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result { - Ok(Self::deserialize(buf)?) - } -} - -#[cfg(feature = "anchor")] -impl anchor_lang::AccountSerialize for Listing {} - -#[cfg(feature = "anchor")] -impl anchor_lang::Owner for Listing { - fn owner() -> Pubkey { - crate::WEN_WNS_MARKETPLACE_ID - } -} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::IdlBuild for Listing {} - -#[cfg(feature = "anchor-idl-build")] -impl anchor_lang::Discriminator for Listing { - const DISCRIMINATOR: [u8; 8] = [0; 8]; -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/accounts/mod.rs b/clients/rust/wen_wns_marketplace/src/generated/accounts/mod.rs deleted file mode 100644 index 0734a692..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/accounts/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#distribution_account; -pub(crate) mod r#listing; - -pub use self::r#distribution_account::*; -pub use self::r#listing::*; diff --git a/clients/rust/wen_wns_marketplace/src/generated/errors/mod.rs b/clients/rust/wen_wns_marketplace/src/generated/errors/mod.rs deleted file mode 100644 index 2de6e29c..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/errors/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod wen_wns_marketplace; - -pub use self::wen_wns_marketplace::WenWnsMarketplaceError; diff --git a/clients/rust/wen_wns_marketplace/src/generated/errors/wen_wns_marketplace.rs b/clients/rust/wen_wns_marketplace/src/generated/errors/wen_wns_marketplace.rs deleted file mode 100644 index ca50ee6b..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/errors/wen_wns_marketplace.rs +++ /dev/null @@ -1,31 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use num_derive::FromPrimitive; -use thiserror::Error; - -#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)] -pub enum WenWnsMarketplaceError { - /// 6000 - Buy amount mismatch with listing amount - #[error("Buy amount mismatch with listing amount")] - ListingAmountMismatch = 0x1770, - /// 6001 - SPL Payment token account required - #[error("SPL Payment token account required")] - PaymentTokenAccountNotExistant = 0x1771, - /// 6002 - Invalid SPL Payment token account - #[error("Invalid SPL Payment token account")] - InvalidPaymentTokenAccount = 0x1772, - /// 6003 - Arithmetic error - #[error("Arithmetic error")] - ArithmeticError = 0x1773, -} - -impl solana_program::program_error::PrintProgramError for WenWnsMarketplaceError { - fn print(&self) { - solana_program::msg!(&self.to_string()); - } -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/instructions/buy.rs b/clients/rust/wen_wns_marketplace/src/generated/instructions/buy.rs deleted file mode 100644 index fe14ea40..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/instructions/buy.rs +++ /dev/null @@ -1,1218 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct Buy { - pub payer: solana_program::pubkey::Pubkey, - - pub listing: solana_program::pubkey::Pubkey, - - pub payment_mint: solana_program::pubkey::Pubkey, - - pub buyer: solana_program::pubkey::Pubkey, - - pub distribution: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub seller_token_account: solana_program::pubkey::Pubkey, - - pub buyer_token_account: solana_program::pubkey::Pubkey, - - pub seller: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub extra_metas_account: solana_program::pubkey::Pubkey, - - pub approve_account: solana_program::pubkey::Pubkey, - - pub wns_program: solana_program::pubkey::Pubkey, - - pub distribution_program: solana_program::pubkey::Pubkey, - - pub associated_token_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub payment_token_program: Option, - - pub system_program: solana_program::pubkey::Pubkey, - - pub seller_payment_token_account: Option, - - pub buyer_payment_token_account: Option, - - pub distribution_payment_token_account: Option, -} - -impl Buy { - pub fn instruction( - &self, - args: BuyInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: BuyInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(21 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.listing, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.payment_mint, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.buyer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.distribution, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.seller_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.buyer_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.seller, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.extra_metas_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.approve_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.wns_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.distribution_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.associated_token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - if let Some(payment_token_program) = self.payment_token_program { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - payment_token_program, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - if let Some(seller_payment_token_account) = self.seller_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - seller_payment_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - if let Some(buyer_payment_token_account) = self.buyer_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - buyer_payment_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - if let Some(distribution_payment_token_account) = self.distribution_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - distribution_payment_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - accounts.extend_from_slice(remaining_accounts); - let mut data = BuyInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct BuyInstructionData { - discriminator: [u8; 8], -} - -impl BuyInstructionData { - pub fn new() -> Self { - Self { - discriminator: [102, 6, 61, 18, 1, 218, 235, 234], - } - } -} - -impl Default for BuyInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct BuyInstructionArgs { - pub buy_amount: u64, -} - -/// Instruction builder for `Buy`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable]` listing -/// 2. `[]` payment_mint -/// 3. `[writable, signer]` buyer -/// 4. `[writable]` distribution -/// 5. `[writable]` mint -/// 6. `[writable]` seller_token_account -/// 7. `[writable]` buyer_token_account -/// 8. `[writable]` seller -/// 9. `[]` manager -/// 10. `[]` extra_metas_account -/// 11. `[writable]` approve_account -/// 12. `[optional]` wns_program (default to `wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM`) -/// 13. `[optional]` distribution_program (default to `diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay`) -/// 14. `[optional]` associated_token_program (default to `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`) -/// 15. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -/// 16. `[optional]` payment_token_program -/// 17. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 18. `[writable, optional]` seller_payment_token_account -/// 19. `[writable, optional]` buyer_payment_token_account -/// 20. `[writable, optional]` distribution_payment_token_account -#[derive(Clone, Debug, Default)] -pub struct BuyBuilder { - payer: Option, - listing: Option, - payment_mint: Option, - buyer: Option, - distribution: Option, - mint: Option, - seller_token_account: Option, - buyer_token_account: Option, - seller: Option, - manager: Option, - extra_metas_account: Option, - approve_account: Option, - wns_program: Option, - distribution_program: Option, - associated_token_program: Option, - token_program: Option, - payment_token_program: Option, - system_program: Option, - seller_payment_token_account: Option, - buyer_payment_token_account: Option, - distribution_payment_token_account: Option, - buy_amount: Option, - __remaining_accounts: Vec, -} - -impl BuyBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn listing(&mut self, listing: solana_program::pubkey::Pubkey) -> &mut Self { - self.listing = Some(listing); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - #[inline(always)] - pub fn buyer(&mut self, buyer: solana_program::pubkey::Pubkey) -> &mut Self { - self.buyer = Some(buyer); - self - } - #[inline(always)] - pub fn distribution(&mut self, distribution: solana_program::pubkey::Pubkey) -> &mut Self { - self.distribution = Some(distribution); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn seller_token_account( - &mut self, - seller_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.seller_token_account = Some(seller_token_account); - self - } - #[inline(always)] - pub fn buyer_token_account( - &mut self, - buyer_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.buyer_token_account = Some(buyer_token_account); - self - } - #[inline(always)] - pub fn seller(&mut self, seller: solana_program::pubkey::Pubkey) -> &mut Self { - self.seller = Some(seller); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn approve_account( - &mut self, - approve_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.approve_account = Some(approve_account); - self - } - /// `[optional account, default to 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM']` - #[inline(always)] - pub fn wns_program(&mut self, wns_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.wns_program = Some(wns_program); - self - } - /// `[optional account, default to 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay']` - #[inline(always)] - pub fn distribution_program( - &mut self, - distribution_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.distribution_program = Some(distribution_program); - self - } - /// `[optional account, default to 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL']` - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.associated_token_program = Some(associated_token_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn payment_token_program( - &mut self, - payment_token_program: Option, - ) -> &mut Self { - self.payment_token_program = payment_token_program; - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn seller_payment_token_account( - &mut self, - seller_payment_token_account: Option, - ) -> &mut Self { - self.seller_payment_token_account = seller_payment_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn buyer_payment_token_account( - &mut self, - buyer_payment_token_account: Option, - ) -> &mut Self { - self.buyer_payment_token_account = buyer_payment_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_payment_token_account( - &mut self, - distribution_payment_token_account: Option, - ) -> &mut Self { - self.distribution_payment_token_account = distribution_payment_token_account; - self - } - #[inline(always)] - pub fn buy_amount(&mut self, buy_amount: u64) -> &mut Self { - self.buy_amount = Some(buy_amount); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = Buy { - payer: self.payer.expect("payer is not set"), - listing: self.listing.expect("listing is not set"), - payment_mint: self.payment_mint.expect("payment_mint is not set"), - buyer: self.buyer.expect("buyer is not set"), - distribution: self.distribution.expect("distribution is not set"), - mint: self.mint.expect("mint is not set"), - seller_token_account: self - .seller_token_account - .expect("seller_token_account is not set"), - buyer_token_account: self - .buyer_token_account - .expect("buyer_token_account is not set"), - seller: self.seller.expect("seller is not set"), - manager: self.manager.expect("manager is not set"), - extra_metas_account: self - .extra_metas_account - .expect("extra_metas_account is not set"), - approve_account: self.approve_account.expect("approve_account is not set"), - wns_program: self.wns_program.unwrap_or(solana_program::pubkey!( - "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM" - )), - distribution_program: self.distribution_program.unwrap_or(solana_program::pubkey!( - "diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay" - )), - associated_token_program: self.associated_token_program.unwrap_or( - solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), - ), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - payment_token_program: self.payment_token_program, - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - seller_payment_token_account: self.seller_payment_token_account, - buyer_payment_token_account: self.buyer_payment_token_account, - distribution_payment_token_account: self.distribution_payment_token_account, - }; - let args = BuyInstructionArgs { - buy_amount: self.buy_amount.clone().expect("buy_amount is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `buy` CPI accounts. -pub struct BuyCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub listing: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub buyer: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub buyer_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub approve_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub wns_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub buyer_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub distribution_payment_token_account: - Option<&'b solana_program::account_info::AccountInfo<'a>>, -} - -/// `buy` CPI instruction. -pub struct BuyCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub listing: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub buyer: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub buyer_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub approve_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub wns_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub buyer_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub distribution_payment_token_account: - Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// The arguments for the instruction. - pub __args: BuyInstructionArgs, -} - -impl<'a, 'b> BuyCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: BuyCpiAccounts<'a, 'b>, - args: BuyInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - listing: accounts.listing, - payment_mint: accounts.payment_mint, - buyer: accounts.buyer, - distribution: accounts.distribution, - mint: accounts.mint, - seller_token_account: accounts.seller_token_account, - buyer_token_account: accounts.buyer_token_account, - seller: accounts.seller, - manager: accounts.manager, - extra_metas_account: accounts.extra_metas_account, - approve_account: accounts.approve_account, - wns_program: accounts.wns_program, - distribution_program: accounts.distribution_program, - associated_token_program: accounts.associated_token_program, - token_program: accounts.token_program, - payment_token_program: accounts.payment_token_program, - system_program: accounts.system_program, - seller_payment_token_account: accounts.seller_payment_token_account, - buyer_payment_token_account: accounts.buyer_payment_token_account, - distribution_payment_token_account: accounts.distribution_payment_token_account, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(21 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.listing.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.payment_mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.buyer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.distribution.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.seller_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.buyer_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.seller.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.extra_metas_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.approve_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.wns_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.distribution_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.associated_token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - if let Some(payment_token_program) = self.payment_token_program { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *payment_token_program.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - if let Some(seller_payment_token_account) = self.seller_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *seller_payment_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - if let Some(buyer_payment_token_account) = self.buyer_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *buyer_payment_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - if let Some(distribution_payment_token_account) = self.distribution_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *distribution_payment_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = BuyInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(21 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.listing.clone()); - account_infos.push(self.payment_mint.clone()); - account_infos.push(self.buyer.clone()); - account_infos.push(self.distribution.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.seller_token_account.clone()); - account_infos.push(self.buyer_token_account.clone()); - account_infos.push(self.seller.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.extra_metas_account.clone()); - account_infos.push(self.approve_account.clone()); - account_infos.push(self.wns_program.clone()); - account_infos.push(self.distribution_program.clone()); - account_infos.push(self.associated_token_program.clone()); - account_infos.push(self.token_program.clone()); - if let Some(payment_token_program) = self.payment_token_program { - account_infos.push(payment_token_program.clone()); - } - account_infos.push(self.system_program.clone()); - if let Some(seller_payment_token_account) = self.seller_payment_token_account { - account_infos.push(seller_payment_token_account.clone()); - } - if let Some(buyer_payment_token_account) = self.buyer_payment_token_account { - account_infos.push(buyer_payment_token_account.clone()); - } - if let Some(distribution_payment_token_account) = self.distribution_payment_token_account { - account_infos.push(distribution_payment_token_account.clone()); - } - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `Buy` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable]` listing -/// 2. `[]` payment_mint -/// 3. `[writable, signer]` buyer -/// 4. `[writable]` distribution -/// 5. `[writable]` mint -/// 6. `[writable]` seller_token_account -/// 7. `[writable]` buyer_token_account -/// 8. `[writable]` seller -/// 9. `[]` manager -/// 10. `[]` extra_metas_account -/// 11. `[writable]` approve_account -/// 12. `[]` wns_program -/// 13. `[]` distribution_program -/// 14. `[]` associated_token_program -/// 15. `[]` token_program -/// 16. `[optional]` payment_token_program -/// 17. `[]` system_program -/// 18. `[writable, optional]` seller_payment_token_account -/// 19. `[writable, optional]` buyer_payment_token_account -/// 20. `[writable, optional]` distribution_payment_token_account -#[derive(Clone, Debug)] -pub struct BuyCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> BuyCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(BuyCpiBuilderInstruction { - __program: program, - payer: None, - listing: None, - payment_mint: None, - buyer: None, - distribution: None, - mint: None, - seller_token_account: None, - buyer_token_account: None, - seller: None, - manager: None, - extra_metas_account: None, - approve_account: None, - wns_program: None, - distribution_program: None, - associated_token_program: None, - token_program: None, - payment_token_program: None, - system_program: None, - seller_payment_token_account: None, - buyer_payment_token_account: None, - distribution_payment_token_account: None, - buy_amount: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn listing( - &mut self, - listing: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.listing = Some(listing); - self - } - #[inline(always)] - pub fn payment_mint( - &mut self, - payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - #[inline(always)] - pub fn buyer(&mut self, buyer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.buyer = Some(buyer); - self - } - #[inline(always)] - pub fn distribution( - &mut self, - distribution: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution = Some(distribution); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn seller_token_account( - &mut self, - seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.seller_token_account = Some(seller_token_account); - self - } - #[inline(always)] - pub fn buyer_token_account( - &mut self, - buyer_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.buyer_token_account = Some(buyer_token_account); - self - } - #[inline(always)] - pub fn seller( - &mut self, - seller: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.seller = Some(seller); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn extra_metas_account( - &mut self, - extra_metas_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.extra_metas_account = Some(extra_metas_account); - self - } - #[inline(always)] - pub fn approve_account( - &mut self, - approve_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.approve_account = Some(approve_account); - self - } - #[inline(always)] - pub fn wns_program( - &mut self, - wns_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.wns_program = Some(wns_program); - self - } - #[inline(always)] - pub fn distribution_program( - &mut self, - distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution_program = Some(distribution_program); - self - } - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.associated_token_program = Some(associated_token_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn payment_token_program( - &mut self, - payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.payment_token_program = payment_token_program; - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn seller_payment_token_account( - &mut self, - seller_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.seller_payment_token_account = seller_payment_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn buyer_payment_token_account( - &mut self, - buyer_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.buyer_payment_token_account = buyer_payment_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_payment_token_account( - &mut self, - distribution_payment_token_account: Option< - &'b solana_program::account_info::AccountInfo<'a>, - >, - ) -> &mut Self { - self.instruction.distribution_payment_token_account = distribution_payment_token_account; - self - } - #[inline(always)] - pub fn buy_amount(&mut self, buy_amount: u64) -> &mut Self { - self.instruction.buy_amount = Some(buy_amount); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = BuyInstructionArgs { - buy_amount: self - .instruction - .buy_amount - .clone() - .expect("buy_amount is not set"), - }; - let instruction = BuyCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - listing: self.instruction.listing.expect("listing is not set"), - - payment_mint: self - .instruction - .payment_mint - .expect("payment_mint is not set"), - - buyer: self.instruction.buyer.expect("buyer is not set"), - - distribution: self - .instruction - .distribution - .expect("distribution is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - seller_token_account: self - .instruction - .seller_token_account - .expect("seller_token_account is not set"), - - buyer_token_account: self - .instruction - .buyer_token_account - .expect("buyer_token_account is not set"), - - seller: self.instruction.seller.expect("seller is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - extra_metas_account: self - .instruction - .extra_metas_account - .expect("extra_metas_account is not set"), - - approve_account: self - .instruction - .approve_account - .expect("approve_account is not set"), - - wns_program: self - .instruction - .wns_program - .expect("wns_program is not set"), - - distribution_program: self - .instruction - .distribution_program - .expect("distribution_program is not set"), - - associated_token_program: self - .instruction - .associated_token_program - .expect("associated_token_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - payment_token_program: self.instruction.payment_token_program, - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - seller_payment_token_account: self.instruction.seller_payment_token_account, - - buyer_payment_token_account: self.instruction.buyer_payment_token_account, - - distribution_payment_token_account: self.instruction.distribution_payment_token_account, - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct BuyCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - listing: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - buyer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - buyer_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - extra_metas_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - approve_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - wns_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - associated_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - buyer_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - buy_amount: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/instructions/claim_royalty.rs b/clients/rust/wen_wns_marketplace/src/generated/instructions/claim_royalty.rs deleted file mode 100644 index 47de3ba2..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/instructions/claim_royalty.rs +++ /dev/null @@ -1,699 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct ClaimRoyalty { - pub payer: solana_program::pubkey::Pubkey, - - pub creator: solana_program::pubkey::Pubkey, - - pub payment_mint: solana_program::pubkey::Pubkey, - - pub distribution: solana_program::pubkey::Pubkey, - - pub wen_distribution_program: solana_program::pubkey::Pubkey, - - pub associated_token_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, - - pub distribution_payment_token_account: Option, - - pub creator_payment_token_account: Option, -} - -impl ClaimRoyalty { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(10 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.creator, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.payment_mint, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.distribution, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.wen_distribution_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.associated_token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - if let Some(distribution_payment_token_account) = self.distribution_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - distribution_payment_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - if let Some(creator_payment_token_account) = self.creator_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - creator_payment_token_account, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - accounts.extend_from_slice(remaining_accounts); - let data = ClaimRoyaltyInstructionData::new().try_to_vec().unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ClaimRoyaltyInstructionData { - discriminator: [u8; 8], -} - -impl ClaimRoyaltyInstructionData { - pub fn new() -> Self { - Self { - discriminator: [10, 75, 29, 207, 114, 170, 28, 108], - } - } -} - -impl Default for ClaimRoyaltyInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `ClaimRoyalty`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable, signer]` creator -/// 2. `[]` payment_mint -/// 3. `[writable]` distribution -/// 4. `[optional]` wen_distribution_program (default to `diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay`) -/// 5. `[optional]` associated_token_program (default to `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`) -/// 6. `[optional]` token_program (default to `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`) -/// 7. `[optional]` system_program (default to `11111111111111111111111111111111`) -/// 8. `[writable, optional]` distribution_payment_token_account -/// 9. `[writable, optional]` creator_payment_token_account -#[derive(Clone, Debug, Default)] -pub struct ClaimRoyaltyBuilder { - payer: Option, - creator: Option, - payment_mint: Option, - distribution: Option, - wen_distribution_program: Option, - associated_token_program: Option, - token_program: Option, - system_program: Option, - distribution_payment_token_account: Option, - creator_payment_token_account: Option, - __remaining_accounts: Vec, -} - -impl ClaimRoyaltyBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn creator(&mut self, creator: solana_program::pubkey::Pubkey) -> &mut Self { - self.creator = Some(creator); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - #[inline(always)] - pub fn distribution(&mut self, distribution: solana_program::pubkey::Pubkey) -> &mut Self { - self.distribution = Some(distribution); - self - } - /// `[optional account, default to 'diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay']` - #[inline(always)] - pub fn wen_distribution_program( - &mut self, - wen_distribution_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.wen_distribution_program = Some(wen_distribution_program); - self - } - /// `[optional account, default to 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL']` - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.associated_token_program = Some(associated_token_program); - self - } - /// `[optional account, default to 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_payment_token_account( - &mut self, - distribution_payment_token_account: Option, - ) -> &mut Self { - self.distribution_payment_token_account = distribution_payment_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn creator_payment_token_account( - &mut self, - creator_payment_token_account: Option, - ) -> &mut Self { - self.creator_payment_token_account = creator_payment_token_account; - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = ClaimRoyalty { - payer: self.payer.expect("payer is not set"), - creator: self.creator.expect("creator is not set"), - payment_mint: self.payment_mint.expect("payment_mint is not set"), - distribution: self.distribution.expect("distribution is not set"), - wen_distribution_program: self.wen_distribution_program.unwrap_or( - solana_program::pubkey!("diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay"), - ), - associated_token_program: self.associated_token_program.unwrap_or( - solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), - ), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - )), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - distribution_payment_token_account: self.distribution_payment_token_account, - creator_payment_token_account: self.creator_payment_token_account, - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `claim_royalty` CPI accounts. -pub struct ClaimRoyaltyCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub creator: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution: &'b solana_program::account_info::AccountInfo<'a>, - - pub wen_distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_payment_token_account: - Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub creator_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, -} - -/// `claim_royalty` CPI instruction. -pub struct ClaimRoyaltyCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub creator: &'b solana_program::account_info::AccountInfo<'a>, - - pub payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution: &'b solana_program::account_info::AccountInfo<'a>, - - pub wen_distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub distribution_payment_token_account: - Option<&'b solana_program::account_info::AccountInfo<'a>>, - - pub creator_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, -} - -impl<'a, 'b> ClaimRoyaltyCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ClaimRoyaltyCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - creator: accounts.creator, - payment_mint: accounts.payment_mint, - distribution: accounts.distribution, - wen_distribution_program: accounts.wen_distribution_program, - associated_token_program: accounts.associated_token_program, - token_program: accounts.token_program, - system_program: accounts.system_program, - distribution_payment_token_account: accounts.distribution_payment_token_account, - creator_payment_token_account: accounts.creator_payment_token_account, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(10 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.creator.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.payment_mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.distribution.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.wen_distribution_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.associated_token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - if let Some(distribution_payment_token_account) = self.distribution_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *distribution_payment_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - if let Some(creator_payment_token_account) = self.creator_payment_token_account { - accounts.push(solana_program::instruction::AccountMeta::new( - *creator_payment_token_account.key, - false, - )); - } else { - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - crate::WEN_WNS_MARKETPLACE_ID, - false, - )); - } - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = ClaimRoyaltyInstructionData::new().try_to_vec().unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(10 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.creator.clone()); - account_infos.push(self.payment_mint.clone()); - account_infos.push(self.distribution.clone()); - account_infos.push(self.wen_distribution_program.clone()); - account_infos.push(self.associated_token_program.clone()); - account_infos.push(self.token_program.clone()); - account_infos.push(self.system_program.clone()); - if let Some(distribution_payment_token_account) = self.distribution_payment_token_account { - account_infos.push(distribution_payment_token_account.clone()); - } - if let Some(creator_payment_token_account) = self.creator_payment_token_account { - account_infos.push(creator_payment_token_account.clone()); - } - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `ClaimRoyalty` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[writable, signer]` creator -/// 2. `[]` payment_mint -/// 3. `[writable]` distribution -/// 4. `[]` wen_distribution_program -/// 5. `[]` associated_token_program -/// 6. `[]` token_program -/// 7. `[]` system_program -/// 8. `[writable, optional]` distribution_payment_token_account -/// 9. `[writable, optional]` creator_payment_token_account -#[derive(Clone, Debug)] -pub struct ClaimRoyaltyCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ClaimRoyaltyCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ClaimRoyaltyCpiBuilderInstruction { - __program: program, - payer: None, - creator: None, - payment_mint: None, - distribution: None, - wen_distribution_program: None, - associated_token_program: None, - token_program: None, - system_program: None, - distribution_payment_token_account: None, - creator_payment_token_account: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn creator( - &mut self, - creator: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.creator = Some(creator); - self - } - #[inline(always)] - pub fn payment_mint( - &mut self, - payment_mint: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - #[inline(always)] - pub fn distribution( - &mut self, - distribution: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.distribution = Some(distribution); - self - } - #[inline(always)] - pub fn wen_distribution_program( - &mut self, - wen_distribution_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.wen_distribution_program = Some(wen_distribution_program); - self - } - #[inline(always)] - pub fn associated_token_program( - &mut self, - associated_token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.associated_token_program = Some(associated_token_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - /// `[optional account]` - #[inline(always)] - pub fn distribution_payment_token_account( - &mut self, - distribution_payment_token_account: Option< - &'b solana_program::account_info::AccountInfo<'a>, - >, - ) -> &mut Self { - self.instruction.distribution_payment_token_account = distribution_payment_token_account; - self - } - /// `[optional account]` - #[inline(always)] - pub fn creator_payment_token_account( - &mut self, - creator_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - ) -> &mut Self { - self.instruction.creator_payment_token_account = creator_payment_token_account; - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = ClaimRoyaltyCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - creator: self.instruction.creator.expect("creator is not set"), - - payment_mint: self - .instruction - .payment_mint - .expect("payment_mint is not set"), - - distribution: self - .instruction - .distribution - .expect("distribution is not set"), - - wen_distribution_program: self - .instruction - .wen_distribution_program - .expect("wen_distribution_program is not set"), - - associated_token_program: self - .instruction - .associated_token_program - .expect("associated_token_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - - distribution_payment_token_account: self.instruction.distribution_payment_token_account, - - creator_payment_token_account: self.instruction.creator_payment_token_account, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ClaimRoyaltyCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - creator: Option<&'b solana_program::account_info::AccountInfo<'a>>, - payment_mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution: Option<&'b solana_program::account_info::AccountInfo<'a>>, - wen_distribution_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - associated_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - distribution_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - creator_payment_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/instructions/list.rs b/clients/rust/wen_wns_marketplace/src/generated/instructions/list.rs deleted file mode 100644 index c870620f..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/instructions/list.rs +++ /dev/null @@ -1,668 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -/// Accounts. -pub struct List { - pub payer: solana_program::pubkey::Pubkey, - - pub seller: solana_program::pubkey::Pubkey, - - pub listing: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub seller_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub wns_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl List { - pub fn instruction( - &self, - args: ListInstructionArgs, - ) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(args, &[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - args: ListInstructionArgs, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.seller, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.listing, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.seller_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.wns_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let mut data = ListInstructionData::new().try_to_vec().unwrap(); - let mut args = args.try_to_vec().unwrap(); - data.append(&mut args); - - solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct ListInstructionData { - discriminator: [u8; 8], -} - -impl ListInstructionData { - pub fn new() -> Self { - Self { - discriminator: [54, 174, 193, 67, 17, 41, 132, 38], - } - } -} - -impl Default for ListInstructionData { - fn default() -> Self { - Self::new() - } -} - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ListInstructionArgs { - pub listing_amount: u64, - pub payment_mint: Pubkey, -} - -/// Instruction builder for `List`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` seller -/// 2. `[writable]` listing -/// 3. `[writable]` mint -/// 4. `[writable]` seller_token_account -/// 5. `[]` manager -/// 6. `[optional]` wns_program (default to `wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM`) -/// 7. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -/// 8. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct ListBuilder { - payer: Option, - seller: Option, - listing: Option, - mint: Option, - seller_token_account: Option, - manager: Option, - wns_program: Option, - token_program: Option, - system_program: Option, - listing_amount: Option, - payment_mint: Option, - __remaining_accounts: Vec, -} - -impl ListBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn seller(&mut self, seller: solana_program::pubkey::Pubkey) -> &mut Self { - self.seller = Some(seller); - self - } - #[inline(always)] - pub fn listing(&mut self, listing: solana_program::pubkey::Pubkey) -> &mut Self { - self.listing = Some(listing); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn seller_token_account( - &mut self, - seller_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.seller_token_account = Some(seller_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM']` - #[inline(always)] - pub fn wns_program(&mut self, wns_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.wns_program = Some(wns_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn listing_amount(&mut self, listing_amount: u64) -> &mut Self { - self.listing_amount = Some(listing_amount); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: Pubkey) -> &mut Self { - self.payment_mint = Some(payment_mint); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = List { - payer: self.payer.expect("payer is not set"), - seller: self.seller.expect("seller is not set"), - listing: self.listing.expect("listing is not set"), - mint: self.mint.expect("mint is not set"), - seller_token_account: self - .seller_token_account - .expect("seller_token_account is not set"), - manager: self.manager.expect("manager is not set"), - wns_program: self.wns_program.unwrap_or(solana_program::pubkey!( - "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM" - )), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - let args = ListInstructionArgs { - listing_amount: self - .listing_amount - .clone() - .expect("listing_amount is not set"), - payment_mint: self.payment_mint.clone().expect("payment_mint is not set"), - }; - - accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts) - } -} - -/// `list` CPI accounts. -pub struct ListCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller: &'b solana_program::account_info::AccountInfo<'a>, - - pub listing: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub wns_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `list` CPI instruction. -pub struct ListCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller: &'b solana_program::account_info::AccountInfo<'a>, - - pub listing: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub wns_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, - /// The arguments for the instruction. - pub __args: ListInstructionArgs, -} - -impl<'a, 'b> ListCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: ListCpiAccounts<'a, 'b>, - args: ListInstructionArgs, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - seller: accounts.seller, - listing: accounts.listing, - mint: accounts.mint, - seller_token_account: accounts.seller_token_account, - manager: accounts.manager, - wns_program: accounts.wns_program, - token_program: accounts.token_program, - system_program: accounts.system_program, - __args: args, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.seller.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.listing.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.seller_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.wns_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let mut data = ListInstructionData::new().try_to_vec().unwrap(); - let mut args = self.__args.try_to_vec().unwrap(); - data.append(&mut args); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(9 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.seller.clone()); - account_infos.push(self.listing.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.seller_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.wns_program.clone()); - account_infos.push(self.token_program.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `List` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` seller -/// 2. `[writable]` listing -/// 3. `[writable]` mint -/// 4. `[writable]` seller_token_account -/// 5. `[]` manager -/// 6. `[]` wns_program -/// 7. `[]` token_program -/// 8. `[]` system_program -#[derive(Clone, Debug)] -pub struct ListCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> ListCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(ListCpiBuilderInstruction { - __program: program, - payer: None, - seller: None, - listing: None, - mint: None, - seller_token_account: None, - manager: None, - wns_program: None, - token_program: None, - system_program: None, - listing_amount: None, - payment_mint: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn seller( - &mut self, - seller: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.seller = Some(seller); - self - } - #[inline(always)] - pub fn listing( - &mut self, - listing: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.listing = Some(listing); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn seller_token_account( - &mut self, - seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.seller_token_account = Some(seller_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn wns_program( - &mut self, - wns_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.wns_program = Some(wns_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - #[inline(always)] - pub fn listing_amount(&mut self, listing_amount: u64) -> &mut Self { - self.instruction.listing_amount = Some(listing_amount); - self - } - #[inline(always)] - pub fn payment_mint(&mut self, payment_mint: Pubkey) -> &mut Self { - self.instruction.payment_mint = Some(payment_mint); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let args = ListInstructionArgs { - listing_amount: self - .instruction - .listing_amount - .clone() - .expect("listing_amount is not set"), - payment_mint: self - .instruction - .payment_mint - .clone() - .expect("payment_mint is not set"), - }; - let instruction = ListCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - seller: self.instruction.seller.expect("seller is not set"), - - listing: self.instruction.listing.expect("listing is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - seller_token_account: self - .instruction - .seller_token_account - .expect("seller_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - wns_program: self - .instruction - .wns_program - .expect("wns_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - __args: args, - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct ListCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller: Option<&'b solana_program::account_info::AccountInfo<'a>>, - listing: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - wns_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - listing_amount: Option, - payment_mint: Option, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/instructions/mod.rs b/clients/rust/wen_wns_marketplace/src/generated/instructions/mod.rs deleted file mode 100644 index f449bca7..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/instructions/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#buy; -pub(crate) mod r#claim_royalty; -pub(crate) mod r#list; -pub(crate) mod r#unlist; - -pub use self::r#buy::*; -pub use self::r#claim_royalty::*; -pub use self::r#list::*; -pub use self::r#unlist::*; diff --git a/clients/rust/wen_wns_marketplace/src/generated/instructions/unlist.rs b/clients/rust/wen_wns_marketplace/src/generated/instructions/unlist.rs deleted file mode 100644 index 2e0cfc72..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/instructions/unlist.rs +++ /dev/null @@ -1,602 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; - -/// Accounts. -pub struct Unlist { - pub payer: solana_program::pubkey::Pubkey, - - pub seller: solana_program::pubkey::Pubkey, - - pub listing: solana_program::pubkey::Pubkey, - - pub mint: solana_program::pubkey::Pubkey, - - pub seller_token_account: solana_program::pubkey::Pubkey, - - pub manager: solana_program::pubkey::Pubkey, - - pub wns_program: solana_program::pubkey::Pubkey, - - pub token_program: solana_program::pubkey::Pubkey, - - pub system_program: solana_program::pubkey::Pubkey, -} - -impl Unlist { - pub fn instruction(&self) -> solana_program::instruction::Instruction { - self.instruction_with_remaining_accounts(&[]) - } - #[allow(clippy::vec_init_then_push)] - pub fn instruction_with_remaining_accounts( - &self, - remaining_accounts: &[solana_program::instruction::AccountMeta], - ) -> solana_program::instruction::Instruction { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - self.payer, true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.seller, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.listing, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.mint, false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - self.seller_token_account, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.manager, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.wns_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.token_program, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - self.system_program, - false, - )); - accounts.extend_from_slice(remaining_accounts); - let data = UnlistInstructionData::new().try_to_vec().unwrap(); - - solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - } - } -} - -#[derive(BorshDeserialize, BorshSerialize)] -pub struct UnlistInstructionData { - discriminator: [u8; 8], -} - -impl UnlistInstructionData { - pub fn new() -> Self { - Self { - discriminator: [185, 125, 20, 193, 209, 44, 13, 224], - } - } -} - -impl Default for UnlistInstructionData { - fn default() -> Self { - Self::new() - } -} - -/// Instruction builder for `Unlist`. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` seller -/// 2. `[writable]` listing -/// 3. `[writable]` mint -/// 4. `[writable]` seller_token_account -/// 5. `[]` manager -/// 6. `[optional]` wns_program (default to `wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM`) -/// 7. `[optional]` token_program (default to `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) -/// 8. `[optional]` system_program (default to `11111111111111111111111111111111`) -#[derive(Clone, Debug, Default)] -pub struct UnlistBuilder { - payer: Option, - seller: Option, - listing: Option, - mint: Option, - seller_token_account: Option, - manager: Option, - wns_program: Option, - token_program: Option, - system_program: Option, - __remaining_accounts: Vec, -} - -impl UnlistBuilder { - pub fn new() -> Self { - Self::default() - } - #[inline(always)] - pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self { - self.payer = Some(payer); - self - } - #[inline(always)] - pub fn seller(&mut self, seller: solana_program::pubkey::Pubkey) -> &mut Self { - self.seller = Some(seller); - self - } - #[inline(always)] - pub fn listing(&mut self, listing: solana_program::pubkey::Pubkey) -> &mut Self { - self.listing = Some(listing); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self { - self.mint = Some(mint); - self - } - #[inline(always)] - pub fn seller_token_account( - &mut self, - seller_token_account: solana_program::pubkey::Pubkey, - ) -> &mut Self { - self.seller_token_account = Some(seller_token_account); - self - } - #[inline(always)] - pub fn manager(&mut self, manager: solana_program::pubkey::Pubkey) -> &mut Self { - self.manager = Some(manager); - self - } - /// `[optional account, default to 'wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM']` - #[inline(always)] - pub fn wns_program(&mut self, wns_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.wns_program = Some(wns_program); - self - } - /// `[optional account, default to 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb']` - #[inline(always)] - pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.token_program = Some(token_program); - self - } - /// `[optional account, default to '11111111111111111111111111111111']` - #[inline(always)] - pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self { - self.system_program = Some(system_program); - self - } - /// Add an aditional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: solana_program::instruction::AccountMeta, - ) -> &mut Self { - self.__remaining_accounts.push(account); - self - } - /// Add additional accounts to the instruction. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[solana_program::instruction::AccountMeta], - ) -> &mut Self { - self.__remaining_accounts.extend_from_slice(accounts); - self - } - #[allow(clippy::clone_on_copy)] - pub fn instruction(&self) -> solana_program::instruction::Instruction { - let accounts = Unlist { - payer: self.payer.expect("payer is not set"), - seller: self.seller.expect("seller is not set"), - listing: self.listing.expect("listing is not set"), - mint: self.mint.expect("mint is not set"), - seller_token_account: self - .seller_token_account - .expect("seller_token_account is not set"), - manager: self.manager.expect("manager is not set"), - wns_program: self.wns_program.unwrap_or(solana_program::pubkey!( - "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM" - )), - token_program: self.token_program.unwrap_or(solana_program::pubkey!( - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - )), - system_program: self - .system_program - .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")), - }; - - accounts.instruction_with_remaining_accounts(&self.__remaining_accounts) - } -} - -/// `unlist` CPI accounts. -pub struct UnlistCpiAccounts<'a, 'b> { - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller: &'b solana_program::account_info::AccountInfo<'a>, - - pub listing: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub wns_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -/// `unlist` CPI instruction. -pub struct UnlistCpi<'a, 'b> { - /// The program to invoke. - pub __program: &'b solana_program::account_info::AccountInfo<'a>, - - pub payer: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller: &'b solana_program::account_info::AccountInfo<'a>, - - pub listing: &'b solana_program::account_info::AccountInfo<'a>, - - pub mint: &'b solana_program::account_info::AccountInfo<'a>, - - pub seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - - pub manager: &'b solana_program::account_info::AccountInfo<'a>, - - pub wns_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub token_program: &'b solana_program::account_info::AccountInfo<'a>, - - pub system_program: &'b solana_program::account_info::AccountInfo<'a>, -} - -impl<'a, 'b> UnlistCpi<'a, 'b> { - pub fn new( - program: &'b solana_program::account_info::AccountInfo<'a>, - accounts: UnlistCpiAccounts<'a, 'b>, - ) -> Self { - Self { - __program: program, - payer: accounts.payer, - seller: accounts.seller, - listing: accounts.listing, - mint: accounts.mint, - seller_token_account: accounts.seller_token_account, - manager: accounts.manager, - wns_program: accounts.wns_program, - token_program: accounts.token_program, - system_program: accounts.system_program, - } - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], &[]) - } - #[inline(always)] - pub fn invoke_with_remaining_accounts( - &self, - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(&[], remaining_accounts) - } - #[inline(always)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed_with_remaining_accounts(signers_seeds, &[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed_with_remaining_accounts( - &self, - signers_seeds: &[&[&[u8]]], - remaining_accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> solana_program::entrypoint::ProgramResult { - let mut accounts = Vec::with_capacity(9 + remaining_accounts.len()); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.payer.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.seller.key, - true, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.listing.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.mint.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new( - *self.seller_token_account.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.manager.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.wns_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.token_program.key, - false, - )); - accounts.push(solana_program::instruction::AccountMeta::new_readonly( - *self.system_program.key, - false, - )); - remaining_accounts.iter().for_each(|remaining_account| { - accounts.push(solana_program::instruction::AccountMeta { - pubkey: *remaining_account.0.key, - is_signer: remaining_account.1, - is_writable: remaining_account.2, - }) - }); - let data = UnlistInstructionData::new().try_to_vec().unwrap(); - - let instruction = solana_program::instruction::Instruction { - program_id: crate::WEN_WNS_MARKETPLACE_ID, - accounts, - data, - }; - let mut account_infos = Vec::with_capacity(9 + 1 + remaining_accounts.len()); - account_infos.push(self.__program.clone()); - account_infos.push(self.payer.clone()); - account_infos.push(self.seller.clone()); - account_infos.push(self.listing.clone()); - account_infos.push(self.mint.clone()); - account_infos.push(self.seller_token_account.clone()); - account_infos.push(self.manager.clone()); - account_infos.push(self.wns_program.clone()); - account_infos.push(self.token_program.clone()); - account_infos.push(self.system_program.clone()); - remaining_accounts - .iter() - .for_each(|remaining_account| account_infos.push(remaining_account.0.clone())); - - if signers_seeds.is_empty() { - solana_program::program::invoke(&instruction, &account_infos) - } else { - solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds) - } - } -} - -/// Instruction builder for `Unlist` via CPI. -/// -/// ### Accounts: -/// -/// 0. `[writable, signer]` payer -/// 1. `[signer]` seller -/// 2. `[writable]` listing -/// 3. `[writable]` mint -/// 4. `[writable]` seller_token_account -/// 5. `[]` manager -/// 6. `[]` wns_program -/// 7. `[]` token_program -/// 8. `[]` system_program -#[derive(Clone, Debug)] -pub struct UnlistCpiBuilder<'a, 'b> { - instruction: Box>, -} - -impl<'a, 'b> UnlistCpiBuilder<'a, 'b> { - pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self { - let instruction = Box::new(UnlistCpiBuilderInstruction { - __program: program, - payer: None, - seller: None, - listing: None, - mint: None, - seller_token_account: None, - manager: None, - wns_program: None, - token_program: None, - system_program: None, - __remaining_accounts: Vec::new(), - }); - Self { instruction } - } - #[inline(always)] - pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.payer = Some(payer); - self - } - #[inline(always)] - pub fn seller( - &mut self, - seller: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.seller = Some(seller); - self - } - #[inline(always)] - pub fn listing( - &mut self, - listing: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.listing = Some(listing); - self - } - #[inline(always)] - pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self { - self.instruction.mint = Some(mint); - self - } - #[inline(always)] - pub fn seller_token_account( - &mut self, - seller_token_account: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.seller_token_account = Some(seller_token_account); - self - } - #[inline(always)] - pub fn manager( - &mut self, - manager: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.manager = Some(manager); - self - } - #[inline(always)] - pub fn wns_program( - &mut self, - wns_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.wns_program = Some(wns_program); - self - } - #[inline(always)] - pub fn token_program( - &mut self, - token_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.token_program = Some(token_program); - self - } - #[inline(always)] - pub fn system_program( - &mut self, - system_program: &'b solana_program::account_info::AccountInfo<'a>, - ) -> &mut Self { - self.instruction.system_program = Some(system_program); - self - } - /// Add an additional account to the instruction. - #[inline(always)] - pub fn add_remaining_account( - &mut self, - account: &'b solana_program::account_info::AccountInfo<'a>, - is_writable: bool, - is_signer: bool, - ) -> &mut Self { - self.instruction - .__remaining_accounts - .push((account, is_writable, is_signer)); - self - } - /// Add additional accounts to the instruction. - /// - /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not, - /// and a `bool` indicating whether the account is a signer or not. - #[inline(always)] - pub fn add_remaining_accounts( - &mut self, - accounts: &[( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )], - ) -> &mut Self { - self.instruction - .__remaining_accounts - .extend_from_slice(accounts); - self - } - #[inline(always)] - pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult { - self.invoke_signed(&[]) - } - #[allow(clippy::clone_on_copy)] - #[allow(clippy::vec_init_then_push)] - pub fn invoke_signed( - &self, - signers_seeds: &[&[&[u8]]], - ) -> solana_program::entrypoint::ProgramResult { - let instruction = UnlistCpi { - __program: self.instruction.__program, - - payer: self.instruction.payer.expect("payer is not set"), - - seller: self.instruction.seller.expect("seller is not set"), - - listing: self.instruction.listing.expect("listing is not set"), - - mint: self.instruction.mint.expect("mint is not set"), - - seller_token_account: self - .instruction - .seller_token_account - .expect("seller_token_account is not set"), - - manager: self.instruction.manager.expect("manager is not set"), - - wns_program: self - .instruction - .wns_program - .expect("wns_program is not set"), - - token_program: self - .instruction - .token_program - .expect("token_program is not set"), - - system_program: self - .instruction - .system_program - .expect("system_program is not set"), - }; - instruction.invoke_signed_with_remaining_accounts( - signers_seeds, - &self.instruction.__remaining_accounts, - ) - } -} - -#[derive(Clone, Debug)] -struct UnlistCpiBuilderInstruction<'a, 'b> { - __program: &'b solana_program::account_info::AccountInfo<'a>, - payer: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller: Option<&'b solana_program::account_info::AccountInfo<'a>>, - listing: Option<&'b solana_program::account_info::AccountInfo<'a>>, - mint: Option<&'b solana_program::account_info::AccountInfo<'a>>, - seller_token_account: Option<&'b solana_program::account_info::AccountInfo<'a>>, - manager: Option<&'b solana_program::account_info::AccountInfo<'a>>, - wns_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>, - /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`. - __remaining_accounts: Vec<( - &'b solana_program::account_info::AccountInfo<'a>, - bool, - bool, - )>, -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/mod.rs b/clients/rust/wen_wns_marketplace/src/generated/mod.rs deleted file mode 100644 index a3793d7c..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/mod.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub mod accounts; -pub mod errors; -pub mod instructions; -pub mod programs; -pub mod types; - -pub(crate) use programs::*; diff --git a/clients/rust/wen_wns_marketplace/src/generated/programs.rs b/clients/rust/wen_wns_marketplace/src/generated/programs.rs deleted file mode 100644 index 76295582..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/programs.rs +++ /dev/null @@ -1,11 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use solana_program::{pubkey, pubkey::Pubkey}; - -/// `wen_wns_marketplace` program ID. -pub const WEN_WNS_MARKETPLACE_ID: Pubkey = pubkey!("sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod"); diff --git a/clients/rust/wen_wns_marketplace/src/generated/types/creator.rs b/clients/rust/wen_wns_marketplace/src/generated/types/creator.rs deleted file mode 100644 index 6a3184a6..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/types/creator.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -use borsh::BorshDeserialize; -use borsh::BorshSerialize; -use solana_program::pubkey::Pubkey; - -#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct Creator { - /// creator address - #[cfg_attr( - feature = "serde", - serde(with = "serde_with::As::") - )] - pub address: Pubkey, - /// token amount that creator can claim - pub claim_amount: u64, -} diff --git a/clients/rust/wen_wns_marketplace/src/generated/types/mod.rs b/clients/rust/wen_wns_marketplace/src/generated/types/mod.rs deleted file mode 100644 index d7362ac2..00000000 --- a/clients/rust/wen_wns_marketplace/src/generated/types/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -//! This code was AUTOGENERATED using the kinobi library. -//! Please DO NOT EDIT THIS FILE, instead use visitors -//! to add features, then rerun kinobi to update it. -//! -//! -//! - -pub(crate) mod r#creator; - -pub use self::r#creator::*; diff --git a/clients/rust/wen_wns_marketplace/src/lib.rs b/clients/rust/wen_wns_marketplace/src/lib.rs deleted file mode 100644 index abdd8040..00000000 --- a/clients/rust/wen_wns_marketplace/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -mod generated; - -pub use generated::programs::WEN_WNS_MARKETPLACE_ID as ID; -pub use generated::*; diff --git a/crates/README.md b/crates/README.md new file mode 100644 index 00000000..259c22b1 --- /dev/null +++ b/crates/README.md @@ -0,0 +1,45 @@ +# Crates Folder + +This folder contains Rust crates that are part of our project. These crates provide various functionalities and tools used across the project. + +## Contents + +### merkle-tree + +A library crate that implements Merkle tree functionality. This crate provides the core logic for creating and manipulating Merkle trees. + +### merkle-tree-cli + +A binary crate that provides a command-line interface for interacting with Merkle trees. It uses the `merkle-tree` library to perform operations such as creating Merkle trees from CSV files. + +Running instructions: merkle-tree-cli/README.md + +### merkle-tree-verify + +A library crate that provides verification functionality for Merkle trees. This crate can be used to verify proofs and validate the integrity of Merkle trees. + +## Building + +To build all crates in this folder, navigate to the `crates` directory and run: + +``` +cargo build +``` + +For optimized release builds, use: + +``` +cargo build --release +``` + +## Testing + +To run all the rust tests for the crates, navigate to the `crates` direcory, build and run: + +``` +cargo test +``` + +## Dependencies + +These crates use workspace-level dependencies. Refer to the root `Cargo.toml` file for the specific versions of dependencies used across the project. \ No newline at end of file diff --git a/crates/merkle-tree-cli/Cargo.toml b/crates/merkle-tree-cli/Cargo.toml new file mode 100644 index 00000000..de242ad0 --- /dev/null +++ b/crates/merkle-tree-cli/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "merkle-tree-cli" +version = "0.1.0" +edition = "2021" + +[[bin]] +name = "merkle-tree-cli" +path = "src/bin/cli.rs" + +[dependencies] +clap = { version = "3.2.25", features = ["derive", "env"] } +merkle-tree = { version="*", path = "../merkle-tree" } \ No newline at end of file diff --git a/crates/merkle-tree-cli/README.md b/crates/merkle-tree-cli/README.md new file mode 100644 index 00000000..92910ecd --- /dev/null +++ b/crates/merkle-tree-cli/README.md @@ -0,0 +1,31 @@ +# Merkle Tree CLI + +This CLI tool allows you to create a Merkle tree from a CSV file of recipients. + +## Prerequisites + +- Rust and Cargo installed on your system + +## Usage + +1. First, move into the `merkle-tree-cli` folder: + + ```bash + cd crates/merkle-tree-cli + ``` + +2. Run the CLI tool using Cargo: + + ```bash + cargo run create-merkle-tree --csv-path --merkle-tree-path + ``` + + Replace `` with the path to your input CSV file, and `` with the desired location for the output JSON file. + +3. Example: + + ```bash + cargo run create-merkle-tree --csv-path data/allow_list.csv --merkle-tree-path data/merkle-tree.json + ``` + +## Example diff --git a/crates/merkle-tree-cli/complete-generation-instructions.md b/crates/merkle-tree-cli/complete-generation-instructions.md new file mode 100644 index 00000000..1bc9454c --- /dev/null +++ b/crates/merkle-tree-cli/complete-generation-instructions.md @@ -0,0 +1,29 @@ +### Instructions for Generating and Managing Allowlists + +#### Initial Setup + +1. Clone the `protocol-contracts-svm` repository +2. Switch to the `feature/svm-merkle-trees` branch +3. Run `yarn install` to install dependencies + +#### Allowlist Generation + +4. Navigate to `packages/protocol-contracts-svm-allowlist` directory +5. Configure environment variables: + - Copy `.env.example` to `.env` + - Fill in required values (see Environment Variables section in README) +6. Generate the allowlist: + - Run `npm run get-airtable-entries` to fetch burn entries + - Run `npm run generate-burn-allowlist` to create the allowlist +7. Copy the generated `allow-list.csv` file to `crates/merkle-tree-cli/data` folder +8. Run `npm run generate-merkle-tree` to create the Merkle tree + +#### Managing Proofs + +9. Upload proofs to Web3.Storage: + + - Run `npm run upload-proofs-web3storage` + - Save the returned CID for future reference + +10. Retrieve proofs (when needed): + - Run `npm run get-proof-web3storage` to fetch proof for specific address diff --git a/crates/merkle-tree-cli/src/bin/cli.rs b/crates/merkle-tree-cli/src/bin/cli.rs new file mode 100644 index 00000000..86913126 --- /dev/null +++ b/crates/merkle-tree-cli/src/bin/cli.rs @@ -0,0 +1,54 @@ +extern crate merkle_tree; + +use clap::{Parser, Subcommand}; +use merkle_tree::phase_merkle_tree::PhaseMerkleTree; +use std::path::PathBuf; + +#[derive(Parser, Debug)] +#[clap(author, version, about, long_about = None)] +pub struct Args { + #[clap(subcommand)] + pub command: Commands, +} + +// Subcommands +#[derive(Subcommand, Debug)] +pub enum Commands { + /// Create a Merkle tree, given a CSV of recipients + CreateMerkleTree(CreateMerkleTreeArgs), +} + +#[derive(Parser, Debug)] +pub struct CreateMerkleTreeArgs { + /// CSV path + #[clap(long, env)] + pub csv_path: PathBuf, + + /// Merkle tree out path + #[clap(long, env)] + pub merkle_tree_path: PathBuf, +} + +fn main() { + let args = Args::parse(); + + match &args.command { + Commands::CreateMerkleTree(merkle_tree_args) => { + process_create_merkle_tree(merkle_tree_args); + } + } +} + +fn process_create_merkle_tree(merkle_tree_args: &CreateMerkleTreeArgs) { + println!( + "Creating merkle tree from csv: {}", + merkle_tree_args.csv_path.display() + ); + let merkle_tree = PhaseMerkleTree::new_from_csv(&merkle_tree_args.csv_path).unwrap(); + + println!( + "Merkle tree created with root: {:?}", + merkle_tree.merkle_root + ); + merkle_tree.write_to_file(&merkle_tree_args.merkle_tree_path); +} diff --git a/crates/merkle-tree-verify/Cargo.toml b/crates/merkle-tree-verify/Cargo.toml new file mode 100644 index 00000000..7ac2ccd8 --- /dev/null +++ b/crates/merkle-tree-verify/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "merkle-tree-verify" +version = "0.1.0" +edition = "2021" + +[dependencies] +anchor-lang = {version = "~0.30"} +anchor-spl = {version = "~0.30"} +solana-program = {version = "1.17.13"} + +[features] +idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] diff --git a/crates/merkle-tree-verify/src/lib.rs b/crates/merkle-tree-verify/src/lib.rs new file mode 100644 index 00000000..1a86fdbc --- /dev/null +++ b/crates/merkle-tree-verify/src/lib.rs @@ -0,0 +1,23 @@ +use solana_program::hash::hashv; + +/// modified version of https://github.com/saber-hq/merkle-distributor/blob/ac937d1901033ecb7fa3b0db22f7b39569c8e052/programs/merkle-distributor/src/merkle_proof.rs#L8 +/// This function deals with verification of Merkle trees (hash trees). +/// Direct port of https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0/contracts/cryptography/MerkleProof.sol +/// Returns true if a `leaf` can be proved to be a part of a Merkle tree +/// defined by `root`. For this, a `proof` must be provided, containing +/// sibling hashes on the branch from the leaf to the root of the tree. Each +/// pair of leaves and each pair of pre-images are assumed to be sorted. +pub fn verify(proof: Vec<[u8; 32]>, root: [u8; 32], leaf: [u8; 32]) -> bool { + let mut computed_hash = leaf; + for proof_element in proof.into_iter() { + if computed_hash <= proof_element { + // Hash(current computed hash + current element of the proof) + computed_hash = hashv(&[&[1u8], &computed_hash, &proof_element]).to_bytes(); + } else { + // Hash(current element of the proof + current computed hash) + computed_hash = hashv(&[&[1u8], &proof_element, &computed_hash]).to_bytes(); + } + } + // Check if the computed hash (root) is equal to the provided root + computed_hash == root +} diff --git a/crates/merkle-tree/Cargo.toml b/crates/merkle-tree/Cargo.toml new file mode 100644 index 00000000..ebd20325 --- /dev/null +++ b/crates/merkle-tree/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "merkle-tree" +version = "0.1.0" +edition = "2021" + +[lib] +path = "src/lib.rs" + +[dependencies] +merkle-tree-verify = { version="*", path = "../merkle-tree-verify" } +csv = "1.3.0" +fast-math = "0.1" +indexmap = "2.1.0" +serde = "1.0.137" +serde_json = "1.0.102" +hex = "0.4.3" +rand = "0.8.5" +thiserror = "1.0.50" + +solana-program = "1.18.17" +solana-sdk = "1.18.17" + diff --git a/crates/merkle-tree/src/error.rs b/crates/merkle-tree/src/error.rs new file mode 100644 index 00000000..fb173c28 --- /dev/null +++ b/crates/merkle-tree/src/error.rs @@ -0,0 +1,16 @@ +use solana_program::pubkey::Pubkey; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum MerkleTreeError { + #[error("Merkle Tree Validation Error: {0}")] + MerkleValidationError(String), + #[error("Merkle Root Error")] + MerkleRootError, + #[error("io Error: {0}")] + IoError(#[from] std::io::Error), + #[error("Serde Error: {0}")] + SerdeError(#[from] serde_json::Error), + #[error("Duplicate claimant found: {0}")] + DuplicateClaimant(Pubkey), +} diff --git a/crates/merkle-tree/src/lib.rs b/crates/merkle-tree/src/lib.rs new file mode 100644 index 00000000..f6cdb726 --- /dev/null +++ b/crates/merkle-tree/src/lib.rs @@ -0,0 +1,6 @@ +pub mod error; +pub mod merkle_tree; +pub mod phase_csv_entry; +pub mod phase_merkle_tree; +pub mod phase_tree_node; +pub mod utils; diff --git a/crates/merkle-tree/src/merkle_tree.rs b/crates/merkle-tree/src/merkle_tree.rs new file mode 100644 index 00000000..57bceea1 --- /dev/null +++ b/crates/merkle-tree/src/merkle_tree.rs @@ -0,0 +1,318 @@ +use solana_program::hash::{hashv, Hash}; + +// We need to discern between leaf and intermediate nodes to prevent trivial second +// pre-image attacks. +// https://flawed.net.nz/2018/02/21/attacking-merkle-trees-with-a-second-preimage-attack +const LEAF_PREFIX: &[u8] = &[0]; +const INTERMEDIATE_PREFIX: &[u8] = &[1]; + +macro_rules! hash_leaf { + {$d:ident} => { + hashv(&[LEAF_PREFIX, $d]) + } +} + +macro_rules! hash_intermediate { + {$l:ident, $r:ident} => { + hashv(&[INTERMEDIATE_PREFIX, $l.as_ref(), $r.as_ref()]) + } +} + +#[derive(Default, Debug, Eq, Hash, PartialEq)] +pub struct MerkleTree { + leaf_count: usize, + nodes: Vec, +} + +#[derive(Debug, PartialEq, Eq)] +pub struct ProofEntry<'a>(&'a Hash, Option<&'a Hash>, Option<&'a Hash>); + +impl<'a> ProofEntry<'a> { + pub fn new( + target: &'a Hash, + left_sibling: Option<&'a Hash>, + right_sibling: Option<&'a Hash>, + ) -> Self { + assert!(left_sibling.is_none() ^ right_sibling.is_none()); + Self(target, left_sibling, right_sibling) + } + + pub fn get_left_sibling(&self) -> Option<&'a Hash> { + self.1 + } + + pub fn get_right_sibling(&self) -> Option<&'a Hash> { + self.2 + } +} + +#[derive(Debug, Default, PartialEq, Eq)] +pub struct Proof<'a>(Vec>); + +impl<'a> Proof<'a> { + pub fn push(&mut self, entry: ProofEntry<'a>) { + self.0.push(entry) + } + + pub fn verify(&self, candidate: Hash) -> bool { + let result = self.0.iter().try_fold(candidate, |candidate, pe| { + let lsib = pe.1.unwrap_or(&candidate); + let rsib = pe.2.unwrap_or(&candidate); + let hash = hash_intermediate!(lsib, rsib); + + if hash == *pe.0 { + Some(hash) + } else { + None + } + }); + result.is_some() + } + + pub fn get_proof_entries(self) -> Vec> { + self.0 + } +} + +impl MerkleTree { + #[inline] + fn next_level_len(level_len: usize) -> usize { + if level_len == 1 { + 0 + } else { + (level_len + 1) / 2 + } + } + + fn calculate_vec_capacity(leaf_count: usize) -> usize { + // the most nodes consuming case is when n-1 is full balanced binary tree + // then n will cause the previous tree add a left only path to the root + // this cause the total nodes number increased by tree height, we use this + // condition as the max nodes consuming case. + // n is current leaf nodes number + // assuming n-1 is a full balanced binary tree, n-1 tree nodes number will be + // 2(n-1) - 1, n tree height is closed to log2(n) + 1 + // so the max nodes number is 2(n-1) - 1 + log2(n) + 1, finally we can use + // 2n + log2(n+1) as a safe capacity value. + // test results: + // 8192 leaf nodes(full balanced): + // computed cap is 16398, actually using is 16383 + // 8193 leaf nodes:(full balanced plus 1 leaf): + // computed cap is 16400, actually using is 16398 + // about performance: current used fast_math log2 code is constant algo time + if leaf_count > 0 { + fast_math::log2_raw(leaf_count as f32) as usize + 2 * leaf_count + 1 + } else { + 0 + } + } + + pub fn new>(items: &[T], sorted_hashes: bool) -> Self { + let cap = MerkleTree::calculate_vec_capacity(items.len()); + let mut mt = MerkleTree { + leaf_count: items.len(), + nodes: Vec::with_capacity(cap), + }; + + for item in items { + let item = item.as_ref(); + let hash = hash_leaf!(item); + mt.nodes.push(hash); + } + + let mut level_len = MerkleTree::next_level_len(items.len()); + let mut level_start = items.len(); + let mut prev_level_len = items.len(); + let mut prev_level_start = 0; + while level_len > 0 { + for i in 0..level_len { + let prev_level_idx = 2 * i; + let lsib = &mt.nodes[prev_level_start + prev_level_idx]; + let rsib = if prev_level_idx + 1 < prev_level_len { + &mt.nodes[prev_level_start + prev_level_idx + 1] + } else { + // Duplicate last entry if the level length is odd + &mt.nodes[prev_level_start + prev_level_idx] + }; + + // tip-distribution verification uses sorted hashing + if sorted_hashes { + if lsib <= rsib { + let hash = hash_intermediate!(lsib, rsib); + mt.nodes.push(hash); + } else { + let hash = hash_intermediate!(rsib, lsib); + mt.nodes.push(hash); + } + } else { + // hashing for solana internals + let hash = hash_intermediate!(lsib, rsib); + mt.nodes.push(hash); + } + } + prev_level_start = level_start; + prev_level_len = level_len; + level_start += level_len; + level_len = MerkleTree::next_level_len(level_len); + } + + mt + } + + pub fn get_root(&self) -> Option<&Hash> { + self.nodes.iter().last() + } + + pub fn find_path(&self, index: usize) -> Option { + if index >= self.leaf_count { + return None; + } + + let mut level_len = self.leaf_count; + let mut level_start = 0; + let mut path = Proof::default(); + let mut node_index = index; + let mut lsib = None; + let mut rsib = None; + while level_len > 0 { + let level = &self.nodes[level_start..(level_start + level_len)]; + + let target = &level[node_index]; + if lsib.is_some() || rsib.is_some() { + path.push(ProofEntry::new(target, lsib, rsib)); + } + if node_index % 2 == 0 { + lsib = None; + rsib = if node_index + 1 < level.len() { + Some(&level[node_index + 1]) + } else { + Some(&level[node_index]) + }; + } else { + lsib = Some(&level[node_index - 1]); + rsib = None; + } + node_index /= 2; + + level_start += level_len; + level_len = MerkleTree::next_level_len(level_len); + } + Some(path) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + const TEST: &[&[u8]] = &[ + b"my", b"very", b"eager", b"mother", b"just", b"served", b"us", b"nine", b"pizzas", + b"make", b"prime", + ]; + const BAD: &[&[u8]] = &[b"bad", b"missing", b"false"]; + + #[test] + fn test_tree_from_empty() { + let mt = MerkleTree::new::<[u8; 0]>(&[], false); + assert_eq!(mt.get_root(), None); + } + + #[test] + fn test_tree_from_one() { + let input = b"test"; + let mt = MerkleTree::new(&[input], false); + let expected = hash_leaf!(input); + assert_eq!(mt.get_root(), Some(&expected)); + } + + #[test] + fn test_tree_from_many() { + let mt = MerkleTree::new(TEST, false); + // This golden hash will need to be updated whenever the contents of `TEST` change in any + // way, including addition, removal and reordering or any of the tree calculation algo + // changes + let bytes = hex::decode("b40c847546fdceea166f927fc46c5ca33c3638236a36275c1346d3dffb84e1bc") + .unwrap(); + let expected = Hash::new(&bytes); + assert_eq!(mt.get_root(), Some(&expected)); + } + + #[test] + fn test_path_creation() { + let mt = MerkleTree::new(TEST, false); + for (i, _s) in TEST.iter().enumerate() { + let _path = mt.find_path(i).unwrap(); + } + } + + #[test] + fn test_path_creation_bad_index() { + let mt = MerkleTree::new(TEST, false); + assert_eq!(mt.find_path(TEST.len()), None); + } + + #[test] + fn test_path_verify_good() { + let mt = MerkleTree::new(TEST, false); + for (i, s) in TEST.iter().enumerate() { + let hash = hash_leaf!(s); + let path = mt.find_path(i).unwrap(); + assert!(path.verify(hash)); + } + } + + #[test] + fn test_path_verify_bad() { + let mt = MerkleTree::new(TEST, false); + for (i, s) in BAD.iter().enumerate() { + let hash = hash_leaf!(s); + let path = mt.find_path(i).unwrap(); + assert!(!path.verify(hash)); + } + } + + #[test] + fn test_proof_entry_instantiation_lsib_set() { + ProofEntry::new(&Hash::default(), Some(&Hash::default()), None); + } + + #[test] + fn test_proof_entry_instantiation_rsib_set() { + ProofEntry::new(&Hash::default(), None, Some(&Hash::default())); + } + + #[test] + fn test_nodes_capacity_compute() { + let iteration_count = |mut leaf_count: usize| -> usize { + let mut capacity = 0; + while leaf_count > 0 { + capacity += leaf_count; + leaf_count = MerkleTree::next_level_len(leaf_count); + } + capacity + }; + + // test max 64k leaf nodes compute + for leaf_count in 0..65536 { + let math_count = MerkleTree::calculate_vec_capacity(leaf_count); + let iter_count = iteration_count(leaf_count); + assert!(math_count >= iter_count); + } + } + + #[test] + #[should_panic] + fn test_proof_entry_instantiation_both_clear() { + ProofEntry::new(&Hash::default(), None, None); + } + + #[test] + #[should_panic] + fn test_proof_entry_instantiation_both_set() { + ProofEntry::new( + &Hash::default(), + Some(&Hash::default()), + Some(&Hash::default()), + ); + } +} diff --git a/crates/merkle-tree/src/phase_csv_entry.rs b/crates/merkle-tree/src/phase_csv_entry.rs new file mode 100644 index 00000000..f20f596a --- /dev/null +++ b/crates/merkle-tree/src/phase_csv_entry.rs @@ -0,0 +1,53 @@ +use std::{fs::File, path::PathBuf, result}; + +use serde::{Deserialize, Serialize}; + +use crate::error::MerkleTreeError; + +pub type Result = result::Result; + +/// Represents a single entry in a CSV for phase allow list +#[derive(Debug, Clone, Eq, Hash, PartialEq, Serialize, Deserialize)] +pub struct PhaseCsvEntry { + /// Address of the claimant + pub address: String, + /// Price to claim for this address + pub price: u64, + /// Maximum number of claims allowed for this addressL + pub max_claims: u64, +} + +impl PhaseCsvEntry { + pub fn new_from_file(path: &PathBuf) -> Result> { + let file = File::open(path)?; + let mut rdr = csv::Reader::from_reader(file); + + let mut entries = Vec::new(); + for result in rdr.deserialize() { + let record: PhaseCsvEntry = result.unwrap(); + entries.push(record); + } + + Ok(entries) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_csv_parsing() { + let path = PathBuf::from("./test/test_fixtures/test_phase_csv.csv"); + let entries = PhaseCsvEntry::new_from_file(&path).expect("Failed to parse CSV"); + + assert_eq!(entries.len(), 3); + + assert_eq!( + entries[0].address, + "4SX6nqv5VRLMoNfYM5phvHgcBNcBEwUEES4qPPjf1EqF" + ); + assert_eq!(entries[0].price, 100000); + assert_eq!(entries[0].max_claims, 12); + } +} diff --git a/crates/merkle-tree/src/phase_merkle_tree.rs b/crates/merkle-tree/src/phase_merkle_tree.rs new file mode 100644 index 00000000..8c255f25 --- /dev/null +++ b/crates/merkle-tree/src/phase_merkle_tree.rs @@ -0,0 +1,326 @@ +use std::{ + collections::{HashMap, HashSet}, + fs::File, + io::{BufReader, Write}, + path::PathBuf, + result, +}; + +use merkle_tree_verify::verify; +use serde::{Deserialize, Serialize}; +use solana_program::{hash::hashv, pubkey::Pubkey}; + +use crate::{ + error::{MerkleTreeError, MerkleTreeError::MerkleValidationError}, + merkle_tree::MerkleTree, + phase_csv_entry::PhaseCsvEntry, + phase_tree_node::PhaseTreeNode, + utils::{get_max_total_claim, get_proof}, +}; + +// We need to discern between leaf and intermediate nodes to prevent trivial second +// pre-image attacks. +// https://flawed.net.nz/2018/02/21/attacking-merkle-trees-with-a-second-preimage-attack +const LEAF_PREFIX: &[u8] = &[0]; + +/// Merkle Tree which will be used to distribute tokens to claimants. +/// Contains all the information necessary to verify claims against the Merkle Tree. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct PhaseMerkleTree { + /// The merkle root, which is uploaded on-chain + pub merkle_root: [u8; 32], + pub max_num_nodes: u64, + pub max_total_claim: u64, + pub tree_nodes: Vec, +} + +pub type Result = result::Result; + +impl PhaseMerkleTree { + pub fn new(tree_nodes: Vec) -> Result { + // Check for duplicate claimants, which is not allowed + let mut seen_claimants = HashSet::new(); + for node in &tree_nodes { + if !seen_claimants.insert(node.claimant) { + return Err(MerkleTreeError::DuplicateClaimant(node.claimant)); + } + } + + let hashed_nodes: Vec<[u8; 32]> = tree_nodes + .iter() + .map(|claim_info| claim_info.hash().to_bytes()) + .collect(); + + let tree = MerkleTree::new(&hashed_nodes[..], true); + + let mut processed_tree_nodes = tree_nodes; + for (i, tree_node) in processed_tree_nodes.iter_mut().enumerate() { + tree_node.proof = Some(get_proof(&tree, i)); + } + + let max_total_claim = get_max_total_claim(&processed_tree_nodes); + let tree = PhaseMerkleTree { + merkle_root: tree + .get_root() + .ok_or(MerkleTreeError::MerkleRootError)? + .to_bytes(), + max_num_nodes: processed_tree_nodes.len() as u64, + max_total_claim, + tree_nodes: processed_tree_nodes, + }; + + println!( + "created merkle tree with {} nodes and max total claim of {}", + tree.max_num_nodes, tree.max_total_claim + ); + tree.validate()?; + Ok(tree) + } + + /// Load a merkle tree from a csv path + pub fn new_from_csv(path: &PathBuf) -> Result { + let csv_entries = PhaseCsvEntry::new_from_file(path)?; + let tree_nodes: Vec = + csv_entries.into_iter().map(PhaseTreeNode::from).collect(); + let tree = Self::new(tree_nodes)?; + Ok(tree) + } + + /// Load a serialized merkle tree from file path + pub fn new_from_file(path: &PathBuf) -> Result { + let file = File::open(path)?; + let reader = BufReader::new(file); + let tree: PhaseMerkleTree = serde_json::from_reader(reader)?; + + Ok(tree) + } + + /// Write a merkle tree to a filepath + pub fn write_to_file(&self, path: &PathBuf) { + let serialized = serde_json::to_string_pretty(&self).unwrap(); + let mut file = File::create(path).unwrap(); + file.write_all(serialized.as_bytes()).unwrap(); + } + + pub fn get_node(&self, claimant: &Pubkey) -> PhaseTreeNode { + for i in self.tree_nodes.iter() { + if i.claimant == *claimant { + return i.clone(); + } + } + + panic!("Claimant not found in tree"); + } + + fn validate(&self) -> Result<()> { + // The Merkle tree can be at most height 32, implying a max node count of 2^32 - 1 + if self.max_num_nodes > 2u64.pow(32) - 1 { + return Err(MerkleValidationError(format!( + "Max num nodes {} is greater than 2^32 - 1", + self.max_num_nodes + ))); + } + + // validate that the length is equal to the max_num_nodes + if self.tree_nodes.len() != self.max_num_nodes as usize { + return Err(MerkleValidationError(format!( + "Tree nodes length {} does not match max_num_nodes {}", + self.tree_nodes.len(), + self.max_num_nodes + ))); + } + + // validate that there are no duplicate claimants + let unique_nodes: HashSet<_> = self.tree_nodes.iter().map(|n| n.claimant).collect(); + + if unique_nodes.len() != self.tree_nodes.len() { + return Err(MerkleValidationError( + "Duplicate claimants found".to_string(), + )); + } + + // validate that sum is equal to max_total_claim + let sum = get_max_total_claim(&self.tree_nodes); + + if sum != self.max_total_claim { + return Err(MerkleValidationError(format!( + "Tree nodes sum {} does not match max_total_claim {}", + sum, self.max_total_claim + ))); + } + + if self.verify_proof().is_err() { + return Err(MerkleValidationError( + "Merkle root is invalid given nodes".to_string(), + )); + } + + Ok(()) + } + + /// verify that the leaves of the merkle tree match the nodes + pub fn verify_proof(&self) -> Result<()> { + let root = self.merkle_root; + + // Recreate root given nodes + let hashed_nodes: Vec<[u8; 32]> = self + .tree_nodes + .iter() + .map(|n| n.hash().to_bytes()) + .collect(); + let mk = MerkleTree::new(&hashed_nodes[..], true); + + assert_eq!( + mk.get_root() + .ok_or(MerkleValidationError("invalid merkle proof".to_string()))? + .to_bytes(), + root + ); + + // Verify each node against the root + for (i, _node) in hashed_nodes.iter().enumerate() { + let node = hashv(&[LEAF_PREFIX, &hashed_nodes[i]]); + let proof = get_proof(&mk, i); + + if !verify(proof, root, node.to_bytes()) { + return Err(MerkleValidationError("invalid merkle proof".to_string())); + } + } + + Ok(()) + } + + // Converts Merkle Tree to a map for faster key access + pub fn convert_to_hashmap(&self) -> HashMap { + self.tree_nodes + .iter() + .map(|n| (n.claimant, n.clone())) + .collect() + } +} + +#[cfg(test)] +mod tests { + use std::path::PathBuf; + + use solana_program::{pubkey, pubkey::Pubkey}; + use solana_sdk::{ + signature::{EncodableKey, Keypair}, + signer::Signer, + }; + + use super::*; + + pub fn new_test_key() -> Pubkey { + let kp = Keypair::new(); + let out_path = format!("./test/test_keys/{}.json", kp.pubkey()); + + kp.write_to_file(out_path) + .expect("Failed to write to signer"); + + kp.pubkey() + } + + fn new_test_merkle_tree(num_nodes: u64, path: &PathBuf) { + let mut tree_nodes = vec![]; + + fn rand_claim_price() -> u64 { + rand::random::() % 100 * u64::pow(10, 9) + } + + fn rand_max_claims() -> u64 { + rand::random::() % 10 + 1 + } + + for _ in 0..num_nodes { + tree_nodes.push(PhaseTreeNode { + claimant: new_test_key(), + proof: None, + claim_price: rand_claim_price(), + max_claims: rand_max_claims(), + }); + } + + let merkle_tree = PhaseMerkleTree::new(tree_nodes).unwrap(); + + merkle_tree.write_to_file(path); + } + + #[test] + fn test_verify_new_merkle_tree() { + let tree_nodes = vec![PhaseTreeNode { + claimant: Pubkey::default(), + proof: None, + claim_price: 1000000000, + max_claims: 5, + }]; + let merkle_tree = PhaseMerkleTree::new(tree_nodes).unwrap(); + assert!(merkle_tree.verify_proof().is_ok(), "verify failed"); + } + + #[test] + fn test_write_merkle_distributor_to_file() { + let tree_nodes = vec![ + PhaseTreeNode { + claimant: pubkey!("FLYqJsmJ5AGMxMxK3Qy1rSen4ES2dqqo6h51W3C1tYS"), + proof: None, + claim_price: 100 * u64::pow(10, 9), + max_claims: 2, + }, + PhaseTreeNode { + claimant: pubkey!("EDGARWktv3nDxRYjufjdbZmryqGXceaFPoPpbUzdpqED"), + proof: None, + claim_price: 100 * u64::pow(10, 9), + max_claims: 2, + }, + PhaseTreeNode { + claimant: pubkey!("EDGARWktv3nDxRYjufjdbZmryqGXceaFPoPpbUzdpqEH"), + proof: None, + claim_price: 100 * u64::pow(10, 9), + max_claims: 2, + }, + ]; + + let merkle_distributor_info = PhaseMerkleTree::new(tree_nodes).unwrap(); + let path = PathBuf::from("test/merkle_tree.json"); + + merkle_distributor_info.write_to_file(&path); + let merkle_distributor_read: PhaseMerkleTree = + PhaseMerkleTree::new_from_file(&path).unwrap(); + + assert_eq!(merkle_distributor_read.tree_nodes.len(), 3); + } + + #[test] + fn test_new_test_merkle_tree() { + new_test_merkle_tree(100, &PathBuf::from("test/merkle_tree_test_csv.json")); + } + + #[test] + #[should_panic(expected = "DuplicateClaimant")] + fn test_new_merkle_tree_duplicate_claimants() { + let duplicate_pubkey = Pubkey::new_unique(); + let tree_nodes = vec![ + PhaseTreeNode { + claimant: duplicate_pubkey, + proof: None, + claim_price: 1000000000, + max_claims: 5, + }, + PhaseTreeNode { + claimant: duplicate_pubkey, + proof: None, + claim_price: 2000000000, + max_claims: 3, + }, + PhaseTreeNode { + claimant: Pubkey::new_unique(), + proof: None, + claim_price: 3000000000, + max_claims: 2, + }, + ]; + + PhaseMerkleTree::new(tree_nodes).unwrap(); + } +} diff --git a/crates/merkle-tree/src/phase_tree_node.rs b/crates/merkle-tree/src/phase_tree_node.rs new file mode 100644 index 00000000..085f3d7f --- /dev/null +++ b/crates/merkle-tree/src/phase_tree_node.rs @@ -0,0 +1,69 @@ +use std::str::FromStr; + +use serde::{Deserialize, Serialize}; +use solana_program::{hash::hashv, pubkey::Pubkey}; +use solana_sdk::hash::Hash; + +use crate::phase_csv_entry::PhaseCsvEntry; + +/// Represents the claim information for an account in a phase. +#[derive(Debug, Clone, Eq, Hash, PartialEq, Serialize, Deserialize)] +pub struct PhaseTreeNode { + /// Pubkey of the claimant; will be responsible for signing the claim + pub claimant: Pubkey, + /// Price to claim for this address + pub claim_price: u64, + /// Maximum number of claims allowed for this address + pub max_claims: u64, + /// Claimant's proof of inclusion in the Merkle Tree + pub proof: Option>, +} + +impl PhaseTreeNode { + pub fn hash(&self) -> Hash { + hashv(&[ + &self.claimant.to_bytes(), + &self.claim_price.to_le_bytes(), + &self.max_claims.to_le_bytes(), + ]) + } + + /// Get the claim price for this phase for this claimant + pub fn claim_price(&self) -> u64 { + self.claim_price + } + + /// Get the maximum number of claims allowed for this phase for this claimant + pub fn max_claims(&self) -> u64 { + self.max_claims + } +} + +impl From for PhaseTreeNode { + fn from(entry: PhaseCsvEntry) -> Self { + Self { + claimant: Pubkey::from_str(&entry.address).unwrap(), + proof: None, + claim_price: entry.price, + max_claims: entry.max_claims, + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_serialize_phase_tree_node() { + let phase_tree_node = PhaseTreeNode { + claimant: Pubkey::default(), + claim_price: 1000000000, + max_claims: 5, + proof: None, + }; + let serialized = serde_json::to_string(&phase_tree_node).unwrap(); + let deserialized: PhaseTreeNode = serde_json::from_str(&serialized).unwrap(); + assert_eq!(phase_tree_node, deserialized); + } +} diff --git a/crates/merkle-tree/src/utils.rs b/crates/merkle-tree/src/utils.rs new file mode 100644 index 00000000..343b835a --- /dev/null +++ b/crates/merkle-tree/src/utils.rs @@ -0,0 +1,68 @@ +use crate::{merkle_tree::MerkleTree, phase_tree_node::PhaseTreeNode}; + +pub fn get_proof(merkle_tree: &MerkleTree, index: usize) -> Vec<[u8; 32]> { + let mut proof = Vec::new(); + let path = merkle_tree.find_path(index).expect("path to index"); + for branch in path.get_proof_entries() { + if let Some(hash) = branch.get_left_sibling() { + proof.push(hash.to_bytes()); + } else if let Some(hash) = branch.get_right_sibling() { + proof.push(hash.to_bytes()); + } else { + panic!("expected some hash at each level of the tree"); + } + } + proof +} + +/// Given a set of tree nodes, get the max total claim amount. Panics on overflow +pub fn get_max_total_claim(nodes: &[PhaseTreeNode]) -> u64 { + nodes + .iter() + .try_fold(0, |acc: u64, n| acc.checked_add(n.max_claims())) + .unwrap() +} + +#[derive(Debug)] +pub struct MerkleValidationError { + pub msg: String, +} + +#[cfg(test)] +mod tests { + use super::*; + use solana_program::pubkey::Pubkey; + + // Helper function to create a phase tree node + fn create_node(claimant: Pubkey, claim_price: u64, max_claims: u64) -> PhaseTreeNode { + PhaseTreeNode { + claimant, + proof: None, + claim_price, + max_claims, + } + } + + #[test] + fn test_get_max_total_claim_no_overflow() { + let nodes = vec![ + create_node(Pubkey::new_unique(), 100, 2), + create_node(Pubkey::new_unique(), 300, 3), + ]; + + let total = get_max_total_claim(&nodes); + assert_eq!(total, 5); // 2 + 3 + } + + #[test] + #[should_panic(expected = "Option::unwrap()` on a `None` value")] + fn test_get_max_total_claim_overflow() { + let large_number = u64::MAX; + let nodes = vec![ + create_node(Pubkey::new_unique(), 100, large_number), + create_node(Pubkey::new_unique(), 200, 1), + ]; + + let _ = get_max_total_claim(&nodes); + } +} diff --git a/crates/merkle-tree/test/test_fixtures/test_phase_csv.csv b/crates/merkle-tree/test/test_fixtures/test_phase_csv.csv new file mode 100644 index 00000000..00f17c39 --- /dev/null +++ b/crates/merkle-tree/test/test_fixtures/test_phase_csv.csv @@ -0,0 +1,4 @@ +address,price,max_claims +4SX6nqv5VRLMoNfYM5phvHgcBNcBEwUEES4qPPjf1EqF,100000,12 +8G9xE8awr9vA2PZWFTJSHNhS16KLnXYdV6XEaJP1a2Yx,100000,13 +A4mDtfFCkdt9CqGzEkfiSHhJD8d3bUMasVzwajudGtb2,100000,16 diff --git a/export/idl/marketplace.json b/export/idl/marketplace.json new file mode 100644 index 00000000..52e4f310 --- /dev/null +++ b/export/idl/marketplace.json @@ -0,0 +1,1690 @@ +{ + "address": "Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic", + "metadata": { + "name": "marketplace", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Base marketplace contracts on SVM for rarible" + }, + "instructions": [ + { + "name": "bid", + "docs": [ + "initializer a new bid" + ], + "discriminator": [ + 199, + 56, + 85, + 38, + 146, + 243, + 37, + 158 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "initializer_payment_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "payment_token_program" + }, + { + "kind": "account", + "path": "payment_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "order_payment_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "payment_token_program" + }, + { + "kind": "account", + "path": "payment_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "payment_mint", + "writable": true + }, + { + "name": "payment_token_program" + }, + { + "name": "nft_mint" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "BidData" + } + } + } + ] + }, + { + "name": "cancel_bid", + "docs": [ + "cancel a buy order" + ], + "discriminator": [ + 40, + 243, + 190, + 217, + 208, + 253, + 86, + 206 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "Order" + }, + { + "kind": "account", + "path": "order.market", + "account": "Order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "initializer_payment_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "payment_token_program" + }, + { + "kind": "account", + "path": "payment_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "order_payment_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "payment_token_program" + }, + { + "kind": "account", + "path": "payment_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "payment_mint", + "writable": true + }, + { + "name": "payment_token_program" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "cancel_listing", + "docs": [ + "cancel a sell order" + ], + "discriminator": [ + 41, + 183, + 50, + 232, + 230, + 233, + 157, + 70 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "Order" + }, + { + "kind": "account", + "path": "order.market", + "account": "Order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "nft_mint", + "writable": true + }, + { + "name": "initializer_nft_ta", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "sysvar_instructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nft_token_program" + }, + { + "name": "nft_program" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "fill_order", + "docs": [ + "fill a listing" + ], + "discriminator": [ + 232, + 122, + 115, + 25, + 199, + 143, + 136, + 162 + ], + "accounts": [ + { + "name": "taker", + "writable": true, + "signer": true + }, + { + "name": "maker", + "writable": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "Order" + }, + { + "kind": "account", + "path": "order.market", + "account": "Order" + }, + { + "kind": "account", + "path": "order.owner", + "account": "Order" + } + ] + } + }, + { + "name": "nft_mint", + "writable": true + }, + { + "name": "seller_nft_ta", + "writable": true + }, + { + "name": "buyer_nft_ta", + "writable": true + }, + { + "name": "fee_recipient", + "writable": true + }, + { + "name": "fee_recipient_ta", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "nft_token_program" + }, + { + "name": "nft_program" + }, + { + "name": "seller_payment_ta", + "writable": true + }, + { + "name": "buyer_payment_ta", + "writable": true + }, + { + "name": "payment_mint", + "writable": true + }, + { + "name": "payment_token_program" + }, + { + "name": "sysvar_instructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "init_market", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 33, + 253, + 15, + 116, + 89, + 25, + 127, + 236 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market_identifier" + }, + { + "name": "market", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market_identifier" + } + ] + } + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "InitMarketParams" + } + } + } + ] + }, + { + "name": "list", + "docs": [ + "initializer a new listing" + ], + "discriminator": [ + 54, + 174, + 193, + 67, + 17, + 41, + 132, + 38 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "Market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "nft_mint" + }, + { + "name": "initializer_nft_ta", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "nft_token_program" + }, + { + "kind": "account", + "path": "nft_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "sysvar_instructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "nft_token_program" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nft_program" + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "ListData" + } + } + } + ] + }, + { + "name": "verify_mint", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 57, + 93, + 52, + 66, + 75, + 249, + 244, + 143 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market" + }, + { + "name": "nft_mint" + }, + { + "name": "verification", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 118, + 101, + 114, + 105, + 102, + 105, + 99, + 97, + 116, + 105, + 111, + 110 + ] + }, + { + "kind": "account", + "path": "nft_mint" + }, + { + "kind": "account", + "path": "market" + } + ] + } + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "Market", + "discriminator": [ + 219, + 190, + 213, + 55, + 0, + 227, + 198, + 154 + ] + }, + { + "name": "MintVerification", + "discriminator": [ + 152, + 183, + 224, + 35, + 143, + 133, + 78, + 176 + ] + }, + { + "name": "Order", + "discriminator": [ + 134, + 173, + 223, + 185, + 77, + 86, + 28, + 51 + ] + } + ], + "events": [ + { + "name": "MarketEditEvent", + "discriminator": [ + 160, + 230, + 206, + 202, + 154, + 28, + 249, + 246 + ] + }, + { + "name": "OrderEditEvent", + "discriminator": [ + 155, + 223, + 223, + 45, + 200, + 107, + 177, + 149 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "WrongAccount", + "msg": "Account passed in incorrectly" + }, + { + "code": 6001, + "name": "InsufficientOrderSize", + "msg": "Order too small" + }, + { + "code": 6002, + "name": "AmountOverflow", + "msg": "Amount overflow" + }, + { + "code": 6003, + "name": "AmountUnderflow", + "msg": "Amount underflow" + }, + { + "code": 6004, + "name": "UnsupportedNft", + "msg": "Unsupported NFT Type" + }, + { + "code": 6005, + "name": "InvalidNft", + "msg": "Invalid NFT for Market" + } + ], + "types": [ + { + "name": "BidData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "InitMarketParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "fee_recipient", + "type": "pubkey" + }, + { + "name": "fee_bps", + "type": "u64" + } + ] + } + }, + { + "name": "ListData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "payment_mint", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "Market", + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "market account version, used to conditionally parse accounts if changes are made to the struct" + ], + "type": "u8" + }, + { + "name": "market_identifier", + "docs": [ + "identifying of the index to which the NFTs belong to (WNS Collection, Metaplex collection, separate hash)" + ], + "type": "pubkey" + }, + { + "name": "initializer", + "docs": [ + "initializer of the market - can edit and close the market, admin key" + ], + "type": "pubkey" + }, + { + "name": "state", + "docs": [ + "state representing the market - open/closed" + ], + "type": "u8" + }, + { + "name": "fee_recipient", + "docs": [ + "address that should receive market fees" + ], + "type": "pubkey" + }, + { + "name": "fee_bps", + "docs": [ + "fee basis points" + ], + "type": "u64" + }, + { + "name": "reserve", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "MarketEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "edit_type", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "market_identifier", + "type": "string" + }, + { + "name": "initializer", + "type": "string" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "fee_recipient", + "type": "string" + }, + { + "name": "fee_bps", + "type": "u64" + } + ] + } + }, + { + "name": "MintVerification", + "type": { + "kind": "struct", + "fields": [ + { + "name": "verified", + "type": "u8" + } + ] + } + }, + { + "name": "Order", + "docs": [ + "order account - each listing has one order account" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "order account version" + ], + "type": "u8" + }, + { + "name": "nonce", + "docs": [ + "nonce for uniqueness" + ], + "type": "pubkey" + }, + { + "name": "market", + "docs": [ + "market to which the order belongs to, must be init'd" + ], + "type": "pubkey" + }, + { + "name": "owner", + "docs": [ + "owner of the order account" + ], + "type": "pubkey" + }, + { + "name": "side", + "docs": [ + "type of order - buy/sell" + ], + "type": "u8" + }, + { + "name": "size", + "docs": [ + "number of bids order is making", + "always for 1 for sell" + ], + "type": "u64" + }, + { + "name": "price", + "docs": [ + "bid amount in lamports" + ], + "type": "u64" + }, + { + "name": "state", + "docs": [ + "order state - ready/partial/closed" + ], + "type": "u8" + }, + { + "name": "init_time", + "docs": [ + "order account creation time" + ], + "type": "i64" + }, + { + "name": "last_edit_time", + "docs": [ + "last time the order was edited" + ], + "type": "i64" + }, + { + "name": "nft_mint", + "docs": [ + "nft mint in case order is a sell order" + ], + "type": "pubkey" + }, + { + "name": "payment_mint", + "docs": [ + "mint for the payment, default pubkey if SOL" + ], + "type": "pubkey" + }, + { + "name": "fees_on", + "docs": [ + "fees on for this order" + ], + "type": "bool" + }, + { + "name": "reserve_0", + "docs": [ + "reserved space for future changes split up due to serialization constraints" + ], + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "reserve_1", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "reserve_2", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "reserve_3", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve_4", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve_5", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 3 + ] + } + } + ] + } + }, + { + "name": "OrderEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "edit_type", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "nonce", + "type": "string" + }, + { + "name": "market", + "type": "string" + }, + { + "name": "owner", + "type": "string" + }, + { + "name": "side", + "type": "u8" + }, + { + "name": "size", + "type": "u64" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "init_time", + "type": "i64" + }, + { + "name": "last_edit_time", + "type": "i64" + }, + { + "name": "nft_mint", + "type": "string" + }, + { + "name": "payment_mint", + "type": "string" + }, + { + "name": "market_identifier", + "type": "string" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/export/idl/rarible_editions.json b/export/idl/rarible_editions.json new file mode 100644 index 00000000..75e522ca --- /dev/null +++ b/export/idl/rarible_editions.json @@ -0,0 +1,975 @@ +{ + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn", + "metadata": { + "name": "rarible_editions", + "version": "0.2.1", + "spec": "0.1.0", + "description": "Created with Anchor", + "repository": "https://github.com/rarible/eclipse-program-library" + }, + "instructions": [ + { + "name": "add_metadata", + "docs": [ + "add additional metadata to mint" + ], + "discriminator": [ + 231, + 195, + 40, + 240, + 67, + 231, + 53, + 136 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "EditionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "vec": { + "defined": { + "name": "AddMetadataArgs" + } + } + } + } + ] + }, + { + "name": "add_royalties", + "docs": [ + "add royalties to mint" + ], + "discriminator": [ + 195, + 251, + 126, + 230, + 187, + 134, + 168, + 210 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "EditionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "defined": { + "name": "UpdateRoyaltiesArgs" + } + } + } + ] + }, + { + "name": "initialise", + "discriminator": [ + 162, + 198, + 118, + 235, + 215, + 247, + 25, + 118 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "arg", + "path": "input.symbol" + } + ] + } + }, + { + "name": "hashlist", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 97, + 115, + 104, + 108, + 105, + 115, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true + }, + { + "name": "group_mint", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "group_extension_program", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "InitialiseInput" + } + } + } + ] + }, + { + "name": "mint", + "discriminator": [ + 51, + 57, + 225, + 47, + 182, + 146, + 137, + 166 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "EditionsDeployment" + } + ] + } + }, + { + "name": "hashlist", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 97, + 115, + 104, + 108, + 105, + 115, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "hashlist_marker", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 97, + 115, + 104, + 108, + 105, + 115, + 116, + 95, + 109, + 97, + 114, + 107, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + }, + { + "kind": "account", + "path": "mint" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "minter", + "writable": true + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "member", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true + }, + { + "name": "group_mint", + "writable": true + }, + { + "name": "token_account", + "writable": true + }, + { + "name": "token_program" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "group_extension_program", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "modify_royalties", + "docs": [ + "modify royalties of mint" + ], + "discriminator": [ + 199, + 95, + 20, + 107, + 136, + 161, + 93, + 137 + ], + "accounts": [ + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "editions_deployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "EditionsDeployment" + } + ] + } + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "defined": { + "name": "UpdateRoyaltiesArgs" + } + } + } + ] + }, + { + "name": "remove_metadata", + "docs": [ + "remove additional metadata to mint" + ], + "discriminator": [ + 81, + 68, + 231, + 49, + 91, + 8, + 111, + 160 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "EditionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "vec": { + "defined": { + "name": "RemoveMetadataArgs" + } + } + } + } + ] + } + ], + "accounts": [ + { + "name": "EditionsDeployment", + "discriminator": [ + 101, + 54, + 68, + 216, + 168, + 131, + 242, + 157 + ] + }, + { + "name": "Hashlist", + "discriminator": [ + 187, + 203, + 134, + 6, + 43, + 198, + 120, + 186 + ] + }, + { + "name": "HashlistMarker", + "discriminator": [ + 55, + 46, + 160, + 53, + 239, + 41, + 223, + 50 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "SizeExceedsMaxSize", + "msg": "Collection size exceeds max size." + }, + { + "code": 6001, + "name": "MaxSizeBelowCurrentSize", + "msg": "Max size cannot be reduced below current size." + }, + { + "code": 6002, + "name": "CreatorShareInvalid", + "msg": "Creators shares must add up to 100." + }, + { + "code": 6003, + "name": "MissingApproveAccount", + "msg": "Missing approve account." + }, + { + "code": 6004, + "name": "ExpiredApproveAccount", + "msg": "Approve account has expired." + }, + { + "code": 6005, + "name": "InvalidField", + "msg": "Invalid field. You cannot use a public key as a field." + }, + { + "code": 6006, + "name": "CreatorAddressInvalid", + "msg": "The Address you provided is invalid. Please provide a valid address." + }, + { + "code": 6007, + "name": "RoyaltyBasisPointsInvalid", + "msg": "Royalty basis points must be less than or equal to 10000." + }, + { + "code": 6008, + "name": "PlatformFeeBasisPointsInvalid", + "msg": "Platform fee basis points must be less than or equal to 10000." + }, + { + "code": 6009, + "name": "RecipientShareInvalid", + "msg": "Recipient shares must add up to 100." + }, + { + "code": 6010, + "name": "ReservedField", + "msg": "The provided field is invalid or reserved." + }, + { + "code": 6011, + "name": "InvalidNumberOfRecipients", + "msg": "Invalid number of platform fee recipients. Exactly 5 recipients are required." + } + ], + "types": [ + { + "name": "AddMetadataArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "CreatorWithShare", + "type": { + "kind": "struct", + "fields": [ + { + "name": "address", + "type": "pubkey" + }, + { + "name": "share", + "type": "u8" + } + ] + } + }, + { + "name": "EditionsDeployment", + "type": { + "kind": "struct", + "fields": [ + { + "name": "creator", + "type": "pubkey" + }, + { + "name": "max_number_of_tokens", + "type": "u64" + }, + { + "name": "number_of_tokens_issued", + "type": "u64" + }, + { + "name": "cosigner_program_id", + "type": "pubkey" + }, + { + "name": "group_mint", + "type": "pubkey" + }, + { + "name": "group", + "type": "pubkey" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "item_base_name", + "type": "string" + }, + { + "name": "item_base_uri", + "type": "string" + }, + { + "name": "item_name_is_template", + "type": "bool" + }, + { + "name": "item_uri_is_template", + "type": "bool" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 98 + ] + } + } + ] + } + }, + { + "name": "Hashlist", + "type": { + "kind": "struct", + "fields": [ + { + "name": "deployment", + "type": "pubkey" + }, + { + "name": "issues", + "type": { + "vec": { + "defined": { + "name": "MintAndOrder" + } + } + } + } + ] + } + }, + { + "name": "HashlistMarker", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editions_deployment", + "type": "pubkey" + }, + { + "name": "mint", + "type": "pubkey" + } + ] + } + }, + { + "name": "InitialiseInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "symbol", + "type": "string" + }, + { + "name": "collection_name", + "type": "string" + }, + { + "name": "collection_uri", + "type": "string" + }, + { + "name": "max_number_of_tokens", + "type": "u64" + }, + { + "name": "creator_cosign_program_id", + "type": { + "option": "pubkey" + } + }, + { + "name": "item_base_uri", + "type": "string" + }, + { + "name": "item_base_name", + "type": "string" + } + ] + } + }, + { + "name": "MintAndOrder", + "type": { + "kind": "struct", + "fields": [ + { + "name": "mint", + "type": "pubkey" + }, + { + "name": "order", + "type": "u64" + } + ] + } + }, + { + "name": "RemoveMetadataArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "UpdateRoyaltiesArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "royalty_basis_points", + "type": "u16" + }, + { + "name": "creators", + "type": { + "vec": { + "defined": { + "name": "CreatorWithShare" + } + } + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/export/idl/rarible_editions_controls.json b/export/idl/rarible_editions_controls.json new file mode 100644 index 00000000..346945d3 --- /dev/null +++ b/export/idl/rarible_editions_controls.json @@ -0,0 +1,1287 @@ +{ + "address": "RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE", + "metadata": { + "name": "rarible_editions_controls", + "version": "0.2.1", + "spec": "0.1.0", + "description": "Created with Anchor", + "repository": "https://github.com/rarible/eclipse-program-library" + }, + "instructions": [ + { + "name": "add_phase", + "discriminator": [ + 245, + 220, + 147, + 40, + 30, + 207, + 36, + 127 + ], + "accounts": [ + { + "name": "editions_controls", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "rarible_editions_program", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "InitialisePhaseInput" + } + } + } + ] + }, + { + "name": "initialise_editions_controls", + "discriminator": [ + 69, + 176, + 133, + 29, + 20, + 49, + 120, + 202 + ], + "accounts": [ + { + "name": "editions_controls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "editions_deployment", + "writable": true + }, + { + "name": "hashlist", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator" + }, + { + "name": "group_mint", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "group_extension_program", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + }, + { + "name": "rarible_editions_program", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "InitialiseControlInput" + } + } + } + ] + }, + { + "name": "mint_with_controls", + "discriminator": [ + 167, + 57, + 252, + 220, + 69, + 92, + 231, + 61 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true + }, + { + "name": "editions_controls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "hashlist", + "writable": true + }, + { + "name": "hashlist_marker", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "docs": [ + "When deployment.require_creator_cosign is true, this must be equal to the creator", + "of the deployment; otherwise, can be any signer account" + ], + "signer": true + }, + { + "name": "minter", + "writable": true + }, + { + "name": "minter_stats", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 105, + 110, + 116, + 101, + 114, + 95, + 115, + 116, + 97, + 116, + 115 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + }, + { + "kind": "account", + "path": "minter" + } + ] + } + }, + { + "name": "minter_stats_phase", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 105, + 110, + 116, + 101, + 114, + 95, + 115, + 116, + 97, + 116, + 115, + 95, + 112, + 104, + 97, + 115, + 101 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + }, + { + "kind": "account", + "path": "minter" + }, + { + "kind": "arg", + "path": "mint_input.phase_index" + } + ] + } + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "member", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true + }, + { + "name": "group_mint", + "writable": true + }, + { + "name": "platform_fee_recipient_1", + "writable": true + }, + { + "name": "token_account", + "writable": true + }, + { + "name": "treasury", + "writable": true + }, + { + "name": "token_program" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "group_extension_program", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "rarible_editions_program", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "mint_input", + "type": { + "defined": { + "name": "MintInput" + } + } + } + ] + }, + { + "name": "modify_platform_fee", + "discriminator": [ + 186, + 73, + 229, + 152, + 183, + 174, + 250, + 197 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true + }, + { + "name": "editions_controls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true, + "signer": true + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "UpdatePlatformFeeArgs" + } + } + } + ] + }, + { + "name": "modify_platform_secondary_admin", + "discriminator": [ + 128, + 153, + 231, + 143, + 156, + 220, + 161, + 147 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true + }, + { + "name": "editions_controls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "creator", + "writable": true, + "signer": true + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "UpdatePlatformFeeSecondaryAdminInput" + } + } + } + ] + }, + { + "name": "modify_royalties", + "discriminator": [ + 199, + 95, + 20, + 107, + 136, + 161, + 93, + 137 + ], + "accounts": [ + { + "name": "editions_deployment", + "writable": true + }, + { + "name": "editions_controls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editions_deployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "rarible_editions_program", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "UpdateRoyaltiesArgs" + } + } + } + ] + } + ], + "accounts": [ + { + "name": "EditionsControls", + "discriminator": [ + 124, + 32, + 239, + 85, + 118, + 231, + 152, + 156 + ] + }, + { + "name": "EditionsDeployment", + "discriminator": [ + 101, + 54, + 68, + 216, + 168, + 131, + 242, + 157 + ] + }, + { + "name": "MinterStats", + "discriminator": [ + 138, + 239, + 240, + 226, + 199, + 53, + 170, + 179 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "TickerTooLong", + "msg": "Ticker too long" + }, + { + "code": 6001, + "name": "MintTemplateTooLong", + "msg": "Mint template too long" + }, + { + "code": 6002, + "name": "DeploymentTemplateTooLong", + "msg": "Deployment template too long" + }, + { + "code": 6003, + "name": "RootTypeTooLong", + "msg": "Root type too long" + }, + { + "code": 6004, + "name": "MintedOut", + "msg": "Minted out" + }, + { + "code": 6005, + "name": "LegacyMigrationsAreMintedOut", + "msg": "Legacy migrations are minted out" + }, + { + "code": 6006, + "name": "MissingGlobalTreeDelegate", + "msg": "Global tree delegate is missing" + }, + { + "code": 6007, + "name": "IncorrectMintType", + "msg": "Incorrect mint type" + }, + { + "code": 6008, + "name": "InvalidMetadata", + "msg": "Invalid Metadata" + }, + { + "code": 6009, + "name": "CreatorFeeTooHigh", + "msg": "Creator fee too high" + }, + { + "code": 6010, + "name": "FeeCalculationError", + "msg": "Platform fee calculation failed." + }, + { + "code": 6011, + "name": "FeeExceedsPrice", + "msg": "Total fee exceeds the price amount." + }, + { + "code": 6012, + "name": "InvalidFeeShares", + "msg": "Total fee shares must equal 100." + }, + { + "code": 6013, + "name": "TooManyRecipients", + "msg": "Too many platform fee recipients. Maximum allowed is 5." + }, + { + "code": 6014, + "name": "RecipientMismatch", + "msg": "Recipient account does not match the expected address." + }, + { + "code": 6015, + "name": "NoPhasesAdded", + "msg": "No phases have been added. Cannot mint." + }, + { + "code": 6016, + "name": "InvalidPhaseIndex", + "msg": "Invalid phase index." + }, + { + "code": 6017, + "name": "PrivatePhaseNoProof", + "msg": "Private phase but no merkle proof provided" + }, + { + "code": 6018, + "name": "MerkleRootNotSet", + "msg": "Merkle root not set for allow list mint" + }, + { + "code": 6019, + "name": "MerkleProofRequired", + "msg": "Merkle proof required for allow list mint" + }, + { + "code": 6020, + "name": "AllowListPriceAndMaxClaimsRequired", + "msg": "Allow list price and max claims are required for allow list mint" + }, + { + "code": 6021, + "name": "InvalidMerkleProof", + "msg": "Invalid merkle proof" + }, + { + "code": 6022, + "name": "ExceededAllowListMaxClaims", + "msg": "This wallet has exceeded allow list max_claims in the current phase" + }, + { + "code": 6023, + "name": "PhaseNotActive", + "msg": "Phase not active" + }, + { + "code": 6024, + "name": "PhaseNotStarted", + "msg": "Phase not yet started" + }, + { + "code": 6025, + "name": "PhaseAlreadyFinished", + "msg": "Phase already finished" + }, + { + "code": 6026, + "name": "ExceededMaxMintsForPhase", + "msg": "Exceeded max mints for this phase" + }, + { + "code": 6027, + "name": "ExceededWalletMaxMintsForPhase", + "msg": "Exceeded wallet max mints for this phase" + }, + { + "code": 6028, + "name": "ExceededWalletMaxMintsForCollection", + "msg": "Exceeded wallet max mints for the collection" + } + ], + "types": [ + { + "name": "AddMetadataArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "CreatorWithShare", + "type": { + "kind": "struct", + "fields": [ + { + "name": "address", + "type": "pubkey" + }, + { + "name": "share", + "type": "u8" + } + ] + } + }, + { + "name": "EditionsControls", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editions_deployment", + "type": "pubkey" + }, + { + "name": "creator", + "type": "pubkey" + }, + { + "name": "treasury", + "type": "pubkey" + }, + { + "name": "max_mints_per_wallet", + "type": "u64" + }, + { + "name": "cosigner_program_id", + "type": "pubkey" + }, + { + "name": "platform_fee_primary_admin", + "type": "pubkey" + }, + { + "name": "platform_fee_secondary_admin", + "type": "pubkey" + }, + { + "name": "platform_fee_value", + "type": "u64" + }, + { + "name": "is_fee_flat", + "type": "bool" + }, + { + "name": "platform_fee_recipients", + "type": { + "array": [ + { + "defined": { + "name": "PlatformFeeRecipient" + } + }, + 5 + ] + } + }, + { + "name": "phases", + "type": { + "vec": { + "defined": { + "name": "Phase" + } + } + } + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 200 + ] + } + } + ] + } + }, + { + "name": "EditionsDeployment", + "type": { + "kind": "struct", + "fields": [ + { + "name": "creator", + "type": "pubkey" + }, + { + "name": "max_number_of_tokens", + "type": "u64" + }, + { + "name": "number_of_tokens_issued", + "type": "u64" + }, + { + "name": "cosigner_program_id", + "type": "pubkey" + }, + { + "name": "group_mint", + "type": "pubkey" + }, + { + "name": "group", + "type": "pubkey" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "item_base_name", + "type": "string" + }, + { + "name": "item_base_uri", + "type": "string" + }, + { + "name": "item_name_is_template", + "type": "bool" + }, + { + "name": "item_uri_is_template", + "type": "bool" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 98 + ] + } + } + ] + } + }, + { + "name": "InitialiseControlInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "max_mints_per_wallet", + "type": "u64" + }, + { + "name": "treasury", + "type": "pubkey" + }, + { + "name": "max_number_of_tokens", + "type": "u64" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "collection_name", + "type": "string" + }, + { + "name": "collection_uri", + "type": "string" + }, + { + "name": "cosigner_program_id", + "type": { + "option": "pubkey" + } + }, + { + "name": "royalties", + "type": { + "defined": { + "name": "UpdateRoyaltiesArgs" + } + } + }, + { + "name": "extra_meta", + "type": { + "vec": { + "defined": { + "name": "AddMetadataArgs" + } + } + } + }, + { + "name": "item_base_uri", + "type": "string" + }, + { + "name": "item_base_name", + "type": "string" + }, + { + "name": "platform_fee", + "type": { + "defined": { + "name": "UpdatePlatformFeeArgs" + } + } + } + ] + } + }, + { + "name": "InitialisePhaseInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "price_amount", + "type": "u64" + }, + { + "name": "price_token", + "type": "pubkey" + }, + { + "name": "start_time", + "type": "i64" + }, + { + "name": "max_mints_per_wallet", + "type": "u64" + }, + { + "name": "max_mints_total", + "type": "u64" + }, + { + "name": "end_time", + "type": "i64" + }, + { + "name": "is_private", + "type": "bool" + }, + { + "name": "merkle_root", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + } + ] + } + }, + { + "name": "MintInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "phase_index", + "type": "u32" + }, + { + "name": "merkle_proof", + "type": { + "option": { + "vec": { + "array": [ + "u8", + 32 + ] + } + } + } + }, + { + "name": "allow_list_price", + "type": { + "option": "u64" + } + }, + { + "name": "allow_list_max_claims", + "type": { + "option": "u64" + } + } + ] + } + }, + { + "name": "MinterStats", + "type": { + "kind": "struct", + "fields": [ + { + "name": "wallet", + "type": "pubkey" + }, + { + "name": "mint_count", + "type": "u64" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 50 + ] + } + } + ] + } + }, + { + "name": "Phase", + "type": { + "kind": "struct", + "fields": [ + { + "name": "price_amount", + "type": "u64" + }, + { + "name": "price_token", + "type": "pubkey" + }, + { + "name": "start_time", + "type": "i64" + }, + { + "name": "active", + "type": "bool" + }, + { + "name": "max_mints_per_wallet", + "type": "u64" + }, + { + "name": "max_mints_total", + "type": "u64" + }, + { + "name": "end_time", + "type": "i64" + }, + { + "name": "current_mints", + "type": "u64" + }, + { + "name": "is_private", + "type": "bool" + }, + { + "name": "merkle_root", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 200 + ] + } + } + ] + } + }, + { + "name": "PlatformFeeRecipient", + "type": { + "kind": "struct", + "fields": [ + { + "name": "address", + "type": "pubkey" + }, + { + "name": "share", + "type": "u8" + } + ] + } + }, + { + "name": "UpdatePlatformFeeArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "platform_fee_value", + "type": "u64" + }, + { + "name": "recipients", + "type": { + "vec": { + "defined": { + "name": "PlatformFeeRecipient" + } + } + } + }, + { + "name": "is_fee_flat", + "type": "bool" + } + ] + } + }, + { + "name": "UpdatePlatformFeeSecondaryAdminInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "new_admin", + "type": "pubkey" + } + ] + } + }, + { + "name": "UpdateRoyaltiesArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "royalty_basis_points", + "type": "u16" + }, + { + "name": "creators", + "type": { + "vec": { + "defined": { + "name": "CreatorWithShare" + } + } + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/export/types/marketplace.ts b/export/types/marketplace.ts new file mode 100644 index 00000000..df51abc8 --- /dev/null +++ b/export/types/marketplace.ts @@ -0,0 +1,1696 @@ +/** + * Program IDL in camelCase format in order to be used in JS/TS. + * + * Note that this is only a type helper and is not the actual IDL. The original + * IDL can be found at `target/idl/marketplace.json`. + */ +export type Marketplace = { + "address": "Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic", + "metadata": { + "name": "marketplace", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Base marketplace contracts on SVM for rarible" + }, + "instructions": [ + { + "name": "bid", + "docs": [ + "initializer a new bid" + ], + "discriminator": [ + 199, + 56, + 85, + 38, + 146, + 243, + 37, + 158 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "initializerPaymentTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "paymentTokenProgram" + }, + { + "kind": "account", + "path": "paymentMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "orderPaymentTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "paymentTokenProgram" + }, + { + "kind": "account", + "path": "paymentMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "paymentMint", + "writable": true + }, + { + "name": "paymentTokenProgram" + }, + { + "name": "nftMint" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "bidData" + } + } + } + ] + }, + { + "name": "cancelBid", + "docs": [ + "cancel a buy order" + ], + "discriminator": [ + 40, + 243, + 190, + 217, + 208, + 253, + 86, + 206 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "order" + }, + { + "kind": "account", + "path": "order.market", + "account": "order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "initializerPaymentTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "paymentTokenProgram" + }, + { + "kind": "account", + "path": "paymentMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "orderPaymentTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "order" + }, + { + "kind": "account", + "path": "paymentTokenProgram" + }, + { + "kind": "account", + "path": "paymentMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "paymentMint", + "writable": true + }, + { + "name": "paymentTokenProgram" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "cancelListing", + "docs": [ + "cancel a sell order" + ], + "discriminator": [ + 41, + 183, + 50, + 232, + 230, + 233, + 157, + 70 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "order" + }, + { + "kind": "account", + "path": "order.market", + "account": "order" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "nftMint", + "writable": true + }, + { + "name": "initializerNftTa", + "writable": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "sysvarInstructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nftTokenProgram" + }, + { + "name": "nftProgram" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "fillOrder", + "docs": [ + "fill a listing" + ], + "discriminator": [ + 232, + 122, + 115, + 25, + 199, + 143, + 136, + 162 + ], + "accounts": [ + { + "name": "taker", + "writable": true, + "signer": true + }, + { + "name": "maker", + "writable": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "order.nonce", + "account": "order" + }, + { + "kind": "account", + "path": "order.market", + "account": "order" + }, + { + "kind": "account", + "path": "order.owner", + "account": "order" + } + ] + } + }, + { + "name": "nftMint", + "writable": true + }, + { + "name": "sellerNftTa", + "writable": true + }, + { + "name": "buyerNftTa", + "writable": true + }, + { + "name": "feeRecipient", + "writable": true + }, + { + "name": "feeRecipientTa", + "writable": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "nftTokenProgram" + }, + { + "name": "nftProgram" + }, + { + "name": "sellerPaymentTa", + "writable": true + }, + { + "name": "buyerPaymentTa", + "writable": true + }, + { + "name": "paymentMint", + "writable": true + }, + { + "name": "paymentTokenProgram" + }, + { + "name": "sysvarInstructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "initMarket", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 33, + 253, + 15, + 116, + 89, + 25, + 127, + 236 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "marketIdentifier" + }, + { + "name": "market", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "marketIdentifier" + } + ] + } + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "initMarketParams" + } + } + } + ] + }, + { + "name": "list", + "docs": [ + "initializer a new listing" + ], + "discriminator": [ + 54, + 174, + 193, + 67, + 17, + 41, + 132, + 38 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 97, + 114, + 107, + 101, + 116 + ] + }, + { + "kind": "account", + "path": "market.market_identifier", + "account": "market" + } + ] + } + }, + { + "name": "order", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 111, + 114, + 100, + 101, + 114 + ] + }, + { + "kind": "arg", + "path": "data.nonce" + }, + { + "kind": "account", + "path": "market" + }, + { + "kind": "account", + "path": "initializer" + } + ] + } + }, + { + "name": "nftMint" + }, + { + "name": "initializerNftTa", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "initializer" + }, + { + "kind": "account", + "path": "nftTokenProgram" + }, + { + "kind": "account", + "path": "nftMint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "sysvarInstructions", + "address": "Sysvar1nstructions1111111111111111111111111" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "nftTokenProgram" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "nftProgram" + }, + { + "name": "eventAuthority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ] + } + ] + } + }, + { + "name": "program" + } + ], + "args": [ + { + "name": "data", + "type": { + "defined": { + "name": "listData" + } + } + } + ] + }, + { + "name": "verifyMint", + "docs": [ + "initializer a new market" + ], + "discriminator": [ + 57, + 93, + 52, + 66, + 75, + 249, + 244, + 143 + ], + "accounts": [ + { + "name": "initializer", + "writable": true, + "signer": true + }, + { + "name": "market" + }, + { + "name": "nftMint" + }, + { + "name": "verification", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 118, + 101, + 114, + 105, + 102, + 105, + 99, + 97, + 116, + 105, + 111, + 110 + ] + }, + { + "kind": "account", + "path": "nftMint" + }, + { + "kind": "account", + "path": "market" + } + ] + } + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "market", + "discriminator": [ + 219, + 190, + 213, + 55, + 0, + 227, + 198, + 154 + ] + }, + { + "name": "mintVerification", + "discriminator": [ + 152, + 183, + 224, + 35, + 143, + 133, + 78, + 176 + ] + }, + { + "name": "order", + "discriminator": [ + 134, + 173, + 223, + 185, + 77, + 86, + 28, + 51 + ] + } + ], + "events": [ + { + "name": "marketEditEvent", + "discriminator": [ + 160, + 230, + 206, + 202, + 154, + 28, + 249, + 246 + ] + }, + { + "name": "orderEditEvent", + "discriminator": [ + 155, + 223, + 223, + 45, + 200, + 107, + 177, + 149 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "wrongAccount", + "msg": "Account passed in incorrectly" + }, + { + "code": 6001, + "name": "insufficientOrderSize", + "msg": "Order too small" + }, + { + "code": 6002, + "name": "amountOverflow", + "msg": "Amount overflow" + }, + { + "code": 6003, + "name": "amountUnderflow", + "msg": "Amount underflow" + }, + { + "code": 6004, + "name": "unsupportedNft", + "msg": "Unsupported NFT Type" + }, + { + "code": 6005, + "name": "invalidNft", + "msg": "Invalid NFT for Market" + } + ], + "types": [ + { + "name": "bidData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "initMarketParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeRecipient", + "type": "pubkey" + }, + { + "name": "feeBps", + "type": "u64" + } + ] + } + }, + { + "name": "listData", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "pubkey" + }, + { + "name": "paymentMint", + "type": "pubkey" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "size", + "type": "u64" + } + ] + } + }, + { + "name": "market", + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "market account version, used to conditionally parse accounts if changes are made to the struct" + ], + "type": "u8" + }, + { + "name": "marketIdentifier", + "docs": [ + "identifying of the index to which the NFTs belong to (WNS Collection, Metaplex collection, separate hash)" + ], + "type": "pubkey" + }, + { + "name": "initializer", + "docs": [ + "initializer of the market - can edit and close the market, admin key" + ], + "type": "pubkey" + }, + { + "name": "state", + "docs": [ + "state representing the market - open/closed" + ], + "type": "u8" + }, + { + "name": "feeRecipient", + "docs": [ + "address that should receive market fees" + ], + "type": "pubkey" + }, + { + "name": "feeBps", + "docs": [ + "fee basis points" + ], + "type": "u64" + }, + { + "name": "reserve", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "marketEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editType", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "marketIdentifier", + "type": "string" + }, + { + "name": "initializer", + "type": "string" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "feeRecipient", + "type": "string" + }, + { + "name": "feeBps", + "type": "u64" + } + ] + } + }, + { + "name": "mintVerification", + "type": { + "kind": "struct", + "fields": [ + { + "name": "verified", + "type": "u8" + } + ] + } + }, + { + "name": "order", + "docs": [ + "order account - each listing has one order account" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "version", + "docs": [ + "order account version" + ], + "type": "u8" + }, + { + "name": "nonce", + "docs": [ + "nonce for uniqueness" + ], + "type": "pubkey" + }, + { + "name": "market", + "docs": [ + "market to which the order belongs to, must be init'd" + ], + "type": "pubkey" + }, + { + "name": "owner", + "docs": [ + "owner of the order account" + ], + "type": "pubkey" + }, + { + "name": "side", + "docs": [ + "type of order - buy/sell" + ], + "type": "u8" + }, + { + "name": "size", + "docs": [ + "number of bids order is making", + "always for 1 for sell" + ], + "type": "u64" + }, + { + "name": "price", + "docs": [ + "bid amount in lamports" + ], + "type": "u64" + }, + { + "name": "state", + "docs": [ + "order state - ready/partial/closed" + ], + "type": "u8" + }, + { + "name": "initTime", + "docs": [ + "order account creation time" + ], + "type": "i64" + }, + { + "name": "lastEditTime", + "docs": [ + "last time the order was edited" + ], + "type": "i64" + }, + { + "name": "nftMint", + "docs": [ + "nft mint in case order is a sell order" + ], + "type": "pubkey" + }, + { + "name": "paymentMint", + "docs": [ + "mint for the payment, default pubkey if SOL" + ], + "type": "pubkey" + }, + { + "name": "feesOn", + "docs": [ + "fees on for this order" + ], + "type": "bool" + }, + { + "name": "reserve0", + "docs": [ + "reserved space for future changes split up due to serialization constraints" + ], + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "reserve1", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "reserve2", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "reserve3", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve4", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 30 + ] + } + }, + { + "name": "reserve5", + "docs": [ + "reserved space for future changes" + ], + "type": { + "array": [ + "u8", + 3 + ] + } + } + ] + } + }, + { + "name": "orderEditEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editType", + "type": "u8" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "version", + "type": "u8" + }, + { + "name": "nonce", + "type": "string" + }, + { + "name": "market", + "type": "string" + }, + { + "name": "owner", + "type": "string" + }, + { + "name": "side", + "type": "u8" + }, + { + "name": "size", + "type": "u64" + }, + { + "name": "price", + "type": "u64" + }, + { + "name": "state", + "type": "u8" + }, + { + "name": "initTime", + "type": "i64" + }, + { + "name": "lastEditTime", + "type": "i64" + }, + { + "name": "nftMint", + "type": "string" + }, + { + "name": "paymentMint", + "type": "string" + }, + { + "name": "marketIdentifier", + "type": "string" + } + ] + } + } + ] +}; diff --git a/export/types/rarible_editions.ts b/export/types/rarible_editions.ts new file mode 100644 index 00000000..99312ec3 --- /dev/null +++ b/export/types/rarible_editions.ts @@ -0,0 +1,981 @@ +/** + * Program IDL in camelCase format in order to be used in JS/TS. + * + * Note that this is only a type helper and is not the actual IDL. The original + * IDL can be found at `target/idl/rarible_editions.json`. + */ +export type RaribleEditions = { + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn", + "metadata": { + "name": "raribleEditions", + "version": "0.2.1", + "spec": "0.1.0", + "description": "Created with Anchor", + "repository": "https://github.com/rarible/eclipse-program-library" + }, + "instructions": [ + { + "name": "addMetadata", + "docs": [ + "add additional metadata to mint" + ], + "discriminator": [ + 231, + 195, + 40, + 240, + 67, + 231, + 53, + 136 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "editionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "vec": { + "defined": { + "name": "addMetadataArgs" + } + } + } + } + ] + }, + { + "name": "addRoyalties", + "docs": [ + "add royalties to mint" + ], + "discriminator": [ + 195, + 251, + 126, + 230, + 187, + 134, + 168, + 210 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "editionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "defined": { + "name": "updateRoyaltiesArgs" + } + } + } + ] + }, + { + "name": "initialise", + "discriminator": [ + 162, + 198, + 118, + 235, + 215, + 247, + 25, + 118 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "arg", + "path": "input.symbol" + } + ] + } + }, + { + "name": "hashlist", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 97, + 115, + 104, + 108, + 105, + 115, + 116 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true + }, + { + "name": "groupMint", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true, + "signer": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "groupExtensionProgram", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "initialiseInput" + } + } + } + ] + }, + { + "name": "mint", + "discriminator": [ + 51, + 57, + 225, + 47, + 182, + 146, + 137, + 166 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "editionsDeployment" + } + ] + } + }, + { + "name": "hashlist", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 97, + 115, + 104, + 108, + 105, + 115, + 116 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "hashlistMarker", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 97, + 115, + 104, + 108, + 105, + 115, + 116, + 95, + 109, + 97, + 114, + 107, + 101, + 114 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + }, + { + "kind": "account", + "path": "mint" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "minter", + "writable": true + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "member", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true + }, + { + "name": "groupMint", + "writable": true + }, + { + "name": "tokenAccount", + "writable": true + }, + { + "name": "tokenProgram" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "groupExtensionProgram", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "modifyRoyalties", + "docs": [ + "modify royalties of mint" + ], + "discriminator": [ + 199, + 95, + 20, + 107, + 136, + 161, + 93, + 137 + ], + "accounts": [ + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "editionsDeployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "editionsDeployment" + } + ] + } + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "defined": { + "name": "updateRoyaltiesArgs" + } + } + } + ] + }, + { + "name": "removeMetadata", + "docs": [ + "remove additional metadata to mint" + ], + "discriminator": [ + 81, + 68, + 231, + 49, + 91, + 8, + 111, + 160 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 100, + 101, + 112, + 108, + 111, + 121, + 109, + 101, + 110, + 116 + ] + }, + { + "kind": "account", + "path": "editions_deployment.symbol", + "account": "editionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "mint" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + } + ], + "args": [ + { + "name": "args", + "type": { + "vec": { + "defined": { + "name": "removeMetadataArgs" + } + } + } + } + ] + } + ], + "accounts": [ + { + "name": "editionsDeployment", + "discriminator": [ + 101, + 54, + 68, + 216, + 168, + 131, + 242, + 157 + ] + }, + { + "name": "hashlist", + "discriminator": [ + 187, + 203, + 134, + 6, + 43, + 198, + 120, + 186 + ] + }, + { + "name": "hashlistMarker", + "discriminator": [ + 55, + 46, + 160, + 53, + 239, + 41, + 223, + 50 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "sizeExceedsMaxSize", + "msg": "Collection size exceeds max size." + }, + { + "code": 6001, + "name": "maxSizeBelowCurrentSize", + "msg": "Max size cannot be reduced below current size." + }, + { + "code": 6002, + "name": "creatorShareInvalid", + "msg": "Creators shares must add up to 100." + }, + { + "code": 6003, + "name": "missingApproveAccount", + "msg": "Missing approve account." + }, + { + "code": 6004, + "name": "expiredApproveAccount", + "msg": "Approve account has expired." + }, + { + "code": 6005, + "name": "invalidField", + "msg": "Invalid field. You cannot use a public key as a field." + }, + { + "code": 6006, + "name": "creatorAddressInvalid", + "msg": "The Address you provided is invalid. Please provide a valid address." + }, + { + "code": 6007, + "name": "royaltyBasisPointsInvalid", + "msg": "Royalty basis points must be less than or equal to 10000." + }, + { + "code": 6008, + "name": "platformFeeBasisPointsInvalid", + "msg": "Platform fee basis points must be less than or equal to 10000." + }, + { + "code": 6009, + "name": "recipientShareInvalid", + "msg": "Recipient shares must add up to 100." + }, + { + "code": 6010, + "name": "reservedField", + "msg": "The provided field is invalid or reserved." + }, + { + "code": 6011, + "name": "invalidNumberOfRecipients", + "msg": "Invalid number of platform fee recipients. Exactly 5 recipients are required." + } + ], + "types": [ + { + "name": "addMetadataArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "creatorWithShare", + "type": { + "kind": "struct", + "fields": [ + { + "name": "address", + "type": "pubkey" + }, + { + "name": "share", + "type": "u8" + } + ] + } + }, + { + "name": "editionsDeployment", + "type": { + "kind": "struct", + "fields": [ + { + "name": "creator", + "type": "pubkey" + }, + { + "name": "maxNumberOfTokens", + "type": "u64" + }, + { + "name": "numberOfTokensIssued", + "type": "u64" + }, + { + "name": "cosignerProgramId", + "type": "pubkey" + }, + { + "name": "groupMint", + "type": "pubkey" + }, + { + "name": "group", + "type": "pubkey" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "itemBaseName", + "type": "string" + }, + { + "name": "itemBaseUri", + "type": "string" + }, + { + "name": "itemNameIsTemplate", + "type": "bool" + }, + { + "name": "itemUriIsTemplate", + "type": "bool" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 98 + ] + } + } + ] + } + }, + { + "name": "hashlist", + "type": { + "kind": "struct", + "fields": [ + { + "name": "deployment", + "type": "pubkey" + }, + { + "name": "issues", + "type": { + "vec": { + "defined": { + "name": "mintAndOrder" + } + } + } + } + ] + } + }, + { + "name": "hashlistMarker", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editionsDeployment", + "type": "pubkey" + }, + { + "name": "mint", + "type": "pubkey" + } + ] + } + }, + { + "name": "initialiseInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "symbol", + "type": "string" + }, + { + "name": "collectionName", + "type": "string" + }, + { + "name": "collectionUri", + "type": "string" + }, + { + "name": "maxNumberOfTokens", + "type": "u64" + }, + { + "name": "creatorCosignProgramId", + "type": { + "option": "pubkey" + } + }, + { + "name": "itemBaseUri", + "type": "string" + }, + { + "name": "itemBaseName", + "type": "string" + } + ] + } + }, + { + "name": "mintAndOrder", + "type": { + "kind": "struct", + "fields": [ + { + "name": "mint", + "type": "pubkey" + }, + { + "name": "order", + "type": "u64" + } + ] + } + }, + { + "name": "removeMetadataArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "updateRoyaltiesArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "royaltyBasisPoints", + "type": "u16" + }, + { + "name": "creators", + "type": { + "vec": { + "defined": { + "name": "creatorWithShare" + } + } + } + } + ] + } + } + ] +}; diff --git a/export/types/rarible_editions_controls.ts b/export/types/rarible_editions_controls.ts new file mode 100644 index 00000000..fd279369 --- /dev/null +++ b/export/types/rarible_editions_controls.ts @@ -0,0 +1,1293 @@ +/** + * Program IDL in camelCase format in order to be used in JS/TS. + * + * Note that this is only a type helper and is not the actual IDL. The original + * IDL can be found at `target/idl/rarible_editions_controls.json`. + */ +export type RaribleEditionsControls = { + "address": "RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE", + "metadata": { + "name": "raribleEditionsControls", + "version": "0.2.1", + "spec": "0.1.0", + "description": "Created with Anchor", + "repository": "https://github.com/rarible/eclipse-program-library" + }, + "instructions": [ + { + "name": "addPhase", + "discriminator": [ + 245, + 220, + 147, + 40, + 30, + 207, + 36, + 127 + ], + "accounts": [ + { + "name": "editionsControls", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true, + "signer": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "raribleEditionsProgram", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "initialisePhaseInput" + } + } + } + ] + }, + { + "name": "initialiseEditionsControls", + "discriminator": [ + 69, + 176, + 133, + 29, + 20, + 49, + 120, + 202 + ], + "accounts": [ + { + "name": "editionsControls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "editionsDeployment", + "writable": true + }, + { + "name": "hashlist", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator" + }, + { + "name": "groupMint", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true, + "signer": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "groupExtensionProgram", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + }, + { + "name": "raribleEditionsProgram", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "initialiseControlInput" + } + } + } + ] + }, + { + "name": "mintWithControls", + "discriminator": [ + 167, + 57, + 252, + 220, + 69, + 92, + 231, + 61 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true + }, + { + "name": "editionsControls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "hashlist", + "writable": true + }, + { + "name": "hashlistMarker", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "signer", + "docs": [ + "When deployment.require_creator_cosign is true, this must be equal to the creator", + "of the deployment; otherwise, can be any signer account" + ], + "signer": true + }, + { + "name": "minter", + "writable": true + }, + { + "name": "minterStats", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 105, + 110, + 116, + 101, + 114, + 95, + 115, + 116, + 97, + 116, + 115 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + }, + { + "kind": "account", + "path": "minter" + } + ] + } + }, + { + "name": "minterStatsPhase", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 105, + 110, + 116, + 101, + 114, + 95, + 115, + 116, + 97, + 116, + 115, + 95, + 112, + 104, + 97, + 115, + 101 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + }, + { + "kind": "account", + "path": "minter" + }, + { + "kind": "arg", + "path": "mint_input.phase_index" + } + ] + } + }, + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "member", + "writable": true, + "signer": true + }, + { + "name": "group", + "writable": true + }, + { + "name": "groupMint", + "writable": true + }, + { + "name": "platformFeeRecipient1", + "writable": true + }, + { + "name": "tokenAccount", + "writable": true + }, + { + "name": "treasury", + "writable": true + }, + { + "name": "tokenProgram" + }, + { + "name": "associatedTokenProgram", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "groupExtensionProgram", + "address": "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "raribleEditionsProgram", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "mintInput", + "type": { + "defined": { + "name": "mintInput" + } + } + } + ] + }, + { + "name": "modifyPlatformFee", + "discriminator": [ + 186, + 73, + 229, + 152, + 183, + 174, + 250, + 197 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true + }, + { + "name": "editionsControls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true, + "signer": true + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "updatePlatformFeeArgs" + } + } + } + ] + }, + { + "name": "modifyPlatformSecondaryAdmin", + "discriminator": [ + 128, + 153, + 231, + 143, + 156, + 220, + 161, + 147 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true + }, + { + "name": "editionsControls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "creator", + "writable": true, + "signer": true + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "updatePlatformFeeSecondaryAdminInput" + } + } + } + ] + }, + { + "name": "modifyRoyalties", + "discriminator": [ + 199, + 95, + 20, + 107, + 136, + 161, + 93, + 137 + ], + "accounts": [ + { + "name": "editionsDeployment", + "writable": true + }, + { + "name": "editionsControls", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 101, + 100, + 105, + 116, + 105, + 111, + 110, + 115, + 95, + 99, + 111, + 110, + 116, + 114, + 111, + 108, + 115 + ] + }, + { + "kind": "account", + "path": "editionsDeployment" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "creator", + "writable": true, + "signer": true + }, + { + "name": "mint", + "writable": true + }, + { + "name": "systemProgram", + "address": "11111111111111111111111111111111" + }, + { + "name": "tokenProgram", + "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + }, + { + "name": "raribleEditionsProgram", + "address": "Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn" + } + ], + "args": [ + { + "name": "input", + "type": { + "defined": { + "name": "updateRoyaltiesArgs" + } + } + } + ] + } + ], + "accounts": [ + { + "name": "editionsControls", + "discriminator": [ + 124, + 32, + 239, + 85, + 118, + 231, + 152, + 156 + ] + }, + { + "name": "editionsDeployment", + "discriminator": [ + 101, + 54, + 68, + 216, + 168, + 131, + 242, + 157 + ] + }, + { + "name": "minterStats", + "discriminator": [ + 138, + 239, + 240, + 226, + 199, + 53, + 170, + 179 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "tickerTooLong", + "msg": "Ticker too long" + }, + { + "code": 6001, + "name": "mintTemplateTooLong", + "msg": "Mint template too long" + }, + { + "code": 6002, + "name": "deploymentTemplateTooLong", + "msg": "Deployment template too long" + }, + { + "code": 6003, + "name": "rootTypeTooLong", + "msg": "Root type too long" + }, + { + "code": 6004, + "name": "mintedOut", + "msg": "Minted out" + }, + { + "code": 6005, + "name": "legacyMigrationsAreMintedOut", + "msg": "Legacy migrations are minted out" + }, + { + "code": 6006, + "name": "missingGlobalTreeDelegate", + "msg": "Global tree delegate is missing" + }, + { + "code": 6007, + "name": "incorrectMintType", + "msg": "Incorrect mint type" + }, + { + "code": 6008, + "name": "invalidMetadata", + "msg": "Invalid Metadata" + }, + { + "code": 6009, + "name": "creatorFeeTooHigh", + "msg": "Creator fee too high" + }, + { + "code": 6010, + "name": "feeCalculationError", + "msg": "Platform fee calculation failed." + }, + { + "code": 6011, + "name": "feeExceedsPrice", + "msg": "Total fee exceeds the price amount." + }, + { + "code": 6012, + "name": "invalidFeeShares", + "msg": "Total fee shares must equal 100." + }, + { + "code": 6013, + "name": "tooManyRecipients", + "msg": "Too many platform fee recipients. Maximum allowed is 5." + }, + { + "code": 6014, + "name": "recipientMismatch", + "msg": "Recipient account does not match the expected address." + }, + { + "code": 6015, + "name": "noPhasesAdded", + "msg": "No phases have been added. Cannot mint." + }, + { + "code": 6016, + "name": "invalidPhaseIndex", + "msg": "Invalid phase index." + }, + { + "code": 6017, + "name": "privatePhaseNoProof", + "msg": "Private phase but no merkle proof provided" + }, + { + "code": 6018, + "name": "merkleRootNotSet", + "msg": "Merkle root not set for allow list mint" + }, + { + "code": 6019, + "name": "merkleProofRequired", + "msg": "Merkle proof required for allow list mint" + }, + { + "code": 6020, + "name": "allowListPriceAndMaxClaimsRequired", + "msg": "Allow list price and max claims are required for allow list mint" + }, + { + "code": 6021, + "name": "invalidMerkleProof", + "msg": "Invalid merkle proof" + }, + { + "code": 6022, + "name": "exceededAllowListMaxClaims", + "msg": "This wallet has exceeded allow list max_claims in the current phase" + }, + { + "code": 6023, + "name": "phaseNotActive", + "msg": "Phase not active" + }, + { + "code": 6024, + "name": "phaseNotStarted", + "msg": "Phase not yet started" + }, + { + "code": 6025, + "name": "phaseAlreadyFinished", + "msg": "Phase already finished" + }, + { + "code": 6026, + "name": "exceededMaxMintsForPhase", + "msg": "Exceeded max mints for this phase" + }, + { + "code": 6027, + "name": "exceededWalletMaxMintsForPhase", + "msg": "Exceeded wallet max mints for this phase" + }, + { + "code": 6028, + "name": "exceededWalletMaxMintsForCollection", + "msg": "Exceeded wallet max mints for the collection" + } + ], + "types": [ + { + "name": "addMetadataArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "creatorWithShare", + "type": { + "kind": "struct", + "fields": [ + { + "name": "address", + "type": "pubkey" + }, + { + "name": "share", + "type": "u8" + } + ] + } + }, + { + "name": "editionsControls", + "type": { + "kind": "struct", + "fields": [ + { + "name": "editionsDeployment", + "type": "pubkey" + }, + { + "name": "creator", + "type": "pubkey" + }, + { + "name": "treasury", + "type": "pubkey" + }, + { + "name": "maxMintsPerWallet", + "type": "u64" + }, + { + "name": "cosignerProgramId", + "type": "pubkey" + }, + { + "name": "platformFeePrimaryAdmin", + "type": "pubkey" + }, + { + "name": "platformFeeSecondaryAdmin", + "type": "pubkey" + }, + { + "name": "platformFeeValue", + "type": "u64" + }, + { + "name": "isFeeFlat", + "type": "bool" + }, + { + "name": "platformFeeRecipients", + "type": { + "array": [ + { + "defined": { + "name": "platformFeeRecipient" + } + }, + 5 + ] + } + }, + { + "name": "phases", + "type": { + "vec": { + "defined": { + "name": "phase" + } + } + } + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 200 + ] + } + } + ] + } + }, + { + "name": "editionsDeployment", + "type": { + "kind": "struct", + "fields": [ + { + "name": "creator", + "type": "pubkey" + }, + { + "name": "maxNumberOfTokens", + "type": "u64" + }, + { + "name": "numberOfTokensIssued", + "type": "u64" + }, + { + "name": "cosignerProgramId", + "type": "pubkey" + }, + { + "name": "groupMint", + "type": "pubkey" + }, + { + "name": "group", + "type": "pubkey" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "itemBaseName", + "type": "string" + }, + { + "name": "itemBaseUri", + "type": "string" + }, + { + "name": "itemNameIsTemplate", + "type": "bool" + }, + { + "name": "itemUriIsTemplate", + "type": "bool" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 98 + ] + } + } + ] + } + }, + { + "name": "initialiseControlInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "maxMintsPerWallet", + "type": "u64" + }, + { + "name": "treasury", + "type": "pubkey" + }, + { + "name": "maxNumberOfTokens", + "type": "u64" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "collectionName", + "type": "string" + }, + { + "name": "collectionUri", + "type": "string" + }, + { + "name": "cosignerProgramId", + "type": { + "option": "pubkey" + } + }, + { + "name": "royalties", + "type": { + "defined": { + "name": "updateRoyaltiesArgs" + } + } + }, + { + "name": "extraMeta", + "type": { + "vec": { + "defined": { + "name": "addMetadataArgs" + } + } + } + }, + { + "name": "itemBaseUri", + "type": "string" + }, + { + "name": "itemBaseName", + "type": "string" + }, + { + "name": "platformFee", + "type": { + "defined": { + "name": "updatePlatformFeeArgs" + } + } + } + ] + } + }, + { + "name": "initialisePhaseInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "priceAmount", + "type": "u64" + }, + { + "name": "priceToken", + "type": "pubkey" + }, + { + "name": "startTime", + "type": "i64" + }, + { + "name": "maxMintsPerWallet", + "type": "u64" + }, + { + "name": "maxMintsTotal", + "type": "u64" + }, + { + "name": "endTime", + "type": "i64" + }, + { + "name": "isPrivate", + "type": "bool" + }, + { + "name": "merkleRoot", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + } + ] + } + }, + { + "name": "mintInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "phaseIndex", + "type": "u32" + }, + { + "name": "merkleProof", + "type": { + "option": { + "vec": { + "array": [ + "u8", + 32 + ] + } + } + } + }, + { + "name": "allowListPrice", + "type": { + "option": "u64" + } + }, + { + "name": "allowListMaxClaims", + "type": { + "option": "u64" + } + } + ] + } + }, + { + "name": "minterStats", + "type": { + "kind": "struct", + "fields": [ + { + "name": "wallet", + "type": "pubkey" + }, + { + "name": "mintCount", + "type": "u64" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 50 + ] + } + } + ] + } + }, + { + "name": "phase", + "type": { + "kind": "struct", + "fields": [ + { + "name": "priceAmount", + "type": "u64" + }, + { + "name": "priceToken", + "type": "pubkey" + }, + { + "name": "startTime", + "type": "i64" + }, + { + "name": "active", + "type": "bool" + }, + { + "name": "maxMintsPerWallet", + "type": "u64" + }, + { + "name": "maxMintsTotal", + "type": "u64" + }, + { + "name": "endTime", + "type": "i64" + }, + { + "name": "currentMints", + "type": "u64" + }, + { + "name": "isPrivate", + "type": "bool" + }, + { + "name": "merkleRoot", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 200 + ] + } + } + ] + } + }, + { + "name": "platformFeeRecipient", + "type": { + "kind": "struct", + "fields": [ + { + "name": "address", + "type": "pubkey" + }, + { + "name": "share", + "type": "u8" + } + ] + } + }, + { + "name": "updatePlatformFeeArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "platformFeeValue", + "type": "u64" + }, + { + "name": "recipients", + "type": { + "vec": { + "defined": { + "name": "platformFeeRecipient" + } + } + } + }, + { + "name": "isFeeFlat", + "type": "bool" + } + ] + } + }, + { + "name": "updatePlatformFeeSecondaryAdminInput", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAdmin", + "type": "pubkey" + } + ] + } + }, + { + "name": "updateRoyaltiesArgs", + "type": { + "kind": "struct", + "fields": [ + { + "name": "royaltyBasisPoints", + "type": "u16" + }, + { + "name": "creators", + "type": { + "vec": { + "defined": { + "name": "creatorWithShare" + } + } + } + } + ] + } + } + ] +}; diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..77e3eb6a --- /dev/null +++ b/lerna.json @@ -0,0 +1,19 @@ +{ + "$schema": "node_modules/lerna/schemas/lerna-schema.json", + "npmClient": "yarn", + "useWorkspaces": true, + "version": "0.1.0", + "changelog": false, + "command": { + "publish": { + "allowBranch": [ + "release/*", + "feature/*" + ], + "conventionalCommits": true, + "message": "chore: bump versions after release", + "yes": true, + "registry": "http://nexus.rarible.int/repository/npm/" + } + } +} diff --git a/package.json b/package.json index a7bea723..c0d35b26 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,60 @@ { - "name": "wen-program-library", + "name": "rarible-program-library", "version": "0.5.0", "description": "A library of programs maintained by the WEN community", + "license": "ISC", + "private": true, + "workspaces": [ + "packages/*" + ], "scripts": { + "build-npm": "anchor build && npx lerna run build", "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", "lint:ts": "sh -c 'find . -name \"node_modules\" -prune -o -name \"dist\" -prune -o -name \"*.ts\" -o -name \"*.tsx\" -exec sh -c \"echo Formatting {} && prettier --write {}\" \\;'", "lint:rs": "sh -c 'find . -path ./target -prune -o -name \"*.rs\" -exec sh -c \"echo Formatting {} && cargo fmt -- {}\" \\;'", "clients": "node ./kinobi.mjs", "version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", - "prepare": "husky" + "prepare": "husky", + + "rarible_group:deploy:solana-dev-net": " solana program deploy ./bins/spl_token_group_example.so --program-id target/deploy/spl_token_group_example-keypair.json --url https://api.devnet.solana.com", + "rarible_editions:deploy:solana-dev-net": "anchor build -p rarible_editions && anchor deploy -p rarible_editions --provider.cluster https://api.devnet.solana.com --provider.wallet ~/.config/solana/id.json", + "extend": "solana program extend 3H7a6aiAy28qbCzUro4SNobVManBVwmFe8b36FF3SBuc 1028896", + "extend2": "solana program extend RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE 1005440", + + "double-size": "echo $(( $(stat -f%z target/deploy/rarible_editions.so) * 2 ))", + "rarible_editions:upgrade:solana-dev-net": "anchor upgrade target/deploy/rarible_editions.so --program-id 3H7a6aiAy28qbCzUro4SNobVManBVwmFe8b36FF3SBuc --provider.cluster https://api.devnet.solana.com --provider.wallet ~/.config/solana/id.json", + "rarible_editions_controls:deploy:solana-dev-net": "anchor build -p rarible_editions_controls && anchor deploy -p rarible_editions_controls --provider.cluster https://api.devnet.solana.com --provider.wallet ~/.config/solana/id.json", + "rarible_marketplace:deploy:solana-dev-net": "anchor build -p rarible_marketplace && anchor deploy -p rarible_marketplace --provider.cluster https://api.devnet.solana.com --provider.wallet ~/.config/solana/id.json", + + "rarible_group:deploy-dev:eclipse-dev-net": "solana program deploy ./bins/spl_token_group_example.so --program-id target/deploy/spl_token_group_example-keypair.json --url https://staging-rpc.dev2.eclipsenetwork.xyz", + "rarible_editions:deploy:eclipse-dev-net": "anchor deploy -p rarible_editions --provider.cluster https://staging-rpc.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_editions_controls:deploy:eclipse-dev-net": "anchor build -p rarible_editions_controls && anchor deploy -p rarible_editions_controls --provider.cluster https://staging-rpc.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_marketplace:deploy:eclipse-dev-net": "anchor build -p rarible_marketplace && anchor deploy -p rarible_marketplace --provider.cluster https://staging-rpc.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + + "rarible_group:deploy:eclipse-test-net": "solana program deploy ./bins/spl_token_group_example.so --program-id target/deploy/spl_token_group_example-keypair.json --url https://testnet.dev2.eclipsenetwork.xyz", + "rarible_editions:deploy:eclipse-test-net": "anchor build -p rarible_editions && anchor deploy -p rarible_editions --provider.cluster https://testnet.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_editions:extend": "solana program extend Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn 1028896", + "rarible_editions:upgrade:eclipse-test-net": "anchor upgrade target/deploy/rarible_editions.so --program-id Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn --provider.cluster https://testnet.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_editions_controls:upgrade:eclipse-test-net": "anchor upgrade target/deploy/rarible_editions_controls.so --program-id RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE --provider.cluster https://testnet.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_editions_controls:deploy:eclipse-test-net": "anchor build -p rarible_editions_controls && anchor deploy -p rarible_editions_controls --provider.cluster https://testnet.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_marketplace:deploy:eclipse-test-net": "anchor build -p rarible_marketplace && anchor deploy -p rarible_marketplace --provider.cluster https://testnet.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_marketplace:upgrade:eclipse-test-net": "anchor upgrade target/deploy/rarible_marketplace.so --program-id Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic --provider.cluster https://testnet.dev2.eclipsenetwork.xyz --provider.wallet ~/.config/solana/id.json", + "rarible_marketplace:upgrade:manual:eclipse-test-net": "solana program deploy target/deploy/rarible_marketplace.so --buffer ./deploy.json --url https://testnet.dev2.eclipsenetwork.xyz --keypair ~/.config/solana/id.json", + "rarible_marketplace:extend": "solana program extend Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic 677568", + + "rarible_group:deploy:eclipse-main-net": "solana program deploy ./bins/spl_token_group_example.so --program-id target/deploy/spl_token_group_example-keypair.json --url https://mainnetbeta-rpc.eclipse.xyz", + "rarible_editions:deploy:eclipse-main-net": "anchor build -p rarible_editions && anchor deploy -p rarible_editions --provider.cluster https://mainnetbeta-rpc.eclipse.xyz --provider.wallet ~/.config/solana/prod-keypair.json", + "rarible_editions:deploy:buffer:eclipse-main-net": "solana program deploy ./target/deploy/rarible_editions.so --program-id target/deploy/rarible_editions-keypair.json --url https://mainnetbeta-rpc.eclipse.xyz --buffer ./deploy.json", + "rarible_editions_controls:deploy:eclipse-main-net": "anchor build -p rarible_editions_controls && anchor deploy -p rarible_editions_controls --provider.cluster https://mainnetbeta-rpc.eclipse.xyz --provider.wallet ~/.config/solana/prod-keypair.json", + "rarible_editions_controls:deploy:buffer:eclipse-main-net": "solana program deploy ./target/deploy/rarible_editions_controls.so --program-id target/deploy/rarible_editions_controls-keypair.json --url https://mainnetbeta-rpc.eclipse.xyz --buffer ./deploy.json", + "rarible_marketplace:deploy:eclipse-main-net": "anchor build -p rarible_marketplace && anchor deploy -p rarible_marketplace --provider.cluster https://mainnetbeta-rpc.eclipse.xyz --provider.wallet ~/.config/solana/id.json", + "extend-editions": "solana program extend Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn 1028896", + "extend-controls": "solana program extend RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE 1005440", + "rarible_editions:upgrade:eclipse-main-net": "anchor upgrade target/deploy/rarible_editions.so --program-id Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn --provider.cluster https://mainnetbeta-rpc.eclipse.xyz --provider.wallet ~/.config/solana/prod-keypair.json", + "extend-deploy-editions": "solana program deploy ./target/deploy/rarible_editions.so --buffer ./deploy.json", + "rarible_editions_controls:upgrade:eclipse-main-net": "anchor upgrade target/deploy/rarible_editions_controls.so --program-id RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE --provider.cluster https://mainnetbeta-rpc.eclipse.xyz --provider.wallet ~/.config/solana/prod-keypair.json", + "extend-deploy-editions-controls": "solana program deploy ./target/deploy/rarible_editions_controls.so --buffer ./deploy.json" + }, "repository": { "type": "git", @@ -23,23 +69,30 @@ "@kinobi-so/visitors": "^0.20.6", "@kinobi-so/visitors-core": "^0.20.6", "@solana/spl-token": "^0.4.6", - "@solana/spl-token-metadata": "^0.1.4" + "@solana/spl-token-metadata": "^0.1.4", + "dotenv": "^16.4.5", + "recursive-fs": "^2.1.0" }, "devDependencies": { - "@commitlint/cli": "^19.3.0", - "@commitlint/config-conventional": "^19.2.2", + "@commitlint/cli": "^19.5.0", + "@commitlint/config-conventional": "^19.5.0", "@faker-js/faker": "^8.4.1", + "@filebase/sdk": "^1.0.6", "@types/bn.js": "^5.1.0", "@types/chai": "^4.3.0", "@types/mocha": "^9.0.0", + "@types/node": "^20.14.2", "anchor-bankrun": "^0.3.0", "chai": "^4.3.4", "conventional-changelog-cli": "^5.0.0", + "csv-writer": "^1.6.0", "husky": "^9.0.11", + "lerna": "^6.0.3", "mocha": "^9.0.3", "prettier": "^2.6.2", "solana-bankrun": "^0.3.0", "ts-mocha": "^10.0.0", "typescript": "^4.3.5" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/packages/protocol-contracts-svm-allowlist/.env.example b/packages/protocol-contracts-svm-allowlist/.env.example new file mode 100644 index 00000000..53771bc0 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/.env.example @@ -0,0 +1,21 @@ +AIRTABLE_API_KEY=YOUR_AIRTABLE_API_KEY +AIRTABLE_BASE_ID=YOUR_AIRTABLE_BASE_ID +AIRTABLE_TABLE_NAME=ethereum_burn + +# WEB3_STORAGE_EMAIL=billing@rarible.com +WEB3_STORAGE_EMAIL=g.othacehe@rarible.com +WEB3_STORAGE_SPACE=YOUR_WEB3_STORAGE_SPACE + +FILEBASE_FOLDER=proofs +FILEBASE_COLLECTION_ADDRESS=7jTd4kUTkSv9MH1TMuKqkjuTFuaCeruh1mYGGHnzXFJS +FILEBASE_PHASE_INDEX=0 + +BURN_CONTRACT_ADDRESS=0x15c905dec8da0a90fa05f8121e8f8285d30ef1f4 + +WEB3_STORAGE_BURN_PROOFS_CID=proofs + +NETWORK=mainnet +INFURA_PROJECT_ID=YOUR_INFURA_PROJECT_ID +CHAIN_NAME=ETHEREUM + + diff --git a/packages/protocol-contracts-svm-allowlist/.gitignore b/packages/protocol-contracts-svm-allowlist/.gitignore new file mode 100644 index 00000000..d13dddb9 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/.gitignore @@ -0,0 +1,10 @@ +# General .gitignore +node_modules/ +dist/ +.env +.DS_Store +*.log +*.tmp + +# Add the data folder +data/ diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/1.json b/packages/protocol-contracts-svm-allowlist/base_meta/1.json new file mode 100644 index 00000000..dfe5adee --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/1.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 1", + "description": "Anticipation (of a future event), day 1. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar photograph. By Loucas Braconnier/Figure31.", + "tokenId": "1", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_1.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_1.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Day 1" + }, + { + "trait_type": "Time", + "value": "13:00 to 14:13" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/2.json b/packages/protocol-contracts-svm-allowlist/base_meta/2.json new file mode 100644 index 00000000..90668303 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/2.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 2", + "description": "Anticipation (of a future event), eclipse start. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar eclipse photograph. By Loucas Braconnier/Figure31.", + "tokenId": "2", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_2.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_2.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Eclipse Start" + }, + { + "trait_type": "Time", + "value": "14:14 to 15:25" + } + ] + } \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/3.json b/packages/protocol-contracts-svm-allowlist/base_meta/3.json new file mode 100644 index 00000000..3f459675 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/3.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 3", + "description": "Anticipation (of a future event), totality start. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar eclipse photograph. By Loucas Braconnier/Figure31.", + "tokenId": "3", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_3.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_3.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Totality Start" + }, + { + "trait_type": "Time", + "value": "15:26" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/4.json b/packages/protocol-contracts-svm-allowlist/base_meta/4.json new file mode 100644 index 00000000..27cc4821 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/4.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 4", + "description": "Anticipation (of a future event), max totality. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar eclipse photograph. By Loucas Braconnier/Figure31.", + "tokenId": "4", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_4.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_4.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Max Totality" + }, + { + "trait_type": "Time", + "value": "15:27" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/5.json b/packages/protocol-contracts-svm-allowlist/base_meta/5.json new file mode 100644 index 00000000..c8d6d5c8 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/5.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 5", + "description": "Anticipation (of a future event), totality end. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar eclipse photograph. By Loucas Braconnier/Figure31.", + "tokenId": "5", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_5.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_5.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Totality End" + }, + { + "trait_type": "Time", + "value": "15:28" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/6.json b/packages/protocol-contracts-svm-allowlist/base_meta/6.json new file mode 100644 index 00000000..4873ead1 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/6.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 6", + "description": "Anticipation (of a future event), eclipse end. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar eclipse photograph. By Loucas Braconnier/Figure31.", + "tokenId": "6", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_6.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_6.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Eclipse End" + }, + { + "trait_type": "Time", + "value": "15:29 to 16:36" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/7.json b/packages/protocol-contracts-svm-allowlist/base_meta/7.json new file mode 100644 index 00000000..eb279292 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/7.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 7", + "description": "Anticipation (of a future event), sundown. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar photograph. By Loucas Braconnier/Figure31.", + "tokenId": "7", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_7.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_7.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Sundown" + }, + { + "trait_type": "Time", + "value": "16:37 to 19:32" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/8.json b/packages/protocol-contracts-svm-allowlist/base_meta/8.json new file mode 100644 index 00000000..a7f318c2 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/8.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 8", + "description": "Anticipation (of a future event), night. First minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar photograph. By Loucas Braconnier/Figure31.", + "tokenId": "8", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_8.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_8.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Night" + }, + { + "trait_type": "Time", + "value": "19:33 to 6:17" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/base_meta/9.json b/packages/protocol-contracts-svm-allowlist/base_meta/9.json new file mode 100644 index 00000000..5974070b --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/base_meta/9.json @@ -0,0 +1,18 @@ +{ + "name": "AOFE 9", + "description": "Anticipation (of a future event), day 2. Open Edition first minted on Ethereum on 08/04/2024 during the solar eclipse and revealed on Eclipse on 6/10/2024. Digitally altered solar photograph. By Loucas Braconnier/Figure31 for Eclipse.", + "tokenId": "9", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_9.jpg", + "preview_image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/preview_images/oe_9.jpg", + "external_url": "https://x.com/figure31_", + "attributes": [ + { + "trait_type": "Phase", + "value": "Day 2" + }, + { + "trait_type": "Time", + "value": "6:18 to 13:00" + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/collection_meta/collection_meta.json b/packages/protocol-contracts-svm-allowlist/collection_meta/collection_meta.json new file mode 100644 index 00000000..7abac183 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/collection_meta/collection_meta.json @@ -0,0 +1,5 @@ +{ + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_4.jpg", + "name": "AOFE", + "symbol": "AOFE" +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/package.json b/packages/protocol-contracts-svm-allowlist/package.json new file mode 100644 index 00000000..d51f3688 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/package.json @@ -0,0 +1,54 @@ +{ + "name": "@rarible_int/protocol-contracts-svm-allowlist", + "version": "0.1.0", + "keywords": [ + "rarible", + "editions", + "allowlist" + ], + "repository": { + "type": "git", + "url": "https://github.com/rariblecom/minting-sdk.git" + }, + "license": "MIT", + "main": "build/index.js", + "files": [ + "/build" + ], + "scripts": { + "build": "tsc --project tsconfig-build.json", + "clean": "mkdir -p build && mkdir -p node_modules && rm -rf build && rm -rf node_modules", + "package": "npx shx mkdir -p lib/cjs lib/esm lib/types", + "get-airtable-entries": "tsx scripts/get-airtable-entries.ts", + "generate-burn-allowlist": "tsx scripts/generate-burn-allowlist.ts", + "generate-merkle-tree": "cd ../../crates/merkle-tree-cli && cargo run create-merkle-tree --csv-path ./data/allow_list.csv --merkle-tree-path ./data/merkle_tree.json && cd ../../packages/protocol-contracts-svm-allowlist", + "upload-proofs-web3storage": "tsx scripts/upload-merkle-proofs-web3storage.ts", + "get-proof-web3storage": "tsx scripts/get-merkle-proof-web3storage.ts", + "upload-proofs-filebase": "tsx scripts/upload-merkle-proofs-filebase.ts", + "get-proof-filebase": "tsx scripts/get-merkle-proof-filebase.ts" + }, + "dependencies": { + "@types/node": "^22.9.0", + "@web3-storage/w3up-client": "^16.4.1", + "@ledgerhq/hw-app-solana": "^7.2.4", + "@ledgerhq/hw-transport-node-hid": "^6.29.5", + "airtable": "^0.12.2", + "csv-parse": "^5.5.6", + "dotenv": "^16.4.5", + "ts-node": "^10.9.2" + }, + "devDependencies": { + "@web3-storage/w3up-client": "^16.4.1", + "ethers": "^6.13.4", + "files-from-path": "^1.0.4", + "ts-node": "^10.9.2", + "tsx": "^4.19.2", + "typescript": "5.3.3" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "registry": "http://nexus.rarible.int/repository/npm/" + } +} diff --git a/packages/protocol-contracts-svm-allowlist/readme.md b/packages/protocol-contracts-svm-allowlist/readme.md new file mode 100644 index 00000000..3800e424 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/readme.md @@ -0,0 +1,45 @@ +# Protocol Contracts SVM Allowlist + +This package provides tools for generating, managing, and interacting with Allow lists on Solana Virtual Machine. + +## Scripts + +### 1. `generate-allowlist.ts` + +This script generates an allowlist by verifying burn transactions from Airtable records. It writes the verified and rejected entries to CSV files and merges the verified entries into a final allowlist. + +**Key Functionality:** +- Fetches and verifies records from Airtable. +- Writes verified and rejected entries to CSV files. +- Merges verified entries into a final deduplicated allowlist + +### 2. `upload-merkle-proofs.ts` + +This script uploads Merkle tree proofs to a Filebase S3 bucket. It reads the Merkle tree data from a specified file, processes each node, and uploads the proof data to the bucket. + +**Key Functionality:** +- Reads and processes Merkle tree data. +- Uploads proof data to Filebase. +- Logs the progress of the upload process. + +### 3. `get-merkle-proof.ts` + +This script is responsible for fetching the Merkle proof for a given address from a Filebase S3 bucket. It uses the `ObjectManager` from the `@filebase/sdk` to download the proof data. + +**Key Functionality:** +- Fetches proof data for a specified address. + +## Setup + +1. **Environment Variables:** + - Ensure that all necessary environment variables are set in a `.env` file or your environment. This includes credentials for Filebase and Airtable, as well as any other required configuration. + +2. **Dependencies:** + - Install the required dependencies using `npm install` or `yarn install`. + +3. **Running Scripts:** + - Use `ts-node` or compile the TypeScript files to JavaScript to run the scripts. Ensure that the environment is correctly configured before execution. + +## License + +This project is licensed under the MIT License. \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/scripts/generate-burn-allowlist.ts b/packages/protocol-contracts-svm-allowlist/scripts/generate-burn-allowlist.ts new file mode 100755 index 00000000..e9e06a1b --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/generate-burn-allowlist.ts @@ -0,0 +1,12 @@ +import { generateAllowlist } from "../src/generate-burn-allowlist"; +import dotenv from "dotenv"; +import { readRawFromCSV } from "../src/utils"; + +dotenv.config(); + +const main = async () => { + const rawEntries = readRawFromCSV("raw-burners.csv"); + await generateAllowlist(rawEntries, 100); +}; + +main(); diff --git a/packages/protocol-contracts-svm-allowlist/scripts/generate-meta.ts b/packages/protocol-contracts-svm-allowlist/scripts/generate-meta.ts new file mode 100644 index 00000000..4a7a7ff0 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/generate-meta.ts @@ -0,0 +1,40 @@ +import fs from 'fs/promises'; +import path from 'path'; + +(async function main() { + const baseMetaDir = 'base_meta'; + const resultDir = 'result_meta'; + + try { + // Read the files from the base_meta directory + const files = await fs.readdir(baseMetaDir); + + // Filter to only include JSON files + const jsonFiles = files.filter((filename) => filename.endsWith('.json')); + + if (jsonFiles.length === 0) { + console.error('No JSON files found in the base_meta directory.'); + return; + } + + // Ensure the result directory exists or create it + await fs.mkdir(resultDir, { recursive: true }); + + // Create 0.json through 90000.json in the result directory + for (let i = 0; i <= 90000; i++) { + // Select a random file from the jsonFiles + const randomFile = jsonFiles[Math.floor(Math.random() * jsonFiles.length)]; + + const sourcePath = path.join(baseMetaDir, randomFile); + const destFileName = `${i}.json`; + const destPath = path.join(resultDir, destFileName); + + // Copy the random file to the result directory with the new name + await fs.copyFile(sourcePath, destPath); + } + + console.log('All files have been generated successfully in the result directory.'); + } catch (error) { + console.error('An error occurred:', error); + } +})(); diff --git a/clients/js/wen_new_standard/test/stub.ts b/packages/protocol-contracts-svm-allowlist/scripts/generateProofs.ts similarity index 100% rename from clients/js/wen_new_standard/test/stub.ts rename to packages/protocol-contracts-svm-allowlist/scripts/generateProofs.ts diff --git a/packages/protocol-contracts-svm-allowlist/scripts/get-airtable-entries.ts b/packages/protocol-contracts-svm-allowlist/scripts/get-airtable-entries.ts new file mode 100644 index 00000000..d8a55746 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/get-airtable-entries.ts @@ -0,0 +1,15 @@ + +import { writeRawToCSV } from "../src/utils"; +import {fetchAllCsvRecords } from"../src/fetchAllCsvRecords" +const main = async () => { + try { + const rawEntries = await fetchAllCsvRecords(); + await writeRawToCSV("raw-burners.csv", rawEntries); + } catch (error){ + console.log(error) + } + + +}; + +main(); diff --git a/packages/protocol-contracts-svm-allowlist/scripts/get-merkle-proof-filebase.ts b/packages/protocol-contracts-svm-allowlist/scripts/get-merkle-proof-filebase.ts new file mode 100644 index 00000000..ed7aa04f --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/get-merkle-proof-filebase.ts @@ -0,0 +1,40 @@ +import { getProofForAddress } from "../src/get-merkle-proof"; + +const FILEBASE_S3_KEY = process.env.FILEBASE_S3_KEY; +const FILEBASE_S3_SECRET = process.env.FILEBASE_S3_SECRET; +const FILEBASE_BUCKET_NAME = process.env.FILEBASE_BUCKET_NAME; + +const filebaseStructure = { + folder: process.env.FILEBASE_FOLDER, + collectionAddress: process.env.FILEBASE_COLLECTION_ADDRESS, + phase: process.env.FILEBASE_PHASE_INDEX, +}; + +const main = async () => { + if (!FILEBASE_S3_KEY || !FILEBASE_S3_SECRET || !FILEBASE_BUCKET_NAME) { + throw new Error("Filebase credentials are not set"); + } + if ( + !filebaseStructure.folder || + !filebaseStructure.collectionAddress || + !filebaseStructure.phase + ) { + throw new Error("Filebase structure is not set"); + } + try { + const addressToQuery = "EA7uZqppoesNd3uvixCAgt426cbNKfanYemToJXNwQon"; // Replace with the address you want to query + await getProofForAddress( + addressToQuery, + FILEBASE_S3_KEY, + FILEBASE_S3_SECRET, + FILEBASE_BUCKET_NAME, + filebaseStructure.folder, + filebaseStructure.collectionAddress, + filebaseStructure.phase + ); + } catch (error) { + console.error("Error fetching proof:", error); + } +}; + +main(); diff --git a/packages/protocol-contracts-svm-allowlist/scripts/get-merkle-proof-web3storage.ts b/packages/protocol-contracts-svm-allowlist/scripts/get-merkle-proof-web3storage.ts new file mode 100644 index 00000000..0a944a77 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/get-merkle-proof-web3storage.ts @@ -0,0 +1,6 @@ +import { getProofForAddress } from "../src/get-merkle-proof-web3storage"; + +const cid = "bafybeia36qxkt4wl42oa3hjole6yl4niitqustz4ylrdn4efjyk7fvz7ea"; +const address = "8obnNuRstGe3KRPbNewGUdve4Bi6pugaNLMbJ5d7sruY"; + +getProofForAddress(cid, address); \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/scripts/upload-merkle-proofs-filebase.ts b/packages/protocol-contracts-svm-allowlist/scripts/upload-merkle-proofs-filebase.ts new file mode 100755 index 00000000..be9ce5e8 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/upload-merkle-proofs-filebase.ts @@ -0,0 +1,49 @@ +import path from "path"; +import { uploadMerkleTree } from "../src/upload-merkle-proofs-filebase"; +import dotenv from "dotenv"; + +dotenv.config(); + +const FILEBASE_S3_KEY = process.env.FILEBASE_S3_KEY; +const FILEBASE_S3_SECRET = process.env.FILEBASE_S3_SECRET; +const FILEBASE_BUCKET_NAME = process.env.FILEBASE_BUCKET_NAME; + +const filebaseStructure = { + folder: process.env.FILEBASE_FOLDER, + collectionAddress: process.env.FILEBASE_COLLECTION_ADDRESS, + phase: process.env.FILEBASE_PHASE_INDEX, +}; + +const paths = { + merkleTreePath: path.join(__dirname, "../../crates/merkle-tree-cli/data/merkle-tree.json"), + proofsDir: path.join(__dirname, "../../crates/merkle-tree-cli/data/proofs"), +}; + +const main = async () => { + try { + if (!FILEBASE_S3_KEY || !FILEBASE_S3_SECRET || !FILEBASE_BUCKET_NAME) { + throw new Error("Filebase credentials are not set"); + } + if ( + !filebaseStructure.folder || + !filebaseStructure.collectionAddress || + !filebaseStructure.phase + ) { + throw new Error("Filebase structure is not set"); + } + await uploadMerkleTree( + FILEBASE_S3_KEY, + FILEBASE_S3_SECRET, + FILEBASE_BUCKET_NAME, + filebaseStructure.folder, + filebaseStructure.collectionAddress, + filebaseStructure.phase, + paths.merkleTreePath, + paths.proofsDir + ); + } catch (error) { + console.error("Error uploading merkle tree:", error); + } +}; + +main(); diff --git a/packages/protocol-contracts-svm-allowlist/scripts/upload-merkle-proofs-web3storage.ts b/packages/protocol-contracts-svm-allowlist/scripts/upload-merkle-proofs-web3storage.ts new file mode 100755 index 00000000..17f8f623 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/upload-merkle-proofs-web3storage.ts @@ -0,0 +1,26 @@ +import path from "path"; +import { fileURLToPath } from "url"; +import { dirname } from "path"; +import { uploadMerkleTree } from "../src/upload-merkle-proofs-web3storage"; +import dotenv from "dotenv"; + +dotenv.config(); + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const merkleTreePath = path.join( + __dirname, + "../../../crates/merkle-tree-cli/data/merkle_tree.json" +); + +const main = async () => { + try { + console.log("Uploading merkle tree..."); + await uploadMerkleTree(merkleTreePath); + } catch (error) { + console.error("Error uploading merkle tree:", error); + } +}; + +main(); diff --git a/packages/protocol-contracts-svm-allowlist/scripts/verify-allow-list.ts b/packages/protocol-contracts-svm-allowlist/scripts/verify-allow-list.ts new file mode 100644 index 00000000..914e4ab5 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/scripts/verify-allow-list.ts @@ -0,0 +1,13 @@ + +import { writeRawToCSV } from "../src/utils"; +import {verifyAllowList } from"../src/verify-allow-list" +const main = async () => { + try { + const verifyRes = await verifyAllowList("data/allow_list.csv"); + console.log("verifyRes", verifyRes); + } catch (error){ + console.log(error) + } +}; + +main(); \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/src/fetchAllCsvRecords.ts b/packages/protocol-contracts-svm-allowlist/src/fetchAllCsvRecords.ts new file mode 100644 index 00000000..ca461176 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/fetchAllCsvRecords.ts @@ -0,0 +1,51 @@ +import * as fs from "fs"; +import * as path from "path"; +import dotenv from "dotenv"; +import { RawEntry } from "./utils"; +import { parse } from "csv-parse/sync"; + +dotenv.config(); + +export async function fetchAllCsvRecords(): Promise { + if (!process.env.CSV_FILE_PATH) { + throw new Error("CSV_FILE_PATH must be set"); + } + + const csvFilePath = path.resolve(__dirname, process.env.CSV_FILE_PATH); + + const fileContent = await fs.promises.readFile(csvFilePath, "utf8"); + const lines = fileContent.split("\n").map(line => line.trim()).filter(Boolean); + + // Parse the CSV content using 'csv-parse' + const records = parse(fileContent, { + columns: true, // Use the first line as column names + skip_empty_lines: true, // Skip empty lines + trim: true, // Trim spaces around fields + }); + + if (records.length === 0) { + throw new Error("CSV file is empty or missing data."); + } + + // Validate that the CSV has the required columns +// const requiredHeaders = ["tx_hash", "solana_address", "quantity", "message", "signer", "signature", "datetime"]; +// const missingHeaders = requiredHeaders.filter(header => !(header in records[0])); +// if (missingHeaders.length > 0) { +// throw new Error(`CSV file is missing required columns: ${missingHeaders.join(", ")}`); +// } + + // Map the parsed records to the RawEntry format + const allRecords: RawEntry[] = records.map((record: any) => ({ + tx_hash: record["tx_hash"], + address: record.solana_address, + quantity: record.quantity, + message: record.message, + signer: record.signer, + signature: record.signature, + // Include datetime if RawEntry requires it: + // datetime: record.datetime, + })); + + console.log(`Total records fetched: ${allRecords.length}`); + return allRecords; +} diff --git a/packages/protocol-contracts-svm-allowlist/src/generate-burn-allowlist.ts b/packages/protocol-contracts-svm-allowlist/src/generate-burn-allowlist.ts new file mode 100755 index 00000000..3715f379 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/generate-burn-allowlist.ts @@ -0,0 +1,27 @@ +import { writeToCSV, writeToCSVWithErrorCode, deduplicateEntries, RawEntry } from "./utils"; +import { verifyTransactionBatch } from "./verify-burn-tx"; + +export const generateAllowlist = async (rawEntries: RawEntry[], BATCH_SIZE: number = 10) => { + if (!process.env.BURN_CONTRACT_ADDRESS) { + throw new Error("BURN_CONTRACT_ADDRESS must be set"); + } + + try { + console.log(`\nVerifying transactions in batches of size ${BATCH_SIZE}...`); + const { verifiedBurners, rejectedBurners } = await verifyTransactionBatch( + rawEntries, + process.env.BURN_CONTRACT_ADDRESS as string, + BATCH_SIZE + ); + + await writeToCSV("verified-burners.csv", verifiedBurners); + await writeToCSVWithErrorCode("rejected-burners.csv", rejectedBurners); + + const mergedEntries = deduplicateEntries(verifiedBurners); + await writeToCSV("allow_list.csv", mergedEntries); + + console.log("Allowlist generation completed successfully."); + } catch (error) { + console.error("Error generating allowlist:", error); + } +}; diff --git a/packages/protocol-contracts-svm-allowlist/src/get-airtable-entries.ts b/packages/protocol-contracts-svm-allowlist/src/get-airtable-entries.ts new file mode 100644 index 00000000..55811cc5 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/get-airtable-entries.ts @@ -0,0 +1,55 @@ +import Airtable from "airtable"; +import { RawEntry } from "./utils"; +import dotenv from "dotenv"; + +dotenv.config(); + +export async function fetchAllAirtableRecords(): Promise { + if ( + !process.env.AIRTABLE_API_KEY || + !process.env.AIRTABLE_BASE_ID || + !process.env.AIRTABLE_TABLE_NAME + ) { + throw new Error("AIRTABLE_API_KEY, AIRTABLE_BASE_ID, and AIRTABLE_TABLE_NAME must be set"); + } + + Airtable.configure({ + apiKey: process.env.AIRTABLE_API_KEY as string, + }); + const base = Airtable.base(process.env.AIRTABLE_BASE_ID as string); + const table = base(process.env.AIRTABLE_TABLE_NAME as string); + + const allRecords: RawEntry[] = []; + let pageCounter = 0; + + return new Promise((resolve, reject) => { + table.select({}).eachPage( + (records, fetchNextPage) => { + pageCounter++; + console.log(`Fetching Airtable page ${pageCounter}...`); + console.log("Records in current page:", records.length); + + const pageRecords: RawEntry[] = records.map(record => ({ + tx_hash: record.get("tx_hash") as string, + address: record.get("solana_address") as string, + quantity: record.get("quantity") as string, + message: record.get("message") as string, + signer: record.get("signer") as string, + signature: record.get("signature") as string, + })); + + allRecords.push(...pageRecords); + console.log(`Total records fetched so far: ${allRecords.length}\n`); + + fetchNextPage(); + }, + error => { + if (error) { + reject(error); + } else { + resolve(allRecords); + } + } + ); + }); +} diff --git a/packages/protocol-contracts-svm-allowlist/src/get-merkle-proof-filebase.ts b/packages/protocol-contracts-svm-allowlist/src/get-merkle-proof-filebase.ts new file mode 100644 index 00000000..c501d593 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/get-merkle-proof-filebase.ts @@ -0,0 +1,40 @@ +import { ObjectManager } from "@filebase/sdk"; +import { IncomingMessage } from "http"; + +export const getProofForAddress = async ( + address: string, + FILEBASE_S3_KEY: string, + FILEBASE_S3_SECRET: string, + FILEBASE_BUCKET_NAME: string, + FILEBASE_FOLDER: string, + FILEBASE_COLLECTION_ADDRESS: string, + FILEBASE_PHASE_INDEX: string +) => { + if (!FILEBASE_S3_KEY || !FILEBASE_S3_SECRET || !FILEBASE_BUCKET_NAME) { + throw new Error("Filebase credentials are not set"); + } + const objectManager = new ObjectManager(FILEBASE_S3_KEY, FILEBASE_S3_SECRET, { + bucket: FILEBASE_BUCKET_NAME, + }); + + try { + const objectKey = `${FILEBASE_FOLDER}/${FILEBASE_COLLECTION_ADDRESS}/${FILEBASE_PHASE_INDEX}/${address}.json`; + const downloadResult = await objectManager.download(objectKey, {}); + + if (downloadResult instanceof IncomingMessage) { + const chunks: Buffer[] = []; + for await (const chunk of downloadResult) { + chunks.push(Buffer.from(chunk)); + } + const data = Buffer.concat(chunks).toString("utf8"); + const proofData = JSON.parse(data); + console.log(`Proof for address ${address}:`, proofData); + return proofData; + } else { + throw new Error("Unexpected download result type"); + } + } catch (error) { + console.error(`Error fetching proof for address ${address}:`, error); + return null; + } +}; diff --git a/packages/protocol-contracts-svm-allowlist/src/get-merkle-proof-web3storage.ts b/packages/protocol-contracts-svm-allowlist/src/get-merkle-proof-web3storage.ts new file mode 100644 index 00000000..853b1dee --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/get-merkle-proof-web3storage.ts @@ -0,0 +1,25 @@ +export const getProofForAddress = async ( + cid: string, + address: string, +) => { + try { + // Construct the URL to fetch the proof file from w3s.link gateway + const gatewayUrl = `https://${cid}.ipfs.w3s.link/${address}.json` + + // Fetch the proof using standard fetch API + const response = await fetch(gatewayUrl) + if (!response.ok) { + throw new Error(`Proof not found for address ${address}`) + } + + // Parse the proof data + const proofData = await response.json() + + console.log(`Proof for address ${address}:`, proofData) + return proofData + + } catch (error) { + console.error(`Error fetching proof for address ${address}:`, error) + return null + } +} diff --git a/packages/protocol-contracts-svm-allowlist/src/upload-folder-web3.ts b/packages/protocol-contracts-svm-allowlist/src/upload-folder-web3.ts new file mode 100644 index 00000000..4686e832 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/upload-folder-web3.ts @@ -0,0 +1,9 @@ + // Upload proofs + // console.log("Uploading all proofs to Web3.Storage..."); + // await client.setCurrentSpace(process.env.WEB3_STORAGE_SPACE as `did:${string}:${string}`); + + // const files = await filesFromPaths([PROOFS_DIR]); + // const cid = await client.uploadDirectory(files); + + // console.log(`Uploaded all proofs with CID: ${cid}`); + // console.log("Finished uploading merkle tree proofs successfully."); \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/src/upload-merkle-proofs-filebase.ts b/packages/protocol-contracts-svm-allowlist/src/upload-merkle-proofs-filebase.ts new file mode 100755 index 00000000..6ced0014 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/upload-merkle-proofs-filebase.ts @@ -0,0 +1,62 @@ +import { ObjectManager } from "@filebase/sdk"; +import * as fsPromises from "fs/promises"; +import * as path from "path"; +import { PublicKey } from "@solana/web3.js"; + +export const uploadMerkleTree = async ( + FILEBASE_S3_KEY: string, + FILEBASE_S3_SECRET: string, + FILEBASE_BUCKET_NAME: string, + FILEBASE_FOLDER: string, + FILEBASE_COLLECTION_ADDRESS: string, + FILEBASE_PHASE_INDEX: string, + MERKLE_TREE_PATH: string, + PROOFS_DIR: string +) => { + if ( + !FILEBASE_S3_KEY || + !FILEBASE_S3_SECRET || + !FILEBASE_BUCKET_NAME || + !FILEBASE_FOLDER || + !FILEBASE_COLLECTION_ADDRESS || + !FILEBASE_PHASE_INDEX || + !MERKLE_TREE_PATH || + !PROOFS_DIR + ) { + throw new Error("Missing required parameters"); + } + const objectManager = new ObjectManager(FILEBASE_S3_KEY, FILEBASE_S3_SECRET, { + bucket: FILEBASE_BUCKET_NAME, + }); + + const merkleTreeData = JSON.parse(await fsPromises.readFile(MERKLE_TREE_PATH, "utf-8")); + await fsPromises.mkdir(PROOFS_DIR, { recursive: true }); + + console.log("Processing merkle tree data..."); + const totalNodes = merkleTreeData.tree_nodes.length; + let counter = 0; + + for (const node of merkleTreeData.tree_nodes) { + counter++; + const claimant = new PublicKey(Buffer.from(node.claimant)).toBase58(); + const nodeData = { + claimant, + claim_price: node.claim_price, + max_claims: node.max_claims, + proof: node.proof, + }; + const fileName = `${claimant}.json`; + const filePath = path.join(PROOFS_DIR, fileName); + + // write proof to the proofs folder + const stringifiedProof = JSON.stringify(nodeData, null, 2); + await fsPromises.writeFile(filePath, stringifiedProof); + + // upload proof to the object manager (filebase) + console.log(`Uploading proof for ${claimant} (${counter}/${totalNodes})...`); + const filebasePath = `${FILEBASE_FOLDER}/${FILEBASE_COLLECTION_ADDRESS}/${FILEBASE_PHASE_INDEX}/${fileName}`; + const uploadedObject = await objectManager.upload(filebasePath, stringifiedProof, {}, {}); + console.log(`Uploaded: ${filebasePath}`); + } + console.log("Finished uploading merkle tree proofs successfully."); +}; diff --git a/packages/protocol-contracts-svm-allowlist/src/upload-merkle-proofs-web3storage.ts b/packages/protocol-contracts-svm-allowlist/src/upload-merkle-proofs-web3storage.ts new file mode 100644 index 00000000..3f425a46 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/upload-merkle-proofs-web3storage.ts @@ -0,0 +1,66 @@ +import { create } from "@web3-storage/w3up-client"; +import * as fsPromises from "fs/promises"; +import * as path from "path"; +import { PublicKey } from "@solana/web3.js"; +import { filesFromPaths } from "files-from-path"; +import dotenv from "dotenv"; + +dotenv.config(); + +export const uploadMerkleTree = async (MERKLE_TREE_PATH: string) => { + // if (!process.env.WEB3_STORAGE_EMAIL) { + // throw new Error("WEB3_STORAGE_EMAIL must be set"); + // } + // if (!process.env.WEB3_STORAGE_SPACE) { + // throw new Error("WEB3_STORAGE_SPACE must be set"); + // } + + const PROOFS_DIR = "./data/proofs"; + + // Initialize client + console.log("Initializing client..."); + //const client = await create(); + + console.log( + `Signing in with email: ${process.env.WEB3_STORAGE_EMAIL}, confirm authentication mail to continue, this has to be done once in your client...` + ); + //await client.login(process.env.WEB3_STORAGE_EMAIL as `${string}@${string}`); + console.log("Logged in successfully."); + + // Create proofs directory + console.log("Creating proofs directory..."); + const merkleTreeData = JSON.parse(await fsPromises.readFile(MERKLE_TREE_PATH, "utf-8")); + await fsPromises.mkdir(PROOFS_DIR, { recursive: true }); + + // Process nodes and write proofs + console.log("Processing merkle tree data..."); + const { tree_nodes } = merkleTreeData; + + await Promise.all( + tree_nodes.map(async (node, i) => { + const claimant = new PublicKey(Buffer.from(node.claimant)).toBase58(); + const nodeData = { + claimant, + claim_price: node.claim_price, + max_claims: node.max_claims, + proof: node.proof, + }; + + const fileName = `${claimant}.json`; + const filePath = path.join(PROOFS_DIR, fileName); + + await fsPromises.writeFile(filePath, JSON.stringify(nodeData, null, 2)); + }) + ); + console.log(`Wrote all proofs to ${PROOFS_DIR} \n`); + + // Upload proofs + // console.log("Uploading all proofs to Web3.Storage..."); + // await client.setCurrentSpace(process.env.WEB3_STORAGE_SPACE as `did:${string}:${string}`); + + // const files = await filesFromPaths([PROOFS_DIR]); + // const cid = await client.uploadDirectory(files); + + // console.log(`Uploaded all proofs with CID: ${cid}`); + // console.log("Finished uploading merkle tree proofs successfully."); +}; diff --git a/packages/protocol-contracts-svm-allowlist/src/upload-web3-folder.ts b/packages/protocol-contracts-svm-allowlist/src/upload-web3-folder.ts new file mode 100644 index 00000000..b95ea32f --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/upload-web3-folder.ts @@ -0,0 +1,58 @@ +import { create } from "@web3-storage/w3up-client"; +import * as fsPromises from "fs/promises"; +import * as path from "path"; +import { filesFromPaths } from "files-from-path"; +import dotenv from "dotenv"; + +dotenv.config(); + +export async function uploadFolder() { + // Check for required environment variables + if (!process.env.WEB3_STORAGE_EMAIL) { + throw new Error("WEB3_STORAGE_EMAIL must be set in your .env file."); + } + if (!process.env.WEB3_STORAGE_SPACE) { + throw new Error("WEB3_STORAGE_SPACE must be set in your .env file."); + } + if (!process.env.FOLDER_PATH) { + throw new Error("FOLDER_PATH must be set in your .env file."); + } + + const folderPath = path.resolve(__dirname, process.env.FOLDER_PATH); + + // Initialize the Web3.Storage client + console.log("Initializing W3Up client..."); + const client = await create(); + + console.log(`Signing in with email: ${process.env.WEB3_STORAGE_EMAIL}`); + await client.login(process.env.WEB3_STORAGE_EMAIL as `${string}@${string}`); + console.log("Logged in successfully."); + + // Set the current space + console.log(`Setting current space to: ${process.env.WEB3_STORAGE_SPACE}`); + await client.setCurrentSpace(process.env.WEB3_STORAGE_SPACE as `did:${string}:${string}`); + + // Check if the folder exists + try { + await fsPromises.access(folderPath); + console.log(`Folder found: ${folderPath}`); + } catch (error) { + throw new Error(`Folder not found: ${folderPath}`); + } + + // Read files from the folder + console.log(`Reading files from folder: ${folderPath}`); + const files = await filesFromPaths([folderPath]); + + // Upload the folder content to Web3.Storage + console.log("Uploading folder content to Web3.Storage..."); + const cid = await client.uploadDirectory(files); + + console.log(`✅ Successfully uploaded folder '${folderPath}' with CID: ${cid}`); + console.log("Finished uploading folder content successfully.\n"); +} + +// Execute the uploadFolder function when this script is run +uploadFolder().catch(error => { + console.error("Error uploading folder:", error); +}); diff --git a/packages/protocol-contracts-svm-allowlist/src/utils.ts b/packages/protocol-contracts-svm-allowlist/src/utils.ts new file mode 100644 index 00000000..1451bf80 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/utils.ts @@ -0,0 +1,118 @@ +import * as fs from "fs"; +import * as path from "path"; +import { createObjectCsvWriter } from "csv-writer"; +import { parse } from "csv-parse/sync"; + +// You can use __dirname directly in CommonJS modules + +export interface RawEntry { + tx_hash: string; + address: string; + quantity: string; + message: string; + signer: string; + signature: string; +} + +export interface CsvEntry { + address: string; + quantity: string; +} + +export interface RejectedEntry extends CsvEntry { + rejectionReason: string; +} + +export async function writeRawToCSV(filePath: string, entries: RawEntry[]) { + const dataDir = path.join(__dirname, "../data"); + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + + const writer = createObjectCsvWriter({ + path: path.join(dataDir, filePath), + header: [ + { id: "tx_hash", title: "tx_hash" }, + { id: "address", title: "address" }, + { id: "quantity", title: "quantity" }, + { id: "message", title: "message" }, + { id: "signer", title: "signer" }, + { id: "signature", title: "signature" }, + ], + }); + + await writer.writeRecords(entries); + console.log(`Raw CSV file written successfully: ${path.join(dataDir, filePath)}`); +} + +export async function writeToCSVWithErrorCode(filePath: string, entries: RejectedEntry[]) { + const dataDir = path.join(__dirname, "../data"); + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + + const writer = createObjectCsvWriter({ + path: path.join(dataDir, filePath), + header: [ + { id: "address", title: "address" }, + { id: "price", title: "price" }, + { id: "max_claims", title: "max_claims" }, + { id: "error_code", title: "error_code" }, + ], + }); + + const records = entries.map((entry) => ({ + address: entry.address, + price: 0, + max_claims: entry.quantity, + error_code: entry.rejectionReason, + })); + + await writer.writeRecords(records); +} + +export async function writeToCSV(filePath: string, entries: CsvEntry[]) { + const dataDir = path.join(__dirname, "../data"); + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + + const writer = createObjectCsvWriter({ + path: path.join(dataDir, filePath), + header: [ + { id: "address", title: "address" }, + { id: "price", title: "price" }, + { id: "max_claims", title: "max_claims" }, + ], + }); + + const records = entries.map((entry) => ({ + address: entry.address, + price: 300000, + max_claims: entry.quantity, + })); + + await writer.writeRecords(records); + console.log(`CSV file written successfully: ${path.join(dataDir, filePath)}`); +} + +export function deduplicateEntries(entries: CsvEntry[]): CsvEntry[] { + const merged = new Map(); + + entries.forEach((entry) => { + const currentQuantity = merged.get(entry.address) || 0; + merged.set(entry.address, currentQuantity + parseInt(entry.quantity)); + }); + + return Array.from(merged.entries()).map(([address, quantity]) => ({ + address, + quantity: quantity.toString(), + })); +} + +export function readRawFromCSV(filePath: string): RawEntry[] { + const dataDir = path.join(__dirname, "../data"); + const csvContent = fs.readFileSync(path.join(dataDir, filePath), "utf8"); + const entries = parse(csvContent, { columns: true }); + return entries as RawEntry[]; +} diff --git a/packages/protocol-contracts-svm-allowlist/src/verify-allow-list.ts b/packages/protocol-contracts-svm-allowlist/src/verify-allow-list.ts new file mode 100644 index 00000000..56b401f7 --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/verify-allow-list.ts @@ -0,0 +1,61 @@ +import * as fs from "fs"; +import * as path from "path"; +import { ethers, JsonRpcProvider } from "ethers"; +import dotenv from "dotenv"; +import { RawEntry, CsvEntry, RejectedEntry } from "./utils"; +import { PublicKey } from "@solana/web3.js"; +import { parse } from "csv-parse/sync"; + +dotenv.config(); + +export async function verifyAllowList( + allowListPath: string + ): Promise { + + const fileContent = await fs.promises.readFile(allowListPath, "utf8"); + + // Parse the CSV content using 'csv-parse' + const records = parse(fileContent, { + columns: true, // Use the first line as column names + skip_empty_lines: true, // Skip empty lines + trim: true, // Trim spaces around fields + }); + + if (records.length === 0) { + throw new Error("CSV file is empty or missing data."); + } + + const addressesSet = new Set(); + const duplicateAddresses = new Set(); + + // Iterate over each record to validate addresses and check for duplicates + for (let record of records) { + try { + const isValidSolanaAddress = PublicKey.isOnCurve(record.address); + + if (!isValidSolanaAddress) { + console.log("Invalid address:", record.address); + } else { + // Check for duplicates + if (addressesSet.has(record.address)) { + duplicateAddresses.add(record.address); + } else { + addressesSet.add(record.address); + } + } + } catch (error) { + console.log("Error with address:", record.address, error); + } + } + + // Report any duplicates found + if (duplicateAddresses.size > 0) { + console.log("Duplicate addresses found:"); + duplicateAddresses.forEach((address) => { + console.log(address); + }); + } + + return true; + } + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-allowlist/src/verify-burn-tx.ts b/packages/protocol-contracts-svm-allowlist/src/verify-burn-tx.ts new file mode 100644 index 00000000..95ffc9fb --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/src/verify-burn-tx.ts @@ -0,0 +1,116 @@ +import { ethers, JsonRpcProvider } from "ethers"; +import dotenv from "dotenv"; +import { RawEntry, CsvEntry, RejectedEntry } from "./utils"; +import { PublicKey } from "@solana/web3.js"; + +dotenv.config(); + +export async function verifyBurnTransaction( + provider: ethers.JsonRpcProvider, + txHash: string, + expectedSigner: string, + expectedContract: string, + message: string, + signature: string, + address: string // minter address, recipient of minting rights +): Promise { + const prefix = process.env.CHAIN_NAME; + const deprefixedSigner = expectedSigner.replace(new RegExp(`^${prefix}:`), ""); + + // Verify the signature + const messageHash = ethers.hashMessage(message); + const recoveredAddress = ethers.recoverAddress(messageHash, signature); + + if (recoveredAddress.toLowerCase() !== deprefixedSigner.toLowerCase()) { + throw new Error("!SignatureMatch"); + } + + // Fetch the transaction + const tx = await provider.getTransaction(txHash); + if (!tx) { + throw new Error(`Transaction not found for hash: ${txHash}`); + } + + // Check if the transaction is to the expected contract + if (tx.to && tx.to.toLowerCase() !== expectedContract.toLowerCase()) { + throw new Error("!ContractAddressMatch"); + } + + // Lastly, verify that the address is valid. + // Should be a valid Solana address + try { + const isValidSolanaAddress = PublicKey.isOnCurve(address); + if (!isValidSolanaAddress) { + throw new Error("!ValidMinterAddress"); + } + } catch (error) { + throw new Error("!ValidMinterAddress"); + } + + return true; +} + +export async function verifyTransactionBatch( + rawEntries: RawEntry[], + CONTRACT_ADDRESS: string, + batchSize: number = 10 +): Promise<{ verifiedBurners: CsvEntry[]; rejectedBurners: RejectedEntry[] }> { + batchSize = 100; + const provider = new JsonRpcProvider("https://ethereum-rpc.publicnode.com"); + + const verifiedBurners: CsvEntry[] = []; + const rejectedBurners: RejectedEntry[] = []; + + // Process in batches + for (let i = 0; i < rawEntries.length; i += batchSize) { + const batch = rawEntries.slice(i, i + batchSize); + console.log( + `Processing batch ${Math.floor(i / batchSize) + 1} of ${Math.ceil(rawEntries.length / batchSize)}` + ); + + // Map the batch entries to verification promises + const verificationPromises = batch.map(async entry => { + // Implement retry logic here + const maxRetries = 3; + let attempt = 0; + + while (attempt < maxRetries) { + try { + attempt++; + const isVerified = await verifyBurnTransaction( + provider, + entry.tx_hash, + entry.signer, + CONTRACT_ADDRESS, + entry.message, + entry.signature, + entry.address + ); + + if (isVerified) { + verifiedBurners.push({ address: entry.address, quantity: entry.quantity }); + } + return; // Verification succeeded, exit the loop + } catch (error) { + console.error(`Error on attempt ${attempt} for tx_hash ${entry.tx_hash}: ${error.message}`); + + // If it's the last attempt, push to rejected burners + if (attempt === maxRetries) { + rejectedBurners.push({ + address: entry.address, + quantity: entry.quantity, + rejectionReason: error.message, + }); + } + // If not the last attempt, we wait and then retry + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + } + }); + + await Promise.all(verificationPromises); + console.log(`Completed batch ${Math.floor(i / batchSize) + 1}\n`); + } + + return { verifiedBurners, rejectedBurners }; +} diff --git a/packages/protocol-contracts-svm-allowlist/tsconfig-build.json b/packages/protocol-contracts-svm-allowlist/tsconfig-build.json new file mode 100644 index 00000000..6de8259b --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/tsconfig-build.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "build", + "baseUrl": ".", + "paths": {} + }, + "include": ["src/**/*", "src/index.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/protocol-contracts-svm-allowlist/tsconfig.json b/packages/protocol-contracts-svm-allowlist/tsconfig.json new file mode 100644 index 00000000..52d43eaa --- /dev/null +++ b/packages/protocol-contracts-svm-allowlist/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/protocol-contracts-svm-core/.gitignore b/packages/protocol-contracts-svm-core/.gitignore new file mode 100644 index 00000000..53c37a16 --- /dev/null +++ b/packages/protocol-contracts-svm-core/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/packages/protocol-contracts-svm-core/package.json b/packages/protocol-contracts-svm-core/package.json new file mode 100644 index 00000000..f676d7e4 --- /dev/null +++ b/packages/protocol-contracts-svm-core/package.json @@ -0,0 +1,65 @@ +{ + "name": "@rarible_int/protocol-contracts-svm-core", + "version": "0.1.0", + "keywords": [ + "rarible", + "editions", + "eclipse", + "idl" + ], + "repository": { + "type": "git", + "url": "https://github.com/rarible/protocol-contracts-svm.git" + }, + "license": "MIT", + "main": "build/index.js", + "files": [ + "/build" + ], + "scripts": { + "build": "tsc --project tsconfig-build.json", + "clean": "mkdir -p build && mkdir -p node_modules && rm -rf build && rm -rf node_modules", + "package": "npx shx mkdir -p lib/cjs lib/esm lib/types" + }, + "resolutions": { + "libp2p-crypto": "0.21.2" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.1", + "@ledgerhq/hw-app-solana": "^7.2.4", + "@ledgerhq/hw-transport-node-hid": "^6.29.5", + "@solana/web3.js": "^1.95.3", + "async": "^3.2.5", + "axios": "^1.6.5", + "base32": "^0.0.7", + "bn.js": "^5.2.1", + "bs58": "^5.0.0cp", + "cids": "^1.1.9", + "commander": "^12.0.0", + "cookies": "^0.9.1", + "date-fns": "^2.29.3", + "dotenv": "^16.4.1", + "dotenv-cli": "^7.3.0", + "fetch-retry": "^5.0.6", + "js-sha256": "^0.11.0", + "jsonwebtoken": "^9.0.2", + "kubo-rpc-client": "^3.0.2", + "spl-token-4": "npm:@solana/spl-token@0.3.11", + "tweetnacl": "^1.0.3", + "@rarible_int/protocol-contracts-svm-idl": "0.1.0" + }, + "devDependencies": { + "@types/bn.js": "^5.1.5", + "autoprefixer": "^10.4.2", + "eslint": "8.7.0", + "patch-package": "^8.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "5.3.3" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "registry": "http://nexus.rarible.int/repository/npm/" + } +} diff --git a/packages/protocol-contracts-svm-core/src/IExecutorParams.ts b/packages/protocol-contracts-svm-core/src/IExecutorParams.ts new file mode 100644 index 00000000..a6a418b2 --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/IExecutorParams.ts @@ -0,0 +1,13 @@ +import { Connection, PublicKey, Transaction, VersionedTransaction } from "@solana/web3.js"; + +export interface AnchorWallet { + publicKey: PublicKey; + signTransaction(transaction: T): Promise; + signAllTransactions(transactions: T[]): Promise; +} + +export interface IExecutorParams { + wallet: AnchorWallet, + params: T, + connection: Connection +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-core/src/index.ts b/packages/protocol-contracts-svm-core/src/index.ts new file mode 100644 index 00000000..711759fa --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/index.ts @@ -0,0 +1,7 @@ +export * from './IExecutorParams'; +export * from './ledgerWallet'; +export * from './privateKeyWallet'; +export * from './program'; +export * from './marketplaceProgram'; +export * from './txUtils'; +export * from './utils'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-core/src/ledgerWallet.ts b/packages/protocol-contracts-svm-core/src/ledgerWallet.ts new file mode 100644 index 00000000..63773a5a --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/ledgerWallet.ts @@ -0,0 +1,128 @@ +import { Wallet as AnchorWallet } from "@coral-xyz/anchor"; +import { + PublicKey, + Transaction, + VersionedTransaction, + TransactionMessage, + MessageV0, + Keypair, +} from "@solana/web3.js"; +import TransportNodeHid from "@ledgerhq/hw-transport-node-hid"; +import AppSolana from "@ledgerhq/hw-app-solana"; + +export class LedgerWallet implements AnchorWallet { + private solanaApp: AppSolana; + private derivationPath: string; + public publicKey: PublicKey; + + constructor() { + this.derivationPath = "44'/501'"; + // Initialization will be done in the init() method + // this.derivationPath = "44'/501'/0'/0'"; + // 9M5fNp65vzp3MqkwPFU95WvnuPfpefwe3HbT1E1MZGTx + + // this.derivationPath = "44'/501'"; + // 674s1Sap3KVnr8WGrY5KGQ69oTYjjgr1disKJo6GpTYw + } + payer: Keypair; + + /** + * Initializes the connection to the Ledger device and retrieves the public key. + */ + async init(): Promise { + const transport = await TransportNodeHid.create(); + this.solanaApp = new AppSolana(transport); + const result = await this.solanaApp.getAddress(this.derivationPath); + this.publicKey = new PublicKey(result.address); + } + + /** + * Signs a single transaction using the Ledger device. + * @param tx The transaction to sign. + * @returns The signed transaction. + */ + async signTransaction(tx: T): Promise { + // Handle VersionedTransaction + if (tx instanceof VersionedTransaction) { + // Ledger currently does not support VersionedTransaction directly + // Attempt to convert it to a Transaction if possible + const legacyTx = this.convertToLegacyTransaction(tx); + if (!legacyTx) { + throw new Error("Cannot sign VersionedTransaction with Ledger wallet"); + } + // Sign the legacy transaction + const signedTx = await this.signLegacyTransaction(legacyTx); + // Convert back to VersionedTransaction + const signedVersionedTx = VersionedTransaction.deserialize(signedTx.serialize()); + return signedVersionedTx as T; + } + + // Handle Legacy Transaction + if (tx instanceof Transaction) { + return (await this.signLegacyTransaction(tx)) as T; + } + + throw new Error("Unsupported transaction type"); + } + + /** + * Signs all transactions using the Ledger device. + * @param txs An array of transactions to sign. + * @returns An array of signed transactions. + */ + async signAllTransactions(txs: T[]): Promise { + const signedTxs: T[] = []; + for (const tx of txs) { + const signedTx = await this.signTransaction(tx); + signedTxs.push(signedTx); + } + return signedTxs; + } + + /** + * Signs a legacy transaction. + * @param tx The legacy transaction to sign. + * @returns The signed transaction. + */ + private async signLegacyTransaction(tx: Transaction): Promise { + if (!tx.recentBlockhash) { + throw new Error("Transaction is missing a recent blockhash"); + } + if (!tx.feePayer) { + tx.feePayer = this.publicKey; + } + + const txBytes = tx.serializeMessage(); + const signature = await this.solanaApp.signTransaction(this.derivationPath, txBytes); + const signatureBytes = Buffer.from(signature.signature); + tx.addSignature(this.publicKey, signatureBytes); + + if (!tx.verifySignatures()) { + throw new Error("Signature verification failed"); + } + + return tx; + } + + /** + * Attempts to convert a VersionedTransaction to a Legacy Transaction. + * @param vtx The VersionedTransaction to convert. + * @returns A Transaction if conversion is possible, otherwise null. + */ + private convertToLegacyTransaction(vtx: VersionedTransaction): Transaction | null { + try { + const message = TransactionMessage.decompile(vtx.message); + // Only proceed if the message is compatible with legacy transactions + if (!(message instanceof MessageV0)) { + const tx = new Transaction(); + tx.recentBlockhash = message.recentBlockhash; + tx.feePayer = message.payerKey || this.publicKey; + tx.instructions = message.instructions; + return tx; + } + } catch (error) { + // Cannot convert + } + return null; + } +} diff --git a/packages/protocol-contracts-svm-core/src/marketplaceProgram.ts b/packages/protocol-contracts-svm-core/src/marketplaceProgram.ts new file mode 100644 index 00000000..4df3724b --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/marketplaceProgram.ts @@ -0,0 +1,36 @@ +import { AnchorProvider, BorshCoder, Program } from "@coral-xyz/anchor"; +import { Connection, Keypair, PublicKey } from "@solana/web3.js"; +import { IdlAccounts } from "@coral-xyz/anchor"; + +import RaribleMarketplaceIdlJson from "@rarible_int/protocol-contracts-svm-idl/lib/types/idl/marketplace.json"; +import { Marketplace as RaribleMarketplace } from "@rarible_int/protocol-contracts-svm-idl/lib/types/types/marketplace"; +import { PrivateKeyWallet } from "./privateKeyWallet"; + +export const RaribleMarketplaceIdl: RaribleMarketplace = JSON.parse( + JSON.stringify(RaribleMarketplaceIdlJson) +); + +export const PROGRAM_ID_MARKETPLACE = new PublicKey( + RaribleMarketplaceIdl.address +); + +export function getRaribleMarketplaceProgram( + provider: AnchorProvider +): Program { + return new Program( + RaribleMarketplaceIdl, + provider + ); +} + +export function getProgramInstanceRaribleMarketplace(connection: Connection): Program { + const provider = new AnchorProvider( + connection, + new PrivateKeyWallet(Keypair.generate()), + AnchorProvider.defaultOptions() + ); + const idl = RaribleMarketplaceIdl; + const program = new Program(idl, provider)!; + + return program; + } \ No newline at end of file diff --git a/packages/protocol-contracts-svm-core/src/privateKeyWallet.ts b/packages/protocol-contracts-svm-core/src/privateKeyWallet.ts new file mode 100644 index 00000000..a04736f7 --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/privateKeyWallet.ts @@ -0,0 +1,28 @@ +import { Wallet as AnchorWallet } from "@coral-xyz/anchor"; +import { Keypair, PublicKey } from "@solana/web3.js"; + + +export class PrivateKeyWallet implements AnchorWallet { + constructor(readonly payer: Keypair) { + this.payer = payer; + } + + async signTransaction(tx: any): Promise { + tx.partialSign(this.payer); + return tx; + } + + async signAllTransactions(txs: any[]): Promise { + return txs.map((t) => { + t.partialSign(this.payer); + return t; + }); + } + + async init(): Promise {} + + get publicKey(): PublicKey { + return this.payer.publicKey; + } +} + diff --git a/packages/protocol-contracts-svm-core/src/program.ts b/packages/protocol-contracts-svm-core/src/program.ts new file mode 100644 index 00000000..62040f69 --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/program.ts @@ -0,0 +1,96 @@ +import { AnchorProvider, BorshCoder, Program } from "@coral-xyz/anchor"; +import { Connection, Keypair, PublicKey } from "@solana/web3.js"; +import { IdlAccounts } from "@coral-xyz/anchor"; + +import RaribleEditionsControlsIdlJson from "@rarible_int/protocol-contracts-svm-idl/lib/types/idl/rarible_editions_controls.json"; +import { RaribleEditionsControls } from "@rarible_int/protocol-contracts-svm-idl/lib/types/types/rarible_editions_controls"; + +export const RaribleEditionsControlsIdl: RaribleEditionsControls = JSON.parse( + JSON.stringify(RaribleEditionsControlsIdlJson) +); + +export const PROGRAM_ID_EDITIONS_CONTROLS = new PublicKey( + RaribleEditionsControlsIdl.address +); + +export function getRaribleEditionsControlsProgram( + provider: AnchorProvider +): Program { + return new Program( + RaribleEditionsControlsIdl, + provider + ); +} + +import RaribleEditionsIdlJson from "@rarible_int/protocol-contracts-svm-idl/lib/types/idl/rarible_editions.json"; +import { RaribleEditions } from "@rarible_int/protocol-contracts-svm-idl/lib/types/types/rarible_editions"; +import { PrivateKeyWallet } from "./privateKeyWallet"; + +export const RaribleEditionsIdl: RaribleEditions = JSON.parse( + JSON.stringify(RaribleEditionsIdlJson) +); + +export const PROGRAM_ID_EDITIONS = new PublicKey(RaribleEditionsIdl.address); + +export function getRaribleEditionsProgram( + provider: AnchorProvider +): Program { + return new Program(RaribleEditionsIdl, provider); +} + +export const PROGRAM_ID_GROUP_EXTENSIONS = new PublicKey( + "RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb" +); + +export function getProgramInstanceEditionsControls(connection: Connection) { + const provider = new AnchorProvider( + connection, + new PrivateKeyWallet(Keypair.generate()), + AnchorProvider.defaultOptions() + ); + const idl = RaribleEditionsControlsIdl; + const program = new Program(idl, provider)!; + + return program; +} + +export function getProgramInstanceEditions(connection: Connection) { + const provider = new AnchorProvider( + connection, + new PrivateKeyWallet(Keypair.generate()), + AnchorProvider.defaultOptions() + ); + const idl = RaribleEditionsIdl; + const program = new Program(idl, provider)!; + return program; +} + +export type RaribleEditionsIdl = IdlAccounts["editionsDeployment"]; +export type RaribleEditionsControlsIdl = IdlAccounts["editionsControls"]; + +export const decodeEditionsControls = + (program: Program) => + (buffer: Buffer | undefined, pubkey: PublicKey) => { + const coder = new BorshCoder(program.idl); + const liquidity = buffer + ? coder.accounts.decode("editionsControls", buffer) + : null; + + return { + item: liquidity, + pubkey, + }; + }; + export const decodeEditions = + (program: Program) => + (buffer: Buffer | undefined, pubkey: PublicKey) => { + const coder = new BorshCoder(program.idl); + const liquidity = buffer + ? coder.accounts.decode("editionsDeployment", buffer) + : null; + + return { + item: liquidity, + pubkey, + }; + }; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-core/src/txUtils.ts b/packages/protocol-contracts-svm-core/src/txUtils.ts new file mode 100644 index 00000000..6c497c82 --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/txUtils.ts @@ -0,0 +1,179 @@ +import { + Commitment, + Connection, + SignatureStatus, + Transaction, + TransactionSignature, +} from "@solana/web3.js"; + +const DEFAULT_TIMEOUT = 120_000; + +export function sleep(ms: number, signal?: AbortSignal): Promise { + return new Promise((resolve) => { + if (signal?.aborted) { + resolve(); + return; + } + + const timeoutId = setTimeout(() => { + resolve(); + }, ms); + + signal?.addEventListener('abort', () => { + clearTimeout(timeoutId); + resolve(); + }, { once: true }); + }); +} + +export async function sendSignedTransaction({ + signedTransaction, + connection, + timeout = DEFAULT_TIMEOUT, + skipPreflight = true, +}: { + signedTransaction: Transaction; + connection: Connection; + timeout?: number; + skipPreflight?: boolean; +}): Promise<{ txid: string; }> { + console.log("Raw transaction start: ", signedTransaction.nonceInfo?.nonce); + const rawTransaction = signedTransaction.serialize(); + console.log("Raw transaction length:", rawTransaction.length); + + const txid: TransactionSignature = await connection.sendRawTransaction(rawTransaction, { skipPreflight }); + console.log("Transaction ID:", txid); + + const abortCtrl = new AbortController(); + const { signal } = abortCtrl; + + let done = false; + + (async () => { + while (!done && !signal.aborted) { + try { + await connection.sendRawTransaction(rawTransaction, { skipPreflight: true }); + } catch (e) { + console.error("Error resending transaction:", e); + } + await sleep(6000, signal); + } + })(); + + try { + const confirmation = await awaitTransactionSignatureConfirmation(txid, timeout, connection, "confirmed", true, signal); + + if (!confirmation) { + throw new Error("Transaction confirmation failed"); + } + + if (confirmation.err) { + console.error("Transaction failed:", confirmation.err); + throw new Error("Transaction failed: Custom instruction error"); + } + + return { txid }; + } catch (error: any) { + if (error.message == "Transaction confirmation timeout") { + console.error("Transaction confirmation timed out"); + } + throw error; + } finally { + done = true; + abortCtrl.abort(); + } +} + +export const awaitTransactionSignatureConfirmation = async ( + txid: TransactionSignature, + timeout: number, + connection: Connection, + commitment: Commitment = "confirmed", + queryStatus = false, + signal?: AbortSignal +): Promise => { + let done = false; + let status: SignatureStatus | null | void = { slot: 0, confirmations: 0, err: null }; + let subId: number | undefined; + + const statusPromise = new Promise(async (resolve, reject) => { + try { + subId = connection.onSignature( + txid, + (result, context) => { + done = true; + status = { + err: result.err, + slot: context.slot, + confirmations: 0, + }; + if (result.err) { + console.log("Rejected via websocket", result.err); + reject(status); + } else { + console.log("Resolved via websocket", result); + resolve(status); + } + }, + commitment + ); + } catch (e) { + done = true; + console.error("WS error in setup", txid, e); + } + + while (!done && queryStatus) { + try { + const signatureStatuses = await connection.getSignatureStatuses([txid]); + status = signatureStatuses && signatureStatuses.value[0]; + if (!done) { + if (!status) { + console.log("REST null result for", txid, status); + } else if (status.err) { + console.log("REST error for", txid, status); + done = true; + reject(status.err); + } else if (!status.confirmations && !status.confirmationStatus) { + console.log("REST no confirmations for", txid, status); + } else { + console.log("REST confirmation for", txid, status); + if (!status.confirmationStatus || status.confirmationStatus === commitment) { + done = true; + resolve(status); + } + } + } + } catch (e) { + if (!done) { + console.log("REST connection error: txid", txid, e); + } + } + if (!done) { + await sleep(5000, signal); + } + } + }); + + try { + await Promise.race([ + statusPromise, + sleep(timeout, signal).then(() => { + if (!done) { + console.log("Timed out awaiting confirmation on transaction"); + done = true; + } + }) + ]); + } catch (e) { + console.error("Unexpected error in transaction confirmation:", e); + throw e; + } finally { + if (subId) connection.removeSignatureListener(subId); + } + + if (done) { + console.log("Returning status", status); + } + + return status; +}; diff --git a/packages/protocol-contracts-svm-core/src/utils.ts b/packages/protocol-contracts-svm-core/src/utils.ts new file mode 100644 index 00000000..b3d7382c --- /dev/null +++ b/packages/protocol-contracts-svm-core/src/utils.ts @@ -0,0 +1,37 @@ +import { Keypair } from "@solana/web3.js"; +import { LedgerWallet } from "./ledgerWallet"; // Adjust the import path based on your project structure +import { PrivateKeyWallet } from "./privateKeyWallet"; // Adjust the import path based on your project structure +import * as fs from "fs"; + +/** + * Creates a wallet based on the environment variable `WALLET_TYPE`. + * @returns A wallet instance of either PrivateKeyWallet or LedgerWallet. + */ +export async function getWallet( + isLedger: boolean = false, + keypairPath: string = "" +): Promise { + let walletType = process.env.WALLET_TYPE; + if (isLedger) { + walletType = "ledger"; + } + if (!walletType) { + walletType = "keypair"; + } + if (walletType === "keypair") { + // Load the keypair from the file + if (keypairPath.length == 0) { + keypairPath = process.env.KEYPAIR_PATH!; + } + const keyfile = JSON.parse(fs.readFileSync(keypairPath, "utf8")); + const signerKeypair = Keypair.fromSecretKey(new Uint8Array(keyfile)); + return new PrivateKeyWallet(signerKeypair); + } else if (walletType === "ledger") { + // Initialize Ledger Wallet + const wallet = new LedgerWallet(); + await wallet.init(); // Make sure to initialize the Ledger device + return wallet; + } else { + throw new Error(`Unsupported wallet type: ${walletType}`); + } +} diff --git a/packages/protocol-contracts-svm-core/tsconfig-build.json b/packages/protocol-contracts-svm-core/tsconfig-build.json new file mode 100644 index 00000000..6de8259b --- /dev/null +++ b/packages/protocol-contracts-svm-core/tsconfig-build.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "build", + "baseUrl": ".", + "paths": {} + }, + "include": ["src/**/*", "src/index.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/protocol-contracts-svm-core/tsconfig.json b/packages/protocol-contracts-svm-core/tsconfig.json new file mode 100644 index 00000000..52d43eaa --- /dev/null +++ b/packages/protocol-contracts-svm-core/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/protocol-contracts-svm-editions-controls/package.json b/packages/protocol-contracts-svm-editions-controls/package.json new file mode 100644 index 00000000..d99dd477 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/package.json @@ -0,0 +1,64 @@ +{ + "name": "@rarible_int/protocol-contracts-svm-editions-controls", + "version": "0.1.0", + "keywords": [ + "rarible", + "editions controls", + "eclipse", + "test" + ], + "repository": { + "type": "git", + "url": "https://github.com/rarible/protocol-contracts-svm.git" + }, + "license": "MIT", + "main": "build/index.js", + "files": [ + "build" + ], + "types": "build/index.d.ts", + "scripts": { + "clean": "mkdir -p build && mkdir -p node_modules && rm -rf build && rm -rf node_modules", + "build": "tsc -b ./tsconfig-build.json" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.1", + "@ledgerhq/hw-app-solana": "^7.2.4", + "@ledgerhq/hw-transport-node-hid": "^6.29.5", + "@solana/web3.js": "^1.95.3", + "async": "^3.2.5", + "axios": "^1.6.5", + "base32": "^0.0.7", + "bn.js": "^5.2.1", + "bs58": "^5.0.0cp", + "cids": "^1.1.9", + "commander": "^12.0.0", + "cookies": "^0.9.1", + "date-fns": "^2.29.3", + "dotenv": "^16.4.1", + "dotenv-cli": "^7.3.0", + "fetch-retry": "^5.0.6", + "js-sha256": "^0.11.0", + "jsonwebtoken": "^9.0.2", + "kubo-rpc-client": "^3.0.2", + "spl-token-4": "npm:@solana/spl-token@0.3.11", + "tweetnacl": "^1.0.3", + "@rarible_int/protocol-contracts-svm-idl": "0.1.0", + "@rarible_int/protocol-contracts-svm-core": "0.1.0" + }, + "devDependencies": { + "@types/bn.js": "^5.1.5", + "autoprefixer": "^10.4.2", + "eslint": "8.7.0", + "patch-package": "^8.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "5.3.3" + }, + + "engines": { + "node": ">=18" + }, + "publishConfig": { + "registry": "http://nexus.rarible.int/repository/npm/" + } +} diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/add-phase.sh b/packages/protocol-contracts-svm-editions-controls/scripts/add-phase.sh new file mode 100644 index 00000000..3d7529b6 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/add-phase.sh @@ -0,0 +1,10 @@ + +npx ts-node ./src/cli/controls/addPhase.ts \ + -d 5wdChPiHVevvVu3Nnonzsgc92r7ZBJgNbQKC3TRDU7Ct \ + -k ~/.config/solana/id.json \ + -r https://api.devnet.solana.com \ + --maxMintsPerWallet 100 \ + --maxMintsTotal 1000 \ + --priceAmount 500 \ + -s 1709564319 \ + -e 1959564319 diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/and-collection.json b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/and-collection.json new file mode 100644 index 00000000..2531ef04 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/and-collection.json @@ -0,0 +1,6 @@ +{ + "name": "Andromeda", + "symbol": "AND", + "description": "The star creating entity", + "image": "ipfs://QmaReBDnd7gyMzWp5YEivfjtVgvNudUphTowVtBkgoExnR" +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/and-item.json b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/and-item.json new file mode 100644 index 00000000..2531ef04 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/and-item.json @@ -0,0 +1,6 @@ +{ + "name": "Andromeda", + "symbol": "AND", + "description": "The star creating entity", + "image": "ipfs://QmaReBDnd7gyMzWp5YEivfjtVgvNudUphTowVtBkgoExnR" +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/create-deployment-and.sh b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/create-deployment-and.sh new file mode 100644 index 00000000..70564daf --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/create-deployment-and.sh @@ -0,0 +1,44 @@ +npx ts-node ./src/createDeployment.ts \ + -t CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -s AND2 \ + --maxNumberOfTokens 0 \ + --maxMintsPerWallet 100 \ + -u "https://ipfs.raribleuserdata.com/ipfs/QmQGXvLWPTBVnMd7aEsEXytvhZBVgUTzVe8ec6JvZmDnRZ" \ + -n "Andromeda" \ + --creators CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 600000 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "https://ipfs.raribleuserdata.com/ipfs/QmQGXvLWPTBVnMd7aEsEXytvhZBVgUTzVe8ec6JvZmDnRZ" \ + --itemBaseName "Andromeda" + + +npx ts-node ./src/addPhase.ts -d 6xHpXg4HkybfpM4aaHfTGNgyseE81k7cjZ9vpSiCMAC9 -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz --maxMintsPerWallet 100 --maxMintsTotal 0 --priceAmount 600000 -s 1709564319 -e 1999564319 + +npx ts-node ./src/mintWithControls.ts -d 6xHpXg4HkybfpM4aaHfTGNgyseE81k7cjZ9vpSiCMAC9 -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz -p 0 -n 1 + + +npx ts-node ./src/createDeployment.ts \ + -t CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + -s ANDR \ + --maxNumberOfTokens 0 \ + --maxMintsPerWallet 1000 \ + -u "https://ipfs.raribleuserdata.com/ipfs/QmQGXvLWPTBVnMd7aEsEXytvhZBVgUTzVe8ec6JvZmDnRZ" \ + -n "Andromeda" \ + --creators CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 650000 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "https://ipfs.raribleuserdata.com/ipfs/QmQGXvLWPTBVnMd7aEsEXytvhZBVgUTzVe8ec6JvZmDnRZ" \ + --itemBaseName "Andromeda" + + +npx ts-node ./src/addPhase.ts -d Fgs3auKevWQeECXasoZ1aCyuNr2cXK7rP9eKQFC3kZJv -k ~/.config/solana/prod-keypair.json -r https://mainnetbeta-rpc.eclipse.xyz --maxMintsPerWallet 1000 --maxMintsTotal 0 --priceAmount 650000 -s 1731942000 -e 1732546800 + +npx ts-node ./src/mintWithControls.ts -d Fgs3auKevWQeECXasoZ1aCyuNr2cXK7rP9eKQFC3kZJv -k ~/.config/solana/prod-keypair.json -r https://mainnetbeta-rpc.eclipse.xyz -p 0 -n 1 diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/modify-platform-fee-prod.sh b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/modify-platform-fee-prod.sh new file mode 100755 index 00000000..8d1b8aec --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/modify-platform-fee-prod.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +KEYPAIR_PATH="$HOME/.config/solana/id.json" +RPC_URL="https://mainnetbeta-rpc.eclipse.xyz" +DEPLOYMENT_ID="GYYKgGzgXnk7icNYdTAqWtBLs1T7ZsAZXYsjNz1SmS6c" +PLATFORM_FEE_VALUE=650000 +IS_FEE_FLAT=true +RECIPIENTS="AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100" + +if [ "$IS_FEE_FLAT" = true ]; then + IS_FEE_FLAT_FLAG="--isFeeFlat" +else + IS_FEE_FLAT_FLAG="" +fi + +npx ts-node ./src/modifyPlatformFee.ts \ + -k "$KEYPAIR_PATH" \ + -r "$RPC_URL" \ + -d "$DEPLOYMENT_ID" \ + --platformFeeValue "$PLATFORM_FEE_VALUE" \ + $IS_FEE_FLAT_FLAG \ + --recipients "$RECIPIENTS" \ + --ledger true \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/modify-platform-fee.sh b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/modify-platform-fee.sh new file mode 100755 index 00000000..b83cfc7f --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/and-deploy/modify-platform-fee.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +KEYPAIR_PATH="$HOME/.config/solana/prod-keypair.json" +RPC_URL="https://mainnetbeta-rpc.eclipse.xyz" +DEPLOYMENT_ID="GYYKgGzgXnk7icNYdTAqWtBLs1T7ZsAZXYsjNz1SmS6c" +PLATFORM_FEE_VALUE=628000 +IS_FEE_FLAT=true +RECIPIENTS="AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100" + +if [ "$IS_FEE_FLAT" = true ]; then + IS_FEE_FLAT_FLAG="--isFeeFlat" +else + IS_FEE_FLAT_FLAG="" +fi + +npx ts-node ./src/modifyPlatformFee.ts -k /Users/vfadeev/.config/solana/prod-keypair.json -r "https://mainnetbeta-rpc.eclipse.xyz" -d "GYYKgGzgXnk7icNYdTAqWtBLs1T7ZsAZXYsjNz1SmS6c" --platformFeeValue "640000" --isFeeFlat --ledger true --recipients "AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100" + + npx ts-node ./src/modifyPlatformFee.ts -k ~/.config/solana/prod-keypair.json -r "https://mainnetbeta-rpc.eclipse.xyz" -d "GYYKgGzgXnk7icNYdTAqWtBLs1T7ZsAZXYsjNz1SmS6c" --platformFeeValue "628000" --isFeeFlat --recipients "AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100" \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy-prod.sh b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy-prod.sh new file mode 100644 index 00000000..21b159e0 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy-prod.sh @@ -0,0 +1,60 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + -s ASC \ + --maxNumberOfTokens 10000 \ + --maxMintsPerWallet 300 \ + -u "https://ipfs.raribleuserdata.com/ipfs/QmYGkcfE9Zzm71wiKks8tWC3hkgc45vKWaod6LvEYdCHdG" \ + -n "AFTER SCHOOL CLUB" \ + --creators 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 0 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "https://rarible-drops.s3.filebase.com/Eclipse/asc/metadata/metadata_src/{}.json" \ + --itemBaseName "ASC #{}" + +npx ts-node ./src/cli/addPhase.ts \ + -d 3x6Gqc2qFTgwq87LEe1wmybPJLFZPiE8QnSXxDkrAC9E \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 300 \ + --priceAmount 0 \ + -s 1732201200 \ + -e 1732208400 + +npx ts-node ./src/cli/mintWithControlsMany.ts -d 3x6Gqc2qFTgwq87LEe1wmybPJLFZPiE8QnSXxDkrAC9E --recipient 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj --qty 300 -k ~/.config/solana/prod-keypair.json -r https://mainnetbeta-rpc.eclipse.xyz -p 0 -n 1 + +npx ts-node ./src/cli/controls/modifyPlatformFee.ts -k ~/.config/solana/prod-keypair.json -r "https://mainnetbeta-rpc.eclipse.xyz" -d 3x6Gqc2qFTgwq87LEe1wmybPJLFZPiE8QnSXxDkrAC9E --platformFeeValue "650000" --isFeeFlat --ledger true --recipients "AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100" + +npx ts-node ./src/cli/addPhase.ts \ + -d 3x6Gqc2qFTgwq87LEe1wmybPJLFZPiE8QnSXxDkrAC9E \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 3 \ + --maxMintsTotal 10000 \ + --priceAmount 40000000 \ + -s 1732546800 \ + -e 1732633200 + +npx ts-node ./src/cli/addPhase.ts \ + -d 3x6Gqc2qFTgwq87LEe1wmybPJLFZPiE8QnSXxDkrAC9E \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 10000 \ + --priceAmount 40000000 \ + -s 1732633200 \ + -e 1733238000 + +npx ts-node ./src/cli/modifyPhase.ts \ + -d 3x6Gqc2qFTgwq87LEe1wmybPJLFZPiE8QnSXxDkrAC9E \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 1 \ + --maxMintsTotal 10000 \ + --priceAmount 40000000 \ + -s 1732633200 \ + -e 1733238000 --phaseIndex 2 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy-test-local.sh b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy-test-local.sh new file mode 100644 index 00000000..112e330e --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy-test-local.sh @@ -0,0 +1,78 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -s ASC10 \ + --maxNumberOfTokens 10000 \ + --maxMintsPerWallet 300 \ + -u "https://ipfs.raribleuserdata.com/ipfs/QmYGkcfE9Zzm71wiKks8tWC3hkgc45vKWaod6LvEYdCHdG" \ + -n "AFTER SCHOOL CLUB" \ + --creators 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 650000 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "https://rarible-drops.s3.filebase.com/Eclipse/asc/metadata/metadata_src/{}.json" \ + --itemBaseName "ASC #{}" + +npx ts-node ./src/cli/addPhase.ts \ + -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 30 \ + --maxMintsTotal 30 \ + --priceAmount 0 \ + -s 1732627200 \ + -e 1732627800 + +npx ts-node ./src/cli/mintWithControlsMany.ts -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz --recipient BTicWgGhoTsBANuirXS7UCeF6bxfvTnCaxM5HQRRfGZS --qty 30 -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz -p 0 -n 1 + +npx ts-node ./src/cli/addPhase.ts \ + -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 3 \ + --maxMintsTotal 10000 \ + --priceAmount 3200000 \ + -s 1732627800 \ + -e 1732628400 + +npx ts-node ./src/cli/addPhase.ts \ + -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 1 \ + --maxMintsTotal 10000 \ + --priceAmount 3200000 \ + -s 1732628400 \ + -e 1732629000 + +npx ts-node ./src/cli/modifyPhase.ts \ + -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 1 \ + --maxMintsTotal 10000 \ + --priceAmount 4000000 \ + -s 1732628400 \ + -e 1732629900 --phaseIndex 2 + +npx ts-node ./src/cli/addPhase.ts \ + -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 1 \ + --maxMintsTotal 10000 \ + --priceAmount 3200000 \ + -s 1732629900 \ + -e 1732630200 + + npx ts-node ./src/cli/modifyPhase.ts \ + -d 6kAHEZJDYGjoUwUVn57KssjafFW4hzV8SASrdCrhGcSz \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 1 \ + --maxMintsTotal 10000 \ + --priceAmount 4000000 \ + -s 1732630200 \ + -e 1732630800 --phaseIndex 3 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy.sh b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy.sh new file mode 100644 index 00000000..40f26c12 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/create-deploy.sh @@ -0,0 +1,74 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -s ASC9 \ + --maxNumberOfTokens 10000 \ + --maxMintsPerWallet 300 \ + -u "https://ipfs.raribleuserdata.com/ipfs/QmYGkcfE9Zzm71wiKks8tWC3hkgc45vKWaod6LvEYdCHdG" \ + -n "AFTER SCHOOL CLUB" \ + --creators 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 0 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "https://rarible-drops.s3.filebase.com/Eclipse/asc/metadata/metadata_src/{}.json" \ + --itemBaseName "ASC #{}" + +npx ts-node ./src/cli/addPhase.ts \ + -d FAPUkUarWttzUSTt4pL1AL1Q5fCziciWyRe1RUHpgZD7 \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 300 \ + --priceAmount 0 \ + -s 1732273200 \ + -e 1732285800 + +npx ts-node ./src/cli/mintWithControls.ts -d 9SGeGafLKhPm3iPFEfLLNR5LLKUmTa2borFq98sCZVj2 --recipient 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz -p 0 -n 1 +npx ts-node ./src/cli/mintWithControlsMany.ts -d FAPUkUarWttzUSTt4pL1AL1Q5fCziciWyRe1RUHpgZD7 --recipient 7jB2kzg5FbuNjETEgjnERfznGMFs7sQ7nhoXcJzwJpxj --qty 300 -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz -p 0 -n 1 + +npx ts-node ./src/cli/controls/modifyPlatformFee.ts -k /Users/vfadeev/.config/solana/prod-keypair.json -r "https://testnet.dev2.eclipsenetwork.xyz" -d "FAPUkUarWttzUSTt4pL1AL1Q5fCziciWyRe1RUHpgZD7" --platformFeeValue "650000" --isFeeFlat --ledger true --recipients "AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100" + +npx ts-node ./src/cli/addPhase.ts \ + -d FAPUkUarWttzUSTt4pL1AL1Q5fCziciWyRe1RUHpgZD7 \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 3 \ + --maxMintsTotal 10000 \ + --priceAmount 4000000 \ + -s 1732285800 \ + -e 1732372200 + +npx ts-node ./src/cli/addPhase.ts \ + -d FAPUkUarWttzUSTt4pL1AL1Q5fCziciWyRe1RUHpgZD7 \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 3 \ + --maxMintsTotal 10000 \ + --priceAmount 4000000 \ + -s 1732372200 \ + -e 1732977000 + +npx ts-node ./src/cli/addPhase.ts \ + -d 4oY7P2c6E3h7SgunSZGMaeSeNHqMU65GkfYuh7e9Xamv \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 3 \ + --maxMintsTotal 10000 \ + --priceAmount 4000000 \ + -s 1732539600 \ + -e 1732636800 + + +npx ts-node ./src/cli/modifyPhase.ts \ + -d 4oY7P2c6E3h7SgunSZGMaeSeNHqMU65GkfYuh7e9Xamv \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 1 \ + --maxMintsTotal 10000 \ + --priceAmount 4000000 \ + -s 1732539600 \ + -e 1732636800 --phaseIndex 3 + + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/data.txt b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/data.txt new file mode 100644 index 00000000..84d583e2 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/asc-deploy/data.txt @@ -0,0 +1,2 @@ +WL_URI=ipfs://bafybeifoavftgdmwhlod26rzwoxpetnbcjnpfrvsniqdtuzh6t67jdlhgq +WL_URI_v2=ipfs://QmPtPtSnJPGhM3CfATSC75gBfN9qSXQcEy7Mha6VbDmsK7 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/blu-deploy/create-deploy-prod.sh b/packages/protocol-contracts-svm-editions-controls/scripts/blu-deploy/create-deploy-prod.sh new file mode 100644 index 00000000..802b8389 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/blu-deploy/create-deploy-prod.sh @@ -0,0 +1,26 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 5GX68vDNX99NVjTDCf7wuUWQoDw2qvxNruU8TdfJKZjz \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + -s BLU \ + --maxNumberOfTokens 0 \ + --maxMintsPerWallet 10000 \ + -u "https://ipfs.raribleuserdata.com/ipfs/QmZgbRFoL3k73N13m4fASTBPVRLjThnbGasTzgVsqHVyAg" \ + -n "Blue" \ + --creators 5GX68vDNX99NVjTDCf7wuUWQoDw2qvxNruU8TdfJKZjz:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 650000 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "https://ipfs.raribleuserdata.com/ipfs/Qmc5wNJjEc2LU5dCtDGMH416Nu9Dp3f62T8Viuyr5qV5xQ" \ + --itemBaseName "Blue" + +npx ts-node ./src/cli/addPhase.ts \ + -d 8Nga3QCpWiXjZrF8ap7e8ceWVQocdQbW6GdZMubfQ17n \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 10000 \ + --maxMintsTotal 0 \ + --priceAmount 580000 \ + -s 1733148000 \ + -e 1733752800 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/create-deployment.sh b/packages/protocol-contracts-svm-editions-controls/scripts/create-deployment.sh new file mode 100644 index 00000000..66119d57 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/create-deployment.sh @@ -0,0 +1,45 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t BTicWgGhoTsBANuirXS7UCeF6bxfvTnCaxM5HQRRfGZS \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + -s CAT06 \ + --maxNumberOfTokens 1000 \ + --maxMintsPerWallet 100 \ + -u "ipfs://QmfJh4B8KySR1KHaXRNWkcDBn67ZuJkzAyaVCWAS8Kcezc/0" \ + -n "Collection of Cats" \ + --creators J5xffSinbAQw65TsphSZ8gfaNGAPEfNWL9wwzGNdm3PR:100 \ + --royaltyBasisPoints 1000 \ + --platformFeeValue 0 \ + --platformFeeRecipients 4yyE2cWHJTU5cu8pem2ApVnHRDGHYvsPvsFCM2WeCPG2:100 \ + --isFeeFlat \ + --extraMeta "type:handmade" "author:Vadim" "value:important" \ + --itemBaseUri "ipfs://QmdHaufjUDJgbZzZ4eFCjtJQyeQpuNwoEvqLm5rq159vC8/{}" \ + --itemBaseName "Cat #{}" + + +npx ts-node ./src/cli/addPhase.ts -d F3UQtVYuPEuesi4ga7aZXaq4axHrnKzzwodBdqYwhCTe -k ~/.config/solana/prod-keypair.json -r https://mainnetbeta-rpc.eclipse.xyz --maxMintsPerWallet 100 --maxMintsTotal 1000 --priceAmount 320000 -s 1709564319 -e 1959564319 + +npx ts-node ../src/cli/mintWithControls.ts -d F3UQtVYuPEuesi4ga7aZXaq4axHrnKzzwodBdqYwhCTe -k ~/.config/solana/prod-keypair.json -r https://mainnetbeta-rpc.eclipse.xyz -p 0 -n 1 + + +npx ts-node ./src/cli/createDeployment.ts \ + -t BTicWgGhoTsBANuirXS7UCeF6bxfvTnCaxM5HQRRfGZS \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -s CAT05M \ + --maxNumberOfTokens 1000 \ + --maxMintsPerWallet 100 \ + -u "https://bafybeiekoh7qusezbcltttym6ja2ai3vxftx2izokbtumuahys3juw5grq.ipfs.w3s.link/figure31-meta.json" \ + -n "Collection of Cats" \ + --creators J5xffSinbAQw65TsphSZ8gfaNGAPEfNWL9wwzGNdm3PR:100 \ + --royaltyBasisPoints 1000 \ + --platformFeeValue 500000 \ + --platformFeeRecipients 4yyE2cWHJTU5cu8pem2ApVnHRDGHYvsPvsFCM2WeCPG2:100 \ + --isFeeFlat \ + --extraMeta "type:handmade" "author:Vadim" "value:important" \ + --itemBaseUri "ipfs://QmdHaufjUDJgbZzZ4eFCjtJQyeQpuNwoEvqLm5rq159vC8/{}" \ + --itemBaseName "Cat M #{}" + +npx ts-node ./src/cli/addPhase.ts -d 5rPxHARWC3XVjXfFueVzUibCNKUw22hkhdjmj5BqBxEg -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz --maxMintsPerWallet 100 --maxMintsTotal 1000 --priceAmount 500 -s 1709564319 -e 1991938380 + +npx ts-node ./src/cli/mintWithControls.ts -d 5rPxHARWC3XVjXfFueVzUibCNKUw22hkhdjmj5BqBxEg -k ~/.config/solana/id.json -r https://testnet.dev2.eclipsenetwork.xyz -p 0 -n 1 diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/data.txt b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/data.txt new file mode 100644 index 00000000..e78ce406 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/data.txt @@ -0,0 +1 @@ +base_uri=ipfs://bafybeiehohni32wso575kcfurpc66kegiaaeupequ3qjxlg2fqsbx5npau \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/figure31-meta.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/figure31-meta.json new file mode 100644 index 00000000..f1427be6 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/figure31-meta.json @@ -0,0 +1,5 @@ +{ + "name": "AOFE", + "symbol": "AOFE", + "image": "https://uploader.irys.xyz/8rNjMGR7trq2PC3Xo2i53dvPkELQKwHEaUoQ4dY7W1PA/full_rez/oe_4.jpg" +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/prod/create-deployment-figure31.sh b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/prod/create-deployment-figure31.sh new file mode 100644 index 00000000..d415790e --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/prod/create-deployment-figure31.sh @@ -0,0 +1,49 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 5dL2dd2ZBQs92XXbaRV7ZH2FJ6k5euinM3Sg1FhkktJF \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + -s AOFE \ + --maxNumberOfTokens 70221 \ + --maxMintsPerWallet 1000000 \ + -u "https://bafybeiekoh7qusezbcltttym6ja2ai3vxftx2izokbtumuahys3juw5grq.ipfs.w3s.link/figure31-meta.json" \ + -n "AOFE" \ + --creators 5dL2dd2ZBQs92XXbaRV7ZH2FJ6k5euinM3Sg1FhkktJF:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 650000 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "ipfs://bafybeib3ogmisx45y45er4jjxi3nd7cta5smeapdoueodkt363g4loeisa/{}.json" \ + --itemBaseName "AOFE" + +npx ts-node ./src/cli/addPhase.ts \ + -d 3bHD7zQGmxVJnxJaSCkzrZyPRUH9Tx5RjkMjUN8fyRTU \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 70221 \ + --priceAmount 0 \ + -s 1731682800 \ + -e 1732287600 + # --isPrivate true \ + # --merkleRootPath ./scripts/figure31-deploy/merkle_tree.json + +npx ts-node ./src/cli/addPhase.ts \ + -d 3bHD7zQGmxVJnxJaSCkzrZyPRUH9Tx5RjkMjUN8fyRTU \ + -k ~/.config/solana/prod-keypair.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 70221 \ + --priceAmount 0 \ + -s 1732287600 \ + -e 1732485600 + +npx ts-node ./src/cli/mintWithControls.ts \ + -d 3bHD7zQGmxVJnxJaSCkzrZyPRUH9Tx5RjkMjUN8fyRTU \ + -k ~/.config/solana/id.json \ + -r https://mainnetbeta-rpc.eclipse.xyz \ + -p 0 \ + -n 1 + # --merkleProofPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/proofs/QjzRL6VwKGnpco8wx3cPjtq8ZPhewy7ohq7F5mv2eeR.json \ + # --allowListPrice 30000 \ + # --allowListMaxClaims 2 + diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/prod_proofs b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/prod_proofs new file mode 100644 index 00000000..f60c65e0 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/prod_proofs @@ -0,0 +1 @@ +ipfs://bafybeidgznlkcgd33zuv2zhslqxqhzc62dmahv7vfo7uk4uylk6mdnjxw4 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/create-deployment-figure31-testnet-v2.sh b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/create-deployment-figure31-testnet-v2.sh new file mode 100644 index 00000000..ceaa2912 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/create-deployment-figure31-testnet-v2.sh @@ -0,0 +1,65 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 5dL2dd2ZBQs92XXbaRV7ZH2FJ6k5euinM3Sg1FhkktJF \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -s AOFET13 \ + --maxNumberOfTokens 70221 \ + --maxMintsPerWallet 1000000 \ + -u -u "https://bafybeiekoh7qusezbcltttym6ja2ai3vxftx2izokbtumuahys3juw5grq.ipfs.w3s.link/figure31-meta.json" \ + -n "AOFE" \ + --creators 5dL2dd2ZBQs92XXbaRV7ZH2FJ6k5euinM3Sg1FhkktJF:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 0 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "ipfs://bafybeib3ogmisx45y45er4jjxi3nd7cta5smeapdoueodkt363g4loeisa/{}.json" \ + --itemBaseName "AOFE" + +npx ts-node ./src/cli/addPhase.ts \ + -d 8GERj2yoAr2wz3ET2CYG6zBRerT6noS3s9UiXUJWfQPH \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 70221 \ + --priceAmount 320000 \ + -s 1701596401 \ + -e 1732201201 + +npx ts-node ./src/cli/addPhase.ts \ + -d 8GERj2yoAr2wz3ET2CYG6zBRerT6noS3s9UiXUJWfQPH \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 300 \ + --maxMintsTotal 70221 \ + --priceAmount 320000 \ + -s 1701596401 \ + -e 1782201201 + +npx ts-node ./src/cli/mintWithControls.ts \ + -d 56wx6BBU4GtLnQS9E2DbAJAREvKAuhrsia8RbLYQZ5tH \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -p 0 \ + -n 1 + +npx ts-node ./src/cli/mintWithControls.ts \ + -d AB5EF8EdAEJZUywTuVVmDPeoQemML1T7d7gJbMHKQHZb \ + -k ~/.config/solana/prod-keypair.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -p 0 \ + -n 1 \ + --merkleProofPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/test/proofs_test_v2/3uiYpWUZhxNi6FNFtKh58FWLPBT1sMivRzcENu876xMV.json \ + --allowListPrice 300000 \ + --allowListMaxClaims 5 + + BvvjuPAw7qpJU3B1vNpAgqPLmLErHv8izEBNbbhz936K + +npx ts-node ./src/cli/mintWithControls.ts \ + -d BvvjuPAw7qpJU3B1vNpAgqPLmLErHv8izEBNbbhz936K \ + -k ~/.config/solana/prod-keypair.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -p 0 \ + -n 1 \ + --merkleProofPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/proofs_all_v2/QjzRL6VwKGnpco8wx3cPjtq8ZPhewy7ohq7F5mv2eeR.json \ + --allowListPrice 320000 \ + --allowListMaxClaims 2 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/create-deployment-figure31-testnet.sh b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/create-deployment-figure31-testnet.sh new file mode 100644 index 00000000..9b250692 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/create-deployment-figure31-testnet.sh @@ -0,0 +1,60 @@ +npx ts-node ./src/cli/createDeployment.ts \ + -t 5dL2dd2ZBQs92XXbaRV7ZH2FJ6k5euinM3Sg1FhkktJF \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -s AOFET9 \ + --maxNumberOfTokens 70221 \ + --maxMintsPerWallet 1000000 \ + -u -u "https://bafybeiekoh7qusezbcltttym6ja2ai3vxftx2izokbtumuahys3juw5grq.ipfs.w3s.link/figure31-meta.json" \ + -n "AOFE" \ + --creators 5dL2dd2ZBQs92XXbaRV7ZH2FJ6k5euinM3Sg1FhkktJF:100 \ + --royaltyBasisPoints 500 \ + --platformFeeValue 640000 \ + --platformFeeRecipients AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn:100 \ + --isFeeFlat \ + --itemBaseUri "ipfs://bafybeib3ogmisx45y45er4jjxi3nd7cta5smeapdoueodkt363g4loeisa/{}.json" \ + --itemBaseName "AOFE" + +npx ts-node ./src/cli/addPhase.ts \ + -d AB5EF8EdAEJZUywTuVVmDPeoQemML1T7d7gJbMHKQHZb \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + --maxMintsPerWallet 30000 \ + --maxMintsTotal 70221 \ + --priceAmount 320000 \ + -s 1701596401 \ + -e 1732201201 \ + --isPrivate true \ + --merkleRootPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/test/merkle_tree_test.json + +npx ts-node ./src/cli/mintWithControls.ts \ + -d 2fQwHcwAvNPCHuYPUCVhqj1LLdXyqBLK3tH8DoScDXyC \ + -k ~/.config/solana/prod-keypair.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -p 0 \ + -n 1 \ + --merkleProofPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/proofs_all_v2/QjzRL6VwKGnpco8wx3cPjtq8ZPhewy7ohq7F5mv2eeR.json \ + --allowListPrice 320000 \ + --allowListMaxClaims 2 + +npx ts-node ./src/cli/mintWithControls.ts \ + -d AB5EF8EdAEJZUywTuVVmDPeoQemML1T7d7gJbMHKQHZb \ + -k ~/.config/solana/prod-keypair.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -p 0 \ + -n 1 \ + --merkleProofPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/test/proofs_test_v2/3uiYpWUZhxNi6FNFtKh58FWLPBT1sMivRzcENu876xMV.json \ + --allowListPrice 300000 \ + --allowListMaxClaims 5 + + BvvjuPAw7qpJU3B1vNpAgqPLmLErHv8izEBNbbhz936K + +npx ts-node ./src/cli/mintWithControls.ts \ + -d BvvjuPAw7qpJU3B1vNpAgqPLmLErHv8izEBNbbhz936K \ + -k ~/.config/solana/prod-keypair.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -p 0 \ + -n 1 \ + --merkleProofPath /Users/vfadeev/Work/solana/protocol-contracts-svm/packages/protocol-contracts-svm-editions-controls-cli/scripts/figure31-deploy/proofs_all_v2/QjzRL6VwKGnpco8wx3cPjtq8ZPhewy7ohq7F5mv2eeR.json \ + --allowListPrice 320000 \ + --allowListMaxClaims 2 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/merkle_tree_test.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/merkle_tree_test.json new file mode 100644 index 00000000..89e26bdf --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/merkle_tree_test.json @@ -0,0 +1,1034 @@ +{ + "merkle_root": [ + 175, + 24, + 232, + 136, + 235, + 163, + 164, + 220, + 22, + 232, + 126, + 117, + 201, + 68, + 195, + 191, + 64, + 83, + 65, + 120, + 194, + 27, + 209, + 1, + 99, + 52, + 195, + 111, + 69, + 118, + 65, + 75 + ], + "max_num_nodes": 7, + "max_total_claim": 35, + "tree_nodes": [ + { + "claimant": [ + 43, + 56, + 142, + 25, + 224, + 251, + 96, + 79, + 213, + 151, + 137, + 49, + 45, + 181, + 197, + 239, + 113, + 25, + 1, + 232, + 64, + 178, + 46, + 38, + 173, + 179, + 181, + 231, + 64, + 219, + 16, + 104 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 117, + 183, + 206, + 162, + 195, + 159, + 124, + 151, + 163, + 18, + 147, + 83, + 74, + 68, + 46, + 149, + 155, + 193, + 8, + 30, + 9, + 142, + 98, + 96, + 184, + 14, + 203, + 213, + 175, + 172, + 246, + 215 + ], + [ + 169, + 148, + 160, + 64, + 73, + 148, + 36, + 47, + 106, + 95, + 70, + 4, + 54, + 45, + 37, + 152, + 17, + 157, + 194, + 12, + 206, + 164, + 60, + 21, + 122, + 206, + 28, + 0, + 71, + 156, + 177, + 33 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] + }, + { + "claimant": [ + 227, + 143, + 203, + 172, + 213, + 182, + 213, + 214, + 57, + 201, + 32, + 84, + 174, + 84, + 146, + 206, + 183, + 194, + 3, + 194, + 193, + 100, + 151, + 72, + 198, + 61, + 35, + 238, + 13, + 203, + 121, + 52 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 123, + 172, + 218, + 22, + 174, + 20, + 187, + 32, + 11, + 129, + 253, + 57, + 129, + 255, + 125, + 96, + 103, + 180, + 196, + 219, + 179, + 82, + 13, + 239, + 63, + 255, + 125, + 159, + 122, + 122, + 0, + 159 + ], + [ + 169, + 148, + 160, + 64, + 73, + 148, + 36, + 47, + 106, + 95, + 70, + 4, + 54, + 45, + 37, + 152, + 17, + 157, + 194, + 12, + 206, + 164, + 60, + 21, + 122, + 206, + 28, + 0, + 71, + 156, + 177, + 33 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] + }, + { + "claimant": [ + 230, + 28, + 162, + 218, + 23, + 239, + 149, + 45, + 145, + 70, + 174, + 107, + 44, + 142, + 253, + 249, + 83, + 4, + 175, + 131, + 44, + 32, + 170, + 34, + 134, + 230, + 112, + 4, + 41, + 165, + 246, + 242 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 115, + 60, + 63, + 207, + 145, + 193, + 27, + 212, + 162, + 132, + 103, + 146, + 236, + 22, + 22, + 232, + 40, + 208, + 247, + 58, + 226, + 33, + 63, + 213, + 235, + 19, + 97, + 48, + 27, + 22, + 188, + 208 + ], + [ + 68, + 46, + 71, + 47, + 13, + 81, + 121, + 18, + 142, + 155, + 87, + 77, + 50, + 5, + 93, + 10, + 229, + 55, + 156, + 183, + 201, + 149, + 75, + 166, + 252, + 80, + 210, + 91, + 148, + 18, + 22, + 75 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] + }, + { + "claimant": [ + 231, + 55, + 28, + 83, + 131, + 0, + 61, + 2, + 71, + 251, + 80, + 10, + 184, + 91, + 136, + 183, + 232, + 73, + 233, + 113, + 220, + 134, + 47, + 206, + 38, + 95, + 128, + 196, + 22, + 101, + 192, + 66 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 37, + 29, + 32, + 135, + 132, + 86, + 175, + 132, + 195, + 213, + 255, + 62, + 179, + 180, + 162, + 157, + 110, + 234, + 128, + 208, + 125, + 116, + 253, + 167, + 228, + 137, + 186, + 8, + 178, + 67, + 40, + 116 + ], + [ + 68, + 46, + 71, + 47, + 13, + 81, + 121, + 18, + 142, + 155, + 87, + 77, + 50, + 5, + 93, + 10, + 229, + 55, + 156, + 183, + 201, + 149, + 75, + 166, + 252, + 80, + 210, + 91, + 148, + 18, + 22, + 75 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] + }, + { + "claimant": [ + 25, + 97, + 96, + 135, + 202, + 128, + 175, + 29, + 173, + 241, + 4, + 78, + 130, + 189, + 208, + 9, + 154, + 219, + 151, + 205, + 143, + 242, + 242, + 218, + 55, + 60, + 250, + 110, + 144, + 237, + 94, + 139 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 80, + 26, + 83, + 247, + 179, + 6, + 4, + 55, + 174, + 28, + 87, + 209, + 235, + 11, + 239, + 18, + 207, + 196, + 194, + 189, + 207, + 39, + 143, + 64, + 85, + 179, + 38, + 61, + 215, + 70, + 125, + 194 + ], + [ + 127, + 194, + 246, + 186, + 38, + 165, + 157, + 111, + 1, + 200, + 89, + 202, + 78, + 236, + 129, + 103, + 87, + 186, + 127, + 143, + 10, + 214, + 172, + 52, + 22, + 111, + 237, + 250, + 66, + 79, + 147, + 60 + ], + [ + 52, + 129, + 226, + 205, + 87, + 19, + 28, + 77, + 156, + 116, + 48, + 2, + 216, + 151, + 105, + 226, + 117, + 251, + 217, + 72, + 125, + 75, + 129, + 115, + 168, + 11, + 151, + 133, + 59, + 149, + 53, + 243 + ] + ] + }, + { + "claimant": [ + 229, + 106, + 222, + 174, + 129, + 110, + 66, + 136, + 97, + 146, + 88, + 164, + 127, + 240, + 135, + 108, + 25, + 61, + 236, + 255, + 206, + 193, + 66, + 48, + 213, + 200, + 149, + 117, + 142, + 100, + 228, + 97 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 94, + 191, + 207, + 1, + 152, + 165, + 209, + 151, + 109, + 157, + 123, + 95, + 3, + 204, + 221, + 65, + 100, + 72, + 255, + 123, + 38, + 203, + 48, + 203, + 30, + 72, + 27, + 114, + 55, + 138, + 224, + 237 + ], + [ + 127, + 194, + 246, + 186, + 38, + 165, + 157, + 111, + 1, + 200, + 89, + 202, + 78, + 236, + 129, + 103, + 87, + 186, + 127, + 143, + 10, + 214, + 172, + 52, + 22, + 111, + 237, + 250, + 66, + 79, + 147, + 60 + ], + [ + 52, + 129, + 226, + 205, + 87, + 19, + 28, + 77, + 156, + 116, + 48, + 2, + 216, + 151, + 105, + 226, + 117, + 251, + 217, + 72, + 125, + 75, + 129, + 115, + 168, + 11, + 151, + 133, + 59, + 149, + 53, + 243 + ] + ] + }, + { + "claimant": [ + 177, + 250, + 89, + 150, + 86, + 202, + 218, + 130, + 99, + 7, + 237, + 242, + 190, + 186, + 60, + 76, + 218, + 98, + 138, + 197, + 244, + 27, + 8, + 232, + 201, + 88, + 168, + 29, + 252, + 89, + 106, + 221 + ], + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 186, + 91, + 69, + 251, + 12, + 93, + 135, + 34, + 211, + 70, + 32, + 24, + 128, + 227, + 181, + 248, + 82, + 152, + 196, + 45, + 131, + 32, + 58, + 9, + 71, + 25, + 147, + 187, + 214, + 137, + 112, + 30 + ], + [ + 204, + 248, + 4, + 149, + 150, + 34, + 166, + 39, + 78, + 113, + 93, + 169, + 98, + 185, + 153, + 168, + 90, + 248, + 121, + 203, + 5, + 184, + 86, + 8, + 84, + 171, + 216, + 5, + 88, + 226, + 142, + 64 + ], + [ + 52, + 129, + 226, + 205, + 87, + 19, + 28, + 77, + 156, + 116, + 48, + 2, + 216, + 151, + 105, + 226, + 117, + 251, + 217, + 72, + 125, + 75, + 129, + 115, + 168, + 11, + 151, + 133, + 59, + 149, + 53, + 243 + ] + ] + } + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/2i5KAg1dm8udWaARan9hGBGpL7PTR7EFy2F6sKuK5ueS.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/2i5KAg1dm8udWaARan9hGBGpL7PTR7EFy2F6sKuK5ueS.json new file mode 100644 index 00000000..9fabc3d9 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/2i5KAg1dm8udWaARan9hGBGpL7PTR7EFy2F6sKuK5ueS.json @@ -0,0 +1,109 @@ +{ + "claimant": "2i5KAg1dm8udWaARan9hGBGpL7PTR7EFy2F6sKuK5ueS", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 80, + 26, + 83, + 247, + 179, + 6, + 4, + 55, + 174, + 28, + 87, + 209, + 235, + 11, + 239, + 18, + 207, + 196, + 194, + 189, + 207, + 39, + 143, + 64, + 85, + 179, + 38, + 61, + 215, + 70, + 125, + 194 + ], + [ + 127, + 194, + 246, + 186, + 38, + 165, + 157, + 111, + 1, + 200, + 89, + 202, + 78, + 236, + 129, + 103, + 87, + 186, + 127, + 143, + 10, + 214, + 172, + 52, + 22, + 111, + 237, + 250, + 66, + 79, + 147, + 60 + ], + [ + 52, + 129, + 226, + 205, + 87, + 19, + 28, + 77, + 156, + 116, + 48, + 2, + 216, + 151, + 105, + 226, + 117, + 251, + 217, + 72, + 125, + 75, + 129, + 115, + 168, + 11, + 151, + 133, + 59, + 149, + 53, + 243 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/3uiYpWUZhxNi6FNFtKh58FWLPBT1sMivRzcENu876xMV.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/3uiYpWUZhxNi6FNFtKh58FWLPBT1sMivRzcENu876xMV.json new file mode 100644 index 00000000..c945aefb --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/3uiYpWUZhxNi6FNFtKh58FWLPBT1sMivRzcENu876xMV.json @@ -0,0 +1,109 @@ +{ + "claimant": "3uiYpWUZhxNi6FNFtKh58FWLPBT1sMivRzcENu876xMV", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 117, + 183, + 206, + 162, + 195, + 159, + 124, + 151, + 163, + 18, + 147, + 83, + 74, + 68, + 46, + 149, + 155, + 193, + 8, + 30, + 9, + 142, + 98, + 96, + 184, + 14, + 203, + 213, + 175, + 172, + 246, + 215 + ], + [ + 169, + 148, + 160, + 64, + 73, + 148, + 36, + 47, + 106, + 95, + 70, + 4, + 54, + 45, + 37, + 152, + 17, + 157, + 194, + 12, + 206, + 164, + 60, + 21, + 122, + 206, + 28, + 0, + 71, + 156, + 177, + 33 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW.json new file mode 100644 index 00000000..d4553fc5 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW.json @@ -0,0 +1,109 @@ +{ + "claimant": "CykaFUdgwhWpJZxirvKw8mA6e4SRPkBzftPRzVT6hYKW", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 186, + 91, + 69, + 251, + 12, + 93, + 135, + 34, + 211, + 70, + 32, + 24, + 128, + 227, + 181, + 248, + 82, + 152, + 196, + 45, + 131, + 32, + 58, + 9, + 71, + 25, + 147, + 187, + 214, + 137, + 112, + 30 + ], + [ + 204, + 248, + 4, + 149, + 150, + 34, + 166, + 39, + 78, + 113, + 93, + 169, + 98, + 185, + 153, + 168, + 90, + 248, + 121, + 203, + 5, + 184, + 86, + 8, + 84, + 171, + 216, + 5, + 88, + 226, + 142, + 64 + ], + [ + 52, + 129, + 226, + 205, + 87, + 19, + 28, + 77, + 156, + 116, + 48, + 2, + 216, + 151, + 105, + 226, + 117, + 251, + 217, + 72, + 125, + 75, + 129, + 115, + 168, + 11, + 151, + 133, + 59, + 149, + 53, + 243 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GKJipHv2dn58S4fxFjdBjyGJY5KTvhY7mYAjUd2hMtFV.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GKJipHv2dn58S4fxFjdBjyGJY5KTvhY7mYAjUd2hMtFV.json new file mode 100644 index 00000000..bb0fa405 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GKJipHv2dn58S4fxFjdBjyGJY5KTvhY7mYAjUd2hMtFV.json @@ -0,0 +1,109 @@ +{ + "claimant": "GKJipHv2dn58S4fxFjdBjyGJY5KTvhY7mYAjUd2hMtFV", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 123, + 172, + 218, + 22, + 174, + 20, + 187, + 32, + 11, + 129, + 253, + 57, + 129, + 255, + 125, + 96, + 103, + 180, + 196, + 219, + 179, + 82, + 13, + 239, + 63, + 255, + 125, + 159, + 122, + 122, + 0, + 159 + ], + [ + 169, + 148, + 160, + 64, + 73, + 148, + 36, + 47, + 106, + 95, + 70, + 4, + 54, + 45, + 37, + 152, + 17, + 157, + 194, + 12, + 206, + 164, + 60, + 21, + 122, + 206, + 28, + 0, + 71, + 156, + 177, + 33 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GSYsz3FtJLREJYgRHKaLVpYU1acGfBR7v9KojErM18rk.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GSYsz3FtJLREJYgRHKaLVpYU1acGfBR7v9KojErM18rk.json new file mode 100644 index 00000000..857d0a81 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GSYsz3FtJLREJYgRHKaLVpYU1acGfBR7v9KojErM18rk.json @@ -0,0 +1,109 @@ +{ + "claimant": "GSYsz3FtJLREJYgRHKaLVpYU1acGfBR7v9KojErM18rk", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 94, + 191, + 207, + 1, + 152, + 165, + 209, + 151, + 109, + 157, + 123, + 95, + 3, + 204, + 221, + 65, + 100, + 72, + 255, + 123, + 38, + 203, + 48, + 203, + 30, + 72, + 27, + 114, + 55, + 138, + 224, + 237 + ], + [ + 127, + 194, + 246, + 186, + 38, + 165, + 157, + 111, + 1, + 200, + 89, + 202, + 78, + 236, + 129, + 103, + 87, + 186, + 127, + 143, + 10, + 214, + 172, + 52, + 22, + 111, + 237, + 250, + 66, + 79, + 147, + 60 + ], + [ + 52, + 129, + 226, + 205, + 87, + 19, + 28, + 77, + 156, + 116, + 48, + 2, + 216, + 151, + 105, + 226, + 117, + 251, + 217, + 72, + 125, + 75, + 129, + 115, + 168, + 11, + 151, + 133, + 59, + 149, + 53, + 243 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GVG6bQC6eT2MRDXewpFeFM2TbC7YE1efGwUoHAbxRAED.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GVG6bQC6eT2MRDXewpFeFM2TbC7YE1efGwUoHAbxRAED.json new file mode 100644 index 00000000..6084d3bf --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GVG6bQC6eT2MRDXewpFeFM2TbC7YE1efGwUoHAbxRAED.json @@ -0,0 +1,109 @@ +{ + "claimant": "GVG6bQC6eT2MRDXewpFeFM2TbC7YE1efGwUoHAbxRAED", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 115, + 60, + 63, + 207, + 145, + 193, + 27, + 212, + 162, + 132, + 103, + 146, + 236, + 22, + 22, + 232, + 40, + 208, + 247, + 58, + 226, + 33, + 63, + 213, + 235, + 19, + 97, + 48, + 27, + 22, + 188, + 208 + ], + [ + 68, + 46, + 71, + 47, + 13, + 81, + 121, + 18, + 142, + 155, + 87, + 77, + 50, + 5, + 93, + 10, + 229, + 55, + 156, + 183, + 201, + 149, + 75, + 166, + 252, + 80, + 210, + 91, + 148, + 18, + 22, + 75 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GZZvGELkzn19zMaPSGeMkcia3NXsPHakZs9nEkUvjZpV.json b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GZZvGELkzn19zMaPSGeMkcia3NXsPHakZs9nEkUvjZpV.json new file mode 100644 index 00000000..09d1f4a0 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/scripts/figure31-deploy/test/proofs_test_v2/GZZvGELkzn19zMaPSGeMkcia3NXsPHakZs9nEkUvjZpV.json @@ -0,0 +1,109 @@ +{ + "claimant": "GZZvGELkzn19zMaPSGeMkcia3NXsPHakZs9nEkUvjZpV", + "claim_price": 300000, + "max_claims": 5, + "proof": [ + [ + 37, + 29, + 32, + 135, + 132, + 86, + 175, + 132, + 195, + 213, + 255, + 62, + 179, + 180, + 162, + 157, + 110, + 234, + 128, + 208, + 125, + 116, + 253, + 167, + 228, + 137, + 186, + 8, + 178, + 67, + 40, + 116 + ], + [ + 68, + 46, + 71, + 47, + 13, + 81, + 121, + 18, + 142, + 155, + 87, + 77, + 50, + 5, + 93, + 10, + 229, + 55, + 156, + 183, + 201, + 149, + 75, + 166, + 252, + 80, + 210, + 91, + 148, + 18, + 22, + 75 + ], + [ + 123, + 143, + 220, + 185, + 217, + 138, + 114, + 20, + 16, + 72, + 7, + 164, + 221, + 140, + 71, + 244, + 239, + 184, + 43, + 184, + 249, + 84, + 45, + 138, + 199, + 103, + 211, + 218, + 193, + 25, + 216, + 32 + ] + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/addPhase.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/addPhase.ts new file mode 100644 index 00000000..8103c2cb --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/addPhase.ts @@ -0,0 +1,66 @@ +import { Connection} from "@solana/web3.js"; +import fs from "fs"; +import path from "path"; +import { Command } from "commander"; +import {addPhase} from "../instructions" +import {getWallet} from "@rarible_int/protocol-contracts-svm-core" + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Add phase to a control deployment") + .requiredOption("-k, --keypairPath ", "Keypair") + .requiredOption("-r, --rpc ", "RPC") + .requiredOption("-d, --deploymentId ", "controls ID") + .option("-s, --startTime ", "start time") + .option("-e, --endTime ", "end time") + .requiredOption("--maxMintsPerWallet ", "Max mints per wallet (total), 0 for unlimited") + .requiredOption("--maxMintsTotal ", "Max mints per phase (total across all wallets), 0 for unlimited") + .requiredOption("--priceAmount ", "Price per mint in lamports, can be 0") + .option("-m, --merkleRootPath ", "Path to JSON file containing merkle root") + .option("-p, --isPrivate ", "If true, the phase will be allow-list only") + .option("--ledger", "if you want to use ledger pass true") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + + // get merkle root from the provided path + let merkleRoot = null; + if (opts.merkleRootPath) { + const merkleData = JSON.parse(fs.readFileSync(path.resolve(opts.merkleRootPath), "utf8")); + merkleRoot = merkleData.merkle_root; + } + // if the phase is private, merkle root is required + if (opts.isPrivate) { + if (!merkleRoot) { + throw new Error("Merkle root is required for private phase"); + } + } + + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const {txid} = await addPhase({ + wallet, + params: { + maxMintsPerWallet: +opts.maxMintsPerWallet, + priceAmount: +opts.priceAmount, + maxMintsTotal: +opts.maxMintsTotal, + deploymentId: opts.deploymentId, + startTime: opts.startTime ? +opts.startTime : null, + endTime: opts.endTime ? +opts.endTime : null, + merkleRoot: merkleRoot ? merkleRoot : null, + isPrivate: opts.isPrivate ? true : false + }, + connection, + }); + + console.log(`txid: ${txid}`); + } catch (e) { + console.log({ e }); + } +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/createDeployment.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/createDeployment.ts new file mode 100644 index 00000000..0a000dcc --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/createDeployment.ts @@ -0,0 +1,113 @@ +import { Connection, PublicKey } from "@solana/web3.js"; + +import { Command } from "commander"; +import BN from "bn.js"; +import {createDeployment} from "../instructions/createControlDeployment" +import {getWallet} from "@rarible_int/protocol-contracts-svm-core" + +// Define CLI options +const cli = new Command(); + +cli + .version("1.0.0") + .description("Create an editions account==== with controls") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-s, --symbol ", "Symbol of the edition") + .requiredOption("-n, --collectionName ", "Name of the edition") + .requiredOption("-u, --collectionUri ", "JSON URL for metadata") + .requiredOption("-t, --treasuryWallet ", "Public key of the treasury wallet") + .requiredOption("--maxMintsPerWallet ", "Max mints per wallet, 0 for unlimited") + .requiredOption("--maxNumberOfTokens ", "Max number of tokens, 0 for unlimited") + .requiredOption("--creators ", "List of creators in the format '
:'") + .requiredOption("--royaltyBasisPoints ", "Royalty basis points (1000 = 10%)") + .option("--extraMeta ", "Extra metadata in the format ':'") + .requiredOption("--itemBaseUri ", "Base URI for the item metadata") + .requiredOption("--itemBaseName ", "Name for each item in the edition") + .option("--cosignerProgramId ", "Optional cosigner program ID (PublicKey)") + .requiredOption("--platformFeeValue ", "Platform fee value (e.g., amount in lamports or basis points)") + .option("--isFeeFlat", "Indicate if the platform fee is a flat amount") + .requiredOption("--platformFeeRecipients ", "List of platform fee recipients in the format '
:'") + .requiredOption("-r, --rpc ", "RPC endpoint") + .option("--ledger ", "if you want to use ledger pass true") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + try { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + // Parse creators input + const creators = opts.creators.map((creator: string) => { + const [address, share] = creator.split(":"); + if (!address || isNaN(parseInt(share))) { + throw new Error(`Invalid creator input: ${creator}. Expected format: '
:'`); + } + return { address: new PublicKey(address), share: parseInt(share) }; + }); + + // Parse platform fee recipients input + const platformFeeRecipients = opts.platformFeeRecipients.map((recipient: string) => { + const [address, share] = recipient.split(":"); + if (!address || isNaN(parseInt(share))) { + throw new Error(`Invalid platform fee recipient input: ${recipient}. Expected format: '
:'`); + } + return { address: new PublicKey(address), share: parseInt(share) }; + }); + + // Parse extra metadata input + const extraMeta = opts.extraMeta + ? opts.extraMeta.map((meta: string) => { + const [field, value] = meta.split(":"); + if (!field || !value) { + throw new Error(`Invalid extraMeta input: ${meta}. Expected format: ':'`); + } + return { field, value }; + }) + : []; + + // Parse cosigner program ID (if provided) + const cosignerProgramId = opts.cosignerProgramId ? new PublicKey(opts.cosignerProgramId) : null; + + // Prepare the royalties object + const royalties = { + royaltyBasisPoints: +opts.royaltyBasisPoints, // Note the camelCase field name + creators, + }; + + // Prepare the platform fee object + const platformFeeValue = new BN(opts.platformFeeValue); + const isFeeFlat = !!opts.isFeeFlat; // true if flag is provided, false otherwise + + const platformFee = { + platformFeeValue, + isFeeFlat, + recipients: platformFeeRecipients, + }; + + // Create the deployment + const { editions, editionsControls } = await createDeployment({ + wallet, + params: { + symbol: opts.symbol, + collectionName: opts.collectionName, + collectionUri: opts.collectionUri, + treasury: opts.treasuryWallet, + maxMintsPerWallet: +opts.maxMintsPerWallet, + maxNumberOfTokens: +opts.maxNumberOfTokens, + royalties, + platformFee, + extraMeta, + itemBaseUri: opts.itemBaseUri, + itemBaseName: opts.itemBaseName, + cosignerProgramId, + }, + connection, + }); + + console.log(`New edition id: ${editions.toBase58()}, controls: ${editionsControls.toBase58()}`); + } catch (e) { + console.error("Error creating deployment:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/index.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/index.ts new file mode 100644 index 00000000..e71b8961 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/index.ts @@ -0,0 +1,5 @@ +export * from './addPhase'; +export * from './createDeployment'; +export * from './mintWithControls'; +export * from './modifyPlatformFee'; +export * from './modifyRoyalties'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/mintWithControls.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/mintWithControls.ts new file mode 100644 index 00000000..aa31d2f7 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/mintWithControls.ts @@ -0,0 +1,64 @@ +import fs from "fs"; +import path from "path"; +import { Command } from "commander"; +import { Connection } from "@solana/web3.js"; +import {mintWithControls} from "../instructions" +import {getWallet} from "@rarible_int/protocol-contracts-svm-core" + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Mint from controls deployment") + .requiredOption("-k, --keypairPath ", "Keypair") + .requiredOption("-d, --deploymentId ", "Deployment id") + .requiredOption("-r, --rpc ", "RPC") + .requiredOption("-p, --phaseIndex ", "Phase index") + .requiredOption("-n, --numberOfMints ", "Number of mints") + .option("-m, --merkleProofPath ", "Path to JSON file containing merkle proof") + .option("-a, --allowListPrice ", "Allow list price") + .option("-c, --allowListMaxClaims ", "Allow list max claims") + .option("--recipient, --recipient ", "recipient of nft") + .option("--ledger", "if you want to use ledger pass true") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + + let merkleProof = null; + if (opts.merkleProofPath) { + const merkleData = JSON.parse(fs.readFileSync(opts.merkleProofPath, "utf8")); + merkleProof = merkleData.proof; + } + + const isAllowListMint = !!merkleProof; + if (isAllowListMint) { + if (!opts.allowListPrice || !opts.allowListMaxClaims) { + throw Error("Allow list price and allow list max claims are required for allow list mint"); + } + } + + const wallet = await getWallet(opts.ledger, opts.keypairPath); + await mintWithControls({ + wallet: wallet, + params: { + editionsId: opts.deploymentId, + phaseIndex: +opts.phaseIndex, + numberOfMints: +opts.numberOfMints, + merkleProof: merkleProof, + allowListPrice: isAllowListMint ? opts.allowListPrice : null, + allowListMaxClaims: isAllowListMint ? opts.allowListMaxClaims : null, + isAllowListMint, + recipient: opts.recipient, + }, + connection, + }) + .catch(error => { + console.error("Error during minting: ", JSON.stringify(error, null, 2)); + }) + .finally(() => { + console.log("Finished minting"); + }); +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/mintWithControlsMany.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/mintWithControlsMany.ts new file mode 100644 index 00000000..48d2b99a --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/mintWithControlsMany.ts @@ -0,0 +1,72 @@ +import fs from "fs"; +import path from "path"; +import { Command } from "commander"; +import { Connection } from "@solana/web3.js"; +import {mintWithControls} from "../instructions" +import {getWallet, sleep} from "@rarible_int/protocol-contracts-svm-core" + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Mint from controls deployment") + .requiredOption("-k, --keypairPath ", "Keypair") + .requiredOption("-d, --deploymentId ", "Deployment id") + .requiredOption("-r, --rpc ", "RPC") + .requiredOption("-p, --phaseIndex ", "Phase index") + .requiredOption("-n, --numberOfMints ", "Number of mints") + .option("-m, --merkleProofPath ", "Path to JSON file containing merkle proof") + .option("-a, --allowListPrice ", "Allow list price") + .option("-c, --allowListMaxClaims ", "Allow list max claims") + .option("--qty, --qty ", "now many tokens to mint") + .option("--ledger", "if you want to use ledger pass true") + .option("--recipient, --recipient ", "recipient of nft") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + + let merkleProof = null; + if (opts.merkleProofPath) { + const merkleData = JSON.parse(fs.readFileSync(opts.merkleProofPath, "utf8")); + merkleProof = merkleData.proof; + } + + const isAllowListMint = !!merkleProof; + if (isAllowListMint) { + if (!opts.allowListPrice || !opts.allowListMaxClaims) { + throw Error("Allow list price and allow list max claims are required for allow list mint"); + } + } + + const wallet = await getWallet(opts.ledger, opts.keypairPath); + for(let i = 0; i < opts.qty; i++) { + + const res = await mintWithControls({ + wallet: wallet, + params: { + editionsId: opts.deploymentId, + phaseIndex: +opts.phaseIndex, + numberOfMints: +opts.numberOfMints, + merkleProof: merkleProof, + allowListPrice: isAllowListMint ? opts.allowListPrice : null, + allowListMaxClaims: isAllowListMint ? opts.allowListMaxClaims : null, + isAllowListMint, + recipient: opts.recipient, + }, + connection, + }) + .catch(error => { + console.error("Error during minting: ", JSON.stringify(error, null, 2)); + }) + .finally(() => { + console.log("Finished minting"); + }); + + console.log("mint i:", i, (res as any).tokenAccount) + await sleep(200); + } + +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/modifyPhase.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/modifyPhase.ts new file mode 100644 index 00000000..eea27620 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/modifyPhase.ts @@ -0,0 +1,72 @@ +import { Connection, PublicKey } from "@solana/web3.js"; +import fs from "fs"; +import path from "path"; +import { Command } from "commander"; +import { modifyPhase } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; + +const cli = new Command(); + + +cli + .version("1.0.0") + .description("Add phase to a control deployment") + .requiredOption("-k, --keypairPath ", "Keypair") + .requiredOption("-r, --rpc ", "RPC") + .requiredOption("-d, --deploymentId ", "controls ID") + .option("-s, --startTime ", "start time") + .option("-e, --endTime ", "end time") + .requiredOption("--maxMintsPerWallet ", "Max mints per wallet (total), 0 for unlimited") + .requiredOption("--maxMintsTotal ", "Max mints per phase (total across all wallets), 0 for unlimited") + .requiredOption("--priceAmount ", "Price per mint in lamports, can be 0") + .requiredOption("--phaseIndex ", "Phase index, can be 0") + .option("-m, --merkleRootPath ", "Path to JSON file containing merkle root") + .option("-p, --isPrivate ", "If true, the phase will be allow-list only") + .option("--ledger", "if you want to use ledger pass true") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + + // Get merkle root from the provided path + let merkleRoot = null; + if (opts.merkleRootPath) { + const merkleData = JSON.parse( + fs.readFileSync(path.resolve(opts.merkleRootPath), "utf8") + ); + merkleRoot = merkleData.merkle_root; + } + + // If the phase is private, merkle root is required + if (opts.isPrivate && !merkleRoot) { + throw new Error("Merkle root is required for a private phase"); + } + + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid } = await modifyPhase({ + wallet, + params: { + deploymentId: opts.deploymentId, + phaseIndex: opts.phaseIndex, + priceAmount: opts.priceAmount, + maxMintsPerWallet: opts.maxMintsPerWallet, + maxMintsTotal: opts.maxMintsTotal, + startTime: opts.startTime ? +opts.startTime : null, + endTime: opts.endTime ? +opts.endTime : null, + merkleRoot: merkleRoot, + isPrivate: opts.isPrivate ? opts.isPrivate : false, + active: opts.active ? opts.active : true, + priceToken: opts.priceToken ? opts.priceToken : "So11111111111111111111111111111111111111112" + }, + connection, + }); + + console.log(`Transaction successful. txid: ${txid}`); + } catch (e) { + console.error("An error occurred while modifying the phase:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/modifyPlatformFee.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/modifyPlatformFee.ts new file mode 100644 index 00000000..cd34026e --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/modifyPlatformFee.ts @@ -0,0 +1,79 @@ +#!/usr/bin/env ts-node + +import { Connection, Keypair, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import BN from "bn.js"; +import {modifyPlatformFee} from "../instructions" +import {getWallet} from "@rarible_int/protocol-contracts-svm-core" + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Modify platform fee for a specific NFT edition deployment") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint") + .requiredOption( + "-d, --deploymentId ", + "ID of the deployment to update platform fee" + ) + .requiredOption( + "--platformFeeValue ", + "New platform fee value (e.g., amount in lamports or basis points)" + ) + .option( + "--isFeeFlat", + "Indicate if the platform fee is a flat amount. If not provided, it is considered percentage-based." + ) + .requiredOption( + "--recipients ", + "List of recipients and their shares in the format 'address:share,address:share' (e.g., '8YkPQFLXq23z7Xz1W4oS:50,FzPQA3drtY9xZGR:50')" + ) + .option("--ledger", "if you want to use ledger pass true") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + + // Read the keypair file to create a wallet + console.log("wallet 0") + const wallet = await getWallet(opts.ledger, opts.keypairPath); + console.log("wallet 1") + // Parse the recipients input (address:share pairs) + const recipients = opts.recipients.split(",").map((recipient: string) => { + const [address, share] = recipient.split(":"); + if (!address || isNaN(parseInt(share))) { + throw new Error( + `Invalid recipient input: ${recipient}. Expected format: 'address:share'` + ); + } + return { address: new PublicKey(address), share: parseInt(share) }; + }); + console.log("wallet 2") + // Parse platform fee value and isFeeFlat flag + const platformFeeValue = new BN(opts.platformFeeValue); + const isFeeFlat = !!opts.isFeeFlat; + console.log("wallet 3", opts.deploymentId, platformFeeValue, isFeeFlat, recipients) + try { + // Call modifyPlatformFee function to update platform fee on-chain + const { editions, txid } = await modifyPlatformFee({ + wallet: wallet, + params: { + editionsId: opts.deploymentId, + platformFeeValue, + isFeeFlat, + recipients, + }, + connection, + }); + + console.log( + `Platform fee updated successfully for editions: ${editions.toBase58()}` + ); + console.log(`Transaction ID: ${txid}`); + } catch (e) { + console.error("Error updating platform fee:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/cli/modifyRoyalties.ts b/packages/protocol-contracts-svm-editions-controls/src/cli/modifyRoyalties.ts new file mode 100644 index 00000000..6154f356 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/cli/modifyRoyalties.ts @@ -0,0 +1,53 @@ +export {}; +import { Connection, Keypair, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import {modifyRoyalties} from "../instructions" +import {getWallet} from "@rarible_int/protocol-contracts-svm-core" + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Modify royalties for a specific NFT edition deployment") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint") + .requiredOption("-d, --deploymentId ", "ID of the deployment to update royalties") + .requiredOption("--royaltyBasisPoints ", "New royalty basis points (e.g., 500 for 5%)") + .requiredOption( + "--creators ", + "List of creators and their shares in the format 'address:share,address:share' (e.g., '8YkPQFLXq23z7Xz1W4oS:50,FzPQA3drtY9xZGR:50')" + ) + .option("--ledger", "if you want to use ledger pass true") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + + // Read the keypair file to create a wallet + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + // Parse the creators input (address:share pairs) + const creators = opts.creators.split(",").map((creator: string) => { + const [address, share] = creator.split(":"); + return { address: new PublicKey(address), share: Number(share) }; + }); + + try { + // Call modifyRoyalties function to update royalties on-chain + const { editions } = await modifyRoyalties({ + wallet: wallet, + params: { + editionsId: opts.deploymentId, + royaltyBasisPoints: Number(opts.royaltyBasisPoints), + creators, + }, + connection, + }); + + console.log(`Royalties updated successfully for editions: ${editions}`); + } catch (e) { + console.error("Error updating royalties:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-editions-controls/src/index.ts b/packages/protocol-contracts-svm-editions-controls/src/index.ts new file mode 100644 index 00000000..0d0a508c --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/index.ts @@ -0,0 +1,3 @@ +export * from './instructions'; +export * from './model'; +export * from './utils'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/addPhase.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/addPhase.ts new file mode 100644 index 00000000..07e4aa66 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/addPhase.ts @@ -0,0 +1,87 @@ +import { + Keypair, + SystemProgram, + Transaction, + TransactionInstruction, + PublicKey, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import BN from "bn.js"; + +import { TOKEN_2022_PROGRAM_ID } from "spl-token-4"; +import { getProgramInstanceEditions } from "@rarible_int/protocol-contracts-svm-core"; +import { getProgramInstanceEditionsControls } from "@rarible_int/protocol-contracts-svm-core"; +import { getEditionsControlsPda } from "../utils"; +import { IExecutorParams } from "@rarible_int/protocol-contracts-svm-core"; +import { sendSignedTransaction } from "@rarible_int/protocol-contracts-svm-core"; +import { IAddPhase } from "../model"; + +export const addPhase = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const { + deploymentId, + priceAmount, + maxMintsTotal, + maxMintsPerWallet, + startTime, + endTime, + merkleRoot, + isPrivate, + } = params; + + const editionProgram = getProgramInstanceEditionsControls(connection); + + const raribleEditionsProgram = getProgramInstanceEditions(connection); + + const instructions: TransactionInstruction[] = []; + + const controls = getEditionsControlsPda(new PublicKey(deploymentId)); + + instructions.push( + await editionProgram.methods + .addPhase({ + priceAmount: new BN(priceAmount), + priceToken: new PublicKey( + "So11111111111111111111111111111111111111112" + ), + startTime: + startTime !== undefined + ? new BN(startTime) + : new BN(new Date().getTime() / 1000), + maxMintsPerWallet: new BN(maxMintsPerWallet), + maxMintsTotal: new BN(maxMintsTotal), + /// max i64 value - this is open ended + endTime: + endTime !== undefined ? new BN(endTime) : new BN(9007199254740991), + merkleRoot: merkleRoot, + isPrivate: isPrivate, + }) + .accountsStrict({ + editionsControls: controls, + creator: wallet.publicKey, + payer: wallet.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: raribleEditionsProgram.programId, + }) + .signers([]) + .instruction() + ); + + // transaction boilerplate - ignore for now + const tx = new Transaction().add(...instructions); + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { txid }; +}; diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/createControlDeployment.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/createControlDeployment.ts new file mode 100644 index 00000000..83c10679 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/createControlDeployment.ts @@ -0,0 +1,136 @@ +import { + Keypair, + SystemProgram, + Transaction, + TransactionInstruction, + PublicKey, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import BN from "bn.js"; + +import { TOKEN_2022_PROGRAM_ID } from "spl-token-4"; +import { getProgramInstanceEditions } from "@rarible_int/protocol-contracts-svm-core"; +import { getEditionsPda, loadOrCreateKeypair } from "../utils"; +import {IExecutorParams} from "@rarible_int/protocol-contracts-svm-core"; +import { sendSignedTransaction } from "@rarible_int/protocol-contracts-svm-core"; +import { getHashlistPda } from "../utils"; +import { getProgramInstanceEditionsControls } from "@rarible_int/protocol-contracts-svm-core"; +import { getEditionsControlsPda } from "../utils"; +import { PROGRAM_ID_GROUP_EXTENSIONS } from "@rarible_int/protocol-contracts-svm-core"; +import { IInitializeLaunch } from "../model"; + + +export const createDeployment = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const { + symbol, + collectionUri, + treasury, + maxMintsPerWallet, + maxNumberOfTokens, + collectionName, + royalties, + platformFee, // Destructure platformFee from params + extraMeta, + itemBaseUri, + itemBaseName, + cosignerProgramId, + } = params; + + const editionsControlsProgram = getProgramInstanceEditionsControls(connection); + + const editions = getEditionsPda(symbol); + const editionsControls = getEditionsControlsPda(editions); + + const groupMint = loadOrCreateKeypair(`group-mint-${symbol}.json`, "target/deploy"); + const group = loadOrCreateKeypair(`group-${symbol}.json`, "target/deploy"); + console.log({ groupMint: groupMint.publicKey.toBase58() }); + + const hashlist = getHashlistPda(editions)[0]; + + const raribleEditionsProgram = getProgramInstanceEditions(connection); + const instructions: TransactionInstruction[] = []; + + // Ensure creators' addresses are PublicKey instances for royalties + const royaltyCreatorsWithPublicKeys = royalties.creators.map((creator) => ({ + address: new PublicKey(creator.address), + share: creator.share, + })); + + // Prepare the royalties object with camelCase field names + const royaltiesArgs = { + royaltyBasisPoints: royalties.royaltyBasisPoints, + creators: royaltyCreatorsWithPublicKeys, + }; + + // Ensure recipients' addresses are PublicKey instances for platform fee + const platformFeeRecipientsWithPublicKeys = platformFee.recipients.map((recipient) => ({ + address: new PublicKey(recipient.address), + share: recipient.share, + })); + + // Prepare the platform fee object with platformFeeValue as BN + const platformFeeArgs = { + platformFeeValue: new BN(platformFee.platformFeeValue), // Convert to BN + recipients: platformFeeRecipientsWithPublicKeys, + isFeeFlat: platformFee.isFeeFlat, + }; + + // Creates an open editions launch with extra metadata, royalties, and platform fee + instructions.push( + await editionsControlsProgram.methods + .initialiseEditionsControls({ + maxMintsPerWallet: new BN(maxMintsPerWallet), + treasury: new PublicKey(treasury), + maxNumberOfTokens: new BN(maxNumberOfTokens), + symbol, + collectionName, + collectionUri, + cosignerProgramId: cosignerProgramId ?? null, + royalties: royaltiesArgs, + platformFee: platformFeeArgs, // Pass the platform fee arguments + extraMeta, + itemBaseUri, + itemBaseName, + }) + .accountsStrict({ + editionsControls, + editionsDeployment: editions, + hashlist, + payer: wallet.publicKey, + creator: wallet.publicKey, + groupMint: groupMint.publicKey, + group: group.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: raribleEditionsProgram.programId, + groupExtensionProgram: PROGRAM_ID_GROUP_EXTENSIONS, + }) + .signers([groupMint, group]) + .instruction() + ); + + // Modify compute units for the transaction + const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({ + units: 800000, + }); + + // Transaction setup + const tx = new Transaction().add(modifyComputeUnits).add(...instructions); + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + tx.sign(groupMint, group); + await wallet.signTransaction(tx); + + // Send transaction + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { editions, editionsControls }; +}; diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/index.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/index.ts new file mode 100644 index 00000000..84c8883d --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/index.ts @@ -0,0 +1,6 @@ +export * from './modifyRoyalties'; +export * from './addPhase'; +export * from './mintWithControls'; +export * from './modifyPlatformFee'; +export * from './createControlDeployment'; +export * from './modifyPhase'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/mintWithControls.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/mintWithControls.ts new file mode 100644 index 00000000..476f770a --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/mintWithControls.ts @@ -0,0 +1,236 @@ +import { + Connection, + Keypair, + SystemProgram, + Transaction, + TransactionInstruction, + PublicKey, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import BN from "bn.js"; + +import { + TOKEN_2022_PROGRAM_ID, + getAssociatedTokenAddressSync, + ASSOCIATED_TOKEN_PROGRAM_ID, + createAssociatedTokenAccountInstruction, + createTransferInstruction, +} from "spl-token-4"; +import { getProgramInstanceEditions } from "@rarible_int/protocol-contracts-svm-core"; +import { getProgramInstanceEditionsControls } from "@rarible_int/protocol-contracts-svm-core/src/program"; +import { + getEditionsControlsPda, + getHashlistPda, + getHashlistMarkerPda, + getMinterStatsPda, + getMinterStatsPhasePda, +} from "../utils"; +import { IExecutorParams } from "@rarible_int/protocol-contracts-svm-core/src/IExecutorParams"; +import { sendSignedTransaction } from "@rarible_int/protocol-contracts-svm-core/src/txUtils"; +import { + decodeEditions, + decodeEditionsControls, +} from "@rarible_int/protocol-contracts-svm-core/src/program"; +import { PROGRAM_ID_GROUP_EXTENSIONS } from "@rarible_int/protocol-contracts-svm-core/src/program"; +import { IMintWithControls } from "../model"; + +const MAX_MINTS_PER_TRANSACTION = 3; + +export const mintWithControls = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const { + phaseIndex, + editionsId, + numberOfMints, + merkleProof, + allowListPrice, + allowListMaxClaims, + isAllowListMint, + recipient, + } = params; + + const editionsControlsProgram = + getProgramInstanceEditionsControls(connection); + + const editions = new PublicKey(editionsId); + + const editionsData = await connection.getAccountInfo(editions); + + if (!editionsData) { + throw Error("Editions not found"); + } + + const raribleEditionsProgram = getProgramInstanceEditions(connection); + + const editionsObj = decodeEditions(raribleEditionsProgram)( + editionsData.data, + editions + ); + + const editionsControlsPda = getEditionsControlsPda(editions); + + const editionsControlsData = await connection.getAccountInfo( + editionsControlsPda + ); + + const editionsControlsObj = decodeEditionsControls(editionsControlsProgram)( + editionsControlsData.data, + editionsControlsPda + ); + + const hashlist = getHashlistPda(editions)[0]; + + const minterStats = getMinterStatsPda(editions, wallet.publicKey)[0]; + + const minterStatsPhase = getMinterStatsPhasePda( + editions, + wallet.publicKey, + phaseIndex + )[0]; + + let remainingMints = numberOfMints; + + let txs: Transaction[] = []; + let ta: PublicKey = undefined; + while (remainingMints > 0) { + const instructions: TransactionInstruction[] = []; + /// creates an open editions launch + + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + const mints: Keypair[] = []; + const members: Keypair[] = []; + + for ( + let i = 0; + i < Math.min(MAX_MINTS_PER_TRANSACTION, remainingMints); + ++i + ) { + const mint = Keypair.generate(); + const member = Keypair.generate(); + + mints.push(mint); + members.push(member); + + const tokenAccount = getAssociatedTokenAddressSync( + mint.publicKey, + wallet.publicKey, + false, + TOKEN_2022_PROGRAM_ID + ); + ta = tokenAccount; + + const hashlistMarker = getHashlistMarkerPda(editions, mint.publicKey)[0]; + + instructions.push( + await editionsControlsProgram.methods + .mintWithControls({ + phaseIndex, + merkleProof: isAllowListMint ? merkleProof : null, + allowListPrice: isAllowListMint ? new BN(allowListPrice) : null, + allowListMaxClaims: isAllowListMint + ? new BN(allowListMaxClaims) + : null, + }) + .accountsStrict({ + editionsDeployment: editions, + editionsControls: editionsControlsPda, + payer: wallet.publicKey, + mint: mint.publicKey, + member: member.publicKey, + minterStats, + minterStatsPhase, + group: editionsObj.item.group, + groupMint: editionsObj.item.groupMint, + platformFeeRecipient1: + editionsControlsObj.item.platformFeeRecipients[0].address, + groupExtensionProgram: PROGRAM_ID_GROUP_EXTENSIONS, + tokenAccount, + treasury: editionsControlsObj.item.treasury, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: raribleEditionsProgram.programId, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + }) + .signers([mint, member]) + .instruction() + ); + if (recipient) { + const recipientPK = new PublicKey(recipient); + // Transfer the token to the recipient after minting + // First, ensure the recipient's associated token account exists + const recipientTokenAccount = getAssociatedTokenAddressSync( + mint.publicKey, + recipientPK, + false, + TOKEN_2022_PROGRAM_ID + ); + + // Check if the recipient's token account exists + const recipientTokenAccountInfo = await connection.getAccountInfo( + recipientTokenAccount + ); + + if (!recipientTokenAccountInfo) { + // Create the recipient's associated token account + instructions.push( + createAssociatedTokenAccountInstruction( + wallet.publicKey, + recipientTokenAccount, + recipientPK, + mint.publicKey, + TOKEN_2022_PROGRAM_ID, + ASSOCIATED_TOKEN_PROGRAM_ID + ) + ); + } + + // Add transfer instruction + instructions.push( + createTransferInstruction( + tokenAccount, // Source (minter's token account) + recipientTokenAccount, // Destination (recipient's token account) + wallet.publicKey, // Owner of the source account + 1, // Amount to transfer (assuming NFTs have a supply of 1) + [], + TOKEN_2022_PROGRAM_ID + ) + ); + } + } + + remainingMints -= MAX_MINTS_PER_TRANSACTION; + + // transaction boilerplate - ignore for now + const tx = new Transaction().add(...instructions); + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + tx.sign(...mints, ...members); + txs.push(tx); + } + + await wallet.signAllTransactions(txs); + + for (let txi in txs) { + await sendSignedTransaction({ + signedTransaction: txs[txi], + connection, + skipPreflight: false, + }); + } + + console.log("Minting successful."); + + return { + tokenAccount: ta.toBase58(), + editions, + editionsControls: editionsControlsPda, + }; +}; diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyPhase.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyPhase.ts new file mode 100644 index 00000000..4455772f --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyPhase.ts @@ -0,0 +1,84 @@ +import { + Keypair, + SystemProgram, + Transaction, + TransactionInstruction, + PublicKey, + } from "@solana/web3.js"; + import BN from "bn.js"; + + import { TOKEN_2022_PROGRAM_ID } from "spl-token-4"; + import { getProgramInstanceEditions } from "@rarible_int/protocol-contracts-svm-core"; + import { getProgramInstanceEditionsControls } from "@rarible_int/protocol-contracts-svm-core"; + import { getEditionsControlsPda } from "../utils"; + import { IExecutorParams } from "@rarible_int/protocol-contracts-svm-core"; + import { sendSignedTransaction } from "@rarible_int/protocol-contracts-svm-core"; + import { IModifyPhase } from "../model"; + + export const modifyPhase = async ({ + wallet, + params, + connection, + }: IExecutorParams) => { + const { + deploymentId, + priceAmount, + priceToken, + maxMintsTotal, + maxMintsPerWallet, + startTime, + endTime, + merkleRoot, + isPrivate, + active, + phaseIndex, + } = params; + + const editionProgram = getProgramInstanceEditionsControls(connection); + const raribleEditionsProgram = getProgramInstanceEditions(connection); + + const instructions: TransactionInstruction[] = []; + + const controls = getEditionsControlsPda(new PublicKey(deploymentId)); + + instructions.push( + await editionProgram.methods + .modifyPhase({ + priceAmount: new BN(priceAmount), + priceToken: new PublicKey(priceToken), + startTime: new BN(startTime), + maxMintsPerWallet: new BN(maxMintsPerWallet), + maxMintsTotal: new BN(maxMintsTotal), + endTime: new BN(endTime), + merkleRoot: merkleRoot, + isPrivate: isPrivate, + active: active, + phaseIndex: phaseIndex, + }) + .accountsStrict({ + editionsControls: controls, + creator: wallet.publicKey, + payer: wallet.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: raribleEditionsProgram.programId, + }) + .signers([]) + .instruction() + ); + + // Transaction boilerplate + const tx = new Transaction().add(...instructions); + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { txid }; + }; + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyPlatformFee.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyPlatformFee.ts new file mode 100644 index 00000000..4a1875cb --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyPlatformFee.ts @@ -0,0 +1,82 @@ +import { + Transaction, + PublicKey, + SystemProgram, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import BN from "bn.js"; + +import { getEditionsControlsPda } from "../utils"; +import { decodeEditions, decodeEditionsControls, getProgramInstanceEditions, getProgramInstanceEditionsControls } from "@rarible_int/protocol-contracts-svm-core"; +import { IExecutorParams } from "@rarible_int/protocol-contracts-svm-core"; +import { sendSignedTransaction } from "@rarible_int/protocol-contracts-svm-core"; +import { IModifyPlatformFee } from "../model"; + +export const modifyPlatformFee = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const { editionsId, platformFeeValue, isFeeFlat, recipients } = params; + + const editionsControlsProgram = getProgramInstanceEditionsControls(connection); + + const editions = new PublicKey(editionsId); + const editionsData = await connection.getAccountInfo(editions); + + if (!editionsData) { + throw Error("Editions not found"); + } + + const editionsControlsPda = getEditionsControlsPda(editions)[0]; + const editionsControlsData = await connection.getAccountInfo(editionsControlsPda); + + if (!editionsControlsData) { + throw Error("Editions controls not found"); + } + + // Create the instruction to modify the platform fee + const instruction = await editionsControlsProgram.methods + .modifyPlatformFee({ + platformFeeValue: new BN(platformFeeValue), // Ensure it's a BN instance + isFeeFlat, + recipients, + }) + .accountsStrict({ + editionsControls: editionsControlsPda, + editionsDeployment: editions, + payer: wallet.publicKey, + creator: wallet.publicKey, + }) + .signers([]) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { editions, txid }; +}; diff --git a/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyRoyalties.ts b/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyRoyalties.ts new file mode 100644 index 00000000..5bd0fed3 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/instructions/modifyRoyalties.ts @@ -0,0 +1,104 @@ +import { + Transaction, + PublicKey, + SystemProgram, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import BN from "bn.js"; + +import { getEditionsControlsPda } from "../utils"; +import { + decodeEditions, + decodeEditionsControls, + getProgramInstanceEditions, + getProgramInstanceEditionsControls, +} from "@rarible_int/protocol-contracts-svm-core"; +import { IExecutorParams } from "@rarible_int/protocol-contracts-svm-core"; +import { sendSignedTransaction } from "@rarible_int/protocol-contracts-svm-core"; +import { TOKEN_2022_PROGRAM_ID } from "spl-token-4"; + +// Arguments for modifying royalties +export interface IModifyRoyalties { + editionsId: string; + royaltyBasisPoints: number; + creators: { address: PublicKey; share: number }[]; +} + +export const modifyRoyalties = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const { editionsId, royaltyBasisPoints, creators } = params; + + const raribleEditionsProgram = getProgramInstanceEditions(connection); + const editionsControlsProgram = getProgramInstanceEditionsControls(connection); + + const editions = new PublicKey(editionsId); + const editionsData = await connection.getAccountInfo(editions); + if (!editionsData) { + throw Error("Editions not found"); + } + + const editionsObj = decodeEditions(raribleEditionsProgram)( + editionsData.data, + editions + ); + + const editionsControlsPda = getEditionsControlsPda(editions)[0]; + const editionsControlsData = await connection.getAccountInfo(editionsControlsPda); + if (!editionsControlsData) { + throw Error("Editions controls not found"); + } + + const editionsControlsObj = decodeEditionsControls(editionsControlsProgram)( + editionsControlsData.data, + editionsControlsPda + ); + + // Create the instruction to modify royalties + const instruction = await editionsControlsProgram.methods + .modifyRoyalties({ + royaltyBasisPoints, + creators, + }) + .accountsStrict({ + editionsControls: editionsControlsPda, + editionsDeployment: editions, + payer: wallet.publicKey, + creator: wallet.publicKey, + mint: editionsObj.item.groupMint, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: raribleEditionsProgram.programId, + }) + .signers([]) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { editions, txid }; +}; diff --git a/packages/protocol-contracts-svm-editions-controls/src/model/index.ts b/packages/protocol-contracts-svm-editions-controls/src/model/index.ts new file mode 100644 index 00000000..dbe28675 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/model/index.ts @@ -0,0 +1,91 @@ + +import { + Keypair, + SystemProgram, + Transaction, + TransactionInstruction, + PublicKey, + ComputeBudgetProgram, + } from "@solana/web3.js"; + import BN from "bn.js"; + +export interface CreatorWithShare { + address: PublicKey; + share: number; + } + + export interface MetadataField { + field: string; + value: string; + } + + export interface UpdateRoyaltiesArgs { + royaltyBasisPoints: number; // Note the camelCase field name + creators: CreatorWithShare[]; + } + + // New interface for platform fee arguments + export interface UpdatePlatformFeeArgs { + platformFeeValue: BN; + recipients: CreatorWithShare[]; + isFeeFlat: boolean; + } + + export interface IInitializeLaunch { + symbol: string; + collectionUri: string; + treasury: string; + collectionName: string; + maxMintsPerWallet: number; // set to 0 for unlimited + maxNumberOfTokens: number; // set to 0 for unlimited + royalties: UpdateRoyaltiesArgs; // royalties info (basis points and creators) + platformFee: UpdatePlatformFeeArgs; // platform fee info + extraMeta: MetadataField[]; // array of extra metadata fields + itemBaseUri: string; // URI for item base metadata + itemBaseName: string; // Name for each item + cosignerProgramId?: PublicKey | null; // Optional cosigner program + } + + export interface IAddPhase { + maxMintsPerWallet: number; // set to 0 for unlimited + priceAmount: number, + maxMintsTotal: number, + deploymentId: string, + startTime: number | undefined, + endTime: number | undefined, + merkleRoot?: number[], + isPrivate?: boolean + } + + export interface IMintWithControls { + phaseIndex: number; + editionsId: string; + numberOfMints: number; + merkleProof?: number[][]; + allowListPrice?: number; + allowListMaxClaims?: number; + isAllowListMint: boolean; + recipient?: string; + } + + // Arguments for modifying platform fee +export interface IModifyPlatformFee { + editionsId: string; + platformFeeValue: BN; // Should be BN if required + isFeeFlat: boolean; + recipients: { address: PublicKey; share: number }[]; +} + +export interface IModifyPhase { + deploymentId: string; + priceAmount: number; + priceToken: string; // PublicKey as string + maxMintsTotal: number; + maxMintsPerWallet: number; + startTime: number; + endTime: number; + merkleRoot: number[] | null; // Assuming merkleRoot is an array of numbers or null + isPrivate: boolean; + active: boolean; + phaseIndex: number; +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-editions-controls/src/utils/index.ts b/packages/protocol-contracts-svm-editions-controls/src/utils/index.ts new file mode 100644 index 00000000..24675657 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/src/utils/index.ts @@ -0,0 +1,75 @@ +import { Keypair, PublicKey } from "@solana/web3.js"; +import { PROGRAM_ID_EDITIONS } from "@rarible_int/protocol-contracts-svm-core" +import { PROGRAM_ID_EDITIONS_CONTROLS } from "@rarible_int/protocol-contracts-svm-core" +import { toBufferLE } from "bigint-buffer"; +import path from "path"; +import fs from "fs"; + + +export const getHashlistPda = (deployment: PublicKey) => { + return PublicKey.findProgramAddressSync( + [Buffer.from("hashlist"), deployment.toBuffer()], + new PublicKey(PROGRAM_ID_EDITIONS) + ); +}; + +export const getEditionsPda = (symbol: string) => { + return PublicKey.findProgramAddressSync( + [Buffer.from("editions_deployment"), Buffer.from(symbol)], + new PublicKey(PROGRAM_ID_EDITIONS) + )[0]; +}; + + +export const getHashlistMarkerPda = (editionsDeployment: PublicKey, mint: PublicKey) => { + return PublicKey.findProgramAddressSync( + [Buffer.from("hashlist_marker"), editionsDeployment.toBuffer(), mint.toBuffer()], + new PublicKey(PROGRAM_ID_EDITIONS) + ); +}; + + +export const getEditionsControlsPda = (editionsDeployment: PublicKey) => { + return PublicKey.findProgramAddressSync( + [Buffer.from("editions_controls"), editionsDeployment.toBuffer()], + new PublicKey(PROGRAM_ID_EDITIONS_CONTROLS) + )[0]; +}; + +export const getMinterStatsPda = (deployment: PublicKey, minter: PublicKey) => { + return PublicKey.findProgramAddressSync( + [Buffer.from("minter_stats"), deployment.toBuffer(), minter.toBuffer()], + new PublicKey(PROGRAM_ID_EDITIONS_CONTROLS) + ); +}; + +export const getMinterStatsPhasePda = (deployment: PublicKey, minter: PublicKey, phaseIndex: number) => { + return PublicKey.findProgramAddressSync( + [Buffer.from("minter_stats_phase"), deployment.toBuffer(), minter.toBuffer(), toBufferLE(BigInt(phaseIndex), 4)], + new PublicKey(PROGRAM_ID_EDITIONS_CONTROLS) + ); +}; + + +export const getBase64FromDatabytes = (dataBytes: Buffer, dataType: string) => { + const base = dataBytes.toString("base64"); + return `data:${dataType};base64,${base}`; +}; + +// Load or generate group and groupMint keypairs +export function loadOrCreateKeypair(fileName: string, deployDirectory: string): Keypair { + const filePath = path.join(deployDirectory, fileName); + if (fs.existsSync(filePath)) { + const secretKeyString = fs.readFileSync(filePath, 'utf-8'); + const secretKey = Uint8Array.from(JSON.parse(secretKeyString)); + return Keypair.fromSecretKey(secretKey); + } else { + const keypair = Keypair.generate(); + // Ensure the directory exists + if (!fs.existsSync(deployDirectory)) { + fs.mkdirSync(deployDirectory, { recursive: true }); + } + fs.writeFileSync(filePath, JSON.stringify(Array.from(keypair.secretKey))); + return keypair; + } +} diff --git a/packages/protocol-contracts-svm-editions-controls/tsconfig-build.json b/packages/protocol-contracts-svm-editions-controls/tsconfig-build.json new file mode 100644 index 00000000..59b67701 --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/tsconfig-build.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "build", + "baseUrl": ".", + "paths": {} + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/protocol-contracts-svm-editions-controls/tsconfig.json b/packages/protocol-contracts-svm-editions-controls/tsconfig.json new file mode 100644 index 00000000..52d43eaa --- /dev/null +++ b/packages/protocol-contracts-svm-editions-controls/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/protocol-contracts-svm-idl/.gitignore b/packages/protocol-contracts-svm-idl/.gitignore new file mode 100644 index 00000000..7951405f --- /dev/null +++ b/packages/protocol-contracts-svm-idl/.gitignore @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/packages/protocol-contracts-svm-idl/package.json b/packages/protocol-contracts-svm-idl/package.json new file mode 100644 index 00000000..9f405459 --- /dev/null +++ b/packages/protocol-contracts-svm-idl/package.json @@ -0,0 +1,35 @@ +{ + "name": "@rarible_int/protocol-contracts-svm-idl", + "version": "0.1.0", + "keywords": [ + "rarible", + "editions", + "eclipse", + "idl" + ], + "repository": { + "type": "git", + "url": "https://github.com/rarible/protocol-contracts-svm.git" + }, + "license": "MIT", + "main": "build/index.js", + "files": [ + "lib" + ], + "types": "./lib/types/index.d.ts", + "exports": { + "./lib/esm/*": "./lib/esm/*", + "./lib/cjs/*": "./lib/cjs/*.js", + "./lib/types/*": "./lib/types/*" + }, + "scripts": { + "clean": "mkdir -p lib && rm -rf lib", + "package": "npx shx mkdir -p lib/cjs lib/esm lib/types", + "build": "rm -rf ./lib && tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json ./tsconfig.types.json" + }, + "peerDependencies": { + }, + "publishConfig": { + "registry": "http://nexus.rarible.int/repository/npm/" + } +} diff --git a/packages/protocol-contracts-svm-idl/tsconfig.cjs.json b/packages/protocol-contracts-svm-idl/tsconfig.cjs.json new file mode 100644 index 00000000..3dee74fd --- /dev/null +++ b/packages/protocol-contracts-svm-idl/tsconfig.cjs.json @@ -0,0 +1,13 @@ +{ + "include": ["../../target/types/**/*", "../../target/idl/**/*.json"], + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "ES2016", + "module": "CommonJS", + "sourceMap": false, + "outDir": "lib/cjs", + "rootDir": "../../target", + "composite": true, + "resolveJsonModule": true, + } + } \ No newline at end of file diff --git a/packages/protocol-contracts-svm-idl/tsconfig.esm.json b/packages/protocol-contracts-svm-idl/tsconfig.esm.json new file mode 100644 index 00000000..171517f3 --- /dev/null +++ b/packages/protocol-contracts-svm-idl/tsconfig.esm.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "include": ["../../target/types", "../../target/idl"], + "compilerOptions": { + "rootDir": "../../target", + "outDir": "lib/esm", + "declarationDir": "lib/types", + "target": "ESNext", + "module": "ESNext", + "sourceMap": false, + "declaration": true, + "composite": true, + "resolveJsonModule": true, + } + } \ No newline at end of file diff --git a/packages/protocol-contracts-svm-idl/tsconfig.json b/packages/protocol-contracts-svm-idl/tsconfig.json new file mode 100644 index 00000000..ed213adf --- /dev/null +++ b/packages/protocol-contracts-svm-idl/tsconfig.json @@ -0,0 +1,28 @@ +{ + "include": [], + "compilerOptions": { + "lib": ["ES2021.String"], + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "esModuleInterop": true, + "isolatedModules": true, + "noImplicitAny": false, + "noEmitOnError": true, + "resolveJsonModule": true, + "strict": true, + "stripInternal": true, + "skipLibCheck": true, + "noEmit": false, + "allowSyntheticDefaultImports": true, + "outDir": "lib" + }, + "references": [ + { + "path": "./tsconfig.esm.json" + }, + { + "path": "./tsconfig.cjs.json", + }, + ] +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-idl/tsconfig.types.json b/packages/protocol-contracts-svm-idl/tsconfig.types.json new file mode 100644 index 00000000..f3ef1d9c --- /dev/null +++ b/packages/protocol-contracts-svm-idl/tsconfig.types.json @@ -0,0 +1,13 @@ + + + { + "include": ["../../target/types/**/*", "../../target/idl/**/*.json"], + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": true, + "outDir": "./lib/types", + "rootDir": "../../target", + "composite": true, + "resolveJsonModule": true, + } + } \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/package.json b/packages/protocol-contracts-svm-marketplace/package.json new file mode 100644 index 00000000..8c257a07 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/package.json @@ -0,0 +1,63 @@ +{ + "name": "@rarible_int/protocol-contracts-svm-marketplace", + "version": "0.1.0", + "keywords": [ + "rarible", + "editions controls", + "eclipse", + "test" + ], + "repository": { + "type": "git", + "url": "https://github.com/rarible/protocol-contracts-svm.git" + }, + "license": "MIT", + "main": "build/index.js", + "files": [ + "build" + ], + "types": "build/index.d.ts", + "scripts": { + "clean": "mkdir -p build && mkdir -p node_modules && rm -rf build && rm -rf node_modules", + "build": "tsc -b ./tsconfig-build.json" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.1", + "@ledgerhq/hw-app-solana": "^7.2.4", + "@ledgerhq/hw-transport-node-hid": "^6.29.5", + "@solana/web3.js": "^1.95.3", + "async": "^3.2.5", + "axios": "^1.6.5", + "base32": "^0.0.7", + "bn.js": "^5.2.1", + "bs58": "^5.0.0cp", + "cids": "^1.1.9", + "commander": "^12.0.0", + "cookies": "^0.9.1", + "date-fns": "^2.29.3", + "dotenv": "^16.4.1", + "dotenv-cli": "^7.3.0", + "fetch-retry": "^5.0.6", + "js-sha256": "^0.11.0", + "jsonwebtoken": "^9.0.2", + "kubo-rpc-client": "^3.0.2", + "spl-token-4": "npm:@solana/spl-token@0.3.11", + "tweetnacl": "^1.0.3", + "@rarible_int/protocol-contracts-svm-idl": "0.1.0", + "@rarible_int/protocol-contracts-svm-core": "0.1.0" + }, + "devDependencies": { + "@types/bn.js": "^5.1.5", + "autoprefixer": "^10.4.2", + "eslint": "8.7.0", + "patch-package": "^8.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "5.3.3" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "registry": "http://nexus.rarible.int/repository/npm/" + } +} diff --git a/packages/protocol-contracts-svm-marketplace/scripts/README.md b/packages/protocol-contracts-svm-marketplace/scripts/README.md new file mode 100644 index 00000000..0ab5919a --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/README.md @@ -0,0 +1,20 @@ +# Rarible Contracts Testing Scripts + +## Overview +Rarible Marketplace is structured as an orderbook. Each market is identified by a generic pubkey. Each NFT may be added to as many markets as it wants, each pairing of NFT-Market requires a verification account. The intended flow is each NFT collection for example would be verified for the same market. + +NFTs currently usable in the market contract are WNS, Generic Token Extensions NFTs, Metaplex NFTs and pNFTs. + +The Client directory contains useful functions for all relevant instructions and many data fetching functions. + +Users create Orders to bid or list. Orders are created within a market. + +Bidding can either be done on an individual NFT or market wide. This is set with the nft_mint struct on the Order. + +Listings are NFT specific. + +Both Listings and Bids require setting a payment mint. This must be an SPL token, using either the original token program or Token22. Native SOL is not supported, you will need to add wrap and unwrap instructions to use wrapped SOL. + +To run the script, set the URL and wallet to be used as signer using the ```ANCHOR_PROVIDER_URL``` and ```ANCHOR_WALLET``` environment variables. For example: ```export ANCHOR_PROVIDER_URL=https://api.devnet.solana.com``` and ```export ANCHOR_WALLET=~/.config/solana/id.json``` + +You can update any of the variables at the top, but remember you will need to first set up a market, then verify mints you want to test with and use a payment mint that exists. \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/acceptBid.sh b/packages/protocol-contracts-svm-marketplace/scripts/acceptBid.sh new file mode 100644 index 00000000..2935e2be --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/acceptBid.sh @@ -0,0 +1,2 @@ +# Transaction ID: 4SB1jCfXtzThRjW6RA7Gi48JbHWzRacXSFTPMc9JKj4Wg5kLcXJ19QJnu8sjCs6yyCAbpYPsJ2v936cutFmdBfwY +# Bid Order Account: 23TbHcWfxp4GQvs6G8w78gRNdffqLJStQUrDjYHswMG6 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/bidNft.sh b/packages/protocol-contracts-svm-marketplace/scripts/bidNft.sh new file mode 100644 index 00000000..3e452a79 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/bidNft.sh @@ -0,0 +1,22 @@ +# BtZA5hmzf6m7gXRRLzvXi1sb8ffkqQ1CeFgBVb2Vybi8 + +#!/bin/bash + +# Example shell script to place a bid on an NFT in the Rarible Marketplace +export ANCHOR_WALLET=~/.config/solana/id-buyer.json + +npx ts-node ./src/cli/bidNft.ts \ + -k ~/.config/solana/id-buyer.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -m Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic \ + --nftMint B7LVDuaAERUwWxcuodWmRQQbA8iyC4WNqK8aj16YQrex \ + --paymentMint So11111111111111111111111111111111111111112 \ + --price 100000 \ + --size 1 +# --ledger # Remove this flag if you are not using a Ledger + +# Transaction ID: 4i8QktAAhXZiN6QnS9DzPcNFPyqyZ45L3Sb8MK7uQxVEGBEDPndQwraAwV4uH9Nt3nFRhYyYrksoSPFwir1ktJUZ +# Bid Order Account: 4osLbqVr2NLrwEEC3Yj5SSdhuBFFKwKfjoKLgw9e6cTr + +# Transaction ID: 4SB1jCfXtzThRjW6RA7Gi48JbHWzRacXSFTPMc9JKj4Wg5kLcXJ19QJnu8sjCs6yyCAbpYPsJ2v936cutFmdBfwY +# Bid Order Account: 23TbHcWfxp4GQvs6G8w78gRNdffqLJStQUrDjYHswMG6 \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/cancelBid.sh b/packages/protocol-contracts-svm-marketplace/scripts/cancelBid.sh new file mode 100644 index 00000000..33d21cb2 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/cancelBid.sh @@ -0,0 +1,16 @@ +# Transaction ID: 4i8QktAAhXZiN6QnS9DzPcNFPyqyZ45L3Sb8MK7uQxVEGBEDPndQwraAwV4uH9Nt3nFRhYyYrksoSPFwir1ktJUZ +# Bid Order Account: 4osLbqVr2NLrwEEC3Yj5SSdhuBFFKwKfjoKLgw9e6cTr +# F3GQTWUBM11RFb4HbDhtt21b8xHGqRc5UzqufRk8rRyY + +#!/bin/bash + +# Example shell script to buy an NFT on the Rarible Marketplace +# ~/.config/solana/id-buyer.json +export ANCHOR_WALLET=~/.config/solana/id-buyer.json + +npx ts-node ./src/cli/cancelBidNft.ts \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -o 4osLbqVr2NLrwEEC3Yj5SSdhuBFFKwKfjoKLgw9e6cTr + +# succes tx: 5MwiDKCGKk2kYMyGZf9ZwFyrMWoei8mcrsetzfWYoSNq1dpDSoHEwYqYGVt9vW9gU4j7o53JrFDi6ExEc3G4RRFj \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/cancelListing.sh b/packages/protocol-contracts-svm-marketplace/scripts/cancelListing.sh new file mode 100644 index 00000000..d2edb14a --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/cancelListing.sh @@ -0,0 +1,8 @@ +export ANCHOR_WALLET=~/.config/solana/id-buyer.json + +npx ts-node ./src/cli/cancelListing.ts \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -o 2EQfa7jFco2iM3BzZ1v6yvPDvNgCT3uYVXRgxPMgucJ6 + +# succes tx: 2gB7rk28iXqCie8LvGc4LwPHjFfP15NTFkf4k5Wv6yEJ29YCgz7UiFUjBqJ7MJ8sVaUjgBSgTabaZYPT4Uki3FvL \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/fillOrders.sh b/packages/protocol-contracts-svm-marketplace/scripts/fillOrders.sh new file mode 100644 index 00000000..632c1286 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/fillOrders.sh @@ -0,0 +1,14 @@ +# F3GQTWUBM11RFb4HbDhtt21b8xHGqRc5UzqufRk8rRyY + +#!/bin/bash + +# Example shell script to buy an NFT on the Rarible Marketplace +# ~/.config/solana/id-buyer.json +export ANCHOR_WALLET=~/.config/solana/id-buyer.json + +npx ts-node ./src/cli/fillOrder.ts \ + -k ~/.config/solana/id-buyer.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -o EZz8BGwsN1j4FP172R5sprpXui3AQkeDtX4DoCeG5Ccb \ + --amountToFill 1 +# --ledger # Remove this flag if you are not using a Ledger \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/initMarket.sh b/packages/protocol-contracts-svm-marketplace/scripts/initMarket.sh new file mode 100644 index 00000000..c6a82ba8 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/initMarket.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Example shell script to initialize a Rarible Marketplace + +npx ts-node ./src/cli/initMarket.ts \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -m Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic \ + --feeBps 500 \ + --feeRecipient AsSKqK7CkxFUf3KaoQzzr8ZLPm5fFguUtVE5QwGALQQn \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/listNft.sh b/packages/protocol-contracts-svm-marketplace/scripts/listNft.sh new file mode 100644 index 00000000..883f9f7b --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/listNft.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Example shell script to list an NFT on the Rarible Marketplace + +npx ts-node ./src/cli/listNft.ts \ + -k ~/.config/solana/id.json \ + -r https://testnet.dev2.eclipsenetwork.xyz \ + -m Rarim7DMoD45z1o25QWPsWvTdFSSEdxaxriwWZLLTic \ + --nftMint GfA7jdYQG39tnRasUrMBq5GCkFv5n1aMco3giAs43ULy \ + --paymentMint So11111111111111111111111111111111111111112 \ + --size 1 \ + --price 650000 + + # Order Account: F3GQTWUBM11RFb4HbDhtt21b8xHGqRc5UzqufRk8rRyY + # order 2: EZz8BGwsN1j4FP172R5sprpXui3AQkeDtX4DoCeG5Ccb \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/listNft.ts b/packages/protocol-contracts-svm-marketplace/scripts/listNft.ts new file mode 100755 index 00000000..93031546 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/listNft.ts @@ -0,0 +1,278 @@ +import { Keypair, MessageV0, PublicKey, Transaction, VersionedTransaction } from "@solana/web3.js"; +import { CreateOrderArgs, getCancelBid, fetchOrdersByMarket, fetchOrdersByMint, fetchOrdersByUser, fillOrder, getBid, getCancelListing, getComputeBudgetInstructions, getInitializeMarket, getListNft, getMarketPda, getOrderAccount, getProvider, getVerifyMint } from "../clients/rarible-svm-ts/src"; + +const demoMarket = { + marketIdentifier: new PublicKey("5hHaru7wRzFzHs9Fm7DK2vCXEC6v8zN9xutXYLHpEqG"), + wnsGroupMint: "EXJB8YFiBpFeBbjq9PZhCsav2RfcZVeuBvT9t3jBuY5f", + paymentMint: "So11111111111111111111111111111111111111112", + feeRecipients: ["yaoYaopKcDsMxnjbT1jBdvYz6XRmjPdAPHczsCraERc", "9xakHBpJ8gQTi4NYKyLhUm786e4sEeWxMQPz2ph7SPLt", "CQMFZGhqvt87nhqRo6eEq3TDHCUbU4mzmpVooR2M6So1"], + feeBps: [250, 150, 100] +}; + +const mintsToVerify = ["4swpX19vkSyd2TLM2W2FcsHorkvh25aEg4b35H4Vf2Wv", "71xkPoBLf5DRmCkPJo9czuNL3docUuweeDARABcNsaVy", "CchC7gtAUL1bDbuomRkjupySAZcMAygRb983r3qnkXFv"]; + +const listingData = [{ + nftMint: "CchC7gtAUL1bDbuomRkjupySAZcMAygRb983r3qnkXFv", + price: 15000, + size: 1, + }, + { + nftMint: "2RdFkcThfSX4ymoYEuzLLPCgTY6Dd4KMj3Mq8PnpeTWZ", + price: 24000, + size: 1, + } +]; + +const biddingData = [ + { + price: 7500, + size: 2, + nftMint: undefined, +}, +{ + price: 10000, + size: 1, + nftMint: undefined, +} +]; + +const nftToSell = "CchC7gtAUL1bDbuomRkjupySAZcMAygRb983r3qnkXFv"; + +async function setupMarket() { + const provider = getProvider(); + const { marketIdentifier, feeBps, feeRecipients } = demoMarket; + const createMarketIx = await getInitializeMarket(provider, { marketIdentifier: marketIdentifier.toString(), feeBps, feeRecipients }); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [createMarketIx], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx); + console.log("Create Market --", txSig); + } catch (e) { + console.log(e); + } +} + +async function verifyMints() { + const provider = getProvider(); + const { marketIdentifier } = demoMarket; + + const marketAddress = getMarketPda(marketIdentifier.toString()); + + const addMintIxs = await Promise.all(mintsToVerify.map((m) => getVerifyMint(provider, m, marketAddress.toString()))); + for (let i = 0; i < addMintIxs.length; i = i + 5) { + const mintIxs = addMintIxs.slice(i, Math.min(addMintIxs.length, i + 5)); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [...mintIxs], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx); + console.log("Verify --", txSig); + } catch (e) { + console.log(e); + } + } +} + +async function listNfts() { + const provider = getProvider(); + const { marketIdentifier, paymentMint, wnsGroupMint } = demoMarket; + + const wnsParams = { + groupMint: wnsGroupMint, + paymentMint + }; + const listings: CreateOrderArgs[] = listingData.map((m) => { return { + marketIdentifier: marketIdentifier.toString(), + nftMint: m.nftMint, + paymentMint, + price: m.price, + size: 1, + extraAccountParams: wnsParams, + }}) + + const listNftIxs = await Promise.all(listings.map((l) => getListNft(provider, l))); + + for (let i = 0; i < listNftIxs.length; i++) { + const computeIxs = getComputeBudgetInstructions({ computeUnits: 300_000 }); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [...computeIxs, listNftIxs[i]], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx, { skipPreflight: true }); + console.log("List --", txSig); + } catch (e) { + console.log(e); + } + } +} + +async function bid() { + const provider = getProvider(); + const { marketIdentifier, paymentMint } = demoMarket; + + const bids: CreateOrderArgs[] = biddingData.map(b => { + return { + marketIdentifier: marketIdentifier.toString(), + paymentMint, + price: b.price, + size: b.size, + nftMint: b.nftMint, + extraAccountParams: undefined, + } + }); + + const bidNftIxs = await Promise.all(bids.map((b) => getBid(provider, b))); + + for (let i = 0; i < bidNftIxs.length; i++) { + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [bidNftIxs[i]], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx); + console.log("Bid --", txSig); + } catch (e) { + console.log(e); + } + } +} + +async function sellNft() { + const provider = getProvider(); + const { marketIdentifier, paymentMint, wnsGroupMint } = demoMarket; + + const marketAddress = getMarketPda(marketIdentifier.toString()); + + const wnsParams = { + groupMint: wnsGroupMint, + paymentMint + }; + + const activeOrders = (await fetchOrdersByMarket(provider, marketAddress.toString())).filter((o) => o.account.state == 0).filter(o => o !== undefined).filter((o) => o.account.paymentMint.toString() === paymentMint).filter((o) => o.account.owner.toString() !== provider.wallet.publicKey.toString()); + const topBid = activeOrders.filter(o => o.account.side == 0 && o.publicKey.toString() !== "U8b7wU4hbUGFkUXioFzdfLz9YDFzDdD7VPrCV3VGcEq").sort((a, b) => a.account.price.toNumber() - b.account.price.toNumber()).pop(); + + // console.log(topBid.account.price.toNumber()); + if (topBid !== undefined) { + const buyNftIx = await fillOrder(provider, topBid.publicKey.toString(), 1, nftToSell, wnsParams); + + const computeIxs = getComputeBudgetInstructions({ computeUnits: 500_000 }); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [...computeIxs, buyNftIx], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx); + console.log("Sell --", txSig); + } catch (e) { + console.log(e); + } + } +} + +async function buyNft() { + const provider = getProvider(); + const { marketIdentifier } = demoMarket; + + const marketAddress = getMarketPda(marketIdentifier.toString()); + + const {paymentMint, wnsGroupMint} = demoMarket; + const wnsParams = { + groupMint: wnsGroupMint, + paymentMint + }; + + const activeOrders = (await fetchOrdersByMarket(provider, marketAddress.toString())).filter((o) => o.account.state == 0).filter(o => o !== undefined).sort((a, b) => b.account.price.toNumber() - a.account.price.toNumber()); + for (let i = 0; i < activeOrders.length; i++) { + console.log(activeOrders[i].account.price.toNumber(), activeOrders[i].account.nftMint.toString()) + } + const floorNft = activeOrders.filter(o => o.account.side == 1 && o.account.nftMint.toString() == "2RdFkcThfSX4ymoYEuzLLPCgTY6Dd4KMj3Mq8PnpeTWZ").pop(); + console.log(floorNft) + if (floorNft !== undefined) { + const buyNftIx = await fillOrder(provider, floorNft.publicKey.toString(), 1, floorNft.account.nftMint.toString(), wnsParams); + + const computeIxs = getComputeBudgetInstructions({ computeUnits: 500_000 }); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [...computeIxs, buyNftIx], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx, { skipPreflight: true }); + console.log("Buy --", txSig); + } catch (e) { + console.log(e); + } + } +} + +async function cancelListings() { + const provider = getProvider(); + const { paymentMint, wnsGroupMint } = demoMarket; + + const wnsParams = { + groupMint: wnsGroupMint, + paymentMint + }; + + // 0 = buy + // 1 = sell + const ordersForUser = (await fetchOrdersByUser(provider, provider.publicKey.toString())).filter(o => o.account.state == 0).filter(o => o.account.side == 1); + + const cancelListingsIxs = await Promise.all(ordersForUser.map(o => getCancelListing(provider, o.publicKey, wnsParams))); + + for (let i = 0; i < cancelListingsIxs.length; i++) { + const computeIxs = getComputeBudgetInstructions({ computeUnits: 300_000 }); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [...computeIxs, cancelListingsIxs[i]], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx); + console.log("Cancel Listing --", txSig); + } catch (e) { + console.log("Cancel Listing Failed for --", ordersForUser[i].publicKey.toString()); + } + } +} + +async function cancelBids() { + const provider = getProvider(); + + const bidsForUser = (await fetchOrdersByUser(provider, provider.publicKey.toString())).filter(o => o.account.state == 0).filter(o => o.account.side == 0); + + const cancelBidIxs = await Promise.all(bidsForUser.map(o => getCancelBid(provider, o.publicKey))); + + for (let i = 0; i < cancelBidIxs.length; i++) { + const computeIxs = getComputeBudgetInstructions({ computeUnits: 300_000 }); + const recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash; + const message = MessageV0.compile({ payerKey: provider.publicKey, instructions: [...computeIxs, cancelBidIxs[i]], recentBlockhash, }) + const tx = new VersionedTransaction(message); + const signedTx = await provider.wallet.signTransaction(tx); + + try{ + const txSig = await provider.connection.sendTransaction(signedTx); + console.log("Cancel Listing --", txSig); + } catch (e) { + console.log(e); + } + } +} + +// setupMarket(); +// verifyMints(); +// listNfts(); +// bid(); +// sellNft(); +buyNft(); +// cancelListings(); +// cancelBids(); \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/scripts/tsconfig.json b/packages/protocol-contracts-svm-marketplace/scripts/tsconfig.json new file mode 100644 index 00000000..229d5570 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/scripts/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "resolveJsonModule": true, + // ... other options + } +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/cli/bidNft.ts b/packages/protocol-contracts-svm-marketplace/src/cli/bidNft.ts new file mode 100644 index 00000000..7befbd1a --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/cli/bidNft.ts @@ -0,0 +1,49 @@ +// bidNft.ts + +import { Connection, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import { bid } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; +import { BN } from "@coral-xyz/anchor"; + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Place a bid on an NFT in the Rarible Marketplace") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint URL") + .requiredOption("-m, --marketIdentifier ", "Market Identifier") + .requiredOption("--nftMint ", "NFT mint address") + .requiredOption("--paymentMint ", "Payment mint address") + .requiredOption("--price ", "Bid price in lamports") + .requiredOption("--size ", "Size of the bid") + .option("--ledger", "Use Ledger for signing transactions") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid, order } = await bid({ + wallet, + params: { + marketIdentifier: opts.marketIdentifier, + nftMint: opts.nftMint, + paymentMint: opts.paymentMint, + price: opts.price, + size: opts.size, + extraAccountParams: undefined, // Adjust if needed + }, + connection, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Bid Order Account: ${order.toBase58()}`); + } catch (e) { + console.error("An error occurred:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-marketplace/src/cli/cancelBidNft.ts b/packages/protocol-contracts-svm-marketplace/src/cli/cancelBidNft.ts new file mode 100644 index 00000000..2efc5a67 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/cli/cancelBidNft.ts @@ -0,0 +1,39 @@ +// fillOrder.ts + +import { Connection, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import { cancelBid } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Buy an NFT on the Rarible Marketplace") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint URL") + .requiredOption("-o, --order ", "Order Identifier") + .option("--ledger", "Use Ledger for signing transactions") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid, order } = await cancelBid({ + wallet, + params: { + orderId: opts.order, + }, + connection, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Order Account: ${order}`); + } catch (e) { + console.error("An error occurred:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-marketplace/src/cli/cancelListing.ts b/packages/protocol-contracts-svm-marketplace/src/cli/cancelListing.ts new file mode 100644 index 00000000..60f86e42 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/cli/cancelListing.ts @@ -0,0 +1,39 @@ +// fillOrder.ts + +import { Connection, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import { cancelListing } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Buy an NFT on the Rarible Marketplace") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint URL") + .requiredOption("-o, --order ", "Order Identifier") + .option("--ledger", "Use Ledger for signing transactions") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid, order } = await cancelListing({ + wallet, + params: { + orderId: opts.order, + }, + connection, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Order Account: ${order}`); + } catch (e) { + console.error("An error occurred:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-marketplace/src/cli/fillOrder.ts b/packages/protocol-contracts-svm-marketplace/src/cli/fillOrder.ts new file mode 100644 index 00000000..35145fb2 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/cli/fillOrder.ts @@ -0,0 +1,43 @@ +// fillOrder.ts + +import { Connection, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import { fillOrder } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; +import { BN } from "@coral-xyz/anchor"; + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Buy an NFT on the Rarible Marketplace") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint URL") + .requiredOption("-o, --order ", "Order Identifier") + .requiredOption("--amountToFill ", "amountToFill of the listing") + .option("--ledger", "Use Ledger for signing transactions") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid, order } = await fillOrder({ + wallet, + params: { + orderAddress: opts.order, + extraAccountParams: undefined, + amountToFill: 1 + }, + connection, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Order Account: ${order.market}`); + } catch (e) { + console.error("An error occurred:", e); + } +})(); diff --git a/clients/js/wen_royalty_distribution/test/stub.ts b/packages/protocol-contracts-svm-marketplace/src/cli/index.ts similarity index 100% rename from clients/js/wen_royalty_distribution/test/stub.ts rename to packages/protocol-contracts-svm-marketplace/src/cli/index.ts diff --git a/packages/protocol-contracts-svm-marketplace/src/cli/initMarket.ts b/packages/protocol-contracts-svm-marketplace/src/cli/initMarket.ts new file mode 100644 index 00000000..08bcc64d --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/cli/initMarket.ts @@ -0,0 +1,44 @@ +import { Connection, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import { initMarket } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; + +const cli = new Command(); + +cli + .version("1.0.0") + .description("Initialize a Rarible Marketplace") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint URL") + .requiredOption( + "-m, --marketIdentifier ", + "Market Identifier (string up to 32 characters)" + ) + .requiredOption("--feeBps ", "Fee in basis points (bps)") + .requiredOption("--feeRecipient ", "Fee recipient public key") + .option("--ledger", "Use Ledger for signing transactions") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid, tx, market } = await initMarket({ + wallet, + params: { + marketIdentifier: opts.marketIdentifier, + feeBps: opts.feeBps, + feeRecipient: opts.feeRecipient, + }, + connection, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Market PDA: ${market.toBase58()}`); + } catch (e) { + console.error("An error occurred:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-marketplace/src/cli/listNft.ts b/packages/protocol-contracts-svm-marketplace/src/cli/listNft.ts new file mode 100644 index 00000000..607a5abf --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/cli/listNft.ts @@ -0,0 +1,49 @@ +// listNft.ts + +import { Connection, PublicKey } from "@solana/web3.js"; +import { Command } from "commander"; +import { list } from "../instructions"; +import { getWallet } from "@rarible_int/protocol-contracts-svm-core"; +import { BN } from "@coral-xyz/anchor"; + +const cli = new Command(); + +cli + .version("1.0.0") + .description("List an NFT on the Rarible Marketplace") + .requiredOption("-k, --keypairPath ", "Path to the keypair file") + .requiredOption("-r, --rpc ", "RPC endpoint URL") + .requiredOption("-m, --marketIdentifier ", "Market Identifier") + .requiredOption("--nftMint ", "NFT mint address") + .requiredOption("--paymentMint ", "Payment mint address") + .requiredOption("--size ", "Size of the listing") + .requiredOption("--price ", "Price of the listing in lamports") + .option("--ledger", "Use Ledger for signing transactions") + .parse(process.argv); + +const opts = cli.opts(); + +(async () => { + const connection = new Connection(opts.rpc); + const wallet = await getWallet(opts.ledger, opts.keypairPath); + + try { + const { txid, order } = await list({ + wallet, + params: { + marketIdentifier: opts.marketIdentifier, + nftMint: opts.nftMint, + paymentMint: opts.paymentMint, + size: Number(opts.size), + price: Number(opts.price), + extraAccountParams: undefined, // Adjust if needed + }, + connection, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Order Account: ${order.toBase58()}`); + } catch (e) { + console.error("An error occurred:", e); + } +})(); diff --git a/packages/protocol-contracts-svm-marketplace/src/index.ts b/packages/protocol-contracts-svm-marketplace/src/index.ts new file mode 100644 index 00000000..0d0a508c --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/index.ts @@ -0,0 +1,3 @@ +export * from './instructions'; +export * from './model'; +export * from './utils'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/bid.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/bid.ts new file mode 100644 index 00000000..4ca8213d --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/bid.ts @@ -0,0 +1,136 @@ +import { + ComputeBudgetProgram, + Keypair, + PublicKey, + SystemProgram, + Transaction, + SYSVAR_INSTRUCTIONS_PUBKEY, + } from "@solana/web3.js"; + import { type Provider, BN } from "@coral-xyz/anchor"; + import { + getAtaAddress, + getEventAuthority, + getMarketPda, + getOrderAccount, + getProvider, + getTokenProgramFromMint, + } from "../utils"; + import { + getProgramInstanceRaribleMarketplace, + IExecutorParams, + sendSignedTransaction, + } from "@rarible_int/protocol-contracts-svm-core"; + import { BidParams } from "../model"; + import { PROGRAM_ID_MARKETPLACE } from "@rarible_int/protocol-contracts-svm-core"; + import { ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token"; + + export const bid = async ({ + wallet, + params, + connection, + }: IExecutorParams) => { + const marketProgram = getProgramInstanceRaribleMarketplace(connection); + const market = getMarketPda(params.marketIdentifier); + const eventAuthority = getEventAuthority(); + + const initializer = wallet.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const provider = getProvider(connection.rpcEndpoint); + + const paymentTokenProgram = await getTokenProgramFromMint( + provider, + params.paymentMint.toString() + ); + if (!paymentTokenProgram) { + return undefined; + } + + const nonceKp = Keypair.generate(); + const nonce = nonceKp.publicKey; + + const order = getOrderAccount( + nonce.toString(), + market.toString(), + initializer + ); + + const initializerPaymentTa = getAtaAddress(params.paymentMint, initializer, paymentTokenProgram.toString()); + const orderPaymentTa = getAtaAddress(params.paymentMint, order.toString(), paymentTokenProgram.toString()); + + // Log all account addresses before creating the instruction + console.log("Accounts used in the transaction:"); + console.log("Initializer (wallet):", wallet.publicKey.toBase58()); + console.log("Market PDA:", market.toBase58()); + console.log("Event Authority:", eventAuthority.toBase58()); + console.log("NFT Mint:", params.nftMint ?? PublicKey.default.toBase58()); + console.log("Order Account:", order.toBase58()); + console.log("Initializer Payment Token Account:", initializerPaymentTa.toBase58()); + console.log("Order Payment Token Account:", orderPaymentTa.toBase58()); + console.log("Payment Token Program:", paymentTokenProgram.toBase58()); + console.log("Associated Token Program ID:", ASSOCIATED_TOKEN_PROGRAM_ID.toBase58()); + console.log("System Program ID:", SystemProgram.programId.toBase58()); + console.log("Marketplace Program ID:", marketProgram.programId.toBase58()); + console.log("Payment Mint:", params.paymentMint); + console.log("Program ID:", marketProgram.programId.toBase58()); + console.log("SYSVAR Instructions Pubkey:", SYSVAR_INSTRUCTIONS_PUBKEY.toBase58()); + + console.log("Parameters:"); + console.log("Nonce:", nonce.toBase58()); + console.log("Price:", params.price.toString()); + console.log("Size:", params.size.toString()); + + const instruction = await marketProgram.methods + .bid({ + nonce, + price: new BN(params.price), + size: new BN(params.size), + }) + .accountsStrict({ + initializer: wallet.publicKey, + market, + nftMint: params.nftMint ?? PublicKey.default, + order, + initializerPaymentTa, + orderPaymentTa, + paymentTokenProgram, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketProgram.programId, + eventAuthority, + paymentMint: params.paymentMint, + }) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { tx, txid, order, market: market }; + }; + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/cancelBid.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/cancelBid.ts new file mode 100644 index 00000000..2472c6c6 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/cancelBid.ts @@ -0,0 +1,124 @@ +import { + ComputeBudgetProgram, + PublicKey, + SystemProgram, + Transaction, + SYSVAR_INSTRUCTIONS_PUBKEY, + } from "@solana/web3.js"; + import { + fetchMarketByAddress, + fetchOrderByAddress, + getAtaAddress, + getEventAuthority, + getProvider, + getTokenProgramFromMint, + } from "../utils"; + import { + getProgramInstanceRaribleMarketplace, + IExecutorParams, + sendSignedTransaction, + } from "@rarible_int/protocol-contracts-svm-core"; + import { CancelBidParams } from "../model"; + import { ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token"; + + export const cancelBid = async ({ + wallet, + params, + connection, + }: IExecutorParams) => { + const marketProgram = getProgramInstanceRaribleMarketplace(connection); + + const eventAuthority = getEventAuthority(); + + const initializer = wallet.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const provider = getProvider(connection.rpcEndpoint); + + + const order = await fetchOrderByAddress(provider, params.orderId); + if (!order) { + console.error("Order not found."); + return undefined; + } + + const nftMint = new PublicKey(order.nftMint); + + // Fetch market + const market = await fetchMarketByAddress(provider, order.market.toString()); + if (!market) { + console.error("Market not found."); + return undefined; + } + + const paymentTokenProgram = await getTokenProgramFromMint(provider, order.paymentMint.toBase58()); + + const initializerPaymentTa = getAtaAddress(order.paymentMint.toBase58(), initializer, paymentTokenProgram.toString()); + const orderPaymentTa = getAtaAddress(order.paymentMint.toBase58(), params.orderId.toString(), paymentTokenProgram.toString()); + + // Log all account addresses before creating the instruction + console.log("Accounts used in the transaction:"); + console.log("Initializer (wallet):", wallet.publicKey.toBase58()); + console.log("Event Authority:", eventAuthority.toBase58()); + console.log("NFT Mint:", order.paymentMint.toBase58() ?? PublicKey.default.toBase58()); + console.log("Order Account:", params.orderId); + console.log("Initializer Payment Token Account:", initializerPaymentTa.toBase58()); + console.log("Order Payment Token Account:", orderPaymentTa.toBase58()); + console.log("Payment Token Program:", paymentTokenProgram.toBase58()); + console.log("Associated Token Program ID:", ASSOCIATED_TOKEN_PROGRAM_ID.toBase58()); + console.log("System Program ID:", SystemProgram.programId.toBase58()); + console.log("Marketplace Program ID:", marketProgram.programId.toBase58()); + console.log("Payment Mint:", order.paymentMint); + console.log("Program ID:", marketProgram.programId.toBase58()); + console.log("SYSVAR Instructions Pubkey:", SYSVAR_INSTRUCTIONS_PUBKEY.toBase58()); + + + const instruction = await marketProgram.methods + .cancelBid() + .accountsStrict({ + initializer: wallet.publicKey, + market: order.market, + order: params.orderId, + initializerPaymentTa, + orderPaymentTa, + paymentTokenProgram, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketProgram.programId, + eventAuthority, + paymentMint: order.paymentMint, + }) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { tx, txid, order: params.orderId, market: market }; + }; + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/cancelListing.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/cancelListing.ts new file mode 100644 index 00000000..350cd870 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/cancelListing.ts @@ -0,0 +1,129 @@ +import { + ComputeBudgetProgram, + PublicKey, + SystemProgram, + Transaction, + SYSVAR_INSTRUCTIONS_PUBKEY, + } from "@solana/web3.js"; + import { + fetchMarketByAddress, + fetchOrderByAddress, + getAtaAddress, + getEventAuthority, + getProvider, + getTokenProgramFromMint, + } from "../utils"; + import { + getProgramInstanceRaribleMarketplace, + IExecutorParams, + sendSignedTransaction, + } from "@rarible_int/protocol-contracts-svm-core"; + import { CancelBidParams } from "../model"; + import { ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token"; + + export const cancelListing = async ({ + wallet, + params, + connection, + }: IExecutorParams) => { + const marketProgram = getProgramInstanceRaribleMarketplace(connection); + + const eventAuthority = getEventAuthority(); + + const initializer = wallet.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const provider = getProvider(connection.rpcEndpoint); + + + const order = await fetchOrderByAddress(provider, params.orderId); + if (!order) { + console.error("Order not found."); + return undefined; + } + + // Fetch market + const market = await fetchMarketByAddress(provider, order.market.toString()); + if (!market) { + console.error("Market not found."); + return undefined; + } + + const paymentTokenProgram = await getTokenProgramFromMint(provider, order.paymentMint.toBase58()); + const tokenProgramMint = await getTokenProgramFromMint(provider, order.nftMint.toBase58()); + const initializerNftTa = getAtaAddress( + order.nftMint.toBase58(), + initializer, + tokenProgramMint.toString() + ); + const initializerPaymentTa = getAtaAddress(order.paymentMint.toBase58(), initializer, paymentTokenProgram.toString()); + const orderPaymentTa = getAtaAddress(order.paymentMint.toBase58(), params.orderId.toString(), paymentTokenProgram.toString()); + + // Log all account addresses before creating the instruction + console.log("Accounts used in the transaction:"); + console.log("Initializer (wallet):", wallet.publicKey.toBase58()); + console.log("Event Authority:", eventAuthority.toBase58()); + console.log("NFT Mint:", order.paymentMint.toBase58() ?? PublicKey.default.toBase58()); + console.log("Order Account:", params.orderId); + console.log("Initializer Payment Token Account:", initializerPaymentTa.toBase58()); + console.log("initializerNftTa:", initializerNftTa.toBase58()); + console.log("Order Payment Token Account:", orderPaymentTa.toBase58()); + console.log("Payment Token Program:", paymentTokenProgram.toBase58()); + console.log("Associated Token Program ID:", ASSOCIATED_TOKEN_PROGRAM_ID.toBase58()); + console.log("System Program ID:", SystemProgram.programId.toBase58()); + console.log("Marketplace Program ID:", marketProgram.programId.toBase58()); + console.log("Payment Mint:", order.paymentMint); + console.log("Program ID:", marketProgram.programId.toBase58()); + console.log("SYSVAR Instructions Pubkey:", SYSVAR_INSTRUCTIONS_PUBKEY.toBase58()); + + + const instruction = await marketProgram.methods + .cancelListing() + .accountsStrict({ + initializer: wallet.publicKey, + market: order.market, + order: params.orderId, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketProgram.programId, + eventAuthority, + nftMint: order.nftMint, + initializerNftTa: initializerNftTa, + sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY, + nftTokenProgram: tokenProgramMint, + nftProgram: tokenProgramMint, + }) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { tx, txid, order: params.orderId, market: market }; + }; + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/fillOrder.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/fillOrder.ts new file mode 100644 index 00000000..83b08e72 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/fillOrder.ts @@ -0,0 +1,224 @@ +// fillOrder.ts + +import { + AccountMeta, + ComputeBudgetProgram, + Keypair, + PublicKey, + SystemProgram, + SYSVAR_INSTRUCTIONS_PUBKEY, + Transaction, + } from "@solana/web3.js"; + import { BN } from "@coral-xyz/anchor"; + import { + getAtaAddress, + getEventAuthority, + getMarketPda, + getNftProgramFromMint, + getOrderAccount, + getProvider, + getRemainingAccountsForMint, + getTokenProgramFromMint, + fetchOrderByAddress, + fetchMarketByAddress, + } from "../utils"; + import { + getProgramInstanceRaribleMarketplace, + IExecutorParams, + sendSignedTransaction, + } from "@rarible_int/protocol-contracts-svm-core"; + import { FillOrderParams } from "../model"; + import { PROGRAM_ID_MARKETPLACE } from "@rarible_int/protocol-contracts-svm-core"; + import { ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token"; + + export const fillOrder = async ({ + wallet, + params, + connection, + }: IExecutorParams) => { + const marketProgram = getProgramInstanceRaribleMarketplace(connection); + const eventAuthority = getEventAuthority(); + + const taker = wallet.publicKey; + if (!taker) { + console.error("Wallet public key is missing."); + return undefined; + } + + const provider = getProvider(connection.rpcEndpoint); + + const orderAddress = params.orderAddress; + const amountToFill = params.amountToFill; + + const extraAccountParams = params.extraAccountParams; + + // Fetch order by address + const order = await fetchOrderByAddress(provider, orderAddress); + if (!order) { + console.error("Order not found."); + return undefined; + } + const nftMint = new PublicKey(order.nftMint); + + // Fetch market + const market = await fetchMarketByAddress(provider, order.market.toString()); + if (!market) { + console.error("Market not found."); + return undefined; + } + + const nftTokenProgram = await getTokenProgramFromMint(provider, nftMint.toBase58()); + const paymentTokenProgram = await getTokenProgramFromMint( + provider, + order.paymentMint.toBase58() + ); + if (!paymentTokenProgram || !nftTokenProgram) { + console.error("Token programs not found."); + return undefined; + } + + const nftProgram = await getNftProgramFromMint(provider, nftMint.toBase58()); + + const isBuy = order.side === 0; // Assuming 0 represents Buy + + const nftRecipient = isBuy ? order.owner : taker; + const nftFunder = isBuy ? taker : order.owner; + const paymentFunder = isBuy ? new PublicKey(orderAddress) : taker; + const paymentRecipient = isBuy ? taker : order.owner; + + const buyerPaymentTa = getAtaAddress( + order.paymentMint.toBase58(), + paymentFunder.toBase58(), + paymentTokenProgram.toBase58() + ); + const sellerPaymentTa = getAtaAddress( + order.paymentMint.toBase58(), + paymentRecipient.toBase58(), + paymentTokenProgram.toBase58() + ); + const buyerNftTa = getAtaAddress( + nftMint.toBase58(), + nftRecipient.toBase58(), + nftTokenProgram.toBase58() + ); + const sellerNftTa = getAtaAddress( + nftMint.toBase58(), + nftFunder.toBase58(), + nftTokenProgram.toBase58() + ); + + const feeRecipient = market.feeRecipient; + const feeRecipientTa = getAtaAddress( + order.paymentMint.toBase58(), + feeRecipient.toBase58(), + paymentTokenProgram.toBase58() + ); + + const remainingAccounts: AccountMeta[] = await getRemainingAccountsForMint( + provider, + nftMint.toBase58(), + extraAccountParams + ); + + // Log all account addresses before creating the instruction + console.log("Accounts used in the transaction:"); + console.log("Taker (wallet):", taker.toBase58()); + console.log("Maker (order owner):", order.owner.toBase58()); + console.log("Market Address:", order.market.toBase58()); + console.log("Order Address:", orderAddress); + console.log("Buyer NFT Token Account:", buyerNftTa.toBase58()); + console.log("Buyer Payment Token Account:", buyerPaymentTa.toBase58()); + console.log("Seller NFT Token Account:", sellerNftTa.toBase58()); + console.log("Seller Payment Token Account:", sellerPaymentTa.toBase58()); + console.log("NFT Token Program:", nftTokenProgram.toBase58()); + console.log("Payment Token Program:", paymentTokenProgram.toBase58()); + console.log( + "NFT Program:", + nftProgram ? nftProgram.toBase58() : PublicKey.default.toBase58() + ); + console.log( + "Associated Token Program ID:", + ASSOCIATED_TOKEN_PROGRAM_ID.toBase58() + ); + console.log("System Program ID:", SystemProgram.programId.toBase58()); + console.log("Marketplace Program ID:", marketProgram.programId.toBase58()); + console.log("Payment Mint:", order.paymentMint.toBase58()); + console.log("NFT Mint:", nftMint.toBase58()); + console.log("Event Authority:", eventAuthority.toBase58()); + console.log("Fee Recipient:", feeRecipient.toBase58()); + console.log("Fee Recipient Token Account:", feeRecipientTa.toBase58()); + console.log( + "SYSVAR Instructions Pubkey:", + SYSVAR_INSTRUCTIONS_PUBKEY.toBase58() + ); + + console.log("Remaining Accounts:"); + remainingAccounts.forEach((account, index) => { + console.log( + `Account ${index}: ${account.pubkey.toBase58()}, isSigner: ${account.isSigner}, isWritable: ${account.isWritable}` + ); + }); + + // Build the instruction + const instruction = await marketProgram.methods + .fillOrder(new BN(amountToFill)) + .accountsStrict({ + taker: taker, + maker: order.owner, + market: order.market, + order: new PublicKey(orderAddress), + buyerNftTa, + buyerPaymentTa, + sellerNftTa, + sellerPaymentTa, + nftTokenProgram, + paymentTokenProgram, + nftProgram: nftProgram ?? PublicKey.default, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketProgram.programId, + eventAuthority, + paymentMint: order.paymentMint, + nftMint, + sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY, + feeRecipient, + feeRecipientTa, + }) + .remainingAccounts(remainingAccounts) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + const latestBlockhash = await connection.getLatestBlockhash(); + tx.recentBlockhash = latestBlockhash.blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + console.log(`Transaction ID: ${txid}`); + console.log(`Order Address: ${orderAddress}`); + console.log(`Market: ${market}`); + + return { txid, tx, order, market }; + }; + \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/index.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/index.ts new file mode 100644 index 00000000..ea68b3b7 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/index.ts @@ -0,0 +1,6 @@ +export * from './bid'; +export * from './list'; +export * from './initMarket'; +export * from './fillOrder'; +export * from './cancelBid'; +export * from './cancelListing'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/initMarket.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/initMarket.ts new file mode 100644 index 00000000..a62d917f --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/initMarket.ts @@ -0,0 +1,69 @@ +import { + ComputeBudgetProgram, + PublicKey, + SystemProgram, + Transaction, +} from "@solana/web3.js"; +import { type Provider, BN } from "@coral-xyz/anchor"; +import { getEventAuthority, getMarketPda } from "../utils"; +import { + getProgramInstanceRaribleMarketplace, + IExecutorParams, + sendSignedTransaction, +} from "@rarible_int/protocol-contracts-svm-core"; +import { InitMarketParams } from "../model"; +import { PROGRAM_ID_MARKETPLACE } from "@rarible_int/protocol-contracts-svm-core"; + +export const initMarket = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const marketProgram = getProgramInstanceRaribleMarketplace(connection); + const market = getMarketPda(params.marketIdentifier); + const eventAuthority = getEventAuthority(); + + const instruction = await marketProgram.methods + .initMarket({ + feeBps: new BN(params.feeBps), + feeRecipient: new PublicKey(params.feeRecipient), + }) + .accountsStrict({ + initializer: wallet.publicKey, + marketIdentifier: params.marketIdentifier, + market, + systemProgram: SystemProgram.programId, + program: PROGRAM_ID_MARKETPLACE, + eventAuthority, + }) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { txid, tx, market: market }; +}; diff --git a/packages/protocol-contracts-svm-marketplace/src/instructions/list.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/list.ts new file mode 100644 index 00000000..30b520a3 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/instructions/list.ts @@ -0,0 +1,154 @@ +import { + AccountMeta, + ComputeBudgetProgram, + Keypair, + PublicKey, + SystemProgram, + SYSVAR_INSTRUCTIONS_PUBKEY, + Transaction, +} from "@solana/web3.js"; +import { BN } from "@coral-xyz/anchor"; +import { + getAtaAddress, + getEventAuthority, + getMarketPda, + getNftProgramFromMint, + getOrderAccount, + getProvider, + getRemainingAccountsForMint, + getTokenProgramFromMint, +} from "../utils"; +import { + getProgramInstanceRaribleMarketplace, + IExecutorParams, + sendSignedTransaction, +} from "@rarible_int/protocol-contracts-svm-core"; +import { ListParams } from "../model"; +import { PROGRAM_ID_MARKETPLACE } from "@rarible_int/protocol-contracts-svm-core"; +import { ASSOCIATED_TOKEN_PROGRAM_ID } from "spl-token-4"; + +export const list = async ({ + wallet, + params, + connection, +}: IExecutorParams) => { + const marketProgram = getProgramInstanceRaribleMarketplace(connection); + const market = getMarketPda(params.marketIdentifier); + const eventAuthority = getEventAuthority(); + + const initializer = wallet.publicKey?.toString(); + if (!initializer) { + return undefined; + } + + const nftMint = params.nftMint; + if (!nftMint) return undefined; + const provider = getProvider(connection.rpcEndpoint); + + const nftTokenProgram = await getTokenProgramFromMint(provider, nftMint); + if (!nftTokenProgram) { + return undefined; + } + + const nonceKp = Keypair.generate(); + const nonce = nonceKp.publicKey; + + const nftProgram = await getNftProgramFromMint(provider, nftMint); + + const order = getOrderAccount(nonce.toString(), market.toString(), initializer); + const initializerNftTa = getAtaAddress( + nftMint, + initializer, + nftTokenProgram.toString() + ); + + const remainingAccounts: AccountMeta[] = await getRemainingAccountsForMint( + provider, + nftMint, + params.extraAccountParams + ); + + // Log all account addresses before creating the instruction + console.log("Accounts used in the transaction:"); + console.log("Initializer:", initializer); + console.log("Market PDA:", market.toBase58()); + console.log("NFT Mint:", nftMint); + console.log("Order Account:", order.toBase58()); + console.log("Initializer NFT Token Account:", initializerNftTa.toBase58()); + console.log( + "NFT Program:", + nftProgram ? nftProgram.toBase58() : PublicKey.default.toBase58() + ); + console.log("NFT Token Program:", nftTokenProgram.toBase58()); + console.log("Event Authority:", eventAuthority.toBase58()); + console.log("System Program:", SystemProgram.programId.toBase58()); + console.log("Marketplace Program ID:", marketProgram.programId.toBase58()); + console.log( + "SYSVAR Instructions Pubkey:", + SYSVAR_INSTRUCTIONS_PUBKEY.toBase58() + ); + console.log( + "Associated Token Program ID:", + ASSOCIATED_TOKEN_PROGRAM_ID.toBase58() + ); + + console.log("Remaining Accounts:"); + remainingAccounts.forEach((account, index) => { + console.log( + `Account ${index}: ${account.pubkey.toBase58()}, isSigner: ${account.isSigner}, isWritable: ${account.isWritable}` + ); + }); + + const instruction = await marketProgram.methods + .list({ + nonce, + paymentMint: new PublicKey(params.paymentMint), + price: new BN(params.price), + size: new BN(params.size), + }) + .accountsStrict({ + initializer: provider.publicKey, + market, + nftMint, + order, + initializerNftTa, + nftProgram: nftProgram ?? PublicKey.default, + nftTokenProgram, + sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + systemProgram: SystemProgram.programId, + program: marketProgram.programId, + eventAuthority, + }) + .remainingAccounts(remainingAccounts) + .instruction(); + + // Create the transaction and add the instruction + const instructions = []; + + // Add compute budget instruction + instructions.push( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 850_000, + }) + ); + + instructions.push(instruction); + + const tx = new Transaction().add(...instructions); + + // Set recent blockhash and fee payer + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + tx.feePayer = wallet.publicKey; + + // Sign and send the transaction + await wallet.signTransaction(tx); + + const txid = await sendSignedTransaction({ + signedTransaction: tx, + connection, + skipPreflight: false, + }); + + return { txid, tx, order, market: market }; +}; diff --git a/clients/js/wen_transfer_guard/test/stub.ts b/packages/protocol-contracts-svm-marketplace/src/instructions/verifyMint.ts similarity index 100% rename from clients/js/wen_transfer_guard/test/stub.ts rename to packages/protocol-contracts-svm-marketplace/src/instructions/verifyMint.ts diff --git a/packages/protocol-contracts-svm-marketplace/src/model/index.ts b/packages/protocol-contracts-svm-marketplace/src/model/index.ts new file mode 100644 index 00000000..fc55bb7c --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/model/index.ts @@ -0,0 +1,35 @@ +import { WnsAccountParams } from "../utils"; + +export type InitMarketParams = { + marketIdentifier: string; + feeRecipient: string; + feeBps: number; +}; + +export type ListParams = { + marketIdentifier: string; + nftMint: string | undefined; + paymentMint: string; + size: number; + price: number; + extraAccountParams: WnsAccountParams | undefined; // Add metaplex +}; + +export type BidParams = { + marketIdentifier: string; + nftMint: string | undefined; + paymentMint: string; + size: number; + price: number; + extraAccountParams: WnsAccountParams | undefined; // Add metaplex +}; + +export type CancelBidParams = { + orderId: string; +}; + +export type FillOrderParams = { + orderAddress: string; + amountToFill: number; + extraAccountParams: WnsAccountParams | undefined +} \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/utils/constants.ts b/packages/protocol-contracts-svm-marketplace/src/utils/constants.ts new file mode 100644 index 00000000..41b9792c --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/utils/constants.ts @@ -0,0 +1,12 @@ +import {PublicKey} from '@solana/web3.js'; + +// WNS PIDS +export const wnsDistributionProgramId = new PublicKey('diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay'); +export const wnsProgramId = new PublicKey('wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'); + +// METAPLEX PIDS +export const metaplexMetadataProgramId = new PublicKey('wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM'); + +export const metadataSeed = 'metadata'; + +export const listInstructionSize = 300_000; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/utils/core.ts b/packages/protocol-contracts-svm-marketplace/src/utils/core.ts new file mode 100644 index 00000000..ab37480c --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/utils/core.ts @@ -0,0 +1,389 @@ +import { + AnchorProvider, + type Idl, + type Instruction, + Program, + type Provider, + utils, +} from "@coral-xyz/anchor"; +import { + type AccountMeta, + ComputeBudgetProgram, + Connection, + PublicKey, + type TransactionInstruction, +} from "@solana/web3.js"; +import { + metadataSeed, + metaplexMetadataProgramId, + wnsDistributionProgramId, + wnsProgramId, +} from "../utils"; +import { + ASSOCIATED_TOKEN_PROGRAM_ID, + createAssociatedTokenAccount, + createAssociatedTokenAccountInstruction, + getExtraAccountMetaAddress, + getExtraAccountMetas, + getMint, + getTokenMetadata, + TOKEN_2022_PROGRAM_ID, + TOKEN_PROGRAM_ID, +} from "@solana/spl-token"; + +import { PROGRAM_ID_MARKETPLACE } from "@rarible_int/protocol-contracts-svm-core"; + +export const getProvider = (rpcUrl: string = "https://api.devnet.solana.com") => { + const connection = new Connection( + process.env.RPC_URL ?? rpcUrl + ); + const anchorProvider = AnchorProvider.local(); + const provider = new AnchorProvider(connection, anchorProvider.wallet, { + ...AnchorProvider.defaultOptions(), + commitment: "processed", + }); + return provider; +}; + +export type ComputeBudgetParams = { + priorityFee?: number; + computeUnits?: number; +}; + +export const getComputeBudgetInstructions = ( + computeParams: ComputeBudgetParams +) => { + const ixs: TransactionInstruction[] = []; + if (computeParams.computeUnits !== undefined) { + const computeIx = ComputeBudgetProgram.setComputeUnitLimit({ + units: computeParams.computeUnits, + }); + ixs.push(computeIx); + } + + if (computeParams.priorityFee !== undefined) { + const priceIx = ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: computeParams.priorityFee, + }); + ixs.push(priceIx); + } + + return ixs; +}; + +export const getTokenProgramFromMint = async ( + provider: Provider, + mint: string +) => { + const mintPubkey = new PublicKey(mint); + try { + await getMint(provider.connection, mintPubkey, undefined, TOKEN_PROGRAM_ID); + return TOKEN_PROGRAM_ID; + } catch (e) { + try { + await getMint( + provider.connection, + mintPubkey, + undefined, + TOKEN_2022_PROGRAM_ID + ); + return TOKEN_2022_PROGRAM_ID; + } catch (e) { + return undefined; + } + } +}; + +export const getNftProgramFromMint = async ( + provider: Provider, + nftMint: string +) => { + const mintProgram = await getTokenProgramFromMint(provider, nftMint); + if (!mintProgram) { + return undefined; + } + + if (mintProgram === TOKEN_PROGRAM_ID) { + const isMetaplex = await isMetaplexMetadataAccount(provider, nftMint); + if (isMetaplex) { + return metaplexMetadataProgramId; + } + } + + if (mintProgram === TOKEN_2022_PROGRAM_ID) { + const isWns = await isWnsNft(provider, nftMint); + if (isWns) { + return wnsProgramId; + } + } + + return undefined; +}; + +export const isMetaplexMetadataAccount = async ( + provider: Provider, + mint: string +) => { + const mintPubkey = new PublicKey(mint); + const metadataAccount = getProgramAddress( + [ + Buffer.from(metadataSeed), + metaplexMetadataProgramId.toBytes(), + mintPubkey.toBytes(), + ], + metaplexMetadataProgramId + ); + + try { + await provider.connection.getAccountInfo(metadataAccount); + return true; + } catch (e) { + return false; + } +}; + +export const isWnsNft = async (provider: Provider, mint: string) => { + const mintPubkey = new PublicKey(mint); + const metadata = await getTokenMetadata(provider.connection, mintPubkey); + + if (metadata === null) { + return false; + } + + const extraMeta = metadata.additionalMetadata; + const royalties = extraMeta.filter((m) => m[0] === "royalty_basis_points"); + // TODO : check differently + if (royalties.length > 0) { + return false; + } + + return false; +}; + +export type WnsAccountParams = { + groupMint: string; + paymentMint: string; +}; + +export const getRemainingAccountsForMint = async ( + provider: Provider, + mint: string, + wnsParams: WnsAccountParams | undefined +) => { + const remainingAccounts: AccountMeta[] = []; + + const nftProgram = await getNftProgramFromMint(provider, mint); + + if (nftProgram === wnsProgramId) { + if (!wnsParams) { + return []; + } + + const extraMetaPda = getExtraMetasAccountPda(mint); + const approveAccount = getApproveAccountPda(mint); + const distributionAccount = getDistributionAccountPda( + wnsParams.groupMint, + wnsParams.paymentMint + ); + // const managerAccount = getManagerAccountPda(); + const paymentTokenProgram = await getTokenProgramFromMint( + provider, + wnsParams.paymentMint + ); + const groupMemberAccount = getGroupMemberAccount(mint); + const distributionTokenAccount = + paymentTokenProgram && + getAtaAddress( + wnsParams.paymentMint, + distributionAccount.toString(), + paymentTokenProgram.toString() + ); + + remainingAccounts.push( + ...[ + { + pubkey: approveAccount, + isWritable: true, + isSigner: false, + }, + { + pubkey: distributionAccount, + isWritable: true, + isSigner: false, + }, + { + pubkey: distributionTokenAccount ?? distributionAccount, + isWritable: true, + isSigner: false, + }, + { + pubkey: wnsDistributionProgramId, + isWritable: false, + isSigner: false, + }, + { + pubkey: groupMemberAccount, + isWritable: false, + isSigner: false, + }, + { + pubkey: new PublicKey(wnsParams.paymentMint), + isWritable: false, + isSigner: false, + }, + { + pubkey: extraMetaPda, + isWritable: false, + isSigner: false, + }, + { + pubkey: approveAccount, + isWritable: false, + isSigner: false, + }, + { + pubkey: wnsProgramId, + isWritable: false, + isSigner: false, + }, + ] + ); + return remainingAccounts; + } + + // Need todo metaplex pNFT accounts + return []; +}; + +export const getProgramAddress = ( + seeds: Uint8Array[], + programId: PublicKey +) => { + const [key] = PublicKey.findProgramAddressSync(seeds, programId); + return key; +}; + +export const getAtaAddress = ( + mint: string, + owner: string, + tokenProgram: string +): PublicKey => + getProgramAddress( + [ + new PublicKey(owner).toBuffer(), + new PublicKey(tokenProgram).toBuffer(), + new PublicKey(mint).toBuffer(), + ], + ASSOCIATED_TOKEN_PROGRAM_ID + ); + +// MARKET ACCOUNTS +export const getMarketPda = (marketIdentifier: string) => { + const [marketAccount] = PublicKey.findProgramAddressSync( + [ + utils.bytes.utf8.encode("market"), + new PublicKey(marketIdentifier).toBuffer(), + ], + PROGRAM_ID_MARKETPLACE + ); + + return marketAccount; +}; + +export const getVerificationPda = (marketAddress: string, nftMint: string) => { + const [marketAccount] = PublicKey.findProgramAddressSync( + [ + utils.bytes.utf8.encode("verification"), + new PublicKey(nftMint).toBuffer(), + new PublicKey(marketAddress).toBuffer(), + ], + PROGRAM_ID_MARKETPLACE + ); + + return marketAccount; +}; + +export const getOrderAccount = ( + nonce: string, + marketAddress: string, + user: string +) => { + const [marketAccount] = PublicKey.findProgramAddressSync( + [ + utils.bytes.utf8.encode("order"), + new PublicKey(nonce).toBuffer(), + new PublicKey(marketAddress).toBuffer(), + new PublicKey(user).toBuffer(), + ], + PROGRAM_ID_MARKETPLACE + ); + + return marketAccount; +}; + +export const getEventAuthority = () => { + const [eventAuthority] = PublicKey.findProgramAddressSync( + [utils.bytes.utf8.encode("__event_authority")], + PROGRAM_ID_MARKETPLACE + ); + + return eventAuthority; +}; + +// WNS ACCOUNTS +export const getManagerAccountPda = () => { + const [managerAccount] = PublicKey.findProgramAddressSync( + [utils.bytes.utf8.encode("manager")], + wnsProgramId + ); + + return managerAccount; +}; + +export const getExtraMetasAccountPda = (mint: string) => { + const [extraMetasAccount] = PublicKey.findProgramAddressSync( + [ + utils.bytes.utf8.encode("extra-account-metas"), + new PublicKey(mint).toBuffer(), + ], + wnsProgramId + ); + + return extraMetasAccount; +}; + +export const getApproveAccountPda = (mint: string) => { + const [approveAccount] = PublicKey.findProgramAddressSync( + [ + utils.bytes.utf8.encode("approve-account"), + new PublicKey(mint).toBuffer(), + ], + wnsProgramId + ); + + return approveAccount; +}; + +export const getDistributionAccountPda = ( + groupMint: string, + paymentMint: string +) => { + const [distributionAccount] = PublicKey.findProgramAddressSync( + [ + new PublicKey(groupMint).toBuffer(), + new PublicKey(paymentMint).toBuffer(), + ], + wnsDistributionProgramId + ); + + return distributionAccount; +}; + +export const getGroupMemberAccount = (nftMint: string) => { + const [groupMemberAccount] = PublicKey.findProgramAddressSync( + [utils.bytes.utf8.encode("member"), new PublicKey(nftMint).toBuffer()], + wnsProgramId + ); + + return groupMemberAccount; +}; diff --git a/packages/protocol-contracts-svm-marketplace/src/utils/data.ts b/packages/protocol-contracts-svm-marketplace/src/utils/data.ts new file mode 100644 index 00000000..637c3c50 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/utils/data.ts @@ -0,0 +1,24 @@ +import { AnchorProvider } from "@coral-xyz/anchor"; +import { getRaribleMarketplaceProgram } from "@rarible_int/protocol-contracts-svm-core"; + +// Fetch order +export const fetchOrderByAddress = async (provider: AnchorProvider, orderAddress: string) => { + const marketplaceProgram = getRaribleMarketplaceProgram(provider) + try { + const orderAccount = await marketplaceProgram.account.order.fetch(orderAddress); + return orderAccount; + } catch (e) { + return undefined; + } +}; + +// Fetch market +export const fetchMarketByAddress = async (provider: AnchorProvider, marketAddress: string) => { + const marketplaceProgram = getRaribleMarketplaceProgram(provider); + try { + const marketAccount = await marketplaceProgram.account.market.fetch(marketAddress); + return marketAccount; + } catch (e) { + return undefined; + } +}; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/src/utils/index.ts b/packages/protocol-contracts-svm-marketplace/src/utils/index.ts new file mode 100644 index 00000000..c8a9be2a --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './constants'; +export * from './core'; +export * from './data'; \ No newline at end of file diff --git a/packages/protocol-contracts-svm-marketplace/tsconfig-build.json b/packages/protocol-contracts-svm-marketplace/tsconfig-build.json new file mode 100644 index 00000000..59b67701 --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/tsconfig-build.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "build", + "baseUrl": ".", + "paths": {} + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/protocol-contracts-svm-marketplace/tsconfig.json b/packages/protocol-contracts-svm-marketplace/tsconfig.json new file mode 100644 index 00000000..52d43eaa --- /dev/null +++ b/packages/protocol-contracts-svm-marketplace/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"] +} diff --git a/programs/rarible_editions/Cargo.toml b/programs/rarible_editions/Cargo.toml new file mode 100644 index 00000000..ea54ff3a --- /dev/null +++ b/programs/rarible_editions/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "rarible_editions" +version = "0.2.1" +description = "Created with Anchor" +edition = "2021" +license = "MIT" +repository = "https://github.com/rarible/eclipse-program-library" + +[lib] +crate-type = ["cdylib", "lib"] +name = "rarible_editions" + +[features] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +default = [] +idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] + + +[dependencies] +anchor-lang = {version = "~0.30", features = ["init-if-needed"]} +anchor-spl = {version = "~0.30"} + +solana-program = {version = "1.17.13"} +arrayref = "0.3.7" +spl-token-2022 = {version = "~3.0", features = ["no-entrypoint"]} +spl-token-metadata-interface = {version= "~0.3"} +spl-token-group-interface = {version= "0.2.3"} +spl-transfer-hook-interface = {version= "0.6.3"} +spl-tlv-account-resolution = {version= "0.6.3"} +spl-type-length-value = {version= "0.3.0"} +spl-pod = {version= "~0.2"} +dyn-fmt = "0.3.0" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" + +[dev-dependencies] +solana-program-test = {version= "1.17.13"} +solana-sdk= "1.17.13" \ No newline at end of file diff --git a/programs/rarible_editions/README.md b/programs/rarible_editions/README.md new file mode 100644 index 00000000..11278697 --- /dev/null +++ b/programs/rarible_editions/README.md @@ -0,0 +1,13 @@ +
+ + +

SPL20

+ +

+ Documentation (stable) +

+
+ +Central repository for all SPL20 deployments. +Ticker uniqueness enforced. + diff --git a/programs/wen_new_standard/Xargo.toml b/programs/rarible_editions/Xargo.toml similarity index 100% rename from programs/wen_new_standard/Xargo.toml rename to programs/rarible_editions/Xargo.toml diff --git a/programs/rarible_editions/src/errors.rs b/programs/rarible_editions/src/errors.rs new file mode 100644 index 00000000..62e89f46 --- /dev/null +++ b/programs/rarible_editions/src/errors.rs @@ -0,0 +1,62 @@ +use anchor_lang::prelude::*; + +#[error_code] +pub enum EditionsError { + #[msg("Ticker too long")] + TickerTooLong, + + #[msg("Mint template too long")] + MintTemplateTooLong, + + #[msg("Deployment template too long")] + DeploymentTemplateTooLong, + + #[msg("Root type too long")] + RootTypeTooLong, + + #[msg("Minted out")] + MintedOut, + + #[msg("Legacy migrations are minted out")] + LegacyMigrationsAreMintedOut, + + #[msg("Global tree delegate is missing")] + MissingGlobalTreeDelegate, + + #[msg("Incorrect mint type")] + IncorrectMintType, + + #[msg("Invalid Metadata")] + InvalidMetadata, + + #[msg("Creator fee too high")] + CreatorFeeTooHigh, +} + +#[error_code] +pub enum MetadataErrors { + #[msg("Collection size exceeds max size.")] + SizeExceedsMaxSize, + #[msg("Max size cannot be reduced below current size.")] + MaxSizeBelowCurrentSize, + #[msg("Creators shares must add up to 100.")] + CreatorShareInvalid, + #[msg("Missing approve account.")] + MissingApproveAccount, + #[msg("Approve account has expired.")] + ExpiredApproveAccount, + #[msg("Invalid field. You cannot use a public key as a field.")] + InvalidField, + #[msg("The Address you provided is invalid. Please provide a valid address.")] + CreatorAddressInvalid, + #[msg("Royalty basis points must be less than or equal to 10000.")] + RoyaltyBasisPointsInvalid, + #[msg("Platform fee basis points must be less than or equal to 10000.")] + PlatformFeeBasisPointsInvalid, + #[msg("Recipient shares must add up to 100.")] + RecipientShareInvalid, + #[msg("The provided field is invalid or reserved.")] + ReservedField, + #[msg("Invalid number of platform fee recipients. Exactly 5 recipients are required.")] + InvalidNumberOfRecipients, +} diff --git a/programs/rarible_editions/src/instructions/add_to_hashlist.rs b/programs/rarible_editions/src/instructions/add_to_hashlist.rs new file mode 100644 index 00000000..3ca58b9e --- /dev/null +++ b/programs/rarible_editions/src/instructions/add_to_hashlist.rs @@ -0,0 +1,50 @@ +use anchor_lang::prelude::*; +use anchor_lang::{accounts::{unchecked_account::UncheckedAccount, signer::Signer, program::Program}, system_program::System}; +use solana_program::program::invoke; +use solana_program::pubkey::Pubkey; +use solana_program::system_instruction; + +pub fn add_to_hashlist<'a>( + new_number_of_mints: u32, + hashlist: &mut UncheckedAccount<'a>, + payer: &Signer<'a>, + system_program: &Program<'a, System>, + mint: &Pubkey, + deployment: &Pubkey, + order_number: u64 +) -> Result<()> { + let new_size = 8 + 32 + 4 + (new_number_of_mints) * (32 + 8); + let rent = Rent::get()?; + let new_minimum_balance = rent.minimum_balance(new_size as usize); + let lamports_diff = new_minimum_balance.saturating_sub(hashlist.lamports()); + if lamports_diff > 0 { + invoke( + &system_instruction::transfer(&payer.key(), hashlist.key, lamports_diff), + &[ + payer.to_account_info(), + hashlist.to_account_info(), + system_program.to_account_info(), + ], + )?; + } + hashlist.realloc(new_size as usize, false)?; + let hashlist_account_info = hashlist.to_account_info(); + + let mut hashlist_data = hashlist_account_info.data.borrow_mut(); + + hashlist_data[40..44].copy_from_slice(&new_number_of_mints.to_le_bytes()); + let mint_start_pos:usize = (44+(new_number_of_mints-1)*40) as usize; + hashlist_data[ + mint_start_pos..(mint_start_pos+32) + ].copy_from_slice(mint.key().as_ref()); + hashlist_data[ + mint_start_pos + 32..mint_start_pos + 40 + ].copy_from_slice(&order_number.to_le_bytes()); + + emit!(HashlistEvent { + mint: mint.key(), + deployment: deployment.key() + }); + + Ok(()) +} diff --git a/programs/rarible_editions/src/instructions/initialise.rs b/programs/rarible_editions/src/instructions/initialise.rs new file mode 100644 index 00000000..3b034233 --- /dev/null +++ b/programs/rarible_editions/src/instructions/initialise.rs @@ -0,0 +1,163 @@ +use crate::shared::{create_token_2022_and_metadata, MintAccounts2022, TokenGroupInput}; +use crate::{ + group_extension_program, utils::update_account_lamports_to_minimum_balance, EditionsDeployment, + Hashlist, NAME_LIMIT, SYMBOL_LIMIT, URI_LIMIT, +}; +use anchor_lang::prelude::*; +use solana_program::system_program; +use spl_pod::optional_keys::OptionalNonZeroPubkey; +use spl_token_metadata_interface::state::TokenMetadata; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct InitialiseInput { + pub symbol: String, + pub collection_name: String, + pub collection_uri: String, + pub max_number_of_tokens: u64, // this is the max *number* of tokens + pub creator_cosign_program_id: Option, + // add curlies if you want this to be created dynamically. For example + // ipfs://pippo/{} -> turns into ipfs://pippo/1, ipfs://pippo/2, etc + // without curlies the url is the same for all mints + pub item_base_uri: String, + // add curlies if you want this to be created dynamically. For example + // hippo #{} -> turns into hippo #0, hippo #1, etc + // without curlies the url is the same for all mints + pub item_base_name: String, +} + +#[derive(Accounts)] +#[instruction(input: InitialiseInput)] +pub struct InitialiseCtx<'info> { + #[account(init, payer = payer, space = 8 + EditionsDeployment::INIT_SPACE, + seeds = ["editions_deployment".as_ref(), input.symbol.as_ref()], bump)] + pub editions_deployment: Account<'info, EditionsDeployment>, + + /// CHECK: Checked in PDA. Not deserialized because it can be rather big + #[account(init, seeds = ["hashlist".as_bytes(), + editions_deployment.key().as_ref()], + bump, payer = payer, space = 8 + 32 + 4)] + pub hashlist: Account<'info, Hashlist>, + + #[account(mut)] + pub payer: Signer<'info>, + + /// CHECK: can be different from payer for PDA integration + #[account(mut)] + pub creator: UncheckedAccount<'info>, + + #[account(mut)] + pub group_mint: Signer<'info>, + + #[account(mut)] + pub group: Signer<'info>, + + #[account()] + pub system_program: Program<'info, System>, + + /// CHECK: address checked + #[account(address = spl_token_2022::ID)] + pub token_program: AccountInfo<'info>, + + /// CHECK: address checked + #[account(address = group_extension_program::ID)] + pub group_extension_program: AccountInfo<'info>, +} + +pub fn initialise(ctx: Context, input: InitialiseInput) -> Result<()> { + if input.symbol.len() > SYMBOL_LIMIT { + panic!("Symbol too long"); + } + if input.collection_name.len() > NAME_LIMIT { + panic!("Name too long"); + } + if input.collection_uri.len() > URI_LIMIT { + panic!("Offchain url too long"); + } + + let group_mint = &ctx.accounts.group_mint; + + let group = &ctx.accounts.group; + + let item_uri_is_template = match input.item_base_uri.matches("{}").count() { + 0 => false, + 1 => true, + _ => { + panic!("Only one set of curlies ({{}}) can be specified. url had multiple"); + } + }; + + let item_name_is_template = match input.item_base_name.matches("{}").count() { + 0 => false, + 1 => true, + _ => { + panic!("Only one set of curlies ({{}}) can be specified. name had multiple"); + } + }; + + ctx.accounts + .editions_deployment + .set_inner(EditionsDeployment { + creator: ctx.accounts.creator.key(), + max_number_of_tokens: input.max_number_of_tokens, + number_of_tokens_issued: 0, + group_mint: group_mint.key(), + group: group.key(), + cosigner_program_id: match input.creator_cosign_program_id { + Some(x) => x, + _ => system_program::ID, + }, + symbol: input.symbol, + item_base_name: input.item_base_name, + item_base_uri: input.item_base_uri, + item_name_is_template, + item_uri_is_template, + padding: [0; 98], + }); + + let editions_deployment = &ctx.accounts.editions_deployment; + let payer = &ctx.accounts.payer; + let group_mint = &ctx.accounts.group_mint; + let token_program = &ctx.accounts.token_program; + let group_extension_program = &ctx.accounts.group_extension_program; + + let update_authority = + OptionalNonZeroPubkey::try_from(Some(editions_deployment.key())).expect("Bad update auth"); + + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + editions_deployment.symbol.as_ref(), + &[ctx.bumps.editions_deployment], + ]; + + create_token_2022_and_metadata( + MintAccounts2022 { + authority: editions_deployment.to_account_info(), + payer: payer.to_account_info(), + nft_owner: editions_deployment.to_account_info(), + nft_mint: group_mint.to_account_info(), + spl_token_program: token_program.to_account_info(), + }, + 0, + Some(TokenMetadata { + name: input.collection_name.clone(), + symbol: editions_deployment.symbol.clone(), + uri: input.collection_uri.clone(), + update_authority, + mint: group_mint.key(), + additional_metadata: vec![], // Leave this empty for now, + }), + Some(TokenGroupInput { + group: group.to_account_info(), + max_size: match editions_deployment.max_number_of_tokens { + 0 => u32::MAX, + _ => editions_deployment.max_number_of_tokens as u32, + }, + }), + None, + Some(deployment_seeds), + None, + Some(group_extension_program.key()), + )?; + + Ok(()) +} diff --git a/programs/rarible_editions/src/instructions/metadata/add.rs b/programs/rarible_editions/src/instructions/metadata/add.rs new file mode 100644 index 00000000..a85e7f48 --- /dev/null +++ b/programs/rarible_editions/src/instructions/metadata/add.rs @@ -0,0 +1,103 @@ +use crate::ROYALTY_BASIS_POINTS_FIELD; +use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; +use std::str::FromStr; + +use anchor_spl::token_interface::{ + spl_token_metadata_interface::state::Field, token_metadata_update_field, Token2022, + TokenMetadataUpdateField, +}; + +use crate::utils::update_account_lamports_to_minimum_balance; +use crate::{errors::MetadataErrors, EditionsDeployment}; + +#[derive(Clone, AnchorDeserialize, AnchorSerialize)] +pub struct AddMetadataArgs { + pub field: String, + pub value: String, +} + +#[derive(Accounts)] +pub struct AddMetadata<'info> { + #[account(mut, + seeds = ["editions_deployment".as_ref(), editions_deployment.symbol.as_ref()], bump)] + pub editions_deployment: Account<'info, EditionsDeployment>, + #[account(mut)] + pub payer: Signer<'info>, + + // when deployment.require_creator_cosign is true, this must be equal to the creator + // of the deployment otherwise, can be any signer account + #[account(mut, + constraint = signer.key() == editions_deployment.creator + )] + pub signer: Signer<'info>, + #[account(mut)] + pub mint: Signer<'info>, + pub system_program: Program<'info, System>, + pub token_program: Program<'info, Token2022>, +} + +impl<'info> AddMetadata<'info> { + fn update_token_metadata_field( + &self, + field: Field, + value: String, + bump_edition: u8, + ) -> ProgramResult { + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + self.editions_deployment.symbol.as_ref(), + &[bump_edition], + ]; + let signer_seeds: &[&[&[u8]]] = &[deployment_seeds]; + let cpi_accounts = TokenMetadataUpdateField { + token_program_id: self.token_program.to_account_info(), + metadata: self.mint.to_account_info(), + update_authority: self.editions_deployment.to_account_info(), + }; + + let cpi_ctx = CpiContext::new_with_signer( + self.token_program.to_account_info(), + cpi_accounts, + signer_seeds, + ); + token_metadata_update_field(cpi_ctx, field, value)?; + Ok(()) + } +} + +pub fn handler(ctx: Context, args: Vec) -> Result<()> { + for metadata_arg in args { + // Validate that the field is not a public key + if Pubkey::from_str(&metadata_arg.field).is_ok() { + return Err(MetadataErrors::InvalidField.into()); + } + + // Validate that the field does not start with reserved prefixes + if metadata_arg.field.starts_with(ROYALTY_BASIS_POINTS_FIELD) { + return Err(MetadataErrors::InvalidField.into()); + } + + // validate that the field is not a publickey + match Pubkey::from_str(&metadata_arg.field) { + Ok(_) => { + return Err(MetadataErrors::InvalidField.into()); + } + Err(_) => { + ctx.accounts.update_token_metadata_field( + Field::Key(metadata_arg.field), + metadata_arg.value.to_string(), + ctx.bumps.editions_deployment, + )?; + } + } + } + + // transfer minimum rent to mint account + update_account_lamports_to_minimum_balance( + ctx.accounts.mint.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + )?; + + Ok(()) +} diff --git a/programs/wen_new_standard/src/instructions/mint/group/mod.rs b/programs/rarible_editions/src/instructions/metadata/mod.rs similarity index 100% rename from programs/wen_new_standard/src/instructions/mint/group/mod.rs rename to programs/rarible_editions/src/instructions/metadata/mod.rs diff --git a/programs/rarible_editions/src/instructions/metadata/remove.rs b/programs/rarible_editions/src/instructions/metadata/remove.rs new file mode 100644 index 00000000..b8711bef --- /dev/null +++ b/programs/rarible_editions/src/instructions/metadata/remove.rs @@ -0,0 +1,104 @@ +use std::str::FromStr; + +use anchor_lang::{prelude::*, solana_program::program::invoke}; + +use crate::utils::update_account_lamports_to_minimum_balance; +use crate::{errors::MetadataErrors, EditionsDeployment, ROYALTY_BASIS_POINTS_FIELD}; +use anchor_spl::{ + token_interface::spl_token_metadata_interface::instruction::remove_key, + token_interface::{Mint, Token2022}, +}; +use solana_program::program::invoke_signed; + +#[derive(AnchorDeserialize, AnchorSerialize)] +pub struct RemoveMetadataArgs { + pub field: String, + pub value: String, +} + +#[derive(Accounts)] +pub struct RemoveMetadata<'info> { + #[account(mut, + seeds = ["editions_deployment".as_ref(), editions_deployment.symbol.as_ref()], bump)] + pub editions_deployment: Account<'info, EditionsDeployment>, + #[account(mut)] + pub payer: Signer<'info>, + + // when deployment.require_creator_cosign is true, this must be equal to the creator + // of the deployment otherwise, can be any signer account + #[account(mut, + constraint = signer.key() == editions_deployment.creator + )] + pub signer: Signer<'info>, + pub mint: Box>, + pub system_program: Program<'info, System>, + pub token_program: Program<'info, Token2022>, +} + +impl<'info> RemoveMetadata<'info> { + // ToDo: Create a macro for it + fn remove_token_metadata_field(&self, field: String, bump_edition: u8) -> Result<()> { + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + self.editions_deployment.symbol.as_ref(), + &[bump_edition], + ]; + let signer_seeds: &[&[&[u8]]] = &[deployment_seeds]; + + invoke_signed( + &remove_key( + &self.token_program.key(), + &self.mint.key(), + &self.editions_deployment.key(), + field, + false, + ), + &[ + self.mint.to_account_info(), + self.editions_deployment.to_account_info(), + ], + signer_seeds, + )?; + + Ok(()) + } +} + +pub fn handler(ctx: Context, args: Vec) -> Result<()> { + for metadata_arg in args { + // Validate that the field is not a public key + if Pubkey::from_str(&metadata_arg.field).is_ok() { + return Err(MetadataErrors::InvalidField.into()); + } + + // Validate that the field does not start with reserved prefixes + if metadata_arg.field.starts_with(ROYALTY_BASIS_POINTS_FIELD) { + return Err(MetadataErrors::InvalidField.into()); + } + + if metadata_arg.field.to_string() == ROYALTY_BASIS_POINTS_FIELD { + continue; + } + // validate that the field is not a publickey + match Pubkey::from_str(&metadata_arg.field) { + Ok(_) => { + return Err(MetadataErrors::InvalidField.into()); + } + Err(_) => { + ctx.accounts.remove_token_metadata_field( + metadata_arg.field, + ctx.bumps.editions_deployment, + )?; + } + } + } + + // transfer minimum rent to mint account + update_account_lamports_to_minimum_balance( + ctx.accounts.mint.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + )?; + + Ok(()) +} diff --git a/programs/rarible_editions/src/instructions/mint.rs b/programs/rarible_editions/src/instructions/mint.rs new file mode 100644 index 00000000..4680eaba --- /dev/null +++ b/programs/rarible_editions/src/instructions/mint.rs @@ -0,0 +1,217 @@ +use anchor_lang::{prelude::*, system_program}; +use anchor_spl::token_2022_extensions::{token_metadata_update_field, TokenMetadataUpdateField}; +use anchor_spl::{associated_token::AssociatedToken, token_2022}; +use dyn_fmt::AsStrFormatExt; +use spl_pod::optional_keys::OptionalNonZeroPubkey; +use spl_token_metadata_interface::state::{Field, TokenMetadata}; + +use crate::shared::{ + create_token_2022_and_metadata, mint_non_fungible_2022_logic, MintAccounts2022, SharedError, + TokenMemberInput, +}; +use crate::utils::{get_mint_metadata, update_account_lamports_to_minimum_balance}; +use crate::{errors::EditionsError, group_extension_program, EditionsDeployment}; + +use super::TokenGroupInput; +#[derive(Accounts)] +pub struct MintCtx<'info> { + #[account(mut, + seeds = ["editions_deployment".as_ref(), editions_deployment.symbol.as_ref()], bump)] + pub editions_deployment: Account<'info, EditionsDeployment>, + + #[account(mut)] + pub payer: Signer<'info>, + + // when deployment.require_creator_cosign is true, this must be equal to the creator + // of the deployment otherwise, can be any signer account + #[account(mut, + constraint = editions_deployment.cosigner_program_id == system_program::ID || signer.key() == editions_deployment.creator + )] + pub signer: Signer<'info>, + + /// CHECK: It's a fair launch. Anybody can sign, anybody can receive the inscription + #[account(mut)] + pub minter: UncheckedAccount<'info>, + + /// CHECK: It's a fair launch. Anybody can sign, anybody can receive the inscription + + #[account(mut)] + pub mint: Signer<'info>, + + #[account(mut)] + pub member: Signer<'info>, + + /// CHECK: Checked in constraint + #[account(mut, + constraint = editions_deployment.group == group.key())] + pub group: UncheckedAccount<'info>, + + /// CHECK: Checked in constraint + #[account(mut, + constraint = editions_deployment.group_mint == group_mint.key())] + pub group_mint: UncheckedAccount<'info>, + + /// CHECK: passed in via CPI to mpl_token_metadata program + #[account(mut)] + pub token_account: UncheckedAccount<'info>, + + /* BOILERPLATE PROGRAM ACCOUNTS */ + /// CHECK: Checked in constraint + #[account( + constraint = token_program.key() == token_2022::ID + )] + pub token_program: UncheckedAccount<'info>, + + #[account()] + pub associated_token_program: Program<'info, AssociatedToken>, + + /// CHECK: address checked + #[account(address = group_extension_program::ID)] + pub group_extension_program: AccountInfo<'info>, + + #[account()] + pub system_program: Program<'info, System>, +} + +pub fn mint<'info>(ctx: Context<'_, '_, '_, 'info, MintCtx<'info>>) -> Result<()> { + // let MintToken2022Ctx { + + // .. + // } = &ctx.accounts; + + let payer = &ctx.accounts.payer; + let signer = &ctx.accounts.signer; + let minter = &ctx.accounts.minter; + let minter_token_account = &ctx.accounts.token_account; + let token_program = &ctx.accounts.token_program; + let associated_token_program = &ctx.accounts.associated_token_program; + let system_program = &ctx.accounts.system_program; + let mint = &ctx.accounts.mint; + let member = &ctx.accounts.member; + + let group = &ctx.accounts.group; + let group_mint = &ctx.accounts.group_mint; + let group_extension_program = &ctx.accounts.group_extension_program; + // mutable borrows + let editions_deployment = &mut ctx.accounts.editions_deployment; + + if !editions_deployment + .cosigner_program_id + .eq(&system_program::ID) + && !signer.key().eq(&editions_deployment.creator.key()) + { + return Err(SharedError::InvalidCreatorCosigner.into()); + } + + // max_number_of_tokens == 0 means unlimited mints + if editions_deployment.max_number_of_tokens > 0 + && editions_deployment.number_of_tokens_issued >= editions_deployment.max_number_of_tokens + { + return Err(EditionsError::MintedOut.into()); + } + + let update_authority = + OptionalNonZeroPubkey::try_from(Some(editions_deployment.key())).expect("Bad update auth"); + + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + editions_deployment.symbol.as_ref(), + &[ctx.bumps.editions_deployment], + ]; + + let item_name = match editions_deployment.item_name_is_template { + true => editions_deployment + .item_base_name + .format(&[editions_deployment.number_of_tokens_issued + 1]), + false => editions_deployment.item_base_name.clone(), + }; + + let item_url = match editions_deployment.item_uri_is_template { + true => editions_deployment + .item_base_uri + .format(&[editions_deployment.number_of_tokens_issued + 1]), + false => editions_deployment.item_base_uri.clone(), + }; + + create_token_2022_and_metadata( + MintAccounts2022 { + authority: editions_deployment.to_account_info(), + payer: payer.to_account_info(), + nft_owner: minter.to_account_info(), + nft_mint: mint.to_account_info(), + spl_token_program: token_program.to_account_info(), + }, + 0, + Some(TokenMetadata { + name: item_name, + symbol: editions_deployment.symbol.clone(), + uri: item_url, + update_authority, + mint: mint.key(), + additional_metadata: vec![], + }), + None, + Some(TokenMemberInput { + member: member.to_account_info(), + group: group.to_account_info(), + }), + Some(deployment_seeds), + None, + Some(group_extension_program.key()), + )?; + + mint_non_fungible_2022_logic( + &mint.to_account_info(), + minter_token_account, + associated_token_program, + payer, + &minter.to_account_info(), + system_program, + token_program, + &editions_deployment.to_account_info(), + deployment_seeds, + )?; + + editions_deployment.number_of_tokens_issued += 1; + + // Retrieve metadata from the group mint + let meta = get_mint_metadata(&mut group_mint.to_account_info())?; + let additional_meta = meta.additional_metadata; + + // Process each additional metadata key-value pair, excluding platform fee + for additional_metadatum in additional_meta { + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + editions_deployment.symbol.as_ref(), + &[ctx.bumps.editions_deployment], + ]; + let signer_seeds: &[&[&[u8]]] = &[deployment_seeds]; + + let cpi_accounts = TokenMetadataUpdateField { + token_program_id: token_program.to_account_info(), + metadata: mint.to_account_info(), + update_authority: editions_deployment.to_account_info(), + }; + + let cpi_ctx = CpiContext::new_with_signer( + token_program.to_account_info(), + cpi_accounts, + signer_seeds, + ); + + token_metadata_update_field( + cpi_ctx, + Field::Key(additional_metadatum.0), + additional_metadatum.1, + )?; + } + + // Transfer minimum rent to the mint account + update_account_lamports_to_minimum_balance( + ctx.accounts.mint.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + )?; + + Ok(()) +} diff --git a/programs/rarible_editions/src/instructions/mod.rs b/programs/rarible_editions/src/instructions/mod.rs new file mode 100644 index 00000000..d5d775c1 --- /dev/null +++ b/programs/rarible_editions/src/instructions/mod.rs @@ -0,0 +1,18 @@ +/* + initialises a new launch. does not create any + on-chain accounts, mints, token accounts etc +*/ +pub mod initialise; +pub use initialise::*; + +pub mod royalties; +pub use royalties::*; + +pub mod metadata; +pub use metadata::*; + +pub mod mint; +pub use mint::*; + +pub mod shared; +pub use shared::*; diff --git a/programs/rarible_editions/src/instructions/royalties/add.rs b/programs/rarible_editions/src/instructions/royalties/add.rs new file mode 100644 index 00000000..8575b55d --- /dev/null +++ b/programs/rarible_editions/src/instructions/royalties/add.rs @@ -0,0 +1,129 @@ +use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; +use anchor_spl::token_interface::{ + spl_token_metadata_interface::state::Field, token_metadata_update_field, transfer_hook_update, + Mint, Token2022, TokenMetadataUpdateField, TransferHookUpdate, +}; + +use crate::errors::MetadataErrors; +use crate::utils::update_account_lamports_to_minimum_balance; +use crate::{EditionsDeployment, UpdateRoyaltiesArgs, ROYALTY_BASIS_POINTS_FIELD}; + +#[derive(Accounts)] +#[instruction(args: UpdateRoyaltiesArgs)] +pub struct AddRoyalties<'info> { + #[account(mut, + seeds = ["editions_deployment".as_ref(), editions_deployment.symbol.as_ref()], bump)] + pub editions_deployment: Account<'info, EditionsDeployment>, + #[account(mut)] + pub payer: Signer<'info>, + + // when deployment.require_creator_cosign is true, this must be equal to the creator + // of the deployment otherwise, can be any signer account + #[account(mut, + constraint = signer.key() == editions_deployment.creator)] + pub signer: Signer<'info>, + #[account(mut)] + pub mint: Signer<'info>, + // /// CHECK: This account's data is a buffer of TLV data + // #[account( + // init, + // space = get_meta_list_size(get_approve_account_pda(mint.key())), + // seeds = [META_LIST_ACCOUNT_SEED, mint.key().as_ref()], + // bump, + // payer = payer, + // )] + // pub extra_metas_account: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, + pub token_program: Program<'info, Token2022>, +} + +impl<'info> AddRoyalties<'info> { + fn update_token_metadata_field( + &self, + field: Field, + value: String, + bump_edition: u8, + ) -> ProgramResult { + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + self.editions_deployment.symbol.as_ref(), + &[bump_edition], + ]; + let signer_seeds: &[&[&[u8]]] = &[deployment_seeds]; + + let cpi_accounts = TokenMetadataUpdateField { + token_program_id: self.token_program.to_account_info(), + metadata: self.mint.to_account_info(), + update_authority: self.editions_deployment.to_account_info(), + }; + let cpi_ctx = CpiContext::new_with_signer( + self.token_program.to_account_info(), + cpi_accounts, + signer_seeds, + ); + token_metadata_update_field(cpi_ctx, field, value)?; + Ok(()) + } + + // TODO add hook later + // fn update_transfer_hook_program_id(&self) -> Result<()> { + // let cpi_accounts = TransferHookUpdate { + // token_program_id: self.token_program.to_account_info(), + // mint: self.mint.to_account_info(), + // authority: self.authority.to_account_info(), + // }; + // let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); + // transfer_hook_update(cpi_ctx, Some(crate::id()))?; + // Ok(()) + // } +} + +pub fn handler(ctx: Context, args: UpdateRoyaltiesArgs) -> Result<()> { + // validate that the fee_basis_point is less than 10000 (100%) + require!( + args.royalty_basis_points <= 10000, + MetadataErrors::RoyaltyBasisPointsInvalid + ); + + // add royalty basis points to metadata + ctx.accounts.update_token_metadata_field( + Field::Key(ROYALTY_BASIS_POINTS_FIELD.to_owned()), + args.royalty_basis_points.to_string(), + ctx.bumps.editions_deployment, + )?; + + let mut total_share: u8 = 0; + // add creators and their respective shares to metadata + for creator in args.creators { + total_share = total_share + .checked_add(creator.share) + .ok_or(MetadataErrors::CreatorShareInvalid)?; + ctx.accounts.update_token_metadata_field( + Field::Key(creator.address.to_string()), + creator.share.to_string(), + ctx.bumps.editions_deployment, + )?; + } + + if total_share != 100 { + return Err(MetadataErrors::CreatorShareInvalid.into()); + } + + // initialize the extra metas account + // let extra_metas_account = &ctx.accounts.extra_metas_account; + // let metas = get_meta_list(get_approve_account_pda(ctx.accounts.mint.key())); + // let mut data = extra_metas_account.try_borrow_mut_data()?; + // ExtraAccountMetaList::init::(&mut data, &metas)?; + + // add metadata program as the transfer hook program + // ctx.accounts.update_transfer_hook_program_id()?; + + // transfer minimum rent to mint account + update_account_lamports_to_minimum_balance( + ctx.accounts.mint.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + )?; + + Ok(()) +} diff --git a/programs/wen_new_standard/src/instructions/mint/royalties/mod.rs b/programs/rarible_editions/src/instructions/royalties/mod.rs similarity index 100% rename from programs/wen_new_standard/src/instructions/mint/royalties/mod.rs rename to programs/rarible_editions/src/instructions/royalties/mod.rs diff --git a/programs/rarible_editions/src/instructions/royalties/modify.rs b/programs/rarible_editions/src/instructions/royalties/modify.rs new file mode 100644 index 00000000..42aacce5 --- /dev/null +++ b/programs/rarible_editions/src/instructions/royalties/modify.rs @@ -0,0 +1,202 @@ +use std::str::FromStr; + +use anchor_lang::{ + prelude::*, + solana_program::{entrypoint::ProgramResult, program::invoke}, +}; + +use crate::errors::MetadataErrors; +use crate::utils::update_account_lamports_to_minimum_balance; +use crate::{EditionsDeployment, UpdateRoyaltiesArgs, ROYALTY_BASIS_POINTS_FIELD}; +use anchor_spl::token_interface::{ + spl_token_2022::{ + extension::{BaseStateWithExtensions, StateWithExtensions}, + state::Mint as BaseStateMint, + }, + spl_token_metadata_interface::instruction::remove_key, + spl_token_metadata_interface::state::Field, + spl_token_metadata_interface::state::TokenMetadata, + token_metadata_update_field, Mint, Token2022, TokenMetadataUpdateField, +}; +use solana_program::program::invoke_signed; + +#[derive(Accounts)] +#[instruction(args: UpdateRoyaltiesArgs)] +pub struct ModifyRoyalties<'info> { + #[account(mut)] + pub payer: Signer<'info>, + #[account(mut, + seeds = ["editions_deployment".as_ref(), editions_deployment.symbol.as_ref()], bump)] + pub editions_deployment: Account<'info, EditionsDeployment>, + #[account(mut, + constraint = signer.key() == editions_deployment.creator)] + pub signer: Signer<'info>, + #[account( + mut, + mint::token_program = token_program, + )] + pub mint: Box>, + pub system_program: Program<'info, System>, + pub token_program: Program<'info, Token2022>, +} + +impl<'info> ModifyRoyalties<'info> { + fn update_token_metadata_field( + &self, + field: Field, + value: String, + bump_edition: u8, + ) -> ProgramResult { + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + self.editions_deployment.symbol.as_ref(), + &[bump_edition], + ]; + let signer_seeds: &[&[&[u8]]] = &[deployment_seeds]; + + let cpi_accounts = TokenMetadataUpdateField { + token_program_id: self.token_program.to_account_info(), + metadata: self.mint.to_account_info().clone(), + update_authority: self.editions_deployment.to_account_info(), + }; + let cpi_ctx = CpiContext::new_with_signer( + self.token_program.to_account_info(), + cpi_accounts, + signer_seeds, + ); + token_metadata_update_field(cpi_ctx, field, value)?; + Ok(()) + } + + // ToDo: Create a macro for it + fn remove_token_metadata_field(&self, field: &str, bump_edition: u8) -> Result<()> { + let deployment_seeds: &[&[u8]] = &[ + "editions_deployment".as_bytes(), + self.editions_deployment.symbol.as_ref(), + &[bump_edition], + ]; + let signer_seeds: &[&[&[u8]]] = &[deployment_seeds]; + invoke_signed( + &remove_key( + &self.token_program.key(), + &self.mint.key(), + &self.editions_deployment.key(), + field.to_string(), + false, + ), + &[ + self.mint.to_account_info(), + self.editions_deployment.to_account_info(), + ], + signer_seeds, + )?; + + Ok(()) + } +} + +pub fn handler(ctx: Context, args: UpdateRoyaltiesArgs) -> Result<()> { + // Log start of handler execution + msg!("royalties::handler::start"); + + // Log fetching metadata from mint account + msg!("royalties::handler::fetch_metadata"); + let metadata = { + let mint_account = ctx.accounts.mint.to_account_info().clone(); + let mint_account_data = mint_account.try_borrow_data()?; + let mint_data = StateWithExtensions::::unpack(&mint_account_data)?; + mint_data.get_variable_len_extension::()? + }; + + // Log validation of royalty basis points + msg!("royalties::handler::validate_royalty_basis_points"); + require!( + args.royalty_basis_points <= 10000, + MetadataErrors::RoyaltyBasisPointsInvalid + ); + + // Log updating the token metadata field for royalty basis points + msg!( + "royalties::handler::update_royalty_basis_points: {}", + args.royalty_basis_points + ); + ctx.accounts.update_token_metadata_field( + Field::Key(ROYALTY_BASIS_POINTS_FIELD.to_owned()), + args.royalty_basis_points.to_string(), + ctx.bumps.editions_deployment, + )?; + + let mut total_share: u8 = 0; + + // Log iterating over creators to update their metadata + msg!("royalties::handler::update_creators_metadata"); + for creator in args.creators.clone() { + // Log the creator's address and share + msg!( + "royalties::handler::creator: address={}, share={}", + creator.address, + creator.share + ); + + total_share = total_share + .checked_add(creator.share) + .ok_or(MetadataErrors::CreatorShareInvalid)?; + + // Log updating creator metadata field + msg!( + "royalties::handler::update_creator_field: address={}, share={}", + creator.address, + creator.share + ); + ctx.accounts.update_token_metadata_field( + Field::Key(creator.address.to_string()), + creator.share.to_string(), + ctx.bumps.editions_deployment, + )?; + } + + // Log validation of total share + msg!("royalties::handler::validate_total_share: {}", total_share); + if total_share != 100 { + return Err(MetadataErrors::CreatorShareInvalid.into()); + } + + // Log filtering metadata to remove fields not in args + msg!("royalties::handler::remove_unused_metadata"); + let creators = args.creators; + let creators_additional_metadata: Vec<&(String, String)> = metadata + .additional_metadata + .iter() + .filter(|(key, _)| !key.starts_with("royalty")) + .collect(); + + for (key, _) in creators_additional_metadata { + match Pubkey::from_str(key) { + Ok(parsed_key) => { + if !creators.iter().any(|creator| creator.address == parsed_key) { + // Log removal of old metadata field + msg!("royalties::handler::remove_field: {}", key); + ctx.accounts + .remove_token_metadata_field(key, ctx.bumps.editions_deployment)?; + } + } + Err(_) => { + // Key is not a valid Pubkey, remove it or handle accordingly + msg!("royalties::handler::invalid_key_not_a_pubkey: {}", key); + } + } + } + + // Log updating account lamports to minimum balance + msg!("royalties::handler::update_account_lamports"); + update_account_lamports_to_minimum_balance( + ctx.accounts.mint.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + )?; + + // Log successful completion of the handler + msg!("royalties::handler::success"); + + Ok(()) +} diff --git a/programs/rarible_editions/src/instructions/shared/error.rs b/programs/rarible_editions/src/instructions/shared/error.rs new file mode 100644 index 00000000..92a8dca8 --- /dev/null +++ b/programs/rarible_editions/src/instructions/shared/error.rs @@ -0,0 +1,84 @@ +use anchor_lang::prelude::*; + +#[error_code] +pub enum SharedError { + // 6000 + #[msg("Numeric overflow")] + NumericalOverflow, + + // 6001 + #[msg("Derived key invalid")] + DerivedKeyInvalid, + + // 6002 + #[msg("Missing bump")] + MissingBump, + + // 6003 + #[msg("Invalid bump")] + InvalidBump, + + // 6004 + #[msg("Missing master edition for NFT")] + MissingMasterEditionForNft, + + // 6005 + #[msg("Token account not empty")] + TokenAccountNotEmpty, + + // 6006 + #[msg("Missing token account")] + MissingTokenAccount, + + // 6006 + #[msg("Missing destination account")] + MissingDestinationAccount, + + #[msg("Bad treasury")] + BadTreasury, + + #[msg("Bad owner")] + BadOwner, + + #[msg("Bad mint")] + BadMint, + + #[msg("Bad mint on token account")] + BadTokenAccountMint, + + #[msg("Bad owner of token account")] + BadTokenAccountOwner, + + #[msg("Bad token account")] + BadTokenAccount, + + #[msg("Insufficient funds")] + InsufficientFunds, + + #[msg("Invalid token account")] + InvalidTokenAccount, + + #[msg("Instruction build error")] + InstructionBuildError, + + #[msg("Unexpected token type")] + UnexpectedTokenType, + + #[msg("When transferring a pNFT, the amount must be 1")] + CannotTransferMultiplePnfts, + + #[msg("Must transfer auth seeds for native sol")] + NativeSolAuthSeedsNotSpecified, + + #[msg("Missing token record")] + MissingTokenRecord, + + #[msg("Instruction builder failed")] + InstructionBuilderFailed, + + #[msg("Spl conversion not allowed")] + SplConversionNotAllowed, + + #[msg("This deployment requires the creator to co-sign")] + InvalidCreatorCosigner, +} diff --git a/programs/rarible_editions/src/instructions/shared/mint.rs b/programs/rarible_editions/src/instructions/shared/mint.rs new file mode 100644 index 00000000..3794871e --- /dev/null +++ b/programs/rarible_editions/src/instructions/shared/mint.rs @@ -0,0 +1,99 @@ +use anchor_lang::prelude::*; +use anchor_spl::{ + associated_token::AssociatedToken, + token_interface::{mint_to, set_authority, MintTo, SetAuthority}, +}; + +use crate::SharedError; +// use libreplex_shared::sysvar_instructions_program; + +pub fn mint_non_fungible_2022_logic<'a>( + non_fungible_mint: &AccountInfo<'a>, + non_fungible_token_account: &AccountInfo<'a>, + associated_token_program: &Program<'a, AssociatedToken>, + payer: &Signer<'a>, + minter: &AccountInfo<'a>, + system_program: &Program<'a, System>, + token_program: &UncheckedAccount<'a>, + authority: &AccountInfo<'a>, + deployment_seeds: &[&[u8]], +) -> Result<()> { + msg!("MINT NON-FUNGIBLE {}", token_program.key()); + let expected_token_account = + anchor_spl::associated_token::get_associated_token_address_with_program_id( + &minter.key(), + &non_fungible_mint.key(), + &token_program.key(), + ); + if expected_token_account != non_fungible_token_account.key() { + return Err(SharedError::InvalidTokenAccount.into()); + } + if non_fungible_token_account.to_account_info().data_is_empty() { + msg!("{}", payer.key()); + anchor_spl::associated_token::create(CpiContext::new_with_signer( + associated_token_program.to_account_info(), + anchor_spl::associated_token::Create { + payer: payer.to_account_info(), + associated_token: non_fungible_token_account.to_account_info(), + authority: minter.clone(), + mint: non_fungible_mint.clone(), + system_program: system_program.to_account_info(), + token_program: token_program.to_account_info(), + }, + &[deployment_seeds], + ))?; + } + + if token_program.key().eq(&spl_token_2022::ID) { + msg!("Minting {}", token_program.key()); + mint_to( + CpiContext::new_with_signer( + token_program.to_account_info(), + MintTo { + mint: non_fungible_mint.clone(), + to: non_fungible_token_account.to_account_info(), + authority: authority.clone(), + }, + &[deployment_seeds], + ), + 1, + )?; + // no longer removing freeze auth etc as this + // kills things like escrowless staking. keeping update + // auth too + + // msg!("Removing freeze auth - non_fungible"); + + // set_authority( + // CpiContext::new_with_signer( + // token_program.to_account_info(), + // SetAuthority { + // current_authority: authority.clone(), + // account_or_mint: non_fungible_mint.clone(), + // }, + // &[deployment_seeds] + // ), + // anchor_spl::token_2022::spl_token_2022::instruction::AuthorityType::FreezeAccount, + // None, + // )?; + + msg!("Removing mint authority"); + // ok we are at max mint + set_authority( + CpiContext::new_with_signer( + token_program.to_account_info(), + SetAuthority { + current_authority: authority.clone(), + account_or_mint: non_fungible_mint.clone(), + }, + &[deployment_seeds], + ), + anchor_spl::token_2022::spl_token_2022::instruction::AuthorityType::MintTokens, + None, + )?; + msg!("done"); + } else { + panic!("This method is only compatible with token-2022") + } + Ok(()) +} diff --git a/programs/rarible_editions/src/instructions/shared/mod.rs b/programs/rarible_editions/src/instructions/shared/mod.rs new file mode 100644 index 00000000..eb1a2d8f --- /dev/null +++ b/programs/rarible_editions/src/instructions/shared/mod.rs @@ -0,0 +1,8 @@ +pub mod error; +pub use error::*; + +pub mod mint; +pub use mint::*; + +pub mod processor; +pub use processor::*; diff --git a/programs/rarible_editions/src/instructions/shared/processor.rs b/programs/rarible_editions/src/instructions/shared/processor.rs new file mode 100644 index 00000000..b3846159 --- /dev/null +++ b/programs/rarible_editions/src/instructions/shared/processor.rs @@ -0,0 +1,449 @@ +/// Accounts to mint an NFT. +use anchor_lang::prelude::*; + +use solana_program::{ + program::{invoke, invoke_signed}, + system_instruction, +}; + +use spl_token_2022::{ + extension::{group_pointer::GroupPointer, transfer_fee::TransferFeeConfig, ExtensionType}, + instruction::initialize_mint2, + state::Mint, +}; + +use spl_token_group_interface::{ + instruction::{initialize_group, initialize_member}, + state::{TokenGroup, TokenGroupMember}, +}; +use spl_token_metadata_interface::{instruction::initialize, state::TokenMetadata}; +use spl_type_length_value::state::{TlvState, TlvStateBorrowed}; + +/// Accounts to mint an NFT. +pub struct MintAccounts2022<'info> { + pub authority: AccountInfo<'info>, + pub payer: AccountInfo<'info>, + pub nft_owner: AccountInfo<'info>, + pub nft_mint: AccountInfo<'info>, + pub spl_token_program: AccountInfo<'info>, +} + +pub struct TokenGroupInput<'f> { + pub max_size: u32, + pub group: AccountInfo<'f>, +} + +pub struct TokenMemberInput<'f> { + pub group: AccountInfo<'f>, + pub member: AccountInfo<'f>, +} + +pub struct TransferFeeParams { + pub transfer_fee_bps: u16, + pub withdraw_fee_authority: Pubkey, +} + +/// Creates the metadata accounts and mint a new token. +pub fn create_token_2022_and_metadata<'a>( + accounts: MintAccounts2022<'a>, + decimals: u8, + token_metadata: Option, + // token group is optional - specifying this turns this into a group mint + token_group: Option>, + token_member: Option>, + auth_seeds: Option<&[&[u8]]>, + transfer_fee_params: Option, + token_group_program_id: Option, +) -> Result<()> { + // msg!("create_token_2022_and_metadata called"); + let MintAccounts2022 { + payer, + nft_mint, + spl_token_program, + nft_owner, + authority, + .. + } = accounts; + + let rent = Rent::get()?; + + let mut extension_types = vec![]; + + let mut extension_extra_space: usize = 0; + + match &token_metadata { + Some(x) => { + extension_types.push(ExtensionType::MetadataPointer); + extension_extra_space += x.tlv_size_of().unwrap(); + } + None => {} + }; + + match &token_group { + Some(_) => { + extension_types.push(ExtensionType::GroupPointer); + // extension_types.push(ExtensionType::TokenGroup); + extension_extra_space += std::mem::size_of::() + // + std::mem::size_of::() + + TlvStateBorrowed::get_base_len(); + + extension_extra_space += + std::mem::size_of::() + TlvStateBorrowed::get_base_len(); + } + None => {} + }; + + if let Some(x) = &transfer_fee_params { + if x.transfer_fee_bps > 0 { + extension_types.push(ExtensionType::TransferFeeConfig); + extension_extra_space += std::mem::size_of::() + } + } + + match &token_member { + Some(_) => { + extension_types.push(ExtensionType::GroupMemberPointer); + extension_extra_space += + std::mem::size_of::() + TlvStateBorrowed::get_base_len(); + } + None => {} + }; + + let base_size = ExtensionType::try_calculate_account_len::(&extension_types).unwrap(); + + let rent_lamports = rent.minimum_balance(base_size + extension_extra_space); + + let create_account_ix = system_instruction::create_account( + &payer.key(), + &nft_mint.key(), + rent_lamports, + (base_size).try_into().unwrap(), + &spl_token_2022::ID, // &token_group_program_id.unwrap() //, + ); + + msg!("Invoke create account {},{}", payer.key(), nft_mint.key()); + + invoke( + &create_account_ix, + &[ + nft_mint.to_account_info(), + payer.to_account_info(), + spl_token_program.to_account_info(), + ], + )?; + + if token_metadata.is_some() { + let initialize_extension = + spl_token_2022::extension::metadata_pointer::instruction::initialize( + &spl_token_2022::ID, + &nft_mint.key(), + Some(authority.key()), + // we are using the native metadata implementation, + // hence setting metadata address = mint address + Some(nft_mint.key()), + ) + .unwrap(); + + msg!("Invoke initialise metadata pointer extension"); + + match auth_seeds { + Some(x) => { + invoke_signed( + &initialize_extension, + &[authority.to_account_info(), nft_mint.to_account_info()], + &[x], + )?; + } + None => { + invoke( + &initialize_extension, + &[authority.to_account_info(), nft_mint.to_account_info()], + )?; + } + } + } + + if let Some(tfp) = &transfer_fee_params { + if tfp.transfer_fee_bps > 0 { + let initialise_transfer_fee_extension = + spl_token_2022::extension::transfer_fee::instruction::initialize_transfer_fee_config( + &spl_token_2022::ID, + &nft_mint.key(), + Some(&authority.key()), + Some(&tfp.withdraw_fee_authority), + tfp.transfer_fee_bps, + std::u64::MAX, + )?; + match &auth_seeds { + Some(y) => { + invoke_signed( + &initialise_transfer_fee_extension, + &[ + nft_mint.to_account_info(), + authority.to_account_info(), + nft_mint.to_account_info(), + ], + &[y], + )?; + } + None => { + invoke( + &initialise_transfer_fee_extension, + &[ + nft_mint.to_account_info(), + authority.to_account_info(), + nft_mint.to_account_info(), + ], + )?; + } + } + } + } + + match &token_group { + Some(_x) => { + let initialize_extension = + spl_token_2022::extension::group_pointer::instruction::initialize( + &spl_token_2022::ID, + &nft_mint.key(), + Some(authority.key()), + Some(nft_mint.key()), + ) + .unwrap(); + match &auth_seeds { + Some(y) => { + invoke_signed( + &initialize_extension, + &[ + nft_mint.to_account_info(), + authority.to_account_info(), + nft_mint.to_account_info(), + ], + &[y], + )?; + } + None => { + invoke( + &initialize_extension, + &[ + nft_mint.to_account_info(), + authority.to_account_info(), + nft_mint.to_account_info(), + ], + )?; + } + } + } + None => {} + } + + match &token_member { + Some(x) => { + let initialize_extension = + spl_token_2022::extension::group_member_pointer::instruction::initialize( + &spl_token_2022::ID, + &nft_mint.key(), + Some(authority.key()), + Some(x.group.key()), + ) + .unwrap(); + match &auth_seeds { + Some(y) => { + invoke_signed( + &initialize_extension, + &[ + nft_mint.to_account_info(), + authority.to_account_info(), + x.group.to_account_info(), + ], + &[y], + )?; + } + None => { + invoke( + &initialize_extension, + &[ + nft_mint.to_account_info(), + authority.to_account_info(), + x.group.to_account_info(), + ], + )?; + } + } + } + None => {} + } + msg!("Invoke initialise mint"); + + let initialize_ix = initialize_mint2( + &spl_token_2022::ID, + &nft_mint.key(), + &authority.key(), + Some(&authority.key()), + decimals, + ) + .unwrap(); + + // msg!("Invoke initialise mint2"); + invoke(&initialize_ix, &[nft_mint.to_account_info()])?; + + // to be enabled when groups have been audited and rolled out + + msg!("Initialise metadata if needed"); + if let Some(x) = token_metadata { + let initialise_metadata_ix = initialize( + &spl_token_2022::ID, + &nft_mint.key(), + &authority.key(), + &nft_mint.key(), + &authority.key(), + x.name.clone(), + x.symbol.clone(), + x.uri.clone(), + ); + + let account_infos = &[ + nft_mint.to_account_info(), + authority.to_account_info(), + nft_mint.to_account_info(), + nft_owner.to_account_info(), + ]; + match auth_seeds { + Some(x) => { + invoke_signed(&initialise_metadata_ix, account_infos, &[x])?; + } + None => { + invoke(&initialise_metadata_ix, account_infos)?; + } + } + } + + if let Some(program_id) = token_group_program_id { + match &token_group { + Some(x) => { + let space = TlvStateBorrowed::get_base_len() + std::mem::size_of::(); + let rent_lamports = rent.minimum_balance(space); + + let create_group_account_ix = system_instruction::create_account( + &payer.key(), + &x.group.key(), + rent_lamports, + (space).try_into().unwrap(), + &program_id, // &token_group_program_id.unwrap() //, + ); + + msg!("Invoke create account {},{}", payer.key(), nft_mint.key()); + + invoke( + &create_group_account_ix, + &[ + x.group.to_account_info(), + payer.to_account_info(), + spl_token_program.to_account_info(), + ], + )?; + match &auth_seeds { + Some(y) => { + msg!("Initialise group"); + + invoke_signed( + &initialize_group( + &program_id, //&nft_mint.key(), + &x.group.key(), + &nft_mint.key(), + &authority.key(), + Some(authority.key()), + x.max_size, + ), + &[ + nft_mint.to_account_info(), + x.group.to_account_info(), + nft_mint.to_account_info(), + authority.to_account_info(), + ], + &[y], + )?; + msg!("Group initialised"); + } + None => { + invoke( + &initialize_group( + &program_id, + &nft_mint.key(), + &nft_mint.key(), + &authority.key(), + // Pubkey::new_unique().into(), + Some(authority.key()), + x.max_size, + ), + &[nft_mint.to_account_info(), authority.to_account_info()], + )?; + } + } + } + None => {} + } + } + + // to be enabled when groups have been audited and rolled out + if let Some(program_id) = token_group_program_id { + match &token_member { + Some(x) => { + let member_space = + TlvStateBorrowed::get_base_len() + std::mem::size_of::(); + let member_rent_lamports = rent.minimum_balance(member_space); + + let create_member_account_ix = system_instruction::create_account( + &payer.key(), + &x.member.key(), + member_rent_lamports, + (member_space).try_into().unwrap(), + &program_id, // &token_group_program_id.unwrap() //, + ); + + msg!("Invoke create account {},{}", payer.key(), nft_mint.key()); + + invoke( + &create_member_account_ix, + &[ + x.member.to_account_info(), + payer.to_account_info(), + spl_token_program.to_account_info(), + ], + )?; + + let initialize_member_ix = initialize_member( + &program_id, + &x.member.key(), + &nft_mint.key(), + &authority.key(), + &x.group.key(), + &authority.key(), + ); + + let initialize_member_account_infos = [ + nft_mint, + x.member.clone(), + x.group.clone(), + authority.to_account_info(), + ]; + match &auth_seeds { + Some(y) => { + invoke_signed( + &initialize_member_ix, + &initialize_member_account_infos, + &[y], + )?; + } + None => { + invoke(&initialize_member_ix, &initialize_member_account_infos)?; + } + } + } + None => {} + } + } + + msg!("Finished"); + Ok(()) +} diff --git a/programs/rarible_editions/src/lib.rs b/programs/rarible_editions/src/lib.rs new file mode 100644 index 00000000..57fe336d --- /dev/null +++ b/programs/rarible_editions/src/lib.rs @@ -0,0 +1,65 @@ +use anchor_lang::prelude::*; + +pub mod instructions; +pub use instructions::*; + +declare_id!("Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn"); + +pub mod errors; +pub mod state; + +pub mod logic; +mod utils; + +pub use logic::*; + +pub use state::*; + +pub mod group_extension_program { + use anchor_lang::declare_id; + declare_id!("RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb"); +} + +#[program] +pub mod rarible_editions { + use super::*; + + // v2 endpoints. Prefer these over the original ones. + // they allow setting of optional creator co-signer + // and toggling inscriptions on and off. + // for now, creator co-sign is disabled but will be enabled + // soon to allow for wrapper contracts + pub fn initialise(ctx: Context, input: InitialiseInput) -> Result<()> { + instructions::initialise(ctx, input) + } + + pub fn mint<'info>(ctx: Context<'_, '_, '_, 'info, MintCtx<'info>>) -> Result<()> { + instructions::mint(ctx) + } + + /// add royalties to mint + pub fn add_royalties(ctx: Context, args: UpdateRoyaltiesArgs) -> Result<()> { + royalties::add::handler(ctx, args) + } + + /// modify royalties of mint + pub fn modify_royalties( + ctx: Context, + args: UpdateRoyaltiesArgs, + ) -> Result<()> { + royalties::modify::handler(ctx, args) + } + + /// add additional metadata to mint + pub fn add_metadata(ctx: Context, args: Vec) -> Result<()> { + metadata::add::handler(ctx, args) + } + + /// remove additional metadata to mint + pub fn remove_metadata( + ctx: Context, + args: Vec, + ) -> Result<()> { + metadata::remove::handler(ctx, args) + } +} diff --git a/programs/rarible_editions/src/logic/add_to_hashlist.rs b/programs/rarible_editions/src/logic/add_to_hashlist.rs new file mode 100644 index 00000000..24fdacd1 --- /dev/null +++ b/programs/rarible_editions/src/logic/add_to_hashlist.rs @@ -0,0 +1,44 @@ +use anchor_lang::prelude::*; +use anchor_lang::{ + accounts::{program::Program, signer::Signer, unchecked_account::UncheckedAccount}, + system_program::System, +}; +use solana_program::program::invoke; +use solana_program::pubkey::Pubkey; +use solana_program::system_instruction; + +pub fn add_to_hashlist<'a>( + new_number_of_mints: u32, + hashlist: &mut UncheckedAccount<'a>, + payer: &Signer<'a>, + system_program: &Program<'a, System>, + mint: &Pubkey, + order_number: u64, +) -> Result<()> { + let new_size = 8 + 32 + 4 + (new_number_of_mints) * (32 + 8); + let rent = Rent::get()?; + let new_minimum_balance = rent.minimum_balance(new_size as usize); + let lamports_diff = new_minimum_balance.saturating_sub(hashlist.lamports()); + if lamports_diff > 0 { + invoke( + &system_instruction::transfer(&payer.key(), hashlist.key, lamports_diff), + &[ + payer.to_account_info(), + hashlist.to_account_info(), + system_program.to_account_info(), + ], + )?; + } + hashlist.realloc(new_size as usize, false)?; + let hashlist_account_info = hashlist.to_account_info(); + + let mut hashlist_data = hashlist_account_info.data.borrow_mut(); + + hashlist_data[40..44].copy_from_slice(&new_number_of_mints.to_le_bytes()); + let mint_start_pos: usize = (44 + (new_number_of_mints - 1) * 40) as usize; + hashlist_data[mint_start_pos..(mint_start_pos + 32)].copy_from_slice(mint.key().as_ref()); + hashlist_data[mint_start_pos + 32..mint_start_pos + 40] + .copy_from_slice(&order_number.to_le_bytes()); + + Ok(()) +} diff --git a/programs/rarible_editions/src/logic/mod.rs b/programs/rarible_editions/src/logic/mod.rs new file mode 100644 index 00000000..1325948b --- /dev/null +++ b/programs/rarible_editions/src/logic/mod.rs @@ -0,0 +1,2 @@ +pub mod add_to_hashlist; +pub use add_to_hashlist::*; diff --git a/programs/rarible_editions/src/mod.rs b/programs/rarible_editions/src/mod.rs new file mode 100644 index 00000000..00472fae --- /dev/null +++ b/programs/rarible_editions/src/mod.rs @@ -0,0 +1,8 @@ +pub mod instructions; +pub mod royalties; +pub mod metadata; +pub mod platform_fee; +pub use instructions::*; +pub use royalties::*; +pub use metadata::*; +pub use platform_fee::*; \ No newline at end of file diff --git a/programs/rarible_editions/src/state.rs b/programs/rarible_editions/src/state.rs new file mode 100644 index 00000000..de3b13c7 --- /dev/null +++ b/programs/rarible_editions/src/state.rs @@ -0,0 +1,73 @@ +use anchor_lang::prelude::*; +use solana_program::pubkey::Pubkey; + +pub const SYMBOL_LIMIT: usize = 100; +pub const NAME_LIMIT: usize = 400; +pub const URI_LIMIT: usize = 1200; +pub const META_LIST_ACCOUNT_SEED: &[u8] = b"extra-account-metas"; +pub const APPROVE_ACCOUNT_SEED: &[u8] = b"approve-account"; +pub const ROYALTY_BASIS_POINTS_FIELD: &str = "royalty_basis_points"; +pub const PLATFORM_FEE_VALUE: &str = "platform_fee_value"; +// Define constants for metadata keys + +#[derive(Clone, AnchorDeserialize, AnchorSerialize)] +pub enum DeploymentStatus { + Initialised, + MintedOut, +} + +#[account] +#[derive(InitSpace)] +pub struct EditionsDeployment { + pub creator: Pubkey, + // set to 0 for unlimited + pub max_number_of_tokens: u64, + + pub number_of_tokens_issued: u64, + + // set to system account for no cosign + pub cosigner_program_id: Pubkey, + + pub group_mint: Pubkey, + + pub group: Pubkey, + + #[max_len(SYMBOL_LIMIT)] + pub symbol: String, + + #[max_len(NAME_LIMIT)] + pub item_base_name: String, + + #[max_len(URI_LIMIT)] + pub item_base_uri: String, + + pub item_name_is_template: bool, + + pub item_uri_is_template: bool, + + pub padding: [u8; 98], +} + +// slightly more extended +#[account] +pub struct HashlistMarker { + pub editions_deployment: Pubkey, + pub mint: Pubkey, +} + +impl HashlistMarker { + pub const SIZE: usize = 8 + 32 + 32; +} + +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct MintAndOrder { + pub mint: Pubkey, + pub order: u64, +} + +// this is a genuine hashlist for the launch +#[account] +pub struct Hashlist { + pub deployment: Pubkey, + pub issues: Vec, +} diff --git a/programs/wen_new_standard/src/utils.rs b/programs/rarible_editions/src/utils.rs similarity index 51% rename from programs/wen_new_standard/src/utils.rs rename to programs/rarible_editions/src/utils.rs index 72ed3d67..fccf7863 100644 --- a/programs/wen_new_standard/src/utils.rs +++ b/programs/rarible_editions/src/utils.rs @@ -1,17 +1,13 @@ -use crate::{APPROVE_ACCOUNT_SEED, META_LIST_ACCOUNT_SEED}; +use crate::APPROVE_ACCOUNT_SEED; use anchor_lang::{ prelude::Result, solana_program::{ - account_info::AccountInfo, - instruction::{get_stack_height, TRANSACTION_LEVEL_STACK_HEIGHT}, - program::invoke, - pubkey::Pubkey, - rent::Rent, - system_instruction::transfer, - sysvar::Sysvar, + account_info::AccountInfo, program::invoke, pubkey::Pubkey, rent::Rent, + system_instruction::transfer, sysvar::Sysvar, }, Lamports, }; + use anchor_spl::token_interface::{ spl_token_2022::{ extension::{BaseStateWithExtensions, Extension, StateWithExtensions}, @@ -20,12 +16,7 @@ use anchor_spl::token_interface::{ }, spl_token_metadata_interface::state::TokenMetadata, }; -use spl_tlv_account_resolution::{account::ExtraAccountMeta, state::ExtraAccountMetaList}; - -pub fn get_bump_in_seed_form(bump: &u8) -> [u8; 1] { - let bump_val = *bump; - [bump_val] -} +use spl_tlv_account_resolution::account::ExtraAccountMeta; pub fn update_account_lamports_to_minimum_balance<'info>( account: AccountInfo<'info>, @@ -44,6 +35,10 @@ pub fn update_account_lamports_to_minimum_balance<'info>( Ok(()) } +// pub fn get_approve_account_pda(mint: Pubkey) -> Pubkey { +// Pubkey::find_program_address(&[APPROVE_ACCOUNT_SEED, mint.as_ref()], &crate::id()).0 +// } + pub fn get_mint_metadata(account: &mut AccountInfo) -> Result { let mint_data = account.data.borrow(); let mint_with_extension = StateWithExtensions::::unpack(&mint_data)?; @@ -58,32 +53,15 @@ pub fn get_extension_data(account: &mut AccountInfo) -> Resu Ok(extension_data) } -pub fn get_extra_meta_list_account_pda(mint: Pubkey) -> Pubkey { - Pubkey::find_program_address(&[META_LIST_ACCOUNT_SEED, mint.as_ref()], &crate::id()).0 -} - -pub fn get_approve_account_pda(mint: Pubkey) -> Pubkey { - Pubkey::find_program_address(&[APPROVE_ACCOUNT_SEED, mint.as_ref()], &crate::id()).0 -} +// pub fn get_meta_list(approve_account: Pubkey) -> Vec { +// vec![ExtraAccountMeta { +// discriminator: 0, +// address_config: approve_account.to_bytes(), +// is_signer: false.into(), +// is_writable: true.into(), +// }] +// } -/// Determine if we are in CPI -pub fn hook_in_cpi() -> bool { - let stack_height = get_stack_height(); - let tx_height = TRANSACTION_LEVEL_STACK_HEIGHT; - let hook_height: usize = tx_height + 1; - - stack_height > hook_height -} - -pub fn get_meta_list(approve_account: Pubkey) -> Vec { - vec![ExtraAccountMeta { - discriminator: 0, - address_config: approve_account.to_bytes(), - is_signer: false.into(), - is_writable: true.into(), - }] -} - -pub fn get_meta_list_size(approve_account: Pubkey) -> usize { - ExtraAccountMetaList::size_of(get_meta_list(approve_account).len()).unwrap() -} +// pub fn get_meta_list_size(approve_account: Pubkey) -> usize { +// ExtraAccountMetaList::size_of(get_meta_list(approve_account).len()).unwrap() +// } diff --git a/programs/rarible_editions_controls/Cargo.toml b/programs/rarible_editions_controls/Cargo.toml new file mode 100644 index 00000000..a756adfb --- /dev/null +++ b/programs/rarible_editions_controls/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "rarible_editions_controls" +version = "0.2.1" +description = "Created with Anchor" +edition = "2021" +license = "MIT" +repository = "https://github.com/rarible/eclipse-program-library" + +[lib] +crate-type = ["cdylib", "lib"] +name = "rarible_editions_controls" + +[features] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +default = [] +idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] + +[dependencies] +anchor-lang = {version = "~0.30", features = ["init-if-needed"]} +anchor-spl = {version = "~0.30"} + +rarible_editions = {version="*", path = "../rarible_editions", features =["cpi", "no-entrypoint"]} +merkle-tree-verify = { version="*", path = "../../crates/merkle-tree-verify" } + +solana-program = {version = "1.17.13"} +arrayref = "0.3.7" +libreplex_shared = {version= "0.3.0", features=["no-entrypoint"] } +spl-token-2022 = {version = "~3.0", features = ["no-entrypoint"]} +spl-token-metadata-interface = {version= "~0.3"} +spl-token-group-interface = {version= "0.2.3"} +spl-type-length-value = {version= "0.3.0"} +spl-pod = {version= "~0.2"} + + +[dev-dependencies] +solana-program-test = {version= "1.17.13"} +solana-sdk= "1.17.13" \ No newline at end of file diff --git a/programs/rarible_editions_controls/README.md b/programs/rarible_editions_controls/README.md new file mode 100644 index 00000000..5a27b20a --- /dev/null +++ b/programs/rarible_editions_controls/README.md @@ -0,0 +1,13 @@ +
+ + +

SPL20

+ +

+ Documentation (stable) +

+
+ +Central repository for all SPL20 deployments. +Ticker uniqueness enforced. + diff --git a/programs/wen_royalty_distribution/Xargo.toml b/programs/rarible_editions_controls/Xargo.toml similarity index 100% rename from programs/wen_royalty_distribution/Xargo.toml rename to programs/rarible_editions_controls/Xargo.toml diff --git a/programs/rarible_editions_controls/src/errors.rs b/programs/rarible_editions_controls/src/errors.rs new file mode 100644 index 00000000..de3bb7ab --- /dev/null +++ b/programs/rarible_editions_controls/src/errors.rs @@ -0,0 +1,91 @@ +use anchor_lang::prelude::*; + +#[error_code] +pub enum EditionsControlsError { + #[msg("Ticker too long")] + TickerTooLong, + + #[msg("Mint template too long")] + MintTemplateTooLong, + + #[msg("Deployment template too long")] + DeploymentTemplateTooLong, + + #[msg("Root type too long")] + RootTypeTooLong, + + #[msg("Minted out")] + MintedOut, + + #[msg("Legacy migrations are minted out")] + LegacyMigrationsAreMintedOut, + + #[msg("Global tree delegate is missing")] + MissingGlobalTreeDelegate, + + #[msg("Incorrect mint type")] + IncorrectMintType, + + #[msg("Invalid Metadata")] + InvalidMetadata, + + #[msg("Creator fee too high")] + CreatorFeeTooHigh, + + #[msg("Platform fee calculation failed.")] + FeeCalculationError, + + #[msg("Total fee exceeds the price amount.")] + FeeExceedsPrice, + + #[msg("Total fee shares must equal 100.")] + InvalidFeeShares, + + #[msg("Too many platform fee recipients. Maximum allowed is 5.")] + TooManyRecipients, + + #[msg("Recipient account does not match the expected address.")] + RecipientMismatch, + + #[msg("No phases have been added. Cannot mint.")] + NoPhasesAdded, + + #[msg("Invalid phase index.")] + InvalidPhaseIndex, + + #[msg("Private phase but no merkle proof provided")] + PrivatePhaseNoProof, + + #[msg("Merkle root not set for allow list mint")] + MerkleRootNotSet, + + #[msg("Merkle proof required for allow list mint")] + MerkleProofRequired, + + #[msg("Allow list price and max claims are required for allow list mint")] + AllowListPriceAndMaxClaimsRequired, + + #[msg("Invalid merkle proof")] + InvalidMerkleProof, + + #[msg("This wallet has exceeded allow list max_claims in the current phase")] + ExceededAllowListMaxClaims, + + #[msg("Phase not active")] + PhaseNotActive, + + #[msg("Phase not yet started")] + PhaseNotStarted, + + #[msg("Phase already finished")] + PhaseAlreadyFinished, + + #[msg("Exceeded max mints for this phase")] + ExceededMaxMintsForPhase, + + #[msg("Exceeded wallet max mints for this phase")] + ExceededWalletMaxMintsForPhase, + + #[msg("Exceeded wallet max mints for the collection")] + ExceededWalletMaxMintsForCollection, +} diff --git a/programs/rarible_editions_controls/src/instructions/add_phase.rs b/programs/rarible_editions_controls/src/instructions/add_phase.rs new file mode 100644 index 00000000..0d2c9c14 --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/add_phase.rs @@ -0,0 +1,73 @@ +use anchor_lang::prelude::*; +use libreplex_shared::wrapped_sol; +use rarible_editions::program::RaribleEditions; + +use crate::{EditionsControls, Phase}; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct InitialisePhaseInput { + pub price_amount: u64, + pub price_token: Pubkey, + pub start_time: i64, + pub max_mints_per_wallet: u64, + pub max_mints_total: u64, + pub end_time: i64, + pub is_private: bool, + pub merkle_root: Option<[u8; 32]>, +} + +#[derive(Accounts)] +#[instruction(input: InitialisePhaseInput)] +pub struct AddPhaseCtx<'info> { + #[account(mut, + realloc = EditionsControls::get_size(editions_controls.phases.len()+1), + realloc::zero = false, + realloc::payer = payer + )] + pub editions_controls: Account<'info, EditionsControls>, + + #[account(mut)] + pub payer: Signer<'info>, + + // can be different from payer for PDA integration + #[account(mut, + constraint = editions_controls.creator == creator.key())] + pub creator: Signer<'info>, + + #[account()] + pub system_program: Program<'info, System>, + + /// CHECK: address checked + #[account(address = spl_token_2022::ID)] + pub token_program: AccountInfo<'info>, + + pub rarible_editions_program: Program<'info, RaribleEditions>, +} + +pub fn add_phase(ctx: Context, input: InitialisePhaseInput) -> Result<()> { + if !input.price_token.eq(&wrapped_sol::ID) { + panic!("Only native price currently supported") + } + + if input.is_private && input.merkle_root.is_none() { + panic!("Merkle root must be provided for private phases"); + } + + let editions_controls = &mut ctx.accounts.editions_controls; + + editions_controls.phases.push(Phase { + price_amount: input.price_amount, + price_token: input.price_token, + start_time: input.start_time, + max_mints_per_wallet: input.max_mints_per_wallet, + active: true, // everything starts out as active - + end_time: input.end_time, + max_mints_total: input.max_mints_total, + current_mints: 0, + is_private: input.is_private, + merkle_root: input.merkle_root, + padding: [0; 200], + }); + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/instructions/initialise.rs b/programs/rarible_editions_controls/src/instructions/initialise.rs new file mode 100644 index 00000000..8b532102 --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/initialise.rs @@ -0,0 +1,222 @@ +use crate::errors::EditionsControlsError; +use crate::{ + EditionsControls, PlatformFeeRecipient, UpdatePlatformFeeArgs, + DEFAULT_PLATFORM_FEE_PRIMARY_ADMIN, DEFAULT_PLATFORM_FEE_SECONDARY_ADMIN, +}; +use anchor_lang::{prelude::*, system_program}; +use rarible_editions::cpi::accounts::AddMetadata; +use rarible_editions::cpi::accounts::AddRoyalties; +use rarible_editions::{ + cpi::accounts::InitialiseCtx, group_extension_program, program::RaribleEditions, + AddMetadataArgs, CreatorWithShare, InitialiseInput, UpdateRoyaltiesArgs, +}; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct InitialiseControlInput { + pub max_mints_per_wallet: u64, + pub treasury: Pubkey, + pub max_number_of_tokens: u64, + pub symbol: String, + pub collection_name: String, + pub collection_uri: String, + pub cosigner_program_id: Option, + pub royalties: UpdateRoyaltiesArgs, + pub extra_meta: Vec, + pub item_base_uri: String, + pub item_base_name: String, + pub platform_fee: UpdatePlatformFeeArgs, +} + +#[derive(Accounts)] +#[instruction(_initialise_controls_input: InitialiseControlInput)] +pub struct InitialiseEditionControlsCtx<'info> { + #[account(init, + space = EditionsControls::INITIAL_SIZE, + payer = payer, + seeds = [b"editions_controls", editions_deployment.key().as_ref()], + bump + )] + pub editions_controls: Account<'info, EditionsControls>, + + /// CHECK: CPI: Passed into rarible_editions program for initialisation. Checking seed here for early warning + #[account(mut)] + pub editions_deployment: UncheckedAccount<'info>, + + /// CHECK: Checked in via CPI + #[account(mut)] + pub hashlist: UncheckedAccount<'info>, + + #[account(mut)] + pub payer: Signer<'info>, + + /// CHECK: can be different from payer for PDA integration + #[account()] + pub creator: UncheckedAccount<'info>, + + /// CHECK: created + #[account(mut)] + pub group_mint: Signer<'info>, + + /// CHECK: created + #[account(mut)] + pub group: Signer<'info>, + + #[account()] + pub system_program: Program<'info, System>, + + /// CHECK: address checked + #[account(address = spl_token_2022::ID)] + pub token_program: AccountInfo<'info>, + + /// CHECK: address checked + #[account(address = group_extension_program::ID)] + pub group_extension_program: AccountInfo<'info>, + + pub rarible_editions_program: Program<'info, RaribleEditions>, +} + +pub fn initialise_editions_controls( + ctx: Context, + input: InitialiseControlInput, +) -> Result<()> { + let rarible_editions_program = &ctx.accounts.rarible_editions_program; + let editions_controls = &mut ctx.accounts.editions_controls; + let editions_deployment = &ctx.accounts.editions_deployment; + let hashlist = &ctx.accounts.hashlist; + let payer = &ctx.accounts.payer; + let creator = &ctx.accounts.creator; + let group = &ctx.accounts.group; + let group_mint = &ctx.accounts.group_mint; + let system_program = &ctx.accounts.system_program; + let token_program = &ctx.accounts.token_program; + let group_extension_program = &ctx.accounts.group_extension_program; + + let core_input = InitialiseInput { + max_number_of_tokens: input.max_number_of_tokens, + symbol: input.symbol, + collection_name: input.collection_name, + collection_uri: input.collection_uri, + creator_cosign_program_id: Some(crate::ID), + item_base_name: input.item_base_name, + item_base_uri: input.item_base_uri, + }; + + // Initialize the editions using CPI + rarible_editions::cpi::initialise( + CpiContext::new( + rarible_editions_program.to_account_info(), + InitialiseCtx { + editions_deployment: editions_deployment.to_account_info(), + hashlist: hashlist.to_account_info(), + payer: payer.to_account_info(), + creator: editions_controls.to_account_info(), + group: group.to_account_info(), + group_mint: group_mint.to_account_info(), + system_program: system_program.to_account_info(), + token_program: token_program.to_account_info(), + group_extension_program: group_extension_program.to_account_info(), + }, + ), + core_input, + )?; + + // Validate that platform_fee has up to 5 recipients + let provided_recipients = input.platform_fee.recipients.len(); + if provided_recipients > 5 { + return Err(EditionsControlsError::TooManyRecipients.into()); + } + + // Ensure that the sum of shares equals 100 + let total_shares: u8 = input.platform_fee.recipients.iter().map(|r| r.share).sum(); + if total_shares != 100 { + return Err(EditionsControlsError::InvalidFeeShares.into()); + } + + // Initialize an array of 5 PlatformFeeRecipient with default values + let mut recipients_array: [PlatformFeeRecipient; 5] = [ + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + ]; + + // Populate the array with provided recipients + for (i, recipient) in input.platform_fee.recipients.iter().enumerate() { + recipients_array[i] = recipient.clone(); + } + + // Set the editions control state + editions_controls.set_inner(EditionsControls { + editions_deployment: editions_deployment.key(), + creator: creator.key(), + max_mints_per_wallet: input.max_mints_per_wallet, + cosigner_program_id: input.cosigner_program_id.unwrap_or(system_program::ID), + treasury: input.treasury, + platform_fee_value: input.platform_fee.platform_fee_value, + is_fee_flat: input.platform_fee.is_fee_flat, + platform_fee_recipients: recipients_array.clone(), + platform_fee_primary_admin: DEFAULT_PLATFORM_FEE_PRIMARY_ADMIN.parse().unwrap(), + platform_fee_secondary_admin: DEFAULT_PLATFORM_FEE_SECONDARY_ADMIN.parse().unwrap(), + phases: vec![], + padding: [0; 200], + }); + + let editions_deployment_key = editions_deployment.key(); + let seeds = &[ + b"editions_controls", + editions_deployment_key.as_ref(), + &[ctx.bumps.editions_controls], + ]; + + // Add royalties + rarible_editions::cpi::add_royalties( + CpiContext::new_with_signer( + rarible_editions_program.to_account_info(), + AddRoyalties { + editions_deployment: editions_deployment.to_account_info(), + payer: payer.to_account_info(), + system_program: system_program.to_account_info(), + token_program: token_program.to_account_info(), + mint: group_mint.to_account_info(), + signer: editions_controls.to_account_info(), + }, + &[seeds], + ), + input.royalties, + )?; + + // Add metadata CPI call + rarible_editions::cpi::add_metadata( + CpiContext::new_with_signer( + rarible_editions_program.to_account_info(), + AddMetadata { + editions_deployment: editions_deployment.to_account_info(), + payer: payer.to_account_info(), + system_program: system_program.to_account_info(), + token_program: token_program.to_account_info(), + mint: group_mint.to_account_info(), + signer: editions_controls.to_account_info(), + }, + &[seeds], + ), + input.extra_meta, + )?; + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/instructions/mint_with_controls.rs b/programs/rarible_editions_controls/src/instructions/mint_with_controls.rs new file mode 100644 index 00000000..ccc14d2e --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/mint_with_controls.rs @@ -0,0 +1,325 @@ +use crate::{ + check_allow_list_constraints, check_phase_constraints, errors::EditionsControlsError, + EditionsControls, MinterStats, +}; +use anchor_lang::{prelude::*, system_program}; +use anchor_spl::{ + associated_token::AssociatedToken, + token_2022::{self, ID as TOKEN_2022_ID}, +}; +use rarible_editions::{ + cpi::accounts::MintCtx, group_extension_program, program::RaribleEditions, EditionsDeployment, +}; + +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct MintInput { + pub phase_index: u32, + pub merkle_proof: Option>, + pub allow_list_price: Option, + pub allow_list_max_claims: Option, +} + +/// CHECK: Checked via CPI +#[derive(Accounts)] +#[instruction(mint_input: MintInput)] +pub struct MintWithControlsCtx<'info> { + /// CHECK: Checked via CPI + #[account(mut)] + pub editions_deployment: Box>, + + #[account( + mut, + seeds = [b"editions_controls", editions_deployment.key().as_ref()], + bump + )] + pub editions_controls: Box>, + + #[account(mut)] + pub payer: Signer<'info>, + + // /// When deployment.require_creator_cosign is true, this must be equal to the creator + // /// of the deployment; otherwise, can be any signer account + // #[account( + // constraint = editions_controls.cosigner_program_id == system_program::ID + // || signer.key() == editions_deployment.creator + // )] + // pub signer: Signer<'info>, + /// CHECK: Anybody can sign, anybody can receive the inscription + + #[account( + init_if_needed, + payer = payer, + seeds = [b"minter_stats", editions_deployment.key().as_ref(), payer.key().as_ref()], + bump, + space = MinterStats::SIZE + )] + pub minter_stats: Box>, + + #[account( + init_if_needed, + payer = payer, + seeds = [ + b"minter_stats_phase", + editions_deployment.key().as_ref(), + payer.key().as_ref(), + &mint_input.phase_index.to_le_bytes() + ], + bump, + space = MinterStats::SIZE + )] + pub minter_stats_phase: Box>, + + #[account(mut)] + pub mint: Signer<'info>, + + #[account(mut)] + pub member: Signer<'info>, + + /// CHECK: checked in constraint + #[account( + mut, + constraint = editions_deployment.group == group.key() + )] + pub group: UncheckedAccount<'info>, + + /// CHECK: Checked in constraint + #[account( + mut, + constraint = editions_deployment.group_mint == group_mint.key() + )] + pub group_mint: UncheckedAccount<'info>, + + /// CHECK: Platform fee recipient + #[account(mut)] + pub platform_fee_recipient_1: UncheckedAccount<'info>, + + /// CHECK: Passed in via CPI to mpl_token_metadata program + #[account(mut)] + pub token_account: UncheckedAccount<'info>, + + /// CHECK: Checked in constraint + #[account( + mut, + constraint = editions_controls.treasury == treasury.key() + )] + pub treasury: UncheckedAccount<'info>, + + /// CHECK: Checked in constraint + #[account( + constraint = token_program.key() == TOKEN_2022_ID + )] + pub token_program: UncheckedAccount<'info>, + + pub associated_token_program: Program<'info, AssociatedToken>, + + /// CHECK: Address checked + #[account(address = group_extension_program::ID)] + pub group_extension_program: UncheckedAccount<'info>, + + pub system_program: Program<'info, System>, + + pub rarible_editions_program: Program<'info, RaribleEditions>, +} + +pub fn mint_with_controls(ctx: Context, mint_input: MintInput) -> Result<()> { + let editions_controls = &mut ctx.accounts.editions_controls; + let minter_stats = &mut ctx.accounts.minter_stats; + let minter_stats_phase = &mut ctx.accounts.minter_stats_phase; + let minter = &ctx.accounts.payer; + + // Phase validation + validate_phase(editions_controls, mint_input.phase_index)?; + + // Check phase constraints + check_phase_constraints( + &editions_controls.phases[mint_input.phase_index as usize], + minter_stats, + minter_stats_phase, + editions_controls, + )?; + + // Get the default/standard price amount for the phase + let mut price_amount = editions_controls.phases[mint_input.phase_index as usize].price_amount; + + // Check if it's a normal mint or an allow list mint based on the presence of a merkle proof + if mint_input.merkle_proof.is_some() { + check_allow_list_constraints( + &editions_controls.phases[mint_input.phase_index as usize], + &minter.key(), + minter_stats_phase, + mint_input.merkle_proof, + mint_input.allow_list_price, + mint_input.allow_list_max_claims, + )?; + // Override the price amount with the allow list price + price_amount = mint_input.allow_list_price.unwrap_or(0); + } else { + // if the phase is private, and the merkle proof was not provided, throw error + if editions_controls.phases[mint_input.phase_index as usize].is_private { + return Err(EditionsControlsError::PrivatePhaseNoProof.into()); + } + } + + // Update minter and phase states + update_minter_and_phase_stats( + minter_stats, + minter_stats_phase, + &minter.key(), + editions_controls, + mint_input.phase_index as usize, + ); + + // Process platform fees and transfer remaining amount to treasury + process_platform_fees(&ctx, price_amount)?; + + // Prepare seeds for signer + let editions_deployment_key = ctx.accounts.editions_deployment.key(); + let seeds = &[ + b"editions_controls", + editions_deployment_key.as_ref(), + &[ctx.bumps.editions_controls], + ]; + + // Perform the minting process + perform_mint(&ctx, seeds)?; + + Ok(()) +} + +fn validate_phase(editions_controls: &EditionsControls, phase_index: u32) -> Result<()> { + if phase_index >= editions_controls.phases.len() as u32 { + if editions_controls.phases.is_empty() { + return Err(EditionsControlsError::NoPhasesAdded.into()); + } else { + return Err(EditionsControlsError::InvalidPhaseIndex.into()); + } + } + + Ok(()) +} + +fn update_minter_and_phase_stats( + minter_stats: &mut MinterStats, + minter_stats_phase: &mut MinterStats, + minter_key: &Pubkey, + editions_controls: &mut EditionsControls, + phase_index: usize, +) { + minter_stats.wallet = *minter_key; + minter_stats.mint_count = minter_stats.mint_count.saturating_add(1); + + minter_stats_phase.wallet = *minter_key; + minter_stats_phase.mint_count = minter_stats_phase.mint_count.saturating_add(1); + + editions_controls.phases[phase_index].current_mints = editions_controls.phases[phase_index] + .current_mints + .saturating_add(1); +} + +fn process_platform_fees(ctx: &Context, price_amount: u64) -> Result<()> { + let editions_controls = &ctx.accounts.editions_controls; + let payer = &ctx.accounts.payer; + let treasury = &ctx.accounts.treasury; + let system_program = &ctx.accounts.system_program; + let recipients = &editions_controls.platform_fee_recipients; + + // Ensure that the sum of shares equals 100 + let total_shares: u8 = recipients.iter().map(|r| r.share).sum(); + if total_shares != 100 { + return Err(EditionsControlsError::InvalidFeeShares.into()); + } + + let total_fee: u64; + let remaining_amount: u64; + + if editions_controls.is_fee_flat { + total_fee = editions_controls.platform_fee_value; + remaining_amount = price_amount; + } else { + // Calculate fee as (price_amount * platform_fee_value) / 10,000 (assuming basis points) + total_fee = price_amount + .checked_mul(editions_controls.platform_fee_value as u64) + .ok_or(EditionsControlsError::FeeCalculationError)? + .checked_div(10_000) + .ok_or(EditionsControlsError::FeeCalculationError)?; + + remaining_amount = price_amount + .checked_sub(total_fee) + .ok_or(EditionsControlsError::FeeCalculationError)?; + } + + // Distribute fees to recipients + for (i, recipient_struct) in recipients.iter().enumerate() { + if recipient_struct.share == 0 { + continue; + } + + let recipient_account = &ctx.accounts.platform_fee_recipient_1; + + // Ensure that the account matches the expected recipient + if recipient_account.key() != recipient_struct.address.key() { + return Err(EditionsControlsError::RecipientMismatch.into()); + } + + let recipient_fee = total_fee + .checked_mul(recipient_struct.share as u64) + .ok_or(EditionsControlsError::FeeCalculationError)? + .checked_div(100) + .ok_or(EditionsControlsError::FeeCalculationError)?; + + // Transfer platform fee to recipient + system_program::transfer( + CpiContext::new( + system_program.to_account_info(), + system_program::Transfer { + from: payer.to_account_info(), + to: recipient_account.to_account_info(), + }, + ), + recipient_fee, + )?; + + break; + } + + // Transfer remaining amount to treasury + system_program::transfer( + CpiContext::new( + system_program.to_account_info(), + system_program::Transfer { + from: payer.to_account_info(), + to: treasury.to_account_info(), + }, + ), + remaining_amount, + )?; + + Ok(()) +} + +fn perform_mint(ctx: &Context, seeds: &[&[u8]]) -> Result<()> { + let rarible_editions_program = &ctx.accounts.rarible_editions_program; + let editions_controls = &ctx.accounts.editions_controls; + + rarible_editions::cpi::mint(CpiContext::new_with_signer( + rarible_editions_program.to_account_info(), + MintCtx { + editions_deployment: ctx.accounts.editions_deployment.to_account_info(), + payer: ctx.accounts.payer.to_account_info(), + signer: editions_controls.to_account_info(), + minter: ctx.accounts.payer.to_account_info(), + mint: ctx.accounts.mint.to_account_info(), + group: ctx.accounts.group.to_account_info(), + group_mint: ctx.accounts.group_mint.to_account_info(), + token_account: ctx.accounts.token_account.to_account_info(), + token_program: ctx.accounts.token_program.to_account_info(), + associated_token_program: ctx.accounts.associated_token_program.to_account_info(), + system_program: ctx.accounts.system_program.to_account_info(), + group_extension_program: ctx.accounts.group_extension_program.to_account_info(), + member: ctx.accounts.member.to_account_info(), + }, + &[seeds], + ))?; + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/instructions/mod.rs b/programs/rarible_editions_controls/src/instructions/mod.rs new file mode 100644 index 00000000..a34d0be0 --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/mod.rs @@ -0,0 +1,20 @@ +pub mod initialise; +pub use initialise::*; + +pub mod add_phase; +pub use add_phase::*; + +pub mod modify_phase; +pub use modify_phase::*; + +pub mod update_royalties; +pub use update_royalties::*; + +pub mod mint_with_controls; +pub use mint_with_controls::*; + +pub mod update_platform_fee; +pub use update_platform_fee::*; + +pub mod update_platform_fee_secondary_admin; +pub use update_platform_fee_secondary_admin::*; diff --git a/programs/rarible_editions_controls/src/instructions/modify_phase.rs b/programs/rarible_editions_controls/src/instructions/modify_phase.rs new file mode 100644 index 00000000..e17f3d9b --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/modify_phase.rs @@ -0,0 +1,70 @@ +use anchor_lang::prelude::*; +use libreplex_shared::wrapped_sol; +use rarible_editions::program::RaribleEditions; + +use crate::{EditionsControls, Phase}; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct ModifyPhaseInput { + pub price_amount: u64, + pub price_token: Pubkey, + pub start_time: i64, + pub max_mints_per_wallet: u64, + pub max_mints_total: u64, + pub end_time: i64, + pub is_private: bool, + pub active: bool, + pub merkle_root: Option<[u8; 32]>, + pub phase_index: u32, +} + +#[derive(Accounts)] +#[instruction(input: ModifyPhaseInput)] +pub struct ModifyPhaseCtx<'info> { + #[account(mut)] + pub editions_controls: Account<'info, EditionsControls>, + + #[account(mut)] + pub payer: Signer<'info>, + + // can be different from payer for PDA integration + #[account(mut, + constraint = editions_controls.creator == creator.key())] + pub creator: Signer<'info>, + + #[account()] + pub system_program: Program<'info, System>, + + /// CHECK: address checked + #[account(address = spl_token_2022::ID)] + pub token_program: AccountInfo<'info>, + + pub rarible_editions_program: Program<'info, RaribleEditions>, +} + +pub fn modify_phase(ctx: Context, input: ModifyPhaseInput) -> Result<()> { + // Cast phase_index to usize after ensuring it's non-negative + let phase_index = input.phase_index as usize; + let editions_controls = &mut ctx.accounts.editions_controls; + if !input.price_token.eq(&wrapped_sol::ID) { + panic!("Only native price currently supported") + } + + if input.is_private && input.merkle_root.is_none() { + panic!("Merkle root must be provided for private phases"); + } + + // Now safely index into phases using phase_index + let phase = &mut editions_controls.phases[phase_index]; + phase.price_amount = input.price_amount; + phase.price_token = input.price_token; + phase.start_time = input.start_time; + phase.max_mints_per_wallet = input.max_mints_per_wallet; + phase.active = input.active; + phase.end_time = input.end_time; + phase.max_mints_total = input.max_mints_total; + phase.is_private = input.is_private; + phase.merkle_root = input.merkle_root; + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/instructions/update_platform_fee.rs b/programs/rarible_editions_controls/src/instructions/update_platform_fee.rs new file mode 100644 index 00000000..53d0a311 --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/update_platform_fee.rs @@ -0,0 +1,71 @@ +use crate::{EditionsControls, PlatformFeeRecipient, UpdatePlatformFeeArgs}; +use anchor_lang::prelude::*; +use anchor_spl::token_interface::Mint; +use rarible_editions::program::RaribleEditions; +use rarible_editions::EditionsDeployment; + +#[derive(Accounts)] +#[instruction(input: UpdatePlatformFeeArgs)] +pub struct UpdatePlatformFeeCtx<'info> { + #[account(mut)] + pub editions_deployment: Box>, + + #[account(mut, + seeds = [b"editions_controls", editions_deployment.key().as_ref()], + bump + )] + pub editions_controls: Box>, + + #[account(mut)] + pub payer: Signer<'info>, + + // can be different from payer for PDA integration + #[account(mut, + constraint = editions_controls.platform_fee_primary_admin == creator.key() || + editions_controls.platform_fee_secondary_admin == creator.key())] + pub creator: Signer<'info>, +} + +pub fn update_platform_fee( + ctx: Context, + platform_fee_input: UpdatePlatformFeeArgs, +) -> Result<()> { + let platform_fee_value = platform_fee_input.platform_fee_value; + let is_fee_flat = platform_fee_input.is_fee_flat; + + let editions_controls = &mut ctx.accounts.editions_controls; + + // Initialize an array of 5 PlatformFeeRecipient with default values + let mut recipients_array: [PlatformFeeRecipient; 5] = [ + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + PlatformFeeRecipient { + address: Pubkey::default(), + share: 0, + }, + ]; + + // Populate the array with provided recipients + for (i, recipient) in platform_fee_input.recipients.iter().enumerate() { + recipients_array[i] = recipient.clone(); + } + editions_controls.platform_fee_value = platform_fee_value; + editions_controls.is_fee_flat = is_fee_flat; + editions_controls.platform_fee_recipients = recipients_array; + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/instructions/update_platform_fee_secondary_admin.rs b/programs/rarible_editions_controls/src/instructions/update_platform_fee_secondary_admin.rs new file mode 100644 index 00000000..a3fd4c39 --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/update_platform_fee_secondary_admin.rs @@ -0,0 +1,38 @@ +use crate::{EditionsControls, Phase}; +use anchor_lang::prelude::*; +use libreplex_shared::wrapped_sol; +use rarible_editions::program::RaribleEditions; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct UpdatePlatformFeeSecondaryAdminInput { + pub new_admin: Pubkey, +} + +#[derive(Accounts)] +#[instruction(input: UpdatePlatformFeeSecondaryAdminInput)] +pub struct UpdatePlatformFeeSecondaryAdminCtx<'info> { + #[account(mut)] + pub editions_deployment: Box>, + + #[account(mut, + seeds = [b"editions_controls", editions_deployment.key().as_ref()], + bump + )] + pub editions_controls: Box>, + + // can be different from payer for PDA integration + #[account(mut, + constraint = editions_controls.platform_fee_primary_admin == creator.key() || + editions_controls.platform_fee_secondary_admin == creator.key())] + pub creator: Signer<'info>, +} + +pub fn update_platform_fee_secondary_admin( + ctx: Context, + input: UpdatePlatformFeeSecondaryAdminInput, +) -> Result<()> { + let editions_controls = &mut ctx.accounts.editions_controls; + editions_controls.platform_fee_secondary_admin = input.new_admin; + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/instructions/update_royalties.rs b/programs/rarible_editions_controls/src/instructions/update_royalties.rs new file mode 100644 index 00000000..579a9bcb --- /dev/null +++ b/programs/rarible_editions_controls/src/instructions/update_royalties.rs @@ -0,0 +1,80 @@ +use crate::EditionsControls; +use anchor_lang::prelude::*; +use anchor_spl::token_interface::Mint; +use rarible_editions::cpi::accounts::ModifyRoyalties; +use rarible_editions::program::RaribleEditions; +use rarible_editions::{EditionsDeployment, UpdateRoyaltiesArgs}; + +#[derive(Accounts)] +#[instruction(input: UpdateRoyaltiesArgs)] +pub struct UpdateRoyaltiesCtx<'info> { + #[account(mut)] + pub editions_deployment: Box>, + + #[account(mut, + seeds = [b"editions_controls", editions_deployment.key().as_ref()], + bump + )] + pub editions_controls: Box>, + + #[account(mut)] + pub payer: Signer<'info>, + + // can be different from payer for PDA integration + #[account(mut, + constraint = editions_controls.creator == creator.key())] + pub creator: Signer<'info>, + + #[account( + mut, + mint::token_program = token_program, + )] + pub mint: Box>, + + #[account()] + pub system_program: Program<'info, System>, + + /// CHECK: address checked + #[account(address = spl_token_2022::ID)] + pub token_program: AccountInfo<'info>, + + pub rarible_editions_program: Program<'info, RaribleEditions>, +} + +pub fn update_royalties( + ctx: Context, + royalties_input: UpdateRoyaltiesArgs, +) -> Result<()> { + let editions_controls = &mut ctx.accounts.editions_controls; + let rarible_editions_program = &ctx.accounts.rarible_editions_program; + let editions_deployment = &ctx.accounts.editions_deployment; + let payer = &ctx.accounts.payer; + let mint = &ctx.accounts.mint; + let system_program = &ctx.accounts.system_program; + let token_program = &ctx.accounts.token_program; + + let editions_deployment_key = editions_deployment.key(); + let seeds = &[ + b"editions_controls", + editions_deployment_key.as_ref(), + &[ctx.bumps.editions_controls], + ]; + + rarible_editions::cpi::modify_royalties( + CpiContext::new_with_signer( + rarible_editions_program.to_account_info(), + ModifyRoyalties { + editions_deployment: editions_deployment.to_account_info(), + payer: payer.to_account_info(), + signer: editions_controls.to_account_info(), + mint: mint.to_account_info(), + token_program: token_program.to_account_info(), + system_program: system_program.to_account_info(), + }, + &[seeds], + ), + royalties_input, + )?; + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/lib.rs b/programs/rarible_editions_controls/src/lib.rs new file mode 100644 index 00000000..fc3f91e8 --- /dev/null +++ b/programs/rarible_editions_controls/src/lib.rs @@ -0,0 +1,66 @@ +use anchor_lang::prelude::*; + +pub mod logic; +pub use logic::*; + +pub mod instructions; +pub use instructions::*; +declare_id!("RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE"); + +pub mod errors; +pub mod state; + +pub use state::*; + +#[program] +pub mod rarible_editions_controls { + use super::*; + + // v2 endpoints. Prefer these over the original ones. + // they allow setting of optional creator co-signer + // and toggling inscriptions on and off. + // for now, creator co-sign is disabled but will be enabled + // soon to allow for wrapper contracts + pub fn initialise_editions_controls( + ctx: Context, + input: InitialiseControlInput, + ) -> Result<()> { + instructions::initialise_editions_controls(ctx, input) + } + + pub fn add_phase(ctx: Context, input: InitialisePhaseInput) -> Result<()> { + instructions::add_phase(ctx, input) + } + + pub fn modify_phase(ctx: Context, input: ModifyPhaseInput) -> Result<()> { + instructions::modify_phase(ctx, input) + } + + pub fn mint_with_controls<'info>( + ctx: Context<'_, '_, '_, 'info, MintWithControlsCtx<'info>>, + mint_input: MintInput, + ) -> Result<()> { + instructions::mint_with_controls(ctx, mint_input) + } + + pub fn modify_royalties( + ctx: Context, + input: rarible_editions::UpdateRoyaltiesArgs, + ) -> Result<()> { + instructions::update_royalties(ctx, input) + } + + pub fn modify_platform_fee( + ctx: Context, + input: UpdatePlatformFeeArgs, + ) -> Result<()> { + instructions::update_platform_fee(ctx, input) + } + + pub fn modify_platform_secondary_admin( + ctx: Context, + input: UpdatePlatformFeeSecondaryAdminInput, + ) -> Result<()> { + instructions::update_platform_fee_secondary_admin(ctx, input) + } +} diff --git a/programs/rarible_editions_controls/src/logic/check_allow_list_constraints.rs b/programs/rarible_editions_controls/src/logic/check_allow_list_constraints.rs new file mode 100644 index 00000000..2a47bb18 --- /dev/null +++ b/programs/rarible_editions_controls/src/logic/check_allow_list_constraints.rs @@ -0,0 +1,52 @@ +use crate::{errors::EditionsControlsError, MinterStats, Phase}; +use anchor_lang::{accounts::account::Account, prelude::*, solana_program::hash::hashv}; +use merkle_tree_verify::verify; + +/// We need to discern between leaf and intermediate nodes to prevent trivial second +/// pre-image attacks. +/// https://flawed.net.nz/2018/02/21/attacking-merkle-trees-with-a-second-preimage-attack +const LEAF_PREFIX: &[u8] = &[0]; + +pub fn check_allow_list_constraints( + phase: &Phase, + minter: &Pubkey, + minter_stats_phase: &mut Account, + merkle_proof: Option>, + allow_list_price: Option, + allow_list_max_claims: Option, +) -> Result<()> { + if let Some(merkle_root) = phase.merkle_root { + if let Some(proof) = merkle_proof { + if let (Some(phase_list_price), Some(phase_max_claims)) = + (allow_list_price, allow_list_max_claims) + { + /// 1. check constraints + /// dev: notice that if phase_max_claims is 0, this constraint is disabled + if phase_max_claims > 0 && minter_stats_phase.mint_count >= phase_max_claims { + return Err(EditionsControlsError::ExceededAllowListMaxClaims.into()); + } + + /// 2. construct leaf + let leaf = hashv(&[ + &minter.to_bytes(), + &phase_list_price.to_le_bytes(), + &phase_max_claims.to_le_bytes(), + ]); + let node = hashv(&[LEAF_PREFIX, &leaf.to_bytes()]); + + /// 3. verify proof against merkle root + if !verify(proof, merkle_root, node.to_bytes()) { + return Err(EditionsControlsError::InvalidMerkleProof.into()); + } + } else { + return Err(EditionsControlsError::AllowListPriceAndMaxClaimsRequired.into()); + } + } else { + return Err(EditionsControlsError::MerkleProofRequired.into()); + } + } else { + return Err(EditionsControlsError::MerkleRootNotSet.into()); + } + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/logic/check_phase_constraints.rs b/programs/rarible_editions_controls/src/logic/check_phase_constraints.rs new file mode 100644 index 00000000..56ab43a0 --- /dev/null +++ b/programs/rarible_editions_controls/src/logic/check_phase_constraints.rs @@ -0,0 +1,47 @@ +use crate::{errors::EditionsControlsError, EditionsControls, MinterStats, Phase}; +use anchor_lang::{accounts::account::Account, prelude::*}; + +pub fn check_phase_constraints( + phase: &Phase, + minter_stats: &mut Account, + minter_stats_phase: &mut Account, + editions_controls: &Account, +) -> Result<()> { + let clock = Clock::get().unwrap(); + let current_time = clock.unix_timestamp; + + if !phase.active { + return Err(EditionsControlsError::PhaseNotActive.into()); + } + + if phase.start_time > current_time { + return Err(EditionsControlsError::PhaseNotStarted.into()); + } + + if phase.end_time <= current_time { + return Err(EditionsControlsError::PhaseAlreadyFinished.into()); + } + + /// Checks if the total mints for the phase has been exceeded (phase sold out) + /// @dev dev: notice that if max_mints_total is 0, this constraint is disabled + if phase.max_mints_total > 0 && phase.current_mints >= phase.max_mints_total { + return Err(EditionsControlsError::ExceededMaxMintsForPhase.into()); + } + + /// Checks if the user has exceeded the max mints for the deployment (across all phases!) + /// dev: notice that if max_mints_per_wallet is 0, this constraint is disabled + if editions_controls.max_mints_per_wallet > 0 + && minter_stats.mint_count >= editions_controls.max_mints_per_wallet + { + return Err(EditionsControlsError::ExceededWalletMaxMintsForCollection.into()); + } + + /// Checks if the user has exceeded the max mints for the current phase + /// dev: notice that if max_mints_per_wallet is 0, this constraint is disabled + if phase.max_mints_per_wallet > 0 && minter_stats_phase.mint_count >= phase.max_mints_per_wallet + { + return Err(EditionsControlsError::ExceededWalletMaxMintsForPhase.into()); + } + + Ok(()) +} diff --git a/programs/rarible_editions_controls/src/logic/mod.rs b/programs/rarible_editions_controls/src/logic/mod.rs new file mode 100644 index 00000000..6b143b6c --- /dev/null +++ b/programs/rarible_editions_controls/src/logic/mod.rs @@ -0,0 +1,5 @@ +pub mod check_phase_constraints; +pub use check_phase_constraints::*; + +pub mod check_allow_list_constraints; +pub use check_allow_list_constraints::*; diff --git a/wpl_cli/src/asset/mod.rs b/programs/rarible_editions_controls/src/mod.rs similarity index 59% rename from wpl_cli/src/asset/mod.rs rename to programs/rarible_editions_controls/src/mod.rs index 96a8eea2..814e6647 100644 --- a/wpl_cli/src/asset/mod.rs +++ b/programs/rarible_editions_controls/src/mod.rs @@ -1,5 +1,5 @@ -pub mod cmd; pub mod instructions; - -pub use cmd::*; pub use instructions::*; + +pub mod logic; +pub use logic::*; diff --git a/programs/rarible_editions_controls/src/state.rs b/programs/rarible_editions_controls/src/state.rs new file mode 100644 index 00000000..fbb75955 --- /dev/null +++ b/programs/rarible_editions_controls/src/state.rs @@ -0,0 +1,105 @@ +use anchor_lang::prelude::*; +use solana_program::pubkey::Pubkey; + +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct PlatformFeeRecipient { + pub address: Pubkey, + pub share: u8, // Share percentage (0-100) +} + +#[derive(AnchorSerialize, AnchorDeserialize, Clone)] +pub struct UpdatePlatformFeeArgs { + pub platform_fee_value: u64, // Always required + pub recipients: Vec, + pub is_fee_flat: bool, // Flag to indicate if the fee is flat +} + +impl PlatformFeeRecipient { + pub const SIZE: usize = 8 // discriminator + + 32 // address + + 1; // share +} + +#[derive(Clone, AnchorDeserialize, AnchorSerialize)] +pub struct Phase { + pub price_amount: u64, + pub price_token: Pubkey, // SO111111 - native ß + pub start_time: i64, // set to any date before now for instant activate + pub active: bool, + pub max_mints_per_wallet: u64, // set to 0 for unlimited + pub max_mints_total: u64, // set to 0 for unlimited + pub end_time: i64, // set to i64::MAX for unlimited + pub current_mints: u64, + pub is_private: bool, + pub merkle_root: Option<[u8; 32]>, + pub padding: [u8; 200], +} + +impl Phase { + pub const SIZE: usize = 8 // discriminator + + 8 // price_amount + + 32 // price_token + + 8 // start_time + + 1 // active + + 8 // max_mints_per_wallet + + 8 // max_mints_total + + 8 // end_time + + 8 // current_mints + + 1 // is_private + + 32 + 1 // merkle_root + + 200; // padding +} + +pub const DEFAULT_PLATFORM_FEE_PRIMARY_ADMIN: &str = "674s1Sap3KVnr8WGrY5KGQ69oTYjjgr1disKJo6GpTYw"; +pub const DEFAULT_PLATFORM_FEE_SECONDARY_ADMIN: &str = + "9qGioKcyuh1mwXS8MbmMgdtQuBcVS6MBRtvQUas5rMGz"; + +#[account] +pub struct MinterStats { + pub wallet: Pubkey, + pub mint_count: u64, + pub padding: [u8; 50], +} + +impl MinterStats { + pub const SIZE: usize = 8 // discriminator + + 32 // wallet + + 8 // mint_count + + 50; // padding +} + +#[account] +pub struct EditionsControls { + pub editions_deployment: Pubkey, + pub creator: Pubkey, + pub treasury: Pubkey, // mint proceeds go here + pub max_mints_per_wallet: u64, // set to 0 for unlimited (applied across all the phases) + pub cosigner_program_id: Pubkey, + pub platform_fee_primary_admin: Pubkey, + pub platform_fee_secondary_admin: Pubkey, + pub platform_fee_value: u64, // Fee amount or basis points + pub is_fee_flat: bool, // True for flat fee, false for percentage-based fee + pub platform_fee_recipients: [PlatformFeeRecipient; 5], // Fixed-length array of 5 recipients and their shares + pub phases: Vec, // Vec of phases + pub padding: [u8; 200], // in case we need some more stuff in the future +} + +impl EditionsControls { + pub const INITIAL_SIZE: usize = 8 // Discriminator + + 32 // editions_deployment + + 32 // creator + + 32 // treasury + + 8 // max_mints_per_wallet + + 32 // cosigner_program_id + + 32 // platform_fee_primary_admin + + 32 // platform_fee_secondary_admin + + 8 // platform_fee_value + + 1 // is_fee_flat + + (PlatformFeeRecipient::SIZE * 5) // platform_fee_recipients (5 * 33 = 165) + + 4 // Vec length for phases + + 200; // padding + + pub fn get_size(number_of_phases: usize) -> usize { + EditionsControls::INITIAL_SIZE + Phase::SIZE * number_of_phases + } +} diff --git a/programs/rarible_marketplace/Cargo.toml b/programs/rarible_marketplace/Cargo.toml new file mode 100644 index 00000000..f1e6cae4 --- /dev/null +++ b/programs/rarible_marketplace/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "rarible_marketplace" +version = "0.1.0" +description = "Base marketplace contracts on SVM for rarible" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "rarible_marketplace" + +[features] +default = [] +cpi = ["no-entrypoint"] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +idl-build = [ + "anchor-lang/idl-build", + "anchor-spl/idl-build", +] + +[dependencies] +anchor-lang = { version = "0.30.1", features = [ + "init-if-needed", + "interface-instructions", + "allow-missing-optionals", + "event-cpi" +] } +anchor-spl = { version = "0.30.1", features = ["token_2022_extensions", "token_2022"] } +wen_new_standard = { git = "https://github.com/ifelsedeveloper/wen-program-library", branch="main", features = ["cpi"] } +wen_royalty_distribution = { git = "https://github.com/ifelsedeveloper/wen-program-library", features = ["cpi"] } +mpl-token-metadata = { version = "4.1.2", features = ["serde"] } +mpl-bubblegum = { version = "1.4.0" } +num_enum = "0.5.11" +spl-transfer-hook-interface = "0.6.5" +spl-tlv-account-resolution = "0.6.5" +spl-pod = "0.2.2" +spl-token-group-interface = "0.2.3" \ No newline at end of file diff --git a/programs/wen_transfer_guard/Xargo.toml b/programs/rarible_marketplace/Xargo.toml similarity index 100% rename from programs/wen_transfer_guard/Xargo.toml rename to programs/rarible_marketplace/Xargo.toml diff --git a/programs/rarible_marketplace/src/errors.rs b/programs/rarible_marketplace/src/errors.rs new file mode 100644 index 00000000..0bc0be9c --- /dev/null +++ b/programs/rarible_marketplace/src/errors.rs @@ -0,0 +1,19 @@ +use anchor_lang::prelude::*; + +#[error_code] +pub enum MarketError { + #[msg("Account passed in incorrectly")] + WrongAccount, + #[msg("Order too small")] + InsufficientOrderSize, + #[msg("Amount overflow")] + AmountOverflow, + #[msg("Amount underflow")] + AmountUnderflow, + #[msg("Unsupported NFT Type")] + UnsupportedNft, + #[msg("Invalid NFT for Market")] + InvalidNft, + #[msg("Invalid Fee Account")] + InvalidFeeAccount, +} diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/buy/fill.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/buy/fill.rs new file mode 100644 index 00000000..5dfde3c4 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/buy/fill.rs @@ -0,0 +1,180 @@ +use anchor_lang::{ + prelude::*, + solana_program::{program::invoke, system_instruction::transfer}, +}; +use mpl_bubblegum::instructions::{TransferCpiAccounts, TransferInstructionArgs}; + +use crate::{instructions::compressed_draft::CompressedFillOrderData, state::*}; + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct CompressedFillBuyOrder<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + mut, + constraint = order.owner == buyer.key(), + )] + /// CHECK: constraint check + pub buyer: UncheckedAccount<'info>, + #[account( + mut, + seeds = [WALLET_SEED, + order.owner.as_ref()], + bump, + )] + pub wallet: Box>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + mut, + constraint = Order::is_active(order.state), + constraint = order.market == market.key(), + seeds = [ORDER_SEED, + order.nonce.as_ref(), + order.market.as_ref(), + order.owner.as_ref()], + bump, + )] + pub order: Box>, + /// CHECK: checked in cpi + pub tree_config: UncheckedAccount<'info>, + /// CHECK: checked in cpi + #[account(mut)] + pub merkle_tree: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub log_wrapper: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub compression_program: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub mpl_bubblegum: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, +} + +impl<'info> CompressedFillBuyOrder<'info> { + pub fn transfer_compressed_nft( + &self, + ra: Vec>, + root: [u8; 32], + data_hash: [u8; 32], + creator_hash: [u8; 32], + nonce: u64, + index: u32, + ) -> Result<()> { + let cpi_accounts = TransferCpiAccounts { + tree_config: &self.tree_config.to_account_info(), + leaf_owner: (&self.initializer.to_account_info(), true), + leaf_delegate: (&self.initializer.to_account_info(), false), + new_leaf_owner: &self.wallet.to_account_info(), + merkle_tree: &self.merkle_tree.to_account_info(), + log_wrapper: &self.log_wrapper.to_account_info(), + compression_program: &self.compression_program.to_account_info(), + system_program: &self.system_program.to_account_info(), + }; + + let args = TransferInstructionArgs { + root, + data_hash, + creator_hash, + index, + nonce, + }; + + let transformed: Vec<(&AccountInfo, bool, bool)> = ra + .iter() + .map(|account| (account, account.is_signer, account.is_writable)) + .collect(); + + let transformed_slice: &[(&AccountInfo, bool, bool)] = &transformed; + compressed_transfer( + self.mpl_bubblegum.to_account_info(), + cpi_accounts, + transformed_slice, + &[], + args, + ) + } +} + +/// seller is initializer and is transferring the nft to buyer who is the owner of the order account +/// buyer is the owner of the order account and is transferring sol to seller via bidding wallet +#[inline(always)] +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, CompressedFillBuyOrder<'info>>, + data: CompressedFillOrderData, +) -> Result<()> { + // edit wallet account to decrease balance + let wallet_account = ctx.accounts.wallet.to_account_info(); + msg!("Edit wallet balance: {}", wallet_account.key()); + Wallet::edit_balance(&mut ctx.accounts.wallet, false, ctx.accounts.order.price); + + ctx.accounts.transfer_compressed_nft( + ctx.remaining_accounts.to_vec(), + data.root, + data.data_hash, + data.creator_hash, + data.index as u64, + data.index, + )?; + + // transfer sol from buyer to seller + invoke( + &transfer( + &wallet_account.key(), + &ctx.accounts.initializer.key(), + ctx.accounts.order.price, + ), + &[ + wallet_account, + ctx.accounts.initializer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ], + )?; + + // edit order + let price = ctx.accounts.order.price; + let size = ctx.accounts.order.size; + + let clock = Clock::get()?; + Order::edit_buy( + &mut ctx.accounts.order, + price, + size - 1, + clock.unix_timestamp, + ); + + if size == 1 { + // close order account + msg!( + "Close buy order account: {}: {}", + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier + ); + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::FillAndClose, + )); + ctx.accounts.order.state = OrderState::Closed.into(); + ctx.accounts + .order + .close(ctx.accounts.buyer.to_account_info())?; + } else { + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Fill, + )); + msg!("Filled buy order: {}", ctx.accounts.order.key()); + } + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/buy/mod.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/buy/mod.rs new file mode 100644 index 00000000..002fd536 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/buy/mod.rs @@ -0,0 +1,3 @@ +pub mod fill; + +pub use fill::*; diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/mod.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/mod.rs new file mode 100644 index 00000000..182f1212 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/mod.rs @@ -0,0 +1,26 @@ +use anchor_lang::prelude::*; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct CompressedOrderData { + pub order_nonce: Pubkey, + pub mint_id: Pubkey, + pub price: u64, + pub root: [u8; 32], + pub data_hash: [u8; 32], + pub creator_hash: [u8; 32], + pub index: u32, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct CompressedFillOrderData { + pub root: [u8; 32], + pub data_hash: [u8; 32], + pub creator_hash: [u8; 32], + pub index: u32, +} + +pub mod buy; +pub mod sell; + +pub use buy::*; +pub use sell::*; diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/close.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/close.rs new file mode 100644 index 00000000..cd648cdf --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/close.rs @@ -0,0 +1,127 @@ +use anchor_lang::prelude::*; +use mpl_bubblegum::instructions::{TransferCpiAccounts, TransferInstructionArgs}; + +use crate::{instructions::compressed_draft::CompressedOrderData, state::*}; + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct CompressedCloseSellOrder<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + mut, + constraint = order.owner == initializer.key(), + constraint = order.market == market.key(), + constraint = Order::is_active(order.state), + seeds = [ORDER_SEED, + order.nonce.as_ref(), + order.market.as_ref(), + initializer.key().as_ref()], + bump, + close = initializer, + )] + pub order: Box>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + mut, + seeds = [WALLET_SEED, + order.owner.as_ref()], + bump, + )] + pub wallet: Box>, + /// CHECK: checked in cpi + pub tree_config: UncheckedAccount<'info>, + /// CHECK: checked in cpi + #[account(mut)] + pub merkle_tree: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub log_wrapper: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub compression_program: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub mpl_bubblegum: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, +} + +impl<'info> CompressedCloseSellOrder<'info> { + pub fn transfer_compressed_nft( + &self, + ra: Vec>, + signer_seeds: &[&[&[u8]]], + root: [u8; 32], + data_hash: [u8; 32], + creator_hash: [u8; 32], + index: u32, + ) -> Result<()> { + let cpi_accounts = TransferCpiAccounts { + tree_config: &self.tree_config.to_account_info(), + leaf_owner: (&self.initializer.to_account_info(), true), + leaf_delegate: (&self.initializer.to_account_info(), false), + new_leaf_owner: &self.wallet.to_account_info(), + merkle_tree: &self.merkle_tree.to_account_info(), + log_wrapper: &self.log_wrapper.to_account_info(), + compression_program: &self.compression_program.to_account_info(), + system_program: &self.system_program.to_account_info(), + }; + + let args = TransferInstructionArgs { + root, + data_hash, + creator_hash, + index, + nonce: index as u64, + }; + + let transformed: Vec<(&AccountInfo, bool, bool)> = ra + .iter() + .map(|account| (account, account.is_signer, account.is_writable)) + .collect(); + + let transformed_slice: &[(&AccountInfo, bool, bool)] = &transformed; + compressed_transfer( + self.mpl_bubblegum.to_account_info(), + cpi_accounts, + transformed_slice, + signer_seeds, + args, + ) + } +} + +#[inline(always)] +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, CompressedCloseSellOrder<'info>>, + data: CompressedOrderData, +) -> Result<()> { + msg!("Close sell order account: {}", ctx.accounts.order.key()); + + let bump = &get_bump_in_seed_form(&ctx.bumps.wallet); + + let signer_seeds = &[&[WALLET_SEED, ctx.accounts.order.owner.as_ref(), bump][..]]; + + ctx.accounts.transfer_compressed_nft( + ctx.remaining_accounts.to_vec(), + signer_seeds, + data.root, + data.data_hash, + data.creator_hash, + data.index, + )?; + + ctx.accounts.order.state = OrderState::Closed.into(); + + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Close, + )); + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/fill.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/fill.rs new file mode 100644 index 00000000..954e38ec --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/fill.rs @@ -0,0 +1,155 @@ +use anchor_lang::prelude::*; +use mpl_bubblegum::instructions::{TransferCpiAccounts, TransferInstructionArgs}; + +use crate::{ + instructions::compressed_draft::CompressedFillOrderData, + state::*, + utils::{get_fee_amount, transfer_sol}, +}; + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct CompressedFillSellOrder<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + mut, + constraint = order.owner == seller.key(), + )] + /// CHECK: constraint check + pub seller: UncheckedAccount<'info>, + #[account( + mut, + seeds = [WALLET_SEED, + seller.key().as_ref()], + bump, + )] + pub wallet: Box>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + mut, + constraint = Order::is_active(order.state), + constraint = order.market == market.key(), + seeds = [ORDER_SEED, + order.nonce.as_ref(), + order.market.as_ref(), + order.owner.as_ref()], + bump, + close = seller + )] + pub order: Box>, + /// CHECK: checked in cpi + pub tree_config: UncheckedAccount<'info>, + /// CHECK: checked in cpi + #[account(mut)] + pub merkle_tree: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub log_wrapper: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub compression_program: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub mpl_bubblegum: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, +} + +impl<'info> CompressedFillSellOrder<'info> { + pub fn transfer_compressed_nft( + &self, + ra: Vec>, + signer_seeds: &[&[&[u8]]], + root: [u8; 32], + data_hash: [u8; 32], + creator_hash: [u8; 32], + index: u32, + ) -> Result<()> { + let cpi_accounts = TransferCpiAccounts { + tree_config: &self.tree_config.to_account_info(), + leaf_owner: (&self.initializer.to_account_info(), true), + leaf_delegate: (&self.initializer.to_account_info(), false), + new_leaf_owner: &self.wallet.to_account_info(), + merkle_tree: &self.merkle_tree.to_account_info(), + log_wrapper: &self.log_wrapper.to_account_info(), + compression_program: &self.compression_program.to_account_info(), + system_program: &self.system_program.to_account_info(), + }; + + let args = TransferInstructionArgs { + root, + data_hash, + creator_hash, + index, + nonce: index as u64, + }; + + let transformed: Vec<(&AccountInfo, bool, bool)> = ra + .iter() + .map(|account| (account, account.is_signer, account.is_writable)) + .collect(); + + let transformed_slice: &[(&AccountInfo, bool, bool)] = &transformed; + compressed_transfer( + self.mpl_bubblegum.to_account_info(), + cpi_accounts, + transformed_slice, + signer_seeds, + args, + ) + } +} + +#[inline(always)] +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, CompressedFillSellOrder<'info>>, + data: CompressedFillOrderData, +) -> Result<()> { + let bump = &get_bump_in_seed_form(&ctx.bumps.wallet); + let signer_seeds = &[&[WALLET_SEED, ctx.accounts.order.owner.as_ref(), bump][..]]; + + ctx.accounts.transfer_compressed_nft( + ctx.remaining_accounts.to_vec(), + signer_seeds, + data.root, + data.data_hash, + data.creator_hash, + data.index, + )?; + + let fee_amount = get_fee_amount(ctx.accounts.order.price); + + // transfer fee to treasury + transfer_sol( + ctx.accounts.initializer.to_account_info(), + ctx.accounts.treasury.to_account_info(), + ctx.accounts.system_program.to_account_info(), + Some(signer_seeds), + fee_amount, + )?; + + // transfer sol from buyer to seller + transfer_sol( + ctx.accounts.initializer.to_account_info(), + ctx.accounts.seller.to_account_info(), + ctx.accounts.system_program.to_account_info(), + Some(signer_seeds), + ctx.accounts.order.price, + )?; + + // close order account + msg!("Close sell order account: {}", ctx.accounts.order.key()); + ctx.accounts.order.state = OrderState::Closed.into(); + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::FillAndClose, + )); + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/init.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/init.rs new file mode 100644 index 00000000..baa9cc68 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/init.rs @@ -0,0 +1,145 @@ +use anchor_lang::prelude::*; + +use mpl_bubblegum::instructions::{TransferCpiAccounts, TransferInstructionArgs}; + +use crate::{instructions::compressed_draft::CompressedOrderData, state::*}; + +#[derive(Accounts)] +#[instruction(data: CompressedOrderData)] +#[event_cpi] +pub struct CompressedInitSellOrder<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + mut, + seeds = [WALLET_SEED, + initializer.key().as_ref()], + bump, + )] + pub wallet: Box>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + constraint = data.price > 0, + init, + seeds = [ORDER_SEED, + data.order_nonce.as_ref(), + market.key().as_ref(), + initializer.key().as_ref()], + bump, + payer = initializer, + space = 8 + std::mem::size_of::() + )] + pub order: Box>, + #[account( + seeds = [APPRAISAL_SEED, market.market_identifier.as_ref(), data.mint_id.as_ref()], + bump, + seeds::program = vault::ID, + )] + pub appraisal: Box>, + /// CHECK: checked in cpi + pub tree_config: UncheckedAccount<'info>, + /// CHECK: checked in cpi + #[account(mut)] + pub merkle_tree: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub log_wrapper: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub compression_program: UncheckedAccount<'info>, + /// CHECK: checked in cpi + pub mpl_bubblegum: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, +} + +impl<'info> CompressedInitSellOrder<'info> { + pub fn transfer_compressed_nft( + &self, + ra: Vec>, + root: [u8; 32], + data_hash: [u8; 32], + creator_hash: [u8; 32], + nonce: u64, + index: u32, + ) -> Result<()> { + let cpi_accounts = TransferCpiAccounts { + tree_config: &self.tree_config.to_account_info(), + leaf_owner: (&self.initializer.to_account_info(), true), + leaf_delegate: (&self.initializer.to_account_info(), false), + new_leaf_owner: &self.wallet.to_account_info(), + merkle_tree: &self.merkle_tree.to_account_info(), + log_wrapper: &self.log_wrapper.to_account_info(), + compression_program: &self.compression_program.to_account_info(), + system_program: &self.system_program.to_account_info(), + }; + + let args = TransferInstructionArgs { + root, + data_hash, + creator_hash, + nonce, + index, + }; + + let transformed: Vec<(&AccountInfo, bool, bool)> = ra + .iter() + .map(|account| (account, account.is_signer, account.is_writable)) + .collect(); + + let transformed_slice: &[(&AccountInfo, bool, bool)] = &transformed; + compressed_transfer( + self.mpl_bubblegum.to_account_info(), + cpi_accounts, + transformed_slice, + &[], + args, + ) + } +} + +#[inline(always)] +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, CompressedInitSellOrder<'info>>, + data: CompressedOrderData, +) -> Result<()> { + msg!("Initialize a new sell order: {}", ctx.accounts.order.key()); + + let clock = Clock::get()?; + // create a new order with size 1 + Order::init( + &mut ctx.accounts.order, + ctx.accounts.market.key(), + ctx.accounts.initializer.key(), + ctx.accounts.wallet.key(), + data.order_nonce, + data.mint_id, + clock.unix_timestamp, + OrderSide::Sell.into(), + 1, // always 1 + data.price, + OrderState::Ready.into(), + true, + ); + + ctx.accounts.transfer_compressed_nft( + ctx.remaining_accounts.to_vec(), + data.root, + data.data_hash, + data.creator_hash, + data.index as u64, + data.index, + )?; + + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Init, + )); + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/mod.rs b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/mod.rs new file mode 100644 index 00000000..8e7057ea --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/compressed_WIP/sell/mod.rs @@ -0,0 +1,7 @@ +pub mod close; +pub mod fill; +pub mod init; + +pub use close::*; +pub use fill::*; +pub use init::*; diff --git a/programs/rarible_marketplace/src/instructions/market/init.rs b/programs/rarible_marketplace/src/instructions/market/init.rs new file mode 100644 index 00000000..c4090b28 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/market/init.rs @@ -0,0 +1,49 @@ +use anchor_lang::prelude::*; + +use crate::state::*; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct InitMarketParams { + pub fee_recipients: [Pubkey; 3], + pub fee_bps: [u64; 3], +} + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct InitMarket<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account()] + /// CHECK: doesn't actually need to be a mint + pub market_identifier: UncheckedAccount<'info>, + #[account( + init, + seeds = [MARKET_SEED, + market_identifier.key().as_ref()], + bump, + payer = initializer, + space = 8 + std::mem::size_of::() + )] + pub market: Box>, + pub system_program: Program<'info, System>, +} + +#[inline(always)] +pub fn handler(ctx: Context, params: InitMarketParams) -> Result<()> { + msg!("Initializing new market"); + Market::init( + &mut ctx.accounts.market, + ctx.accounts.market_identifier.key(), + ctx.accounts.initializer.key(), + params.fee_recipients, + params.fee_bps, + ); + + emit_cpi!(Market::get_edit_event( + &mut ctx.accounts.market.clone(), + ctx.accounts.market.key(), + MarketEditType::Init + )); + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/market/mod.rs b/programs/rarible_marketplace/src/instructions/market/mod.rs new file mode 100644 index 00000000..447b957c --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/market/mod.rs @@ -0,0 +1,5 @@ +pub mod init; +pub mod verify_mint; + +pub use init::*; +pub use verify_mint::*; diff --git a/programs/rarible_marketplace/src/instructions/market/verify_mint.rs b/programs/rarible_marketplace/src/instructions/market/verify_mint.rs new file mode 100644 index 00000000..5d0d38c6 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/market/verify_mint.rs @@ -0,0 +1,35 @@ +use anchor_lang::prelude::*; +use anchor_lang::Key; + +use crate::state::*; + +#[derive(Accounts)] +pub struct VerifyMint<'info> { + #[account(mut, + constraint = market.initializer.key() == initializer.key() + )] + pub initializer: Signer<'info>, + #[account()] + pub market: Box>, + #[account()] + /// CHECK: initializer signing is all thats needed + pub nft_mint: UncheckedAccount<'info>, + #[account( + init_if_needed, + seeds = [ + VERIFICATION_SEED, + nft_mint.key().as_ref(), + market.key().as_ref() + ], + payer = initializer, + space = 8 + std::mem::size_of::(), + bump + )] + pub verification: Box>, + pub system_program: Program<'info, System>, +} + +pub fn handler(ctx: Context) -> Result<()> { + ctx.accounts.verification.verified = 1; + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/mod.rs b/programs/rarible_marketplace/src/instructions/mod.rs new file mode 100644 index 00000000..8abb027b --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/mod.rs @@ -0,0 +1,5 @@ +pub mod market; +pub mod order; + +pub use market::*; +pub use order::*; diff --git a/programs/rarible_marketplace/src/instructions/order/bid.rs b/programs/rarible_marketplace/src/instructions/order/bid.rs new file mode 100644 index 00000000..1e377388 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/order/bid.rs @@ -0,0 +1,157 @@ +use anchor_lang::prelude::*; +use anchor_spl::{ + associated_token::AssociatedToken, + token_interface::{transfer_checked, Mint, TokenAccount, TokenInterface, TransferChecked}, +}; + +use crate::{ + state::*, + utils::{ + create_ata, invoke_unwrap_sol, invoke_wrap_sol, UnwrapSolAccounts, WrapSolAccounts, + WSOL_MINT, + }, +}; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct BidData { + pub nonce: Pubkey, + pub price: u64, + pub size: u64, +} + +#[derive(Accounts)] +#[instruction(data: BidData)] +#[event_cpi] +pub struct BidNft<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + constraint = data.price > 0 && data.size > 0, + init, + seeds = [ORDER_SEED, + data.nonce.as_ref(), + market.key().as_ref(), + initializer.key().as_ref()], + bump, + payer = initializer, + space = 8 + std::mem::size_of::() + )] + pub order: Box>, + /// CHECK: create_ata function check + #[account(mut)] + pub initializer_payment_ta: UncheckedAccount<'info>, + #[account( + init_if_needed, + payer = initializer, + associated_token::mint = payment_mint, + associated_token::authority = order, + associated_token::token_program = payment_token_program, + )] + pub order_payment_ta: Box>, + #[account(mut)] + pub payment_mint: Box>, + pub payment_token_program: Interface<'info, TokenInterface>, + /// CHECK: can be anything + pub nft_mint: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, + pub associated_token_program: Program<'info, AssociatedToken>, +} + +impl<'info> BidNft<'info> { + fn transfer_payment(&self, amount: u64) -> Result<()> { + let cpi_ctx = CpiContext::new( + self.payment_token_program.to_account_info(), + TransferChecked { + from: self.initializer_payment_ta.to_account_info(), + to: self.order_payment_ta.to_account_info(), + authority: self.initializer.to_account_info(), + mint: self.payment_mint.to_account_info(), + }, + ); + transfer_checked(cpi_ctx, amount, self.payment_mint.decimals) + } + + #[inline(never)] + fn wrap_sol_if_needed(&self, amount: u64) -> Result<()> { + if self.payment_mint.key() == WSOL_MINT { + invoke_wrap_sol( + &WrapSolAccounts { + user: self.initializer.to_account_info(), + user_ta: self.initializer_payment_ta.to_account_info(), + token_program: self.payment_token_program.to_account_info(), + wsol_mint: self.payment_mint.to_account_info(), + system_program: self.system_program.to_account_info(), + }, + amount, + )?; + } + Ok(()) + } + + #[inline(never)] + fn unwrap_sol_if_needed(&self) -> Result<()> { + if self.payment_mint.key() == WSOL_MINT { + invoke_unwrap_sol(&UnwrapSolAccounts { + user: self.initializer.to_account_info(), + user_ta: self.initializer_payment_ta.to_account_info(), + token_program: self.payment_token_program.to_account_info(), + })?; + } + Ok(()) + } +} + +#[inline(always)] +pub fn handler(ctx: Context, data: BidData) -> Result<()> { + msg!("Initialize a new buy order: {}", ctx.accounts.order.key()); + + let clock = Clock::get()?; + let bid_value = data.size.checked_mul(data.price).unwrap(); + + create_ata( + &ctx.accounts.initializer_payment_ta.to_account_info(), + &ctx.accounts.initializer.to_account_info(), + &ctx.accounts.payment_mint.to_account_info(), + &ctx.accounts.initializer.to_account_info(), + &ctx.accounts.system_program.to_account_info(), + &ctx.accounts.payment_token_program.to_account_info(), + )?; + + ctx.accounts.wrap_sol_if_needed(bid_value)?; + + // Transfer bid funds TODO; + ctx.accounts.transfer_payment(bid_value)?; + // create a new order with size 1 + Order::init( + &mut ctx.accounts.order, + ctx.accounts.market.key(), + ctx.accounts.initializer.key(), + data.nonce, + ctx.accounts.nft_mint.key(), + ctx.accounts.payment_mint.key(), + clock.unix_timestamp, + OrderSide::Buy.into(), + data.size, + data.price, + OrderState::Ready.into(), + true, + ); + + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Init, + )); + + ctx.accounts.unwrap_sol_if_needed()?; + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/order/cancel_bid.rs b/programs/rarible_marketplace/src/instructions/order/cancel_bid.rs new file mode 100644 index 00000000..da335917 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/order/cancel_bid.rs @@ -0,0 +1,127 @@ +use anchor_lang::prelude::*; +use anchor_spl::{ + associated_token::AssociatedToken, + token_interface::{transfer_checked, Mint, TokenAccount, TokenInterface, TransferChecked}, +}; + +use crate::{ + state::*, + utils::{create_ata, get_bump_in_seed_form, invoke_unwrap_sol, UnwrapSolAccounts, WSOL_MINT}, +}; + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct CancelBid<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + mut, + constraint = order.owner == initializer.key(), + constraint = Order::is_active(order.state), + seeds = [ORDER_SEED, + order.nonce.as_ref(), + order.market.as_ref(), + initializer.key().as_ref()], + bump, + close = initializer, + )] + pub order: Box>, + #[account( + constraint = market.key() == order.market, + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + /// CHECK: create_ata function check + #[account(mut)] + pub initializer_payment_ta: UncheckedAccount<'info>, + #[account( + mut, + associated_token::mint = payment_mint, + associated_token::authority = order, + associated_token::token_program = payment_token_program, + )] + pub order_payment_ta: Box>, + #[account(mut, constraint = payment_mint.key() == order.payment_mint)] + pub payment_mint: Box>, + pub payment_token_program: Interface<'info, TokenInterface>, + pub system_program: Program<'info, System>, + pub associated_token_program: Program<'info, AssociatedToken>, +} + +impl<'info> CancelBid<'info> { + fn transfer_payment(&self, signer_seeds: &[&[&[u8]]], amount: u64) -> Result<()> { + msg!( + "{:?} -- {:?}", + amount, + self.order_payment_ta.key().to_string() + ); + let cpi_ctx = CpiContext::new_with_signer( + self.payment_token_program.to_account_info(), + TransferChecked { + from: self.order_payment_ta.to_account_info(), + to: self.initializer_payment_ta.to_account_info(), + authority: self.order.to_account_info(), + mint: self.payment_mint.to_account_info(), + }, + signer_seeds, + ); + transfer_checked(cpi_ctx, amount, self.payment_mint.decimals) + } + + #[inline(never)] + fn unwrap_sol_if_needed(&self) -> Result<()> { + if self.payment_mint.key() == WSOL_MINT { + invoke_unwrap_sol(&UnwrapSolAccounts { + user: self.initializer.to_account_info(), + user_ta: self.initializer_payment_ta.to_account_info(), + token_program: self.payment_token_program.to_account_info(), + })?; + } + Ok(()) + } +} + +#[inline(always)] +pub fn handler(ctx: Context) -> Result<()> { + msg!("Close buy order account: {}", ctx.accounts.order.key()); + ctx.accounts.order.state = OrderState::Closed.into(); + let bump = &get_bump_in_seed_form(&ctx.bumps.order); + + create_ata( + &ctx.accounts.initializer_payment_ta.to_account_info(), + &ctx.accounts.initializer.to_account_info(), + &ctx.accounts.payment_mint.to_account_info(), + &ctx.accounts.initializer.to_account_info(), + &ctx.accounts.system_program.to_account_info(), + &ctx.accounts.payment_token_program.to_account_info(), + )?; + + let signer_seeds: &[&[&[u8]]; 1] = &[&[ + ORDER_SEED, + ctx.accounts.order.nonce.as_ref(), + ctx.accounts.order.market.as_ref(), + ctx.accounts.order.owner.as_ref(), + bump, + ][..]]; + + let bid_value = ctx + .accounts + .order + .size + .checked_mul(ctx.accounts.order.price) + .unwrap(); + // TODO Transfer funds out + ctx.accounts.transfer_payment(signer_seeds, bid_value)?; + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Close, + )); + + ctx.accounts.unwrap_sol_if_needed()?; + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/order/cancel_list.rs b/programs/rarible_marketplace/src/instructions/order/cancel_list.rs new file mode 100644 index 00000000..5ec76de1 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/order/cancel_list.rs @@ -0,0 +1,132 @@ +use anchor_lang::prelude::*; +use anchor_lang::{solana_program::sysvar, Key}; +use anchor_spl::associated_token::AssociatedToken; +use anchor_spl::token_interface::{revoke, Mint, Revoke, TokenAccount, TokenInterface}; + +use crate::errors::MarketError; +use crate::state::*; +use crate::utils::get_bump_in_seed_form; + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct CancelListing<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + mut, + constraint = order.owner == initializer.key(), + constraint = order.market == market.key(), + constraint = Order::is_active(order.state), + seeds = [ORDER_SEED, + order.nonce.as_ref(), + order.market.as_ref(), + initializer.key().as_ref()], + bump, + close = initializer, + )] + pub order: Box>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account(mut)] + pub nft_mint: Box>, + #[account( + mut, + constraint = initializer_nft_ta.owner == initializer.key(), + constraint = initializer_nft_ta.mint == nft_mint.key(), + )] + pub initializer_nft_ta: Box>, + pub system_program: Program<'info, System>, + /// CHECK: checked by constraint and in cpi + #[account(address = sysvar::instructions::id())] + pub sysvar_instructions: UncheckedAccount<'info>, + pub associated_token_program: Program<'info, AssociatedToken>, + /// CHECK: checked by constraint and in cpi + pub nft_token_program: Interface<'info, TokenInterface>, + /// CHECK: checked by constraint and in cpi + pub nft_program: UncheckedAccount<'info>, +} + +impl<'info> CancelListing<'info> { + /* + Metaplex Transfer Instructions + */ + + /* + Compressed Transfer Instructions + */ + + /* + Token 22 Transfer Instructions + */ + fn token22_nft_revoke( + &self, + signer_seeds: &[&[&[u8]]], + remaining_accounts: Vec>, + ) -> Result<()> { + let cpi_ctx = CpiContext::new_with_signer( + self.nft_token_program.to_account_info(), + Revoke { + authority: self.order.to_account_info(), + source: self.initializer_nft_ta.to_account_info(), + }, + signer_seeds, + ); + revoke(cpi_ctx.with_remaining_accounts(remaining_accounts)) + } +} + +#[inline(always)] +pub fn handler<'info>(ctx: Context<'_, '_, '_, 'info, CancelListing<'info>>) -> Result<()> { + msg!("Close sell order account: {}", ctx.accounts.order.key()); + let nft_token_program_key = &ctx.accounts.nft_token_program.key.to_string().clone(); + let nft_program_key = &ctx.accounts.nft_program.key.to_string().clone(); + let remaining_accounts = ctx.remaining_accounts.to_vec(); + + let bump = &get_bump_in_seed_form(&ctx.bumps.order); + let signer_seeds: &[&[&[u8]]; 1] = &[&[ + ORDER_SEED, + ctx.accounts.order.nonce.as_ref(), + ctx.accounts.order.market.as_ref(), + ctx.accounts.order.owner.as_ref(), + bump, + ][..]]; + + // NFT Transfer + if *nft_token_program_key == TOKEN_PID { + // Check if its metaplex or not + if *nft_program_key == METAPLEX_PID { + // TODO + return Err(MarketError::UnsupportedNft.into()); + } else { + // Transfer compressed NFT + // TODO + return Err(MarketError::UnsupportedNft.into()); + } + } else if *nft_token_program_key == TOKEN_EXT_PID { + let token22_ra = remaining_accounts.clone(); + ctx.accounts.token22_nft_revoke(signer_seeds, token22_ra)?; + } else if *nft_token_program_key == BUBBLEGUM_PID { + // Transfer compressed NFT + // TODO + return Err(MarketError::UnsupportedNft.into()); + } else { + // ERROR + return Err(MarketError::UnsupportedNft.into()); + } + + ctx.accounts.order.state = OrderState::Closed.into(); + + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Close, + )); + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/order/fill.rs b/programs/rarible_marketplace/src/instructions/order/fill.rs new file mode 100644 index 00000000..9078057f --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/order/fill.rs @@ -0,0 +1,549 @@ +use std::str::FromStr; + +use anchor_lang::{prelude::*, solana_program::sysvar}; +use anchor_spl::{ + associated_token::AssociatedToken, + token_2022::spl_token_2022::instruction::transfer_checked as transfer_2022, + token_interface::{transfer_checked, Mint, TokenInterface, TransferChecked}, +}; +use spl_transfer_hook_interface::onchain::add_extra_accounts_for_execute_cpi; + +use wen_new_standard::{ + cpi::{accounts::ApproveTransfer, approve_transfer}, + utils::get_mint_metadata, + ROYALTY_BASIS_POINTS_FIELD, +}; + +use crate::{ + errors::MarketError, + state::*, + utils::{ + create_ata, get_amount_from_bp, get_bump_in_seed_form, get_fee_amount, invoke_unwrap_sol, + invoke_wrap_sol, token_extensions::WnsApprovalAccounts, verify_wns_mint, UnwrapSolAccounts, + WrapSolAccounts, WSOL_MINT, + }, +}; + +#[derive(Accounts)] +#[instruction()] +#[event_cpi] +pub struct FillOrder<'info> { + #[account(mut)] + pub taker: Signer<'info>, + #[account(mut, constraint = maker.key() == order.owner.key())] + /// CHECK: constraint check + pub maker: UncheckedAccount<'info>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + mut, + constraint = Order::is_active(order.state), + constraint = order.market == market.key(), + constraint = order.owner == maker.key(), + seeds = [ORDER_SEED, + order.nonce.as_ref(), + order.market.as_ref(), + order.owner.as_ref()], + bump, + close = maker + )] + pub order: Box>, + #[account(mut)] + pub nft_mint: Box>, + #[account(mut)] + /// CHECK: checked by create_ata function + pub seller_nft_ta: UncheckedAccount<'info>, + #[account(mut)] + /// CHECK: checked by create_ata function + pub buyer_nft_ta: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, + pub nft_token_program: Interface<'info, TokenInterface>, + /// CHECK: checked by constraint and in cpi + pub nft_program: UncheckedAccount<'info>, + #[account(mut)] + /// CHECK: checked by create_ata function + pub seller_payment_ta: UncheckedAccount<'info>, + #[account(mut)] + /// CHECK: checked by create_ata function + pub buyer_payment_ta: UncheckedAccount<'info>, + #[account(mut, constraint = payment_mint.key() == order.payment_mint)] + pub payment_mint: Box>, + pub payment_token_program: Interface<'info, TokenInterface>, + /// CHECK: checked by constraint and in cpi + #[account(address = sysvar::instructions::id())] + pub sysvar_instructions: UncheckedAccount<'info>, + pub associated_token_program: Program<'info, AssociatedToken>, +} + +impl<'info> FillOrder<'info> { + #[inline(never)] + fn transfer_payment(&self, signer_seeds: &[&[&[u8]]], is_buy: bool, amount: u64) -> Result<()> { + let cpi_ctx = if is_buy { + CpiContext::new_with_signer( + self.payment_token_program.to_account_info(), + TransferChecked { + from: self.buyer_payment_ta.to_account_info(), + to: self.seller_payment_ta.to_account_info(), + authority: self.order.to_account_info(), + mint: self.payment_mint.to_account_info(), + }, + signer_seeds, + ) + } else { + CpiContext::new( + self.payment_token_program.to_account_info(), + TransferChecked { + from: self.buyer_payment_ta.to_account_info(), + to: self.seller_payment_ta.to_account_info(), + authority: self.taker.to_account_info(), + mint: self.payment_mint.to_account_info(), + }, + ) + }; + transfer_checked(cpi_ctx, amount, self.payment_mint.decimals) + } + + /* + Compressed Transfer Instructions + */ + + /* + Token 22 Transfer Instructions + */ + + // WNS Pre-Transfer Approval + #[inline(never)] + fn approve_wns_transfer( + &self, + signer_seeds: &[&[&[u8]]], + buy_amount: u64, + is_buy: bool, + wns_accounts: WnsApprovalAccounts<'info>, + ) -> Result<()> { + let cpi_program = self.nft_program.to_account_info(); + create_ata( + &wns_accounts.distribution_token_account.to_account_info(), + &self.taker.to_account_info(), + &self.payment_mint.to_account_info(), + &wns_accounts.distribution_account.to_account_info(), + &self.system_program.to_account_info(), + &self.payment_token_program.to_account_info(), + )?; + let cpi_ctx = if is_buy { + let cpi_accounts = ApproveTransfer { + payer: self.taker.to_account_info(), + authority: self.order.to_account_info(), + mint: self.nft_mint.to_account_info(), + approve_account: wns_accounts.approval_account.to_account_info(), + payment_mint: self.payment_mint.to_account_info(), + distribution_token_account: Some( + wns_accounts.distribution_token_account.to_account_info(), + ), + authority_token_account: Some(self.buyer_payment_ta.to_account_info()), + distribution_account: wns_accounts.distribution_account.to_account_info(), + system_program: self.system_program.to_account_info(), + distribution_program: wns_accounts.distribution_program.to_account_info(), + token_program: self.nft_token_program.to_account_info(), + payment_token_program: Some(self.payment_token_program.to_account_info()), + }; + CpiContext::new_with_signer(cpi_program, cpi_accounts, signer_seeds) + } else { + let cpi_accounts = ApproveTransfer { + payer: self.taker.to_account_info(), + authority: self.taker.to_account_info(), + mint: self.nft_mint.to_account_info(), + approve_account: wns_accounts.approval_account.to_account_info(), + payment_mint: self.payment_mint.to_account_info(), + distribution_token_account: Some( + wns_accounts.distribution_token_account.to_account_info(), + ), + authority_token_account: Some(self.buyer_payment_ta.to_account_info()), + distribution_account: wns_accounts.distribution_account.to_account_info(), + system_program: self.system_program.to_account_info(), + distribution_program: wns_accounts.distribution_program.to_account_info(), + token_program: self.nft_token_program.to_account_info(), + payment_token_program: Some(self.payment_token_program.to_account_info()), + }; + CpiContext::new(cpi_program, cpi_accounts) + }; + approve_transfer(cpi_ctx, buy_amount) + } + + // General Token22 Transfer + #[inline(never)] + fn token22_nft_transfer( + &self, + signer_seeds: &[&[&[u8]]], + is_buy: bool, + amount: u64, + remaining_accounts: Vec>, + ) -> Result<()> { + let authority_info = if is_buy { + self.taker.to_account_info().clone() + } else { + self.order.to_account_info().clone() + }; + + let mut transfer_ix = transfer_2022( + self.nft_token_program.key, + self.seller_nft_ta.key, + self.nft_mint.to_account_info().key, + self.buyer_nft_ta.key, + authority_info.key, + &[], + amount, + 0, + )?; + + let mut account_infos = vec![ + self.seller_nft_ta.to_account_info().clone(), + self.nft_mint.to_account_info().clone(), + self.buyer_nft_ta.to_account_info().clone(), + authority_info.clone(), + ]; + + if remaining_accounts.len() > 0 { + // transfer hook + let additional_account_infos = remaining_accounts.clone(); + + let hook_program = remaining_accounts.clone().pop().unwrap(); + + add_extra_accounts_for_execute_cpi( + &mut transfer_ix, + &mut account_infos, + &hook_program.key, + self.seller_nft_ta.to_account_info(), + self.nft_mint.to_account_info(), + self.buyer_nft_ta.to_account_info(), + authority_info, + amount, + &additional_account_infos, + )?; + } + + anchor_lang::solana_program::program::invoke_signed( + &transfer_ix, + &account_infos, + signer_seeds, + )?; + + Ok(()) + } + + #[inline(never)] + fn transfer_fee( + &self, + signer_seeds: &[&[&[u8]]], + fee_accounts: Vec>, + is_buy: bool, + fee_amounts: Vec, + ) -> Result<()> { + let authority = if is_buy { + self.order.to_account_info() + } else { + self.taker.to_account_info() + }; + + let mut i = 0; + for accounts in fee_accounts.chunks(2) { + let amount = fee_amounts[i]; + i = i + 1; + if accounts.len() == 2 { + // Valid account pair + let rec_pubkey = &accounts[0]; + if rec_pubkey.key().to_string() == Pubkey::default().to_string() { + continue; + } + let rec_ta = &accounts[1]; + create_ata( + &rec_ta.to_account_info(), + &self.taker.to_account_info(), + &self.payment_mint.to_account_info(), + &rec_pubkey.to_account_info(), + &self.system_program.to_account_info(), + &self.payment_token_program.to_account_info(), + )?; + let ctx = TransferChecked { + from: self.buyer_payment_ta.to_account_info(), + to: rec_ta.to_account_info(), + authority: authority.clone(), + mint: self.payment_mint.to_account_info(), + }; + let cpi = if is_buy { + CpiContext::new_with_signer( + self.payment_token_program.to_account_info(), + ctx, + signer_seeds, + ) + } else { + CpiContext::new(self.payment_token_program.to_account_info(), ctx) + }; + transfer_checked(cpi, amount, self.payment_mint.decimals)?; + } + } + + Ok(()) + } + + #[inline(never)] + fn wrap_sol_if_needed(&self, amount: u64, is_buy: bool) -> Result<()> { + if self.payment_mint.key() == WSOL_MINT && !is_buy { + invoke_wrap_sol( + &WrapSolAccounts { + user: self.taker.to_account_info(), + user_ta: self.buyer_payment_ta.to_account_info(), + token_program: self.payment_token_program.to_account_info(), + wsol_mint: self.payment_mint.to_account_info(), + system_program: self.system_program.to_account_info(), + }, + amount, + )?; + } + Ok(()) + } + + #[inline(never)] + fn unwrap_sol_if_needed(&self, is_buy: bool) -> Result<()> { + if self.payment_mint.key() == WSOL_MINT { + let user_ta = if is_buy { + self.seller_payment_ta.to_account_info() + } else { + self.buyer_payment_ta.to_account_info() + }; + invoke_unwrap_sol(&UnwrapSolAccounts { + user: self.taker.to_account_info(), + user_ta, + token_program: self.payment_token_program.to_account_info(), + })?; + } + Ok(()) + } +} + +/// Initializer is the buyer and is buying an nft from the seller +/// The seller is the owner of the order account +/// Buyer transfers sol to seller account +#[inline(never)] +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, FillOrder<'info>>, + amount: u64, +) -> Result<()> { + let nft_token_program_key = &ctx.accounts.nft_token_program.key.to_string().clone(); + let nft_program_key = &ctx.accounts.nft_program.key.to_string().clone(); + + let all_remaining_accounts = ctx.remaining_accounts.to_vec(); + // First 6 accounts reserved for accounts and their token accounts. Will be Pubkey default if they're non-existant + let (fee_accounts, remaining_accounts) = all_remaining_accounts.split_at(6); + + // Ensure proper accounts and order passed in for fees + ctx.accounts + .market + .verify_fee_accounts(fee_accounts.to_vec())?; + + let bump = &get_bump_in_seed_form(&ctx.bumps.order); + + let signer_seeds: &[&[&[u8]]; 1] = &[&[ + ORDER_SEED, + ctx.accounts.order.nonce.as_ref(), + ctx.accounts.order.market.as_ref(), + ctx.accounts.order.owner.as_ref(), + bump, + ][..]]; + + let buy_price = ctx.accounts.order.price; + let order_size = ctx.accounts.order.size; + + if order_size < amount { + return Err(MarketError::InsufficientOrderSize.into()); + } + + let buy_value = amount.checked_mul(buy_price).unwrap(); + + let fee_amounts: [u64; 3] = ctx + .accounts + .market + .fee_bps + .map(|f| get_fee_amount(buy_value, f)); + let total_fee_amount: u64 = fee_amounts.iter().sum(); + + let mut seller_received_amount = buy_value - total_fee_amount; + + let is_buy = ctx.accounts.order.side == 0; + // Verify maker + taker accounts + // Verify the buyer account + + let system_program = ctx.accounts.system_program.to_account_info(); + let nft_token_program = ctx.accounts.nft_token_program.to_account_info(); + let payment_token_program = ctx.accounts.payment_token_program.to_account_info(); + + let nft_funder = if is_buy { + ctx.accounts.taker.to_account_info() + } else { + ctx.accounts.maker.to_account_info() + }; + create_ata( + &ctx.accounts.seller_nft_ta.to_account_info(), + &ctx.accounts.taker.to_account_info(), + &ctx.accounts.nft_mint.to_account_info(), + &nft_funder, + &system_program, + &nft_token_program, + )?; + + let nft_receiver = if is_buy { + ctx.accounts.maker.to_account_info() + } else { + ctx.accounts.taker.to_account_info() + }; + create_ata( + &ctx.accounts.buyer_nft_ta.to_account_info(), + &ctx.accounts.taker.to_account_info(), + &ctx.accounts.nft_mint.to_account_info(), + &nft_receiver, + &system_program, + &nft_token_program, + )?; + + let payment_funder = if is_buy { + ctx.accounts.order.to_account_info() + } else { + ctx.accounts.taker.to_account_info() + }; + create_ata( + &ctx.accounts.buyer_payment_ta.to_account_info(), + &ctx.accounts.taker.to_account_info(), + &ctx.accounts.payment_mint.to_account_info(), + &payment_funder, + &system_program, + &payment_token_program, + )?; + + let payment_receiver = if is_buy { + ctx.accounts.taker.to_account_info() + } else { + ctx.accounts.maker.to_account_info() + }; + create_ata( + &ctx.accounts.seller_payment_ta.to_account_info(), + &ctx.accounts.taker.to_account_info(), + &ctx.accounts.payment_mint.to_account_info(), + &payment_receiver, + &system_program, + &payment_token_program, + )?; + + ctx.accounts.wrap_sol_if_needed(buy_value, is_buy)?; + + // Transfer NFT + if *nft_token_program_key == TOKEN_PID { + // Check if its metaplex or not + if *nft_program_key == METAPLEX_PID { + // TODO + return Err(MarketError::UnsupportedNft.into()); + } else { + // Transfer compressed NFT + // TODO + return Err(MarketError::UnsupportedNft.into()); + } + } else if *nft_token_program_key == TOKEN_EXT_PID { + let mut token22_ra = remaining_accounts; + // Check if its WNS + if *nft_program_key == WNS_PID { + // Remaining Accounts 0-2 for approval + let approval_account = remaining_accounts.get(0).unwrap(); + let distribution_account = remaining_accounts.get(1).unwrap(); + let distribution_token_account = remaining_accounts.get(2).unwrap(); + let distribution_program = remaining_accounts.get(3).unwrap(); + let group_member_account = remaining_accounts.get(4).unwrap(); + let payment_mint = remaining_accounts.get(5).unwrap(); + + verify_wns_mint( + ctx.accounts.nft_mint.to_account_info(), + group_member_account.to_account_info(), + ctx.accounts.market.market_identifier.clone(), + )?; + + let (_, extra_remaining_accounts) = remaining_accounts.split_at(6); + token22_ra = extra_remaining_accounts; + + let wns_accounts = WnsApprovalAccounts { + approval_account: approval_account.to_account_info(), + distribution_account: distribution_account.to_account_info(), + distribution_token_account: distribution_token_account.to_account_info(), + distribution_program: distribution_program.to_account_info(), + payment_mint: payment_mint.to_account_info(), + }; + + let mint_metadata = get_mint_metadata(&mut ctx.accounts.nft_mint.to_account_info())?; + let royalty_basis_points = mint_metadata + .additional_metadata + .iter() + .find(|(key, _)| key == ROYALTY_BASIS_POINTS_FIELD) + .map(|(_, value)| value) + .map(|value| u64::from_str(value).unwrap()) + .unwrap_or(0); + + let royalties = get_amount_from_bp(buy_value, royalty_basis_points.into())?; + seller_received_amount = seller_received_amount.checked_sub(royalties).unwrap(); + + // Handles royalties + ctx.accounts + .approve_wns_transfer(signer_seeds, buy_value, is_buy, wns_accounts)?; + } + // Any remaining accounts left are for potential transfer hook (Empty if not expecting hook) + ctx.accounts + .token22_nft_transfer(signer_seeds, is_buy, amount, token22_ra.to_vec())?; + } else if *nft_token_program_key == BUBBLEGUM_PID { + // Transfer compressed NFT + // TODO + return Err(MarketError::UnsupportedNft.into()); + } else { + // ERROR + return Err(MarketError::UnsupportedNft.into()); + } + + // Transfer payment + ctx.accounts + .transfer_payment(signer_seeds, is_buy, seller_received_amount)?; + ctx.accounts.transfer_fee( + signer_seeds, + fee_accounts.to_vec(), + is_buy, + fee_amounts.to_vec(), + )?; + + ctx.accounts.unwrap_sol_if_needed(is_buy)?; + + // close order account + let size = ctx.accounts.order.size; + let payment_mint = ctx.accounts.order.payment_mint; + let clock = Clock::get()?; + + let new_size = size - amount; + Order::edit_order( + &mut ctx.accounts.order, + buy_price, + payment_mint, + new_size, + clock.unix_timestamp, + ); + if new_size == 0 { + ctx.accounts.order.state = OrderState::Closed.into(); + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::FillAndClose, + )); + ctx.accounts + .order + .close(ctx.accounts.maker.to_account_info())?; + } + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/order/list.rs b/programs/rarible_marketplace/src/instructions/order/list.rs new file mode 100644 index 00000000..ecfc38a3 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/order/list.rs @@ -0,0 +1,175 @@ +use anchor_lang::{prelude::*, solana_program::sysvar}; +use anchor_spl::{ + associated_token::AssociatedToken, + token_interface::{approve, Approve, Mint, TokenAccount, TokenInterface}, +}; + +// use spl_token_group_interface::state::TokenGroupMember; + +use crate::{errors::MarketError, state::*, utils::verify_wns_mint}; + +#[derive(AnchorDeserialize, AnchorSerialize, Clone)] +pub struct ListData { + pub nonce: Pubkey, + pub payment_mint: Pubkey, + pub price: u64, + pub size: u64, +} + +#[derive(Accounts)] +#[instruction(data: ListData)] +#[event_cpi] +pub struct ListNft<'info> { + #[account(mut)] + pub initializer: Signer<'info>, + #[account( + constraint = Market::is_active(market.state), + seeds = [MARKET_SEED, + market.market_identifier.as_ref()], + bump, + )] + pub market: Box>, + #[account( + constraint = data.price > 0, + constraint = data.size > 0, + init, + seeds = [ORDER_SEED, + data.nonce.as_ref(), + market.key().as_ref(), + initializer.key().as_ref()], + bump, + payer = initializer, + space = 8 + std::mem::size_of::() + )] + pub order: Box>, + #[account( + mint::token_program = nft_token_program + )] + pub nft_mint: Box>, + #[account( + mut, + associated_token::mint = nft_mint, + associated_token::authority = initializer, + associated_token::token_program = nft_token_program + )] + pub initializer_nft_ta: Box>, + /// CHECK: checked by constraint and in cpi + #[account(address = sysvar::instructions::id())] + pub sysvar_instructions: UncheckedAccount<'info>, + pub system_program: Program<'info, System>, + /// CHECK: checked by constraint and in cpi + pub nft_token_program: Interface<'info, TokenInterface>, + pub associated_token_program: Program<'info, AssociatedToken>, + /// CHECK: checked by constraint and in cpi + pub nft_program: UncheckedAccount<'info>, +} + +impl<'info> ListNft<'info> { + /* + Metaplex Delegate Instructions + */ + + /* + Compressed Delegate Instructions + */ + + /* + Token 22 Delegate Instructions + */ + fn token22_nft_delegate( + &self, + size: u64, + remaining_accounts: Vec>, + ) -> Result<()> { + let delegate_cpi = CpiContext::new( + self.nft_token_program.to_account_info(), + Approve { + to: self.initializer_nft_ta.to_account_info(), + authority: self.initializer.to_account_info(), + delegate: self.order.to_account_info(), + }, + ); + + approve( + delegate_cpi.with_remaining_accounts(remaining_accounts), + size, // supply = 1 + ) + } +} + +#[inline(always)] +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, ListNft<'info>>, + data: ListData, +) -> Result<()> { + msg!("Initialize a new sell order: {}", ctx.accounts.order.key()); + + let nft_token_program_key = &ctx.accounts.nft_token_program.key.to_string().clone(); + let nft_program_key = &ctx.accounts.nft_program.key.to_string().clone(); + let remaining_accounts = ctx.remaining_accounts.to_vec(); + + let clock = Clock::get()?; + // create a new order with size 1 + Order::init( + &mut ctx.accounts.order, + ctx.accounts.market.key(), + ctx.accounts.initializer.key(), + data.nonce, + ctx.accounts.nft_mint.key(), + data.payment_mint, + clock.unix_timestamp, + OrderSide::Sell.into(), + data.size, // always 1 + data.price, + OrderState::Ready.into(), + true, + ); + + // NFT Transfer + if *nft_token_program_key == TOKEN_PID { + // Check if its metaplex or not + if *nft_program_key == METAPLEX_PID { + // TODO Delegate Metaplex NFT + return Err(MarketError::UnsupportedNft.into()); + // ctx.accounts.metaplex_nft_transfer(is_pnft, transfer_params)?; + } else { + // Transfer compressed NFT + // TODO + return Err(MarketError::UnsupportedNft.into()); + } + } else if *nft_token_program_key == TOKEN_EXT_PID { + let mut token22_ra = remaining_accounts.clone(); + if *nft_program_key == WNS_PID { + let group_member_account = remaining_accounts.get(4).unwrap(); + + let (_, extra_remaining_accounts) = remaining_accounts.split_at(7); + token22_ra = extra_remaining_accounts.to_vec(); + + verify_wns_mint( + ctx.accounts.nft_mint.to_account_info(), + group_member_account.to_account_info(), + ctx.accounts.market.market_identifier.clone(), + )?; + } + // Pass in RA for delegate as needed + ctx.accounts + .token22_nft_delegate(data.size, token22_ra.clone())?; + } else if *nft_token_program_key == BUBBLEGUM_PID { + // Transfer compressed NFT + // TODO + return Err(MarketError::UnsupportedNft.into()); + } else { + // ERROR + return Err(MarketError::UnsupportedNft.into()); + } + + // Emit event + emit_cpi!(Order::get_edit_event( + &mut ctx.accounts.order.clone(), + ctx.accounts.order.key(), + ctx.accounts.market.market_identifier, + OrderEditType::Init, + )); + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/instructions/order/mod.rs b/programs/rarible_marketplace/src/instructions/order/mod.rs new file mode 100644 index 00000000..93c61199 --- /dev/null +++ b/programs/rarible_marketplace/src/instructions/order/mod.rs @@ -0,0 +1,11 @@ +pub mod bid; +pub mod cancel_bid; +pub mod cancel_list; +pub mod fill; +pub mod list; + +pub use bid::*; +pub use cancel_bid::*; +pub use cancel_list::*; +pub use fill::*; +pub use list::*; diff --git a/programs/rarible_marketplace/src/lib.rs b/programs/rarible_marketplace/src/lib.rs new file mode 100644 index 00000000..4404be9d --- /dev/null +++ b/programs/rarible_marketplace/src/lib.rs @@ -0,0 +1,67 @@ +use anchor_lang::prelude::*; + +pub mod errors; +mod instructions; +pub mod state; +pub mod utils; + +use instructions::*; + +// rAREXWkxUP9Cr91tRVJ29NumDAEKvNpDWZNqcfSwBNG - program id +declare_id!("4NSuQ6U7QdVqCW5gJY4a2U6X7s2qNvrUQUwTMsf6HARG"); + +#[program] +pub mod marketplace { + + use super::*; + + /// initializer a new market + #[inline(never)] + pub fn init_market(ctx: Context, params: InitMarketParams) -> Result<()> { + instructions::market::init::handler(ctx, params) + } + + /// initializer a new market + #[inline(never)] + pub fn verify_mint(ctx: Context) -> Result<()> { + instructions::market::verify_mint::handler(ctx) + } + + /// initializer a new bid + #[inline(never)] + pub fn bid(ctx: Context, data: BidData) -> Result<()> { + instructions::order::bid::handler(ctx, data) + } + + /// initializer a new listing + #[inline(never)] + pub fn list<'info>( + ctx: Context<'_, '_, '_, 'info, ListNft<'info>>, + data: ListData, + ) -> Result<()> { + instructions::order::list::handler(ctx, data) + } + + /// fill a listing + #[inline(never)] + pub fn fill_order<'info>( + ctx: Context<'_, '_, '_, 'info, FillOrder<'info>>, + amount: u64, + ) -> Result<()> { + instructions::order::fill::handler(ctx, amount) + } + + /// cancel a buy order + #[inline(never)] + pub fn cancel_bid(ctx: Context) -> Result<()> { + instructions::order::cancel_bid::handler(ctx) + } + + /// cancel a sell order + #[inline(never)] + pub fn cancel_listing<'info>( + ctx: Context<'_, '_, '_, 'info, CancelListing<'info>>, + ) -> Result<()> { + instructions::order::cancel_list::handler(ctx) + } +} diff --git a/programs/rarible_marketplace/src/state/market.rs b/programs/rarible_marketplace/src/state/market.rs new file mode 100644 index 00000000..447ce8df --- /dev/null +++ b/programs/rarible_marketplace/src/state/market.rs @@ -0,0 +1,132 @@ +use anchor_lang::prelude::*; +use num_enum::IntoPrimitive; + +use crate::errors::MarketError; + +use super::VERIFICATION_SEED; + +pub const MARKET_VERSION: u8 = 1; + +#[account()] +pub struct Market { + /// market account version, used to conditionally parse accounts if changes are made to the struct + pub version: u8, + /// identifying of the index to which the NFTs belong to (WNS Collection, Metaplex collection, separate hash) + pub market_identifier: Pubkey, + /// initializer of the market - can edit and close the market, admin key + pub initializer: Pubkey, + /// state representing the market - open/closed + pub state: u8, + /// address that should receive market fees + pub fee_recipients: [Pubkey; 3], + /// fee basis points + pub fee_bps: [u64; 3], + /// reserved space for future changes + pub reserve: [u8; 512], +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Copy, PartialEq, IntoPrimitive)] +#[repr(u8)] +pub enum MarketState { + /// market is open and can be used to create orders + Open, + /// market is closed and cannot be used to create orders + Closed, +} + +#[derive(IntoPrimitive)] +#[repr(u8)] +pub enum MarketEditType { + Init, +} + +#[account()] +pub struct MintVerification { + pub verified: u8, +} + +pub fn get_verification_pda(nft_mint: Pubkey, market_address: Pubkey) -> (Pubkey, u8) { + Pubkey::find_program_address( + &[ + VERIFICATION_SEED, + nft_mint.as_ref(), + market_address.as_ref(), + ], + &crate::ID, + ) +} + +#[event] +pub struct MarketEditEvent { + pub edit_type: u8, + pub address: String, + pub version: u8, + pub market_identifier: String, + pub initializer: String, + pub state: u8, + pub fee_recipient: [String; 3], + pub fee_bps: [u64; 3], +} + +impl Market { + /// initialize a new market + pub fn init( + &mut self, + market_identifier: Pubkey, + initializer: Pubkey, + fee_recipients: [Pubkey; 3], + fee_bps: [u64; 3], + ) { + self.version = MARKET_VERSION; + self.market_identifier = market_identifier; + self.initializer = initializer; + self.state = MarketState::Open.into(); + self.fee_recipients = fee_recipients; + self.fee_bps = fee_bps; + } + + /// return true if the market is active + pub fn is_active(state: u8) -> bool { + state != >::into(MarketState::Closed) + } + + pub fn verify_fee_accounts<'info>( + &mut self, + fee_accounts: Vec>, + ) -> Result<()> { + let fee_accs = self.fee_recipients; + let mut i = 0; + for fee_acc in fee_accs { + match fee_accounts.get(i) { + Some(comparison_acc) => { + if comparison_acc.key() != fee_acc { + return Err(MarketError::InvalidFeeAccount.into()); + } + i = i + 1; + } + None => { + return Err(MarketError::InvalidFeeAccount.into()); + } + } + } + + Ok(()) + } + + pub fn get_edit_event( + &mut self, + address: Pubkey, + edit_type: MarketEditType, + ) -> MarketEditEvent { + MarketEditEvent { + edit_type: edit_type.into(), + address: address.to_string(), + version: self.version, + market_identifier: self.market_identifier.to_string(), + initializer: self.initializer.to_string(), + state: self.state, + fee_recipient: self.fee_recipients.map(|f| f.to_string()), + fee_bps: self.fee_bps, + } + } +} diff --git a/programs/rarible_marketplace/src/state/mod.rs b/programs/rarible_marketplace/src/state/mod.rs new file mode 100644 index 00000000..c06e85de --- /dev/null +++ b/programs/rarible_marketplace/src/state/mod.rs @@ -0,0 +1,16 @@ +pub const MARKET_SEED: &[u8] = b"market"; +pub const ORDER_SEED: &[u8] = b"order"; +pub const VERIFICATION_SEED: &[u8] = b"verification"; + +pub const TOKEN_PID: &str = ""; +pub const TOKEN_EXT_PID: &str = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; +pub const BUBBLEGUM_PID: &str = ""; + +pub const METAPLEX_PID: &str = ""; +pub const WNS_PID: &str = "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM"; + +pub mod market; +pub mod order; + +pub use market::*; +pub use order::*; diff --git a/programs/rarible_marketplace/src/state/order.rs b/programs/rarible_marketplace/src/state/order.rs new file mode 100644 index 00000000..0455861d --- /dev/null +++ b/programs/rarible_marketplace/src/state/order.rs @@ -0,0 +1,178 @@ +use anchor_lang::prelude::*; +use num_enum::IntoPrimitive; + +pub const ORDER_VERSION: u8 = 1; + +#[account()] +/// order account - each listing has one order account +pub struct Order { + /// order account version + pub version: u8, + /// nonce for uniqueness + pub nonce: Pubkey, + /// market to which the order belongs to, must be init'd + pub market: Pubkey, + /// owner of the order account + pub owner: Pubkey, + /// type of order - buy/sell + pub side: u8, + /// number of bids order is making + /// always for 1 for sell + pub size: u64, + /// bid amount in lamports + pub price: u64, + /// order state - ready/partial/closed + pub state: u8, + /// order account creation time + pub init_time: i64, + /// last time the order was edited + pub last_edit_time: i64, + /// nft mint in case order is a sell order + pub nft_mint: Pubkey, + /// mint for the payment, default pubkey if SOL + pub payment_mint: Pubkey, + /// fees on for this order + pub fees_on: bool, + /// reserved space for future changes split up due to serialization constraints + reserve_0: [u8; 256], + /// reserved space for future changes + reserve_1: [u8; 128], + /// reserved space for future changes + reserve_2: [u8; 64], + /// reserved space for future changes + reserve_3: [u8; 30], + /// reserved space for future changes + reserve_4: [u8; 30], + /// reserved space for future changes + reserve_5: [u8; 3], +} + +#[derive(IntoPrimitive)] +#[repr(u8)] +pub enum OrderEditType { + Init, + Edit, + Fill, + Close, + FillAndClose, +} + +#[event] +pub struct OrderEditEvent { + pub edit_type: u8, + pub address: String, + pub version: u8, + pub nonce: String, + pub market: String, + pub owner: String, + pub side: u8, + pub size: u64, + pub price: u64, + pub state: u8, + pub init_time: i64, + pub last_edit_time: i64, + pub nft_mint: String, + pub payment_mint: String, + pub market_identifier: String, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Copy, IntoPrimitive)] +#[repr(u8)] +/// bid type for order +pub enum OrderSide { + /// bid for buying NFT + Buy, + /// bid for selling NFT + Sell, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Copy, PartialEq, IntoPrimitive)] +#[repr(u8)] +/// state of the order +pub enum OrderState { + /// order account has been created and ready to be filled + Ready, + /// some of the bids have been filled, used only in UI to show some orders have been filled + Partial, + /// all bids have been filled and the order account is now closed + Closed, +} + +impl Order { + /// initialize a new order account + #[allow(clippy::too_many_arguments)] + pub fn init( + &mut self, + market: Pubkey, + owner: Pubkey, + nonce: Pubkey, + nft_mint: Pubkey, + payment_mint: Pubkey, + time: i64, + side: u8, + size: u64, + price: u64, + state: u8, + fees_on: bool, + ) { + self.version = ORDER_VERSION; + self.market = market; + self.nonce = nonce; + self.owner = owner; + self.nft_mint = nft_mint; + self.payment_mint = payment_mint; + self.side = side; + self.size = size; + self.price = price; + self.state = state; + self.init_time = time; + self.last_edit_time = time; + self.fees_on = fees_on; + } + + /// edit a buy order account + /// if size is 0, order is closed + /// any size change is considered partial + pub fn edit_order( + &mut self, + new_price: u64, + new_payment_mint: Pubkey, + new_size: u64, + time: i64, + ) { + self.size = new_size; + self.price = new_price; + self.payment_mint = new_payment_mint; + self.last_edit_time = time; + } + + /// return true if the order is active + pub fn is_active(state: u8) -> bool { + state != >::into(OrderState::Closed) + } + + pub fn get_edit_event( + &mut self, + address: Pubkey, + market_identifier: Pubkey, + edit_type: OrderEditType, + ) -> OrderEditEvent { + OrderEditEvent { + edit_type: edit_type.into(), + address: address.to_string(), + version: self.version, + nonce: self.nonce.to_string(), + market: self.market.to_string(), + owner: self.owner.to_string(), + side: self.side, + size: self.size, + price: self.price, + state: self.state, + init_time: self.init_time, + last_edit_time: self.last_edit_time, + nft_mint: self.nft_mint.to_string(), + payment_mint: self.payment_mint.to_string(), + market_identifier: market_identifier.to_string(), + } + } +} diff --git a/programs/rarible_marketplace/src/utils/general.rs b/programs/rarible_marketplace/src/utils/general.rs new file mode 100644 index 00000000..db759d85 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/general.rs @@ -0,0 +1,425 @@ +use anchor_lang::{ + prelude::{msg, AccountInfo, Pubkey, Result}, + pubkey, require, + solana_program::{ + program::{invoke, invoke_signed}, + system_instruction::transfer, + }, + ToAccountInfo, +}; +use anchor_spl::associated_token::{get_associated_token_address, spl_associated_token_account}; +use anchor_spl::token::spl_token; +use mpl_token_metadata::accounts::Metadata; +use mpl_token_metadata::types::{AuthorizationData, TokenStandard}; + +use crate::errors::MarketError; + +use super::metaplex::pnft::utils::{ExistingDelegateParams, PnftParams}; +use spl_associated_token_account::instruction::create_associated_token_account; + +pub fn get_bump_in_seed_form(bump: &u8) -> [u8; 1] { + let bump_val = *bump; + [bump_val] +} + +#[inline(always)] +pub fn lamport_transfer<'info>( + src: AccountInfo<'info>, + dest: AccountInfo<'info>, + amount: u64, +) -> Result<()> { + **dest.lamports.borrow_mut() = dest + .lamports() + .checked_add(amount) + .ok_or(MarketError::AmountOverflow)?; + **src.lamports.borrow_mut() = src + .lamports() + .checked_sub(amount) + .ok_or(MarketError::AmountUnderflow)?; + Ok(()) +} + +/// return if nft is pnft +#[inline(always)] +pub fn get_is_metaplex_nft(nft_account_info: &AccountInfo) -> bool { + let metadata_res = Metadata::safe_deserialize(&nft_account_info.data.borrow()[..]); + if let Ok(metadata) = metadata_res { + if let Some(standard) = &metadata.token_standard { + if *standard == TokenStandard::Fungible { + return false; + } + } + true + } else { + false + } +} + +fn get_pnft_params(ra: Vec) -> PnftParams { + let fourth_account = ra.get(3).cloned().unwrap(); + let dest_token_record = if *fourth_account.key == Pubkey::default() { + None + } else { + Some(fourth_account) + }; + + PnftParams { + owner_token_record: ra.first().cloned(), + authorization_rules: ra.get(1).cloned(), + authorization_rules_program: ra.get(2).cloned(), + destination_token_record: dest_token_record, + authorization_data: None, + } +} + +/// transfer sol +/// amount in lamports +pub fn transfer_sol<'info>( + from_account: AccountInfo<'info>, + to_account: AccountInfo<'info>, + system_program: AccountInfo<'info>, + signer_seeds: Option<&[&[&[u8]]; 1]>, + amount: u64, +) -> Result<()> { + if let Some(seeds) = signer_seeds { + invoke_signed( + &transfer(from_account.key, to_account.key, amount), + &[ + from_account.to_account_info(), + to_account.to_account_info(), + system_program.to_account_info(), + ], + seeds, + ) + .map_err(Into::into) + } else { + invoke( + &transfer(from_account.key, to_account.key, amount), + &[ + from_account.to_account_info(), + to_account.to_account_info(), + system_program.to_account_info(), + ], + ) + .map_err(Into::into) + } +} + +/// result of parsing remaining accounts +pub struct ParsedRemainingAccounts<'info> { + //params for pnft ix's + pub pnft_params: PnftParams<'info>, + // delegate record if we're freezing/unfreezing + pub delegate_record: Option>, + // params for removing existing delegExtraDelegateParams + pub existing_delegate_params: Option>, + pub creator_token_accounts: Vec>, +} + +fn parse_pnft_accounts(remaining_accounts: Vec) -> PnftParams { + let account_0 = remaining_accounts.first().unwrap(); + + if account_0.key == &Pubkey::default() { + PnftParams { + authorization_data: None, + authorization_rules: None, + authorization_rules_program: None, + owner_token_record: None, + destination_token_record: None, + } + } else { + get_pnft_params(remaining_accounts) + } +} + +fn parse_existing_delegate_accounts( + remaining_accounts: Vec, +) -> Option { + let account_0 = remaining_accounts.first().unwrap(); + + if account_0.key == &Pubkey::default() { + None + } else { + Some(ExistingDelegateParams { + existing_delegate: remaining_accounts.first().cloned().unwrap(), + existing_delegate_record: remaining_accounts.get(1).cloned().unwrap(), + }) + } +} + +fn parse_delegate_record(remaining_accounts: Vec) -> Option { + let account_0 = remaining_accounts.first().cloned().unwrap(); + + if account_0.key == &Pubkey::default() { + None + } else { + Some(account_0) + } +} + +/* +REMAINING ACCOUNTS: + 0: NFT Token Program (Token, Token22) + 1: NFT Program (Token Metadata, WNS) - Leave as default pubkey if no program + - Normal NFT + 2: Edition Account + 3: NFT Metadata Account + - pNFT + 2: Edition Account + 3: NFT Metadata Account + 4: owner_token_record: Option = accounts.get(0).cloned(); + 5: dest_token_record: Option = accounts.get(1).cloned(); + 6: rules_acc: Option = accounts.get(2).cloned(); + 7: authorization_rules_program: Option = accounts.get(3).cloned(); + - WNS NFT + 2: Approve Account + 3: Extra Metas Account + 4: Distribution Account + 5: Distribution Program + - Compressed NFT + 2: Tree Config Account + 3: Log Wrapper Account + 4: Compression Program + 5: MPL Bubblegum Program +*/ + +pub struct MetaplexTransferParams<'a> { + pub nft_metadata: Option>, + pub nft_edition: Option>, + pub owner_token_record: Option>, + pub dest_token_record: Option>, + pub authorization_rules: Option>, + pub authorization_data: Option, + pub authorization_rules_program: Option>, +} + +#[inline(always)] +pub fn get_metaplex_transfer_params( + accounts: Vec, + authorization_data: Option, +) -> MetaplexTransferParams { + let nft_metadata: Option = accounts.get(1).cloned(); + let nft_edition: Option = accounts.get(2).cloned(); + let owner_token_record: Option = accounts.get(3).cloned(); + let dest_token_record: Option = accounts.get(4).cloned(); + let authorization_rules: Option = accounts.get(5).cloned(); + let authorization_rules_program: Option = accounts.get(6).cloned(); + + MetaplexTransferParams { + nft_metadata, + nft_edition, + owner_token_record, + dest_token_record, + authorization_rules, + authorization_data, + authorization_rules_program, + } +} + +pub fn parse_remaining_accounts_pnft( + remaining_accounts: Vec, + potential_existing_delegate: bool, //if there is a chance a delegate exista and can interfere + extra_pnft_accounts: Option, //if there are extra pnfts tacked onto the end +) -> ParsedRemainingAccounts { + let mut account_index = 0; + //first 4 are either default pubkeys or pnft accounts + let pnft_params = parse_pnft_accounts(remaining_accounts.clone()); + account_index += 4; + account_index += extra_pnft_accounts.unwrap_or(0); + let delegate_record = if account_index < remaining_accounts.len() { + parse_delegate_record(remaining_accounts[account_index..].to_vec()) + } else { + None + }; + account_index += 1; + //next 2 are existing delegate if possible + let existing_delegate_params = + if potential_existing_delegate && account_index < remaining_accounts.len() { + let delegate_accounts = + parse_existing_delegate_accounts(remaining_accounts[account_index..].to_vec()); + account_index += 2; + delegate_accounts + } else { + None + }; + + account_index += 2; + + let creator_token_accounts = if account_index < remaining_accounts.len() { + remaining_accounts[account_index..].to_vec() + } else { + Vec::new() + }; + + ParsedRemainingAccounts { + existing_delegate_params, + delegate_record, + pnft_params, + creator_token_accounts, + } +} + +pub fn get_fee_amount(order_price: u64, market_fee_bps: u64) -> u64 { + (order_price.checked_mul(market_fee_bps)) + .unwrap() + .checked_div(10000) + .unwrap() +} + +pub fn get_amount_from_bp(amount: u64, bp: u128) -> Result { + let pct_value_u128 = u128::from(amount) + .checked_mul(bp) + .ok_or(MarketError::AmountOverflow)? + .checked_div(100 * 100) + .ok_or(MarketError::AmountOverflow)?; + let pct_value = u64::try_from(pct_value_u128).unwrap_or(0); + + Ok(pct_value) +} + +pub fn validate_associated_token_account( + token_account: &AccountInfo, + owner: &Pubkey, + mint: &Pubkey, + token_program: &Pubkey, +) -> Result<()> { + let expected_ata = get_associated_token_address(owner, mint); + + require!( + token_account.key == &expected_ata, + MarketError::WrongAccount + ); + + require!( + token_account.owner == token_program, + MarketError::WrongAccount + ); + + Ok(()) +} + +#[inline(never)] +pub fn create_ata<'info>( + ata: &AccountInfo<'info>, + payer: &AccountInfo<'info>, + mint: &AccountInfo<'info>, + owner: &AccountInfo<'info>, + system_program: &AccountInfo<'info>, + token_program: &AccountInfo<'info>, +) -> Result<()> { + if *ata.key + != spl_associated_token_account::get_associated_token_address_with_program_id( + owner.key, + mint.key, + token_program.key, + ) + { + return Err(MarketError::WrongAccount.into()); + } + + if !ata.to_account_info().data_is_empty() { + return Ok(()); + } + + let ix = create_associated_token_account(payer.key, owner.key, mint.key, token_program.key); + + invoke( + &ix, + &vec![ + payer.to_account_info(), + ata.to_account_info(), + owner.to_account_info(), + mint.to_account_info(), + system_program.to_account_info(), + token_program.to_account_info(), + ], + )?; + + Ok(()) +} + +pub struct WrapSolAccounts<'info> { + pub user: AccountInfo<'info>, + pub user_ta: AccountInfo<'info>, + pub system_program: AccountInfo<'info>, + pub token_program: AccountInfo<'info>, + pub wsol_mint: AccountInfo<'info>, +} + +pub struct UnwrapSolAccounts<'info> { + pub user: AccountInfo<'info>, + pub user_ta: AccountInfo<'info>, + pub token_program: AccountInfo<'info>, +} + +pub const WSOL_MINT: Pubkey = pubkey!("So11111111111111111111111111111111111111112"); + +#[inline(never)] +pub fn invoke_wrap_sol(accounts: &WrapSolAccounts, amount: u64) -> Result<()> { + // Create ATA if it doesn't exist + + create_ata( + &accounts.user_ta.to_account_info(), + &accounts.user.to_account_info(), + &accounts.wsol_mint, + &accounts.user.to_account_info(), + &accounts.system_program, + &accounts.token_program, + )?; + + // Transfer SOL to the ATA + let ix = transfer(&accounts.user.key, &accounts.user_ta.key, amount); + + invoke( + &ix, + &[ + accounts.user.to_account_info(), + accounts.user_ta.to_account_info(), + accounts.system_program.to_account_info(), + ], + )?; + + // Sync the ATA balance + let ix = spl_token::instruction::sync_native(&spl_token::ID, &accounts.user_ta.key)?; + invoke( + &ix, + &[ + accounts.user_ta.to_account_info(), + accounts.token_program.to_account_info(), + ], + )?; + + Ok(()) +} + +#[inline(never)] +pub fn invoke_unwrap_sol(accounts: &UnwrapSolAccounts) -> Result<()> { + match spl_token::instruction::close_account( + &spl_token::ID, + &accounts.user_ta.key, + &accounts.user.key, + &accounts.user.key, + &[], + ) { + Ok(ix) => { + match invoke( + &ix, + &[ + accounts.user_ta.to_account_info(), + accounts.user.to_account_info(), + accounts.token_program.to_account_info(), + ], + ) { + Ok(_) => Ok(()), + Err(e) => { + msg!("Error closing wsol account: {:?}", e); + Err(e.into()) + } + } + } + Err(e) => { + msg!("Error creating close account instruction: {:?}", e); + Err(e.into()) + } + } +} diff --git a/programs/rarible_marketplace/src/utils/metaplex/bubblegum/mod.rs b/programs/rarible_marketplace/src/utils/metaplex/bubblegum/mod.rs new file mode 100644 index 00000000..858d1d0f --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/bubblegum/mod.rs @@ -0,0 +1,3 @@ +pub mod transfer; + +pub use transfer::*; diff --git a/programs/rarible_marketplace/src/utils/metaplex/bubblegum/transfer.rs b/programs/rarible_marketplace/src/utils/metaplex/bubblegum/transfer.rs new file mode 100644 index 00000000..dafade7d --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/bubblegum/transfer.rs @@ -0,0 +1,15 @@ +use anchor_lang::prelude::*; +use mpl_bubblegum::instructions::{TransferCpi, TransferCpiAccounts, TransferInstructionArgs}; + +pub fn compressed_transfer<'a>( + program: AccountInfo<'a>, + accounts: TransferCpiAccounts<'a, '_>, + remaining_accounts: &[(&AccountInfo<'a>, bool, bool)], + signer_seeds: &[&[&[u8]]], + args: TransferInstructionArgs, +) -> Result<()> { + let cpi = TransferCpi::new(&program, accounts, args); + cpi.invoke_signed_with_remaining_accounts(signer_seeds, remaining_accounts)?; + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/utils/metaplex/mod.rs b/programs/rarible_marketplace/src/utils/metaplex/mod.rs new file mode 100644 index 00000000..d0d07494 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/mod.rs @@ -0,0 +1,3 @@ +pub mod bubblegum; +pub mod mplx_transfer; +pub mod pnft; diff --git a/programs/rarible_marketplace/src/utils/metaplex/mplx_transfer.rs b/programs/rarible_marketplace/src/utils/metaplex/mplx_transfer.rs new file mode 100644 index 00000000..37c92c9e --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/mplx_transfer.rs @@ -0,0 +1,113 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::*; + +use crate::utils::metaplex::pnft::{transfer::metaplex_transfer, utils::AuthorizationDataLocal}; + +pub struct MetaplexAdditionalTransferAccounts<'info> { + pub metadata: AccountInfo<'info>, + pub edition: AccountInfo<'info>, + pub extra_accounts: ExtraTransferParams<'info>, +} + +#[derive(Accounts)] +pub struct TransferMetaplexNft<'info> { + /// CHECK: authority is owner + pub authority: AccountInfo<'info>, + /// CHECK: payer is owner + pub payer: AccountInfo<'info>, + /// CHECK: checked in CPI + pub source_owner: AccountInfo<'info>, + /// CHECK: checked in CPI + pub source_ta: AccountInfo<'info>, + /// CHECK: checked in CPI + pub destination_owner: AccountInfo<'info>, + /// CHECK: checked in CPI + pub destination_ta: AccountInfo<'info>, + /// CHECK: checked in CPI + pub mint: AccountInfo<'info>, + /// CHECK: checked in CPI + pub metadata: AccountInfo<'info>, + /// CHECK: checked in CPI + pub edition: AccountInfo<'info>, + /// CHECK: checked in CPI + pub system_program: AccountInfo<'info>, + /// CHECK: checked in CPI + pub instructions: AccountInfo<'info>, + /// CHECK: checked in CPI + pub token_program: AccountInfo<'info>, + /// CHECK: checked in CPI + pub ata_program: AccountInfo<'info>, +} + +pub struct ExtraTransferParams<'info> { + pub owner_token_record: Option>, + pub dest_token_record: Option>, + pub authorization_rules: Option>, + pub authorization_data: Option, + pub authorization_rules_program: Option>, +} + +pub fn transfer_metaplex_nft<'info>( + ctx: CpiContext<'_, '_, '_, 'info, TransferMetaplexNft<'info>>, + params: ExtraTransferParams<'info>, + amount: u64, + is_pnft: bool, +) -> Result<()> { + if is_pnft { + metaplex_transfer(ctx, params, amount)?; + } else { + transfer( + CpiContext::new_with_signer( + ctx.accounts.token_program, + Transfer { + from: ctx.accounts.source_ta, + to: ctx.accounts.destination_ta, + authority: ctx.accounts.authority, + }, + ctx.signer_seeds, + ), + amount, + )?; + } + + Ok(()) +} + +#[inline(always)] +pub fn get_extra_transfer_params( + accounts: Vec, + authorization_data: Option, + start_index: usize, +) -> ExtraTransferParams { + if accounts.len() < start_index + 4 { + return ExtraTransferParams { + owner_token_record: None, + dest_token_record: None, + authorization_rules: None, + authorization_data, + authorization_rules_program: None, + }; + } + + let owner_token_record: Option = accounts.first().cloned(); + let dest_token_record: Option = accounts.get(1).cloned(); + let authorization_rules: Option = accounts.get(2).cloned(); + let authorization_rules_program: Option = accounts.get(3).cloned(); + + ExtraTransferParams { + owner_token_record, + dest_token_record, + authorization_rules, + authorization_data, + authorization_rules_program, + } +} + +#[derive(Clone)] +pub struct MplTokenMetadata; + +impl anchor_lang::Id for MplTokenMetadata { + fn id() -> Pubkey { + mpl_token_metadata::ID + } +} diff --git a/programs/rarible_marketplace/src/utils/metaplex/pnft/mod.rs b/programs/rarible_marketplace/src/utils/metaplex/pnft/mod.rs new file mode 100644 index 00000000..3bcca189 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/pnft/mod.rs @@ -0,0 +1,2 @@ +pub mod transfer; +pub mod utils; diff --git a/programs/rarible_marketplace/src/utils/metaplex/pnft/transfer.rs b/programs/rarible_marketplace/src/utils/metaplex/pnft/transfer.rs new file mode 100644 index 00000000..d14cf508 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/pnft/transfer.rs @@ -0,0 +1,123 @@ +use crate::utils::metaplex::mplx_transfer::{ExtraTransferParams, TransferMetaplexNft}; +use anchor_lang::prelude::*; +use anchor_lang::solana_program::program::invoke_signed; +use anchor_lang::Key; +use mpl_token_metadata::{ + accounts::Metadata, + instructions::TransferBuilder, + types::{AuthorizationData, ProgrammableConfig, TokenStandard, TransferArgs}, +}; + +use super::utils::get_is_nft; + +pub fn metaplex_transfer<'info>( + ctx: CpiContext<'_, '_, '_, 'info, TransferMetaplexNft<'info>>, + params: ExtraTransferParams<'info>, + amount: u64, +) -> Result<()> { + let metadata = Metadata::safe_deserialize(&ctx.accounts.metadata.data.borrow()[..])?; + + let edition_key = if get_is_nft(&metadata) { + Some(ctx.accounts.edition.key()) + } else { + None + }; + + let mut builder = TransferBuilder::new(); + builder + .authority(ctx.accounts.authority.to_account_info().key()) + .token_owner(ctx.accounts.source_owner.to_account_info().key()) + .token(ctx.accounts.source_ta.to_account_info().key()) + .destination_owner(ctx.accounts.destination_owner.to_account_info().key()) + .destination_token(ctx.accounts.destination_ta.to_account_info().key()) + .mint(ctx.accounts.mint.to_account_info().key()) + .metadata(ctx.accounts.metadata.to_account_info().key()) + .payer(ctx.accounts.payer.to_account_info().key()); + + if let Some(edition_key_value) = edition_key { + builder.edition(Some(edition_key_value)); + } + + let mut account_infos = if edition_key.is_some() { + vec![ + ctx.accounts.source_ta.to_account_info(), + ctx.accounts.source_owner.to_account_info(), + ctx.accounts.destination_ta.to_account_info(), + ctx.accounts.destination_owner.to_account_info(), + ctx.accounts.mint.to_account_info(), + ctx.accounts.metadata.to_account_info(), + ctx.accounts.edition.to_account_info(), + ctx.accounts.authority.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ctx.accounts.instructions.to_account_info(), + ctx.accounts.token_program.to_account_info(), + ctx.accounts.ata_program.to_account_info(), + ] + } else { + vec![ + ctx.accounts.source_ta.to_account_info(), + ctx.accounts.source_owner.to_account_info(), + ctx.accounts.destination_ta.to_account_info(), + ctx.accounts.destination_owner.to_account_info(), + ctx.accounts.mint.to_account_info(), + ctx.accounts.metadata.to_account_info(), + ctx.accounts.authority.to_account_info(), + ctx.accounts.payer.to_account_info(), + ctx.accounts.system_program.to_account_info(), + ctx.accounts.instructions.to_account_info(), + ctx.accounts.token_program.to_account_info(), + ctx.accounts.ata_program.to_account_info(), + ] + }; + + if let Some(standard) = metadata.token_standard { + if standard == TokenStandard::ProgrammableNonFungible { + //1. add to builder + builder + .token_record(Some(params.owner_token_record.clone().unwrap().key())) + .destination_token_record(Some(params.dest_token_record.clone().unwrap().key())); + + //2. add to accounts (if try to pass these for non-pNFT, will get owner errors, since they don't exist) + account_infos.push(params.owner_token_record.unwrap().to_account_info()); + account_infos.push(params.dest_token_record.unwrap().to_account_info()); + } + } + + //if auth rules passed in, validate & include it in CPI call + if let Some(config) = metadata.programmable_config { + match config { + ProgrammableConfig::V1 { rule_set } => { + if let Some(rule_set) = rule_set { + //safe to unwrap here, it's expected + let authorization_rules = params.authorization_rules.unwrap(); + let rules_program = params.authorization_rules_program.unwrap(); + + //1. validate + if rule_set != *authorization_rules.key { + // return Err(error!("bad rule set")); // fix this + } + + //2. add to builder + builder.authorization_rules(Some(*authorization_rules.key)); + builder.authorization_rules_program(Some(*rules_program.key)); + + //3. add to accounts + account_infos.push(authorization_rules.to_account_info()); + account_infos.push(rules_program.to_account_info()); + } + } + } + } + + let transfer_ix = builder + .transfer_args(TransferArgs::V1 { + amount, + authorization_data: params.authorization_data.map(AuthorizationData::from), + }) + .instruction(); + + invoke_signed(&transfer_ix, &account_infos, ctx.signer_seeds)?; + + Ok(()) +} diff --git a/programs/rarible_marketplace/src/utils/metaplex/pnft/utils.rs b/programs/rarible_marketplace/src/utils/metaplex/pnft/utils.rs new file mode 100644 index 00000000..34aba7c7 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/metaplex/pnft/utils.rs @@ -0,0 +1,157 @@ +use std::collections::HashMap; + +use anchor_lang::prelude::*; +use mpl_token_metadata::{ + accounts::{Metadata, TokenRecord}, + types::{ + AuthorizationData, Payload, PayloadType, ProofInfo, SeedsVec, TokenDelegateRole, + TokenStandard, + }, +}; + +#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)] +pub struct AuthorizationDataLocal { + pub payload: Vec, +} + +#[allow(clippy::from_over_into)] +impl From for AuthorizationData { + fn from(item: AuthorizationDataLocal) -> Self { + let mut p: HashMap = HashMap::new(); + item.payload.into_iter().for_each(|tp| { + p.insert(tp.name, PayloadType::try_from(tp.payload).unwrap()); + }); + + AuthorizationData { + payload: Payload { map: p }, + } + } +} + +#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)] +pub struct TaggedPayload { + name: String, + payload: PayloadTypeLocal, +} + +#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)] +pub enum PayloadTypeLocal { + /// A plain `Pubkey`. + Pubkey(Pubkey), + /// PDA derivation seeds. + Seeds(SeedsVecLocal), + /// A merkle proof. + MerkleProof(ProofInfoLocal), + /// A plain `u64` used for `Amount`. + Number(u64), +} + +#[allow(clippy::from_over_into)] +impl Into for PayloadTypeLocal { + fn into(self) -> PayloadType { + match self { + Self::Pubkey(pubkey) => PayloadType::Pubkey(pubkey), + Self::Seeds(seeds) => PayloadType::Seeds(SeedsVec::try_from(seeds).unwrap()), + Self::MerkleProof(proof) => { + PayloadType::MerkleProof(ProofInfo::try_from(proof).unwrap()) + } + Self::Number(number) => PayloadType::Number(number), + } + } +} + +#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)] +pub struct SeedsVecLocal { + /// The vector of derivation seeds. + pub seeds: Vec>, +} + +#[allow(clippy::from_over_into)] +impl Into for SeedsVecLocal { + fn into(self) -> SeedsVec { + SeedsVec { seeds: self.seeds } + } +} + +#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)] +pub struct ProofInfoLocal { + /// The merkle proof. + pub proof: Vec<[u8; 32]>, +} + +#[allow(clippy::from_over_into)] +impl Into for ProofInfoLocal { + fn into(self) -> ProofInfo { + ProofInfo { proof: self.proof } + } +} + +/// return if nft is pnft +#[inline(always)] +pub fn get_is_pnft(metadata: &Metadata) -> bool { + if let Some(standard) = &metadata.token_standard { + if *standard == TokenStandard::ProgrammableNonFungible { + return true; + } + } + + false +} + +pub struct TokenDelegate { + pub address: Pubkey, + pub role: TokenDelegateRole, +} + +/// return if nft has an existing delegate +#[inline(always)] +pub fn get_delegate(token_record_account_info: &AccountInfo) -> Option { + let token_record_res = TokenRecord::from_bytes(&token_record_account_info.data.borrow()[..]); + if let Ok(record) = token_record_res { + if let Some(delegate) = record.delegate { + if let Some(delegate_role) = record.delegate_role { + return Some(TokenDelegate { + address: delegate, + role: delegate_role, + }); + } + } + } + None +} +/// return if nft is pnft +#[inline(always)] +pub fn get_is_metaplex_nft(nft_account_info: &AccountInfo) -> bool { + let metadata_res = Metadata::safe_deserialize(&nft_account_info.data.borrow()[..]); + if let Ok(metadata) = metadata_res { + get_is_nft(&metadata) + } else { + false + } +} + +/// return if metadata is nft +#[inline(always)] +pub fn get_is_nft(metadata: &Metadata) -> bool { + if let Some(standard) = &metadata.token_standard { + if *standard == TokenStandard::Fungible { + return false; + } + } + true +} + +#[derive(Clone)] +pub struct PnftParams<'info> { + pub owner_token_record: Option>, + pub destination_token_record: Option>, + pub authorization_rules: Option>, + pub authorization_data: Option, + pub authorization_rules_program: Option>, +} + +#[derive(Clone, Debug)] +pub struct ExistingDelegateParams<'info> { + pub existing_delegate: AccountInfo<'info>, + pub existing_delegate_record: AccountInfo<'info>, +} diff --git a/programs/rarible_marketplace/src/utils/mod.rs b/programs/rarible_marketplace/src/utils/mod.rs new file mode 100644 index 00000000..cf6fa9f1 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/mod.rs @@ -0,0 +1,7 @@ +pub mod general; +pub mod metaplex; +pub mod token_extensions; + +pub use general::*; +pub use metaplex::*; +pub use token_extensions::*; diff --git a/programs/rarible_marketplace/src/utils/token_extensions/mod.rs b/programs/rarible_marketplace/src/utils/token_extensions/mod.rs new file mode 100644 index 00000000..91098f63 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/token_extensions/mod.rs @@ -0,0 +1,3 @@ +pub mod wns; + +pub use wns::*; diff --git a/programs/rarible_marketplace/src/utils/token_extensions/wns/mod.rs b/programs/rarible_marketplace/src/utils/token_extensions/wns/mod.rs new file mode 100644 index 00000000..9f5f26f1 --- /dev/null +++ b/programs/rarible_marketplace/src/utils/token_extensions/wns/mod.rs @@ -0,0 +1,38 @@ +use crate::errors::MarketError; +use anchor_lang::prelude::*; +use anchor_spl::{ + token_2022::spl_token_2022::extension::group_member_pointer::GroupMemberPointer, + token_interface::get_mint_extension_data, +}; +use wen_new_standard::TokenGroupMember; + +pub struct WnsApprovalAccounts<'info> { + pub approval_account: AccountInfo<'info>, + pub distribution_account: AccountInfo<'info>, + pub distribution_token_account: AccountInfo<'info>, + pub distribution_program: AccountInfo<'info>, + pub payment_mint: AccountInfo<'info>, +} + +pub fn verify_wns_mint<'info>( + mint: AccountInfo<'info>, + wns_member_acc: AccountInfo<'info>, + market_id: Pubkey, +) -> Result<()> { + let group_info: GroupMemberPointer = + get_mint_extension_data::(&mint).unwrap(); + + let wns_member = + TokenGroupMember::deserialize(&mut &wns_member_acc.to_account_info().data.borrow()[8..])?; + let group_id = wns_member.group; + let member_mint = wns_member.mint; + + if group_info.member_address.0 != wns_member_acc.key() { + return Err(MarketError::InvalidNft.into()); + } + if group_id == market_id && mint.key() == member_mint { + return Ok(()); + } else { + return Err(MarketError::InvalidNft.into()); + } +} diff --git a/programs/wen_new_standard/Cargo.lock b/programs/wen_new_standard/Cargo.lock deleted file mode 100644 index a03828ac..00000000 --- a/programs/wen_new_standard/Cargo.lock +++ /dev/null @@ -1,2830 +0,0 @@ -# This file is automatically @generated by Cargo. -# 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.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", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "anchor-attribute-access-control" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7368e171b3a317885dc08ec0f74eed9d0ad6c726cc819593aed81440dca926" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f527df85a8cba3f2bea04e46ed71b66e525ea378c7fec538aa205f4520b73e31" -dependencies = [ - "anchor-syn", - "bs58 0.5.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb1dc1845cf8636c2e046a274ca074dabd3884ac8ed11cc4ed64b7e8ef5a318" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f382e41514c59a77ffa7bb1a47df9a0359564a749b6934485c742c11962e540" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473a122aeed3f6b666438236338d2ef7833ee5fdc5688e1baa80185d61088a53" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f88c7ffe2eb40aeac43ffd0d74a6671581158aedfaa0552330a2ef92fa5c889" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58 0.5.1", - "heck", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9b97c99dcec135aae0ff908c14bcfcd3e78cfc16a0c6f245135038f0e6d390" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbece98f6ad9c37070edc0841326c9623a249346cd74f433e7cef69b14f7f31d" -dependencies = [ - "anchor-syn", - "borsh-derive-internal 0.10.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8badbe2648bc99a85ee05a7a5f9512e5e2af8ffac71476a69350cb278057ac53" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e41feb9c1cd9f4b0fad1c004fc8f289183f3ce27e9db38fa6e434470c716fb1e" -dependencies = [ - "anchor-attribute-access-control", - "anchor-attribute-account", - "anchor-attribute-constant", - "anchor-attribute-error", - "anchor-attribute-event", - "anchor-attribute-program", - "anchor-derive-accounts", - "anchor-derive-serde", - "anchor-derive-space", - "anchor-lang-idl", - "arrayref", - "base64 0.21.7", - "bincode", - "borsh 0.10.3", - "bytemuck", - "getrandom 0.2.14", - "solana-program", - "thiserror", -] - -[[package]] -name = "anchor-lang-idl" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b29da81eae478b1bb846749b06b8a2cb9c6f9ed26ca793b0c916793fdf36adab" -dependencies = [ - "anchor-syn", - "anyhow", - "regex", - "serde", - "serde_json", -] - -[[package]] -name = "anchor-spl" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcee54a30b27ea8317ca647759b5d9701a8c7caaaa0c922c6d3c306a7278a7a" -dependencies = [ - "anchor-lang", - "spl-associated-token-account", - "spl-pod 0.2.2", - "spl-token", - "spl-token-2022", - "spl-token-group-interface", - "spl-token-metadata-interface", -] - -[[package]] -name = "anchor-syn" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac53f2378bc08e89e20c2b893c01986ffd34cfbc69a17e35bd6f754753e9fdad" -dependencies = [ - "anyhow", - "bs58 0.5.1", - "cargo_toml", - "heck", - "proc-macro2", - "quote", - "serde", - "serde_json", - "sha2 0.10.8", - "syn 1.0.109", - "thiserror", -] - -[[package]] -name = "anyhow" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" - -[[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.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", - "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", -] - -[[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 = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -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" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "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.59", - "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 = "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.59", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "cargo_toml" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" -dependencies = [ - "serde", - "toml 0.8.12", -] - -[[package]] -name = "cc" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" -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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] - -[[package]] -name = "console_log" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" -dependencies = [ - "log", - "web-sys", -] - -[[package]] -name = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[package]] -name = "cpufeatures" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" -dependencies = [ - "libc", -] - -[[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", - "syn 2.0.59", -] - -[[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.59", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "crypto-common", - "subtle", -] - -[[package]] -name = "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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" - -[[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 = "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 = "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.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 = "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.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 = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[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 = "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" -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 = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.3", -] - -[[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.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" -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 = "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-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254", - "ark-ff", - "num-bigint", - "thiserror", -] - -[[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.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "merlin" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" -dependencies = [ - "byteorder", - "keccak", - "rand_core 0.6.4", - "zeroize", -] - -[[package]] -name = "num-bigint" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.59", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" -dependencies = [ - "num_enum_derive", -] - -[[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.59", -] - -[[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 = "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", -] - -[[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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[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.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 = "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.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" -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.59", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -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 = "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 = "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 = "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 = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[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.198" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" -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.198" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.59", -] - -[[package]] -name = "serde_json" -version = "1.0.116" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" -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_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.59", -] - -[[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 = "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 = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "solana-frozen-abi" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8177685ab2bc8cc8b3bf63aa1eaa0580d5af850ecefac323ca1c2473085d77" -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.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a68241cad17b74c6034a68ba4890632d409a2c886e7bead9c1e1432befdb7c9" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.59", -] - -[[package]] -name = "solana-logger" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea560989ef67ba4a1a0fd62a248721f1aa5bac8fa5ede9ccf4fe9ee484ccadf" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-program" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bddf573103c890b4ab8f9a6641d4f969d4148bce9a451c263f4a62afa949fae" -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", - "num-bigint", - "num-derive", - "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-sdk" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08b24b06fa176209ddb2a2f8172a00b07e8a3b18229fbfc49f1eb3ce6ad11ff1" -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", - "num-traits", - "num_enum", - "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.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869483c05f18d37d4d95a08d9e05e00a4f76a8c8349aeedeee9ba2d013cbacde" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.59", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" - -[[package]] -name = "solana-zk-token-sdk" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459c27f7b954798677d8243aa53b8080cfb314ecfecbf8889a5a65c91ad11fee" -dependencies = [ - "aes-gcm-siv", - "base64 0.21.7", - "bincode", - "bytemuck", - "byteorder", - "curve25519-dalek", - "getrandom 0.1.16", - "itertools", - "lazy_static", - "merlin", - "num-derive", - "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 = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" -dependencies = [ - "assert_matches", - "borsh 1.4.0", - "num-derive", - "num-traits", - "solana-program", - "spl-token", - "spl-token-2022", - "thiserror", -] - -[[package]] -name = "spl-discriminator" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.1.2", -] - -[[package]] -name = "spl-discriminator" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.2.0", -] - -[[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 0.1.2", - "syn 2.0.59", -] - -[[package]] -name = "spl-discriminator-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" -dependencies = [ - "quote", - "spl-discriminator-syn 0.2.0", - "syn 2.0.59", -] - -[[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.59", - "thiserror", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.59", - "thiserror", -] - -[[package]] -name = "spl-memo" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e9bae02de3405079a057fe244c867a08f92d48327d231fc60da831f94caf0a" -dependencies = [ - "solana-program", -] - -[[package]] -name = "spl-pod" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-pod" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" -dependencies = [ - "borsh 1.4.0", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.4.0", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive 0.3.2", - "thiserror", -] - -[[package]] -name = "spl-program-error" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5528f4dfa2a905012007999526955c79162c09668c69ad3c3f2ddfbd0b2984a4" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive 0.4.0", - "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.59", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "641aa3116b1d58481e921b5d41dafc26a67bd488cb288330dbde004641764dd4" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.59", -] - -[[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 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-token" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ae123223633a389f95d1da9d49c2d0a50d499e7060b9624626a69e536ad2a4" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "thiserror", -] - -[[package]] -name = "spl-token-2022" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-token-sdk", - "spl-memo", - "spl-pod 0.2.2", - "spl-token", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface 0.6.3", - "spl-type-length-value 0.4.3", - "thiserror", -] - -[[package]] -name = "spl-token-group-interface" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" -dependencies = [ - "borsh 1.4.0", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6dfe329fcff44cbe2eea994bd8f737f0b0a69faed39e56f9b6ee03badf7e14" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-tlv-account-resolution 0.5.2", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-tlv-account-resolution 0.6.3", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-type-length-value" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-type-length-value" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", -] - -[[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" -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.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" -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.59", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.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.59", -] - -[[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.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.9", -] - -[[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.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.6", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[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 = "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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[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.59", - "wasm-bindgen-shared", -] - -[[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.59", - "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 = "wen_new_standard" -version = "0.3.2-alpha" -dependencies = [ - "anchor-lang", - "anchor-spl", - "spl-tlv-account-resolution 0.4.0", - "spl-transfer-hook-interface 0.5.1", - "wen_royalty_distribution", -] - -[[package]] -name = "wen_royalty_distribution" -version = "0.2.0-alpha" -dependencies = [ - "anchor-lang", - "anchor-spl", - "spl-tlv-account-resolution 0.4.0", - "spl-transfer-hook-interface 0.5.1", -] - -[[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-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[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_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[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_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[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_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[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.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" -dependencies = [ - "memchr", -] - -[[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.59", -] - -[[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.59", -] diff --git a/programs/wen_new_standard/Cargo.toml b/programs/wen_new_standard/Cargo.toml deleted file mode 100644 index 7e0ef107..00000000 --- a/programs/wen_new_standard/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "wen_new_standard" -version = "0.4.2-alpha" -description = "An open and composable NFT standard on Solana." -edition = "2021" - -[package.metadata.docs.rs] -tags = ["wns", "alpha", "solana", "token_extensions"] - -[lib] -crate-type = ["cdylib", "lib"] -name = "wen_new_standard" - -[features] -no-entrypoint = [] -no-idl = [] -cpi = ["no-entrypoint"] -default = [] -idl-build = [ - "anchor-lang/idl-build", - "anchor-spl/idl-build", - "wen_royalty_distribution/idl-build", -] - -[dependencies] -anchor-lang.workspace = true -anchor-spl.workspace = true -wen_royalty_distribution.workspace = true -spl-transfer-hook-interface.workspace = true -spl-tlv-account-resolution.workspace = true diff --git a/programs/wen_new_standard/README.md b/programs/wen_new_standard/README.md deleted file mode 100644 index d8323a4d..00000000 --- a/programs/wen_new_standard/README.md +++ /dev/null @@ -1,282 +0,0 @@ -# WEN New Stanadard (WNS) - ---- - -## Table of Contents - -- [Introduction](#introduction) -- [State](#state-structs) -- [Instructions](#program-instructions) -- [Transfer Hook](#transfer-hook) - ---- - -## Introduction - -The WEN New Standard program was created to leverage Token extensions with custom royalty enforcements. The motivation behind this program is to foster an ecosystem around the newly available extensions without needing much of external PDAs to resort towards. Group and token members with royalties bound within results in an optimal yet essential structure for both Fungible, SemiFungible and NonFungible assets. - -## State - -There exists a total of 5 state PDAs within the program's boundaries, in which the group and member custom accounts would be migrated to the mint address when Group extensions are live over mainnet. - -- Manager - Currently this PDA is responsible for holding the collection and it's members' mint account and extension's authority to programatically change any extension configurations or to aid in any mutation under the mint account. - -```rust -struct Manager { - // bump: u8 -} -``` - -- Group - Each collection mint account is considered a group. Whenever a collection is initialized/created, a new `Group` PDA is stored. - -```rust -struct TokenGroup { - /// The authority that can update the group - pub update_authority: Pubkey, - /// The token mint - pub mint: Pubkey, - /// The current size of the group (current member count) - pub size: u32, - /// The maximum number of group members - pub max_size: u32, -} -``` - -- Member - Every sub collection/member mint account is considered a member. A `TokenMember` PDA is initialized when a new member mint account is created and stored with the required fields mentioned below. - -```rust -struct TokenGroupMember { - /// The token mint - pub mint: Pubkey, - /// The group PDA which is under - pub group: Pubkey, - /// The index at which the member has joined the group - pub member_number: u32, -} -``` - -- Approve Transfer Account - An approve transfer account is currently a clock's slot verification account used inside the transfer hook, to check if the PDA has been initalized/assigned the right slot in the same transaction as the transfer instruction is invoked. This makes sure, that a transfer instruction cannot be called as is from another program without setting this PDA's state right. In other words, an approve account is a validity checker for any transfer instruction between any member token accounts. - -```rust -struct ApproveAccount { - // The current slot where the transfer is about to happen - slot: u64, -} -``` - -- Extra Meta Account List - This account technically isn't created from scratch under this program, but since it still is being initialized under WNS program as it's owner, we mention this as well. The `ExtraMetaAccountList` PDA is also used for transfer hooks. This PDA is initialized only when royalties are being added. If no royalties are required, then the transfer hook will not be pointed to WNS, which results to not needing the `ExtraMetaAccountList`'s initialization. - ---- - -## Program Instructions - -1. `init_manager_account` - The first instruction required to be invoked by the program deployer to set a manager PDA account responsible for critical updates and mutations over the program. - -#### Accounts required - -- payer [signer, writable] -- manager [writable] -- system_program [] - -2. `create_group_account` - Allows a user to create a Token22 NFT with a custom made Group PDA to support `GroupPointerExtension`. This will be migrated to native `InitializeGroup` instruction in Token extensions program once it's available. This instruction primarily focusses on creating the mint account, initializing the required extensions, metadata and minting a token to the receiver. - -#### Accounts required - -- payer [signer, writable] -- authority [signer] -- group [writable] -- mint [signer, writable] -- mint_token_account [writable] -- manager -- system_program [] -- associated_token_program [] -- token_extensions_program [] - -3. `update_group_account` - Allows the group authority to update the group configurations or the base metadata - -#### Accounts required - -- payer [signer, writable] -- authority [signer] -- group [writable] -- mint [signer, writable] -- system_program [] -- token_extensions_program [] - -4. `create_mint_account` - Once the transfer is completed, the vault keeps a note of `claim_data` of which creator requires how much percentage of the vault royalty funds. Allows any `creator` to withdraw their share. - -#### Accounts required - -- payer [signer, writable] -- authority [signer] -- receiver [] -- mint [signer, writable] -- mint_token_account [writable] -- manager [] -- system_program [] -- associated_token_program [] -- token_extensions_program [] - -5. `add_mint_to_group` - Once the transfer is completed, the vault keeps a note of `claim_data` of which creator requires how much percentage of the vault royalty funds. Allows any `creator` to withdraw their share. - -#### Accounts required - -- payer [signer, writable] -- authority [signer] -- group [writable] -- member [writable] -- mint [] -- manager [] -- system_program [] -- token_extensions_program [] - -6. `burn_mint_account` - Allows the token member token account and the mint account (via token extensions close_authority) to be burnt. - -#### Accounts required - -- payer [signer, writable] -- user [signer] -- mint [writable] -- mint_token_account [writable] -- manager [] -- token_extensions_program [] - -7. `freeze_mint_account` - The token member mint account must have a delegated authority (through token instructions approve) in order to freeze the token the mint_token_account - -#### Accounts required - -- user [] -- delegate_authority [signer, writable] -- mint [] -- mint_token_account [writable] -- manager [] -- token_extensions_program [] - -8. `thaw_mint_account` - Same as `freeze_mint_account`, but for unfreezing. Allows the user to keep in custody for staking/escrow purposes without having the need to transfer. - -#### Accounts required - -- user [] -- delegate_authority [signer, writable] -- mint [] -- mint_token_account [writable] -- manager [] -- token_extensions_program [] - -9. `add_royalties` - Allowing the creator of the NFT collection to opt in for royalties, by updating the metadata of each member NFT with the creators list/share and the basis points that would be transferred for royalty share. - -#### Accounts required - -- payer [signer, writable] -- authority [signer] -- mint [writable] -- extra_meta_account [writable] -- system_program [] -- token_extensions_program [] - -10. `modify_royalties` - Allows for any modification over the already present royalty configurations. - -#### Accounts required - -- payer [signer, writable] -- authority [signer] -- mint [writable] -- system_program [] -- token_extensions_program [] - -11. `add_metadata` - Allows either a collection or member NFT to add additional metadata based on the nature of the NFT. Each instruction invoke would add one entry to the tuple vector. - -#### Accounts required - -- payer [signer, writable] -- authority [] -- mint [writable] -- token_extensions_program [] -- system_program [] - -12. `remove_metadata` - Allows either a collection or member NFT to remove any field in additional metadata. - -#### Accounts required - -- payer [signer, writable] -- authority [] -- mint [writable] -- token_extensions_program [] -- system_program [] - -13. `approve_transfer` - When a transfer for an NFT is invoked via a protocol CPI, an approve transfer procedure must be present before the transfer instruction in the same transaction. This function sets the blockchain's current slot and checks in the transfer hook, whether the slot is the same or expired. By this way, we could ensure that WNS was called alongside to enforce royalties, and not bypassed. The approve transfer also makes sure to transfer the royalty funds to the distribution program's PDA if the transfer instruction is via a CPI. Else it's a regular non-enforced transfer. - -#### Accounts required - -- payer [signer, writable] -- authority [signer, writable] -- mint [] -- payment_mint [] -- approve_account [writable] -- distribution_account[writable] -- distribution_token_account [writable] -- authority_token_account[writable] -- system_program [] -- distribution_program [] -- token_program [] - ---- - -## Lifecycle of program - -The lifecycle of WNS program can be split into two sides. Group and GroupMember. Since we have discussed in detail about the royalty-distribution program in it's respective docs, we will just focus over the WNS side of things. For a group account, the following procedures take place. - -1. We `initialize` a group mint account and create a custom `TokenGroup` PDA -2. We have the options to `update` or `add/remove` any additional metadata. - -Speaking of a token group member account, the following procedures take place - -1. We `initialize` a member mint account with the same ways like a group account -2. A member mint account can be added to a `group`, resulting in creating a custom `TokenGroupMember` PDA -3. A member mint account can be configured with royalties that are embedded onchain with the necessary attributes. -4. A member mint account can also have it's metadata added or removed -5. Any delegate to the member NFT can have the rights to freeze/thaw the token accounts -6. We also have the option to enforce royalty for a particular NFT through `approve_transfer` - -## Transfer Hook - -WNS utilizes transfer hook extension to make sure the program is being utilized as a part of transfer instructions. The way how it works is that, the `ExtraMetaAccountList` is being initialized while the user/creator wishes to opt in for royalties. The account is serialized with one account (being the approve PDA), to let the Token extensions program know that the same is going to be utilized during hook `execute` function. - -```rust -pub fn get_meta_list(approve_account: Pubkey) -> Vec { - vec![ExtraAccountMeta { - discriminator: 0, - address_config: approve_account.to_bytes(), - is_signer: false.into(), - is_writable: true.into(), - }] -} - -// initialize the extra metas account -let extra_metas_account = &ctx.accounts.extra_metas_account; -let metas = get_meta_list(get_approve_account_pda(ctx.accounts.mint.key())); -let mut data = extra_metas_account.try_borrow_mut_data()?; -ExtraAccountMetaList::init::(&mut data, &metas)?; -``` - -Then during the `execute` function, the required accounts are passed via anchor's remaining accounts and checked if the slot has been set right or not. If yes, it's reset back to the original value and made sure for next seamless transfer. - -```rust -if ctx.remaining_accounts.is_empty() { - return Err(MetadataErrors::MissingApproveAccount.into()); -} -let mut approve_account: ApproveAccount = AnchorDeserialize::deserialize( - &mut &ctx.remaining_accounts[0].try_borrow_mut_data()?[8..], -)?; -if approve_account.slot == Clock::get()?.slot { - // mark approve account as used by setting slot to 0 - approve_account.slot = 0; - AnchorSerialize::serialize( - &approve_account, - &mut &mut ctx.remaining_accounts[0].try_borrow_mut_data()?[8..], - )?; - Ok(()) -} else { - Err(MetadataErrors::ExpiredApproveAccount.into()) -} -``` diff --git a/programs/wen_new_standard/src/errors.rs b/programs/wen_new_standard/src/errors.rs deleted file mode 100644 index 345d7a23..00000000 --- a/programs/wen_new_standard/src/errors.rs +++ /dev/null @@ -1,31 +0,0 @@ -use anchor_lang::prelude::*; - -#[error_code] -pub enum MetadataErrors { - #[msg("Collection size exceeds max size.")] - SizeExceedsMaxSize, - #[msg("Max size cannot be reduced below current size.")] - MaxSizeBelowCurrentSize, - #[msg("Creators shares must add up to 100.")] - CreatorShareInvalid, - #[msg("Missing approve account.")] - MissingApproveAccount, - #[msg("Approve account has expired.")] - ExpiredApproveAccount, - #[msg("Invalid field. You cannot use a public key as a field.")] - InvalidField, - #[msg("The Address you provided is invalid. Please provide a valid address.")] - CreatorAddressInvalid, - #[msg("Royalty basis points must be less than or equal to 10000.")] - RoyaltyBasisPointsInvalid, -} - -#[error_code] -pub enum MintErrors { - #[msg("Invalid freeze authority.")] - InvalidFreezeAuthority, - #[msg("Invalid delegate authority.")] - InvalidDelegateAuthority, - #[msg("Invalid Token group member mint")] - InvalidTokenGroupMemberMint, -} diff --git a/programs/wen_new_standard/src/instructions/group/create.rs b/programs/wen_new_standard/src/instructions/group/create.rs deleted file mode 100644 index 0a7bbcbe..00000000 --- a/programs/wen_new_standard/src/instructions/group/create.rs +++ /dev/null @@ -1,141 +0,0 @@ -use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; -use anchor_spl::{ - associated_token::AssociatedToken, - token_interface::{ - mint_to, set_authority, spl_token_2022::instruction::AuthorityType, - token_metadata_initialize, Mint, MintTo, SetAuthority, Token2022, TokenAccount, - TokenMetadataInitialize, - }, -}; - -use crate::{ - update_account_lamports_to_minimum_balance, Manager, TokenGroup, GROUP_ACCOUNT_SEED, - MANAGER_SEED, -}; - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct CreateGroupAccountArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub max_size: u32, -} - -#[derive(Accounts)] -#[instruction(args: CreateGroupAccountArgs)] -pub struct CreateGroupAccount<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account()] - /// CHECK: can be any account - pub receiver: UncheckedAccount<'info>, - #[account( - init, - seeds = [GROUP_ACCOUNT_SEED, mint.key().as_ref()], - bump, - payer = payer, - space = 8 + TokenGroup::INIT_SPACE - )] - pub group: Account<'info, TokenGroup>, - #[account( - init, - signer, - payer = payer, - mint::token_program = token_program, - mint::decimals = 0, - mint::authority = authority, - mint::freeze_authority = manager, - extensions::metadata_pointer::authority = authority, - extensions::metadata_pointer::metadata_address = mint, - // group pointer authority is left as the manager so that it can be updated once token group support inside mint is added - extensions::group_pointer::authority = manager, - extensions::group_pointer::group_address = group, - // temporary mint close authority until a better program accounts can be used - extensions::close_authority::authority = manager, - )] - pub mint: Box>, - #[account( - init, - payer = payer, - associated_token::token_program = token_program, - associated_token::mint = mint, - associated_token::authority = receiver, - )] - pub mint_token_account: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Account<'info, Manager>, - pub system_program: Program<'info, System>, - pub associated_token_program: Program<'info, AssociatedToken>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> CreateGroupAccount<'info> { - fn initialize_metadata(&self, name: String, symbol: String, uri: String) -> ProgramResult { - let cpi_accounts = TokenMetadataInitialize { - token_program_id: self.token_program.to_account_info(), - mint: self.mint.to_account_info(), - metadata: self.mint.to_account_info(), // metadata account is the mint, since data is stored in mint - mint_authority: self.authority.to_account_info(), - update_authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - token_metadata_initialize(cpi_ctx, name, symbol, uri)?; - Ok(()) - } - - fn mint_to_receiver(&self) -> Result<()> { - let cpi_ctx = MintTo { - mint: self.mint.to_account_info(), - to: self.mint_token_account.to_account_info(), - authority: self.authority.to_account_info(), - }; - let cpi_accounts = CpiContext::new(self.token_program.to_account_info(), cpi_ctx); - mint_to(cpi_accounts, 1)?; - Ok(()) - } - - fn update_mint_authority(&self) -> Result<()> { - let cpi_accounts = SetAuthority { - current_authority: self.authority.to_account_info(), - account_or_mint: self.mint.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - // manager needs to be the new authority so that when solana upgrades to support group accounts, the mint can be updated - // this will updated to None once solana supports group accounts - set_authority(cpi_ctx, AuthorityType::MintTokens, Some(self.manager.key()))?; - Ok(()) - } -} - -pub fn handler(ctx: Context, args: CreateGroupAccountArgs) -> Result<()> { - // initialize token metadata - ctx.accounts - .initialize_metadata(args.name, args.symbol, args.uri)?; - - // using a custom group account until token22 implements group account - let group = &mut ctx.accounts.group; - group.max_size = args.max_size; - group.update_authority = ctx.accounts.authority.key(); - group.mint = ctx.accounts.mint.key(); - group.size = 0; - - // mint to receiver - ctx.accounts.mint_to_receiver()?; - - // remove mint authority - ctx.accounts.update_mint_authority()?; - - // update mint lamports to minimum rent balance - update_account_lamports_to_minimum_balance( - ctx.accounts.mint.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.system_program.to_account_info(), - )?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/group/mod.rs b/programs/wen_new_standard/src/instructions/group/mod.rs deleted file mode 100644 index b6bd955f..00000000 --- a/programs/wen_new_standard/src/instructions/group/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod create; -pub mod update; - -pub use create::*; -pub use update::*; diff --git a/programs/wen_new_standard/src/instructions/group/update.rs b/programs/wen_new_standard/src/instructions/group/update.rs deleted file mode 100644 index b291a690..00000000 --- a/programs/wen_new_standard/src/instructions/group/update.rs +++ /dev/null @@ -1,71 +0,0 @@ -use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; -use anchor_spl::token_interface::{ - spl_token_metadata_interface::state::Field, token_metadata_update_field, Mint, Token2022, - TokenMetadataUpdateField, -}; - -use crate::{MetadataErrors, TokenGroup, GROUP_ACCOUNT_SEED}; - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct UpdateGroupAccountArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub max_size: u32, -} - -#[derive(Accounts)] -#[instruction(args: UpdateGroupAccountArgs)] -pub struct UpdateGroupAccount<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - /// CHECK: can be any account - pub authority: UncheckedAccount<'info>, - #[account( - mut, - seeds = [GROUP_ACCOUNT_SEED, mint.key().as_ref()], - bump, - )] - pub group: Account<'info, TokenGroup>, - #[account( - mut, - mint::token_program = token_program, - )] - pub mint: Box>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> UpdateGroupAccount<'info> { - fn update_metadata(&self, field: Field, value: String) -> ProgramResult { - let cpi_accounts = TokenMetadataUpdateField { - token_program_id: self.token_program.to_account_info(), - metadata: self.mint.to_account_info(), // metadata account is the mint, since data is stored in mint - update_authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - token_metadata_update_field(cpi_ctx, field, value)?; - Ok(()) - } -} - -pub fn handler(ctx: Context, args: UpdateGroupAccountArgs) -> Result<()> { - if args.max_size < ctx.accounts.group.size { - return Err(MetadataErrors::MaxSizeBelowCurrentSize.into()); - } - - // update group max size - ctx.accounts.group.max_size = args.max_size; - - // update metadata name - ctx.accounts.update_metadata(Field::Name, args.name)?; - - // update metadata symbol - ctx.accounts.update_metadata(Field::Symbol, args.symbol)?; - - // update metadata uri - ctx.accounts.update_metadata(Field::Uri, args.uri)?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/manager/init.rs b/programs/wen_new_standard/src/instructions/manager/init.rs deleted file mode 100644 index d79eb59e..00000000 --- a/programs/wen_new_standard/src/instructions/manager/init.rs +++ /dev/null @@ -1,24 +0,0 @@ -use anchor_lang::prelude::*; - -use crate::{Manager, MANAGER_SEED}; - -#[derive(Accounts)] -#[instruction()] -pub struct InitManagerAccount<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account( - init, - payer = payer, - seeds = [MANAGER_SEED], - space = 8 + Manager::INIT_SPACE, - bump - )] - pub manager: Account<'info, Manager>, - pub system_program: Program<'info, System>, -} - -pub fn handler(_ctx: Context) -> Result<()> { - // ctx.accounts.manager.bump = ctx.bumps.manager; - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/manager/mod.rs b/programs/wen_new_standard/src/instructions/manager/mod.rs deleted file mode 100644 index a7f48785..00000000 --- a/programs/wen_new_standard/src/instructions/manager/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod init; - -pub use init::*; diff --git a/programs/wen_new_standard/src/instructions/mint/burn.rs b/programs/wen_new_standard/src/instructions/mint/burn.rs deleted file mode 100644 index 94a2c77d..00000000 --- a/programs/wen_new_standard/src/instructions/mint/burn.rs +++ /dev/null @@ -1,90 +0,0 @@ -use anchor_lang::prelude::*; - -use anchor_spl::token_interface::{ - burn, close_account, Burn, CloseAccount, Mint, Token2022, TokenAccount, -}; - -use crate::{Manager, MANAGER_SEED}; - -#[derive(Accounts)] -pub struct BurnMintAccount<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub user: Signer<'info>, - #[account(mut)] - pub mint: Box>, - #[account( - mut, - associated_token::token_program = token_program, - associated_token::mint = mint, - associated_token::authority = user, - )] - pub mint_token_account: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Account<'info, Manager>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> BurnMintAccount<'info> { - fn close_token_account(&self) -> Result<()> { - let cpi_accounts = CloseAccount { - account: self.mint_token_account.to_account_info(), - destination: self.payer.to_account_info(), - authority: self.user.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - close_account(cpi_ctx)?; - - Ok(()) - } - - fn close_mint_account(&self, bumps: BurnMintAccountBumps) -> Result<()> { - let seeds: &[&[u8]; 2] = &[MANAGER_SEED, &[bumps.manager]]; - let signer_seeds = &[&seeds[..]]; - - let cpi_accounts = CloseAccount { - account: self.mint.to_account_info(), - destination: self.payer.to_account_info(), - authority: self.manager.to_account_info(), - }; - let cpi_ctx = CpiContext::new_with_signer( - self.token_program.to_account_info(), - cpi_accounts, - signer_seeds, - ); - close_account(cpi_ctx)?; - - Ok(()) - } - - fn burn_token(&self) -> Result<()> { - let cpi_accounts = Burn { - mint: self.mint.to_account_info(), - from: self.mint_token_account.to_account_info(), - authority: self.user.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - burn(cpi_ctx, 1)?; - - Ok(()) - } -} - -pub fn handler(ctx: Context) -> Result<()> { - // burn the token - ctx.accounts.burn_token()?; - - // close the token account - ctx.accounts.close_token_account()?; - - // close the mint account - ctx.accounts.close_mint_account(ctx.bumps)?; - - // TODO: decrease collection number of the group - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/create.rs b/programs/wen_new_standard/src/instructions/mint/create.rs deleted file mode 100644 index 982f6b41..00000000 --- a/programs/wen_new_standard/src/instructions/mint/create.rs +++ /dev/null @@ -1,152 +0,0 @@ -use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; - -use anchor_spl::{ - associated_token::AssociatedToken, - token_interface::{ - mint_to, set_authority, spl_token_2022::instruction::AuthorityType, - token_metadata_initialize, Mint, MintTo, SetAuthority, Token2022, TokenAccount, - TokenMetadataInitialize, - }, -}; - -use crate::{update_account_lamports_to_minimum_balance, Manager, MANAGER_SEED}; - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct CreateMintAccountArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub permanent_delegate: Option, -} - -#[derive(Accounts)] -#[instruction(args: CreateMintAccountArgs)] -pub struct CreateMintAccount<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - /// CHECK: can be any account - pub authority: Signer<'info>, - #[account()] - /// CHECK: can be any account - pub receiver: UncheckedAccount<'info>, - #[account( - init, - signer, - payer = payer, - mint::token_program = token_program, - mint::decimals = 0, - mint::authority = authority, - mint::freeze_authority = manager, - extensions::metadata_pointer::authority = authority, - extensions::metadata_pointer::metadata_address = mint, - extensions::group_member_pointer::authority = manager, - extensions::transfer_hook::authority = authority, - extensions::permanent_delegate::delegate = args.permanent_delegate.unwrap_or_else(|| manager.key()), - // temporary mint close authority until a better program accounts can be used - extensions::close_authority::authority = manager, - )] - pub mint: Box>, - #[account( - init, - payer = payer, - associated_token::token_program = token_program, - associated_token::mint = mint, - associated_token::authority = receiver, - )] - pub mint_token_account: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Account<'info, Manager>, - pub system_program: Program<'info, System>, - pub associated_token_program: Program<'info, AssociatedToken>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> CreateMintAccount<'info> { - fn initialize_token_metadata( - &self, - name: String, - symbol: String, - uri: String, - ) -> ProgramResult { - let cpi_accounts = TokenMetadataInitialize { - token_program_id: self.token_program.to_account_info(), - mint: self.mint.to_account_info(), - metadata: self.mint.to_account_info(), // metadata account is the mint, since data is stored in mint - mint_authority: self.authority.to_account_info(), - update_authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - token_metadata_initialize(cpi_ctx, name, symbol, uri)?; - Ok(()) - } - - fn mint_to_receiver(&self) -> Result<()> { - let cpi_ctx = MintTo { - mint: self.mint.to_account_info(), - to: self.mint_token_account.to_account_info(), - authority: self.authority.to_account_info(), - }; - let cpi_accounts = CpiContext::new(self.token_program.to_account_info(), cpi_ctx); - mint_to(cpi_accounts, 1)?; - Ok(()) - } - - fn update_mint_authority(&self) -> Result<()> { - let cpi_accounts = SetAuthority { - current_authority: self.authority.to_account_info(), - account_or_mint: self.mint.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - // manager needs to be the new authority so that when solana upgrades to support member accounts, the mint can be updated - // this will updated to None once solana supports member accounts - set_authority(cpi_ctx, AuthorityType::MintTokens, Some(self.manager.key()))?; - Ok(()) - } - - fn set_default_permanent_delegate(&self, bump: u8) -> Result<()> { - let seeds: &[&[u8]; 2] = &[MANAGER_SEED, &[bump]]; - let signer_seeds = &[&seeds[..]]; - let cpi_accounts = SetAuthority { - current_authority: self.manager.to_account_info(), - account_or_mint: self.mint.to_account_info(), - }; - let cpi_ctx = CpiContext::new_with_signer( - self.token_program.to_account_info(), - cpi_accounts, - signer_seeds, - ); - set_authority(cpi_ctx, AuthorityType::PermanentDelegate, None)?; - Ok(()) - } -} - -pub fn handler(ctx: Context, args: CreateMintAccountArgs) -> Result<()> { - if args.permanent_delegate.is_none() { - ctx.accounts - .set_default_permanent_delegate(ctx.bumps.manager)?; - } - - // initialize token metadata - ctx.accounts - .initialize_token_metadata(args.name, args.symbol, args.uri)?; - - // mint to receiver - ctx.accounts.mint_to_receiver()?; - - // remove mint authority - ctx.accounts.update_mint_authority()?; - // TODO: Once Token Extension program supports Group/Member accounts natively, should lock Mint Authority - - // transfer minimum rent to mint account - update_account_lamports_to_minimum_balance( - ctx.accounts.mint.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.system_program.to_account_info(), - )?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/freeze.rs b/programs/wen_new_standard/src/instructions/mint/freeze.rs deleted file mode 100644 index 9fe14a71..00000000 --- a/programs/wen_new_standard/src/instructions/mint/freeze.rs +++ /dev/null @@ -1,63 +0,0 @@ -use anchor_lang::prelude::*; - -use anchor_spl::token_interface::{ - freeze_account, spl_pod::solana_program::program_option::COption, FreezeAccount, Mint, - Token2022, TokenAccount, -}; - -use crate::{Manager, MintErrors, MANAGER_SEED}; - -#[derive(Accounts)] -pub struct FreezeDelegatedAccount<'info> { - #[account()] - /// CHECK: can be any account - pub user: UncheckedAccount<'info>, - #[account(mut)] - pub delegate_authority: Signer<'info>, - #[account( - constraint = mint.freeze_authority == COption::Some(manager.key()) @MintErrors::InvalidFreezeAuthority - )] - pub mint: Box>, - #[account( - mut, - associated_token::token_program = token_program, - associated_token::mint = mint, - associated_token::authority = user, - constraint = mint_token_account.delegate == COption::Some(delegate_authority.key()) @MintErrors::InvalidDelegateAuthority - )] - pub mint_token_account: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Account<'info, Manager>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> FreezeDelegatedAccount<'info> { - fn freeze(&self, bumps: FreezeDelegatedAccountBumps) -> Result<()> { - let seeds: &[&[u8]; 2] = &[MANAGER_SEED, &[bumps.manager]]; - let signer_seeds = &[&seeds[..]]; - - let cpi_accounts = FreezeAccount { - account: self.mint_token_account.to_account_info(), - mint: self.mint.to_account_info(), - authority: self.manager.to_account_info(), - }; - let cpi_ctx = CpiContext::new_with_signer( - self.token_program.to_account_info(), - cpi_accounts, - signer_seeds, - ); - freeze_account(cpi_ctx)?; - - Ok(()) - } -} - -pub fn handler(ctx: Context) -> Result<()> { - // freeze the token account - ctx.accounts.freeze(ctx.bumps)?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/group/add.rs b/programs/wen_new_standard/src/instructions/mint/group/add.rs deleted file mode 100644 index 23a61c86..00000000 --- a/programs/wen_new_standard/src/instructions/mint/group/add.rs +++ /dev/null @@ -1,86 +0,0 @@ -use anchor_lang::prelude::*; - -use anchor_spl::token_interface::{ - group_member_pointer_update, GroupMemberPointerUpdate, Mint, Token2022, -}; - -use crate::{ - get_bump_in_seed_form, Manager, TokenGroup, TokenGroupMember, GROUP_ACCOUNT_SEED, MANAGER_SEED, - MEMBER_ACCOUNT_SEED, TOKEN22, -}; - -#[derive(Accounts)] -#[instruction()] -pub struct AddGroup<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account( - mut, - constraint = group.update_authority == authority.key(), - seeds = [GROUP_ACCOUNT_SEED, group.mint.as_ref()], - bump, - )] - pub group: Account<'info, TokenGroup>, - #[account( - init, - seeds = [MEMBER_ACCOUNT_SEED, mint.key().as_ref()], - bump, - payer = payer, - space = 8 + TokenGroupMember::INIT_SPACE - )] - pub member: Account<'info, TokenGroupMember>, - #[account( - mut, - mint::token_program = TOKEN22 - )] - pub mint: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Box>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl AddGroup<'_> { - fn update_group_member_pointer_member_address( - &self, - member: Pubkey, - signer_seeds: &[&[&[u8]]], - ) -> Result<()> { - let cpi_accounts = GroupMemberPointerUpdate { - token_program_id: self.token_program.to_account_info(), - mint: self.mint.to_account_info(), - authority: self.manager.to_account_info(), - }; - let cpi_ctx = CpiContext::new_with_signer( - self.token_program.to_account_info(), - cpi_accounts, - signer_seeds, - ); - group_member_pointer_update(cpi_ctx, Some(member))?; - Ok(()) - } -} - -pub fn handler(ctx: Context) -> Result<()> { - let group = &mut ctx.accounts.group; - group.increment_size()?; - - let member = &mut ctx.accounts.member; - member.group = group.key(); - member.mint = ctx.accounts.mint.key(); - member.member_number = group.size; - - let member_address = member.key(); - - let signer_seeds = &[MANAGER_SEED, &get_bump_in_seed_form(&ctx.bumps.manager)]; - - ctx.accounts - .update_group_member_pointer_member_address(member_address, &[&signer_seeds[..]])?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/group/remove.rs b/programs/wen_new_standard/src/instructions/mint/group/remove.rs deleted file mode 100644 index 60cc4159..00000000 --- a/programs/wen_new_standard/src/instructions/mint/group/remove.rs +++ /dev/null @@ -1,77 +0,0 @@ -use anchor_lang::prelude::*; - -use anchor_spl::token_interface::{ - group_member_pointer_update, GroupMemberPointerUpdate, Mint, Token2022, -}; - -use crate::{ - get_bump_in_seed_form, Manager, MintErrors, TokenGroup, TokenGroupMember, GROUP_ACCOUNT_SEED, - MANAGER_SEED, MEMBER_ACCOUNT_SEED, TOKEN22, -}; - -#[derive(Accounts)] -#[instruction()] -pub struct RemoveGroup<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account( - mut, - constraint = group.update_authority == authority.key(), - seeds = [GROUP_ACCOUNT_SEED, group.mint.as_ref()], - bump, - )] - pub group: Account<'info, TokenGroup>, - #[account( - mut, - has_one = mint @ MintErrors::InvalidTokenGroupMemberMint, - seeds = [MEMBER_ACCOUNT_SEED, mint.key().as_ref()], - bump, - )] - pub member: Account<'info, TokenGroupMember>, - #[account( - mut, - mint::token_program = TOKEN22 - )] - pub mint: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Box>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl RemoveGroup<'_> { - fn update_group_member_pointer_member_address(&self, signer_seeds: &[&[&[u8]]]) -> Result<()> { - let cpi_accounts = GroupMemberPointerUpdate { - token_program_id: self.token_program.to_account_info(), - mint: self.mint.to_account_info(), - authority: self.manager.to_account_info(), - }; - let cpi_ctx = CpiContext::new_with_signer( - self.token_program.to_account_info(), - cpi_accounts, - signer_seeds, - ); - group_member_pointer_update(cpi_ctx, None)?; - Ok(()) - } -} - -pub fn handler(ctx: Context) -> Result<()> { - let group = &mut ctx.accounts.group; - group.decrement_size()?; - - let member = &mut ctx.accounts.member; - member.close(ctx.accounts.payer.to_account_info())?; - - let signer_seeds = &[MANAGER_SEED, &get_bump_in_seed_form(&ctx.bumps.manager)]; - - ctx.accounts - .update_group_member_pointer_member_address(&[&signer_seeds[..]])?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/metadata/add.rs b/programs/wen_new_standard/src/instructions/mint/metadata/add.rs deleted file mode 100644 index a482bea6..00000000 --- a/programs/wen_new_standard/src/instructions/mint/metadata/add.rs +++ /dev/null @@ -1,70 +0,0 @@ -use std::str::FromStr; - -use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; - -use anchor_spl::token_interface::{ - spl_token_metadata_interface::state::Field, token_metadata_update_field, Mint, Token2022, - TokenMetadataUpdateField, -}; - -use crate::{errors::MetadataErrors, update_account_lamports_to_minimum_balance}; - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct AddMetadataArgs { - pub field: String, - pub value: String, -} - -#[derive(Accounts)] -pub struct AddMetadata<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account( - mut, - mint::token_program = token_program, - )] - pub mint: Box>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> AddMetadata<'info> { - fn update_token_metadata_field(&self, field: Field, value: String) -> ProgramResult { - let cpi_accounts = TokenMetadataUpdateField { - token_program_id: self.token_program.to_account_info(), - metadata: self.mint.to_account_info(), - update_authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - token_metadata_update_field(cpi_ctx, field, value)?; - Ok(()) - } -} - -pub fn handler(ctx: Context, args: Vec) -> Result<()> { - for metadata_arg in args { - // validate that the field is not a publickey - match Pubkey::from_str(&metadata_arg.field) { - Ok(_) => { - return Err(MetadataErrors::InvalidField.into()); - } - Err(_) => { - ctx.accounts.update_token_metadata_field( - Field::Key(metadata_arg.field), - metadata_arg.value.to_string(), - )?; - } - } - } - - // transfer minimum rent to mint account - update_account_lamports_to_minimum_balance( - ctx.accounts.mint.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.system_program.to_account_info(), - )?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/metadata/mod.rs b/programs/wen_new_standard/src/instructions/mint/metadata/mod.rs deleted file mode 100644 index a1c07191..00000000 --- a/programs/wen_new_standard/src/instructions/mint/metadata/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod add; -pub mod remove; - -pub use add::*; -pub use remove::*; diff --git a/programs/wen_new_standard/src/instructions/mint/metadata/remove.rs b/programs/wen_new_standard/src/instructions/mint/metadata/remove.rs deleted file mode 100644 index f2aecf80..00000000 --- a/programs/wen_new_standard/src/instructions/mint/metadata/remove.rs +++ /dev/null @@ -1,76 +0,0 @@ -use std::str::FromStr; - -use anchor_lang::{prelude::*, solana_program::program::invoke}; - -use anchor_spl::{ - token_interface::spl_token_metadata_interface::instruction::remove_key, - token_interface::{Mint, Token2022}, -}; - -use crate::{errors::MetadataErrors, update_account_lamports_to_minimum_balance}; - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct RemoveMetadataArgs { - pub field: String, - pub value: String, -} - -#[derive(Accounts)] -pub struct RemoveMetadata<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account( - mut, - mint::token_program = token_program, - )] - pub mint: Box>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> RemoveMetadata<'info> { - // ToDo: Create a macro for it - fn remove_token_metadata_field(&self, field: String) -> Result<()> { - invoke( - &remove_key( - &self.token_program.key(), - &self.mint.key(), - &self.authority.key(), - field, - false, - ), - &[ - self.mint.to_account_info(), - self.authority.to_account_info(), - ], - )?; - - Ok(()) - } -} - -pub fn handler(ctx: Context, args: Vec) -> Result<()> { - for metadata_arg in args { - // validate that the field is not a publickey - match Pubkey::from_str(&metadata_arg.field) { - Ok(_) => { - return Err(MetadataErrors::InvalidField.into()); - } - Err(_) => { - ctx.accounts - .remove_token_metadata_field(metadata_arg.field)?; - } - } - } - - // transfer minimum rent to mint account - update_account_lamports_to_minimum_balance( - ctx.accounts.mint.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.system_program.to_account_info(), - )?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/mod.rs b/programs/wen_new_standard/src/instructions/mint/mod.rs deleted file mode 100644 index 9f00c7b3..00000000 --- a/programs/wen_new_standard/src/instructions/mint/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod burn; -pub mod create; -pub mod freeze; -pub mod thaw; - -pub mod group; -pub mod metadata; -pub mod royalties; - -pub use burn::*; -pub use create::*; -pub use freeze::*; -pub use group::*; -pub use metadata::*; -pub use royalties::*; -pub use thaw::*; diff --git a/programs/wen_new_standard/src/instructions/mint/royalties/add.rs b/programs/wen_new_standard/src/instructions/mint/royalties/add.rs deleted file mode 100644 index 7074c18a..00000000 --- a/programs/wen_new_standard/src/instructions/mint/royalties/add.rs +++ /dev/null @@ -1,111 +0,0 @@ -use anchor_lang::{prelude::*, solana_program::entrypoint::ProgramResult}; -use spl_tlv_account_resolution::state::ExtraAccountMetaList; - -use anchor_spl::token_interface::{ - spl_token_metadata_interface::state::Field, token_metadata_update_field, transfer_hook_update, - Mint, Token2022, TokenMetadataUpdateField, TransferHookUpdate, -}; -use spl_transfer_hook_interface::instruction::ExecuteInstruction; - -use crate::{ - get_approve_account_pda, get_meta_list, get_meta_list_size, - update_account_lamports_to_minimum_balance, MetadataErrors, UpdateRoyaltiesArgs, - META_LIST_ACCOUNT_SEED, ROYALTY_BASIS_POINTS_FIELD, -}; - -#[derive(Accounts)] -#[instruction(args: UpdateRoyaltiesArgs)] -pub struct AddRoyalties<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account( - mut, - mint::token_program = token_program, - )] - pub mint: Box>, - /// CHECK: This account's data is a buffer of TLV data - #[account( - init, - space = get_meta_list_size(get_approve_account_pda(mint.key())), - seeds = [META_LIST_ACCOUNT_SEED, mint.key().as_ref()], - bump, - payer = payer, - )] - pub extra_metas_account: UncheckedAccount<'info>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> AddRoyalties<'info> { - fn update_token_metadata_field(&self, field: Field, value: String) -> ProgramResult { - let cpi_accounts = TokenMetadataUpdateField { - token_program_id: self.token_program.to_account_info(), - metadata: self.mint.to_account_info(), - update_authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - token_metadata_update_field(cpi_ctx, field, value)?; - Ok(()) - } - - fn update_transfer_hook_program_id(&self) -> Result<()> { - let cpi_accounts = TransferHookUpdate { - token_program_id: self.token_program.to_account_info(), - mint: self.mint.to_account_info(), - authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - transfer_hook_update(cpi_ctx, Some(crate::id()))?; - Ok(()) - } -} - -pub fn handler(ctx: Context, args: UpdateRoyaltiesArgs) -> Result<()> { - // validate that the fee_basis_point is less than 10000 (100%) - require!( - args.royalty_basis_points <= 10000, - MetadataErrors::RoyaltyBasisPointsInvalid - ); - - // add royalty basis points to metadata - ctx.accounts.update_token_metadata_field( - Field::Key(ROYALTY_BASIS_POINTS_FIELD.to_owned()), - args.royalty_basis_points.to_string(), - )?; - - let mut total_share: u8 = 0; - // add creators and their respective shares to metadata - for creator in args.creators { - total_share = total_share - .checked_add(creator.share) - .ok_or(MetadataErrors::CreatorShareInvalid)?; - ctx.accounts.update_token_metadata_field( - Field::Key(creator.address.to_string()), - creator.share.to_string(), - )?; - } - - if total_share != 100 { - return Err(MetadataErrors::CreatorShareInvalid.into()); - } - - // initialize the extra metas account - let extra_metas_account = &ctx.accounts.extra_metas_account; - let metas = get_meta_list(get_approve_account_pda(ctx.accounts.mint.key())); - let mut data = extra_metas_account.try_borrow_mut_data()?; - ExtraAccountMetaList::init::(&mut data, &metas)?; - - // add metadata program as the transfer hook program - ctx.accounts.update_transfer_hook_program_id()?; - - // transfer minimum rent to mint account - update_account_lamports_to_minimum_balance( - ctx.accounts.mint.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.system_program.to_account_info(), - )?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/royalties/modify.rs b/programs/wen_new_standard/src/instructions/mint/royalties/modify.rs deleted file mode 100644 index 109d7073..00000000 --- a/programs/wen_new_standard/src/instructions/mint/royalties/modify.rs +++ /dev/null @@ -1,134 +0,0 @@ -use std::str::FromStr; - -use anchor_lang::{ - prelude::*, - solana_program::{entrypoint::ProgramResult, program::invoke}, -}; - -use anchor_spl::token_interface::{ - spl_token_2022::{ - extension::{BaseStateWithExtensions, StateWithExtensions}, - state::Mint as BaseStateMint, - }, - spl_token_metadata_interface::instruction::remove_key, - spl_token_metadata_interface::state::Field, - spl_token_metadata_interface::state::TokenMetadata, - token_metadata_update_field, Mint, Token2022, TokenMetadataUpdateField, -}; - -use crate::{ - update_account_lamports_to_minimum_balance, MetadataErrors, UpdateRoyaltiesArgs, - ROYALTY_BASIS_POINTS_FIELD, -}; - -#[derive(Accounts)] -#[instruction(args: UpdateRoyaltiesArgs)] -pub struct ModifyRoyalties<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account()] - pub authority: Signer<'info>, - #[account( - mut, - mint::token_program = token_program, - )] - pub mint: Box>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> ModifyRoyalties<'info> { - fn update_token_metadata_field(&self, field: Field, value: String) -> ProgramResult { - let cpi_accounts = TokenMetadataUpdateField { - token_program_id: self.token_program.to_account_info(), - metadata: self.mint.to_account_info().clone(), - update_authority: self.authority.to_account_info(), - }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); - token_metadata_update_field(cpi_ctx, field, value)?; - Ok(()) - } - - // ToDo: Create a macro for it - fn remove_token_metadata_field(&self, field: &str) -> Result<()> { - invoke( - &remove_key( - &self.token_program.key(), - &self.mint.key(), - &self.authority.key(), - field.to_string(), - false, - ), - &[ - self.mint.to_account_info(), - self.authority.to_account_info(), - ], - )?; - - Ok(()) - } -} - -pub fn handler(ctx: Context, args: UpdateRoyaltiesArgs) -> Result<()> { - let metadata = { - let mint_account = ctx.accounts.mint.to_account_info().clone(); - let mint_account_data = mint_account.try_borrow_data()?; - let mint_data = StateWithExtensions::::unpack(&mint_account_data)?; - mint_data.get_variable_len_extension::()? - }; - - // validate that the fee_basis_point is less than 10000 (100%) - require!( - args.royalty_basis_points <= 10000, - MetadataErrors::RoyaltyBasisPointsInvalid - ); - - // since this field is already there, it will just update it with the new value if there is one - ctx.accounts.update_token_metadata_field( - Field::Key(ROYALTY_BASIS_POINTS_FIELD.to_owned()), - args.royalty_basis_points.to_string(), - )?; - - let mut total_share: u8 = 0; - // add creators and their respective shares to metadata - for creator in args.creators.clone() { - // validate that the creator is a valid publickey - total_share = total_share - .checked_add(creator.share) - .ok_or(MetadataErrors::CreatorShareInvalid)?; - ctx.accounts.update_token_metadata_field( - Field::Key(creator.address.to_string()), - creator.share.to_string(), - )?; - } - - if total_share != 100 { - return Err(MetadataErrors::CreatorShareInvalid.into()); - } - - // for all the keys in metadata.additional_metadata, if the key is not in the args, remove it - let creators = args.creators; - let creators_additional_metadata: Vec<&(String, String)> = metadata - .additional_metadata - .iter() - .filter(|(key, _)| !key.starts_with("royalty")) - .collect(); - - for (key, _) in creators_additional_metadata { - if !creators - .iter() - .any(|creator| creator.address == Pubkey::from_str(key).unwrap()) - { - ctx.accounts.remove_token_metadata_field(key)?; - } - } - - // transfer minimum rent to mint account - update_account_lamports_to_minimum_balance( - ctx.accounts.mint.to_account_info(), - ctx.accounts.payer.to_account_info(), - ctx.accounts.system_program.to_account_info(), - )?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mint/thaw.rs b/programs/wen_new_standard/src/instructions/mint/thaw.rs deleted file mode 100644 index c25c0b21..00000000 --- a/programs/wen_new_standard/src/instructions/mint/thaw.rs +++ /dev/null @@ -1,63 +0,0 @@ -use anchor_lang::prelude::*; - -use anchor_spl::token_interface::{ - spl_pod::solana_program::program_option::COption, thaw_account, Mint, ThawAccount, Token2022, - TokenAccount, -}; - -use crate::{Manager, MintErrors, MANAGER_SEED}; - -#[derive(Accounts)] -pub struct ThawDelegatedAccount<'info> { - #[account()] - /// CHECK: can be any account - pub user: UncheckedAccount<'info>, - #[account(mut)] - pub delegate_authority: Signer<'info>, - #[account( - constraint = mint.freeze_authority == COption::Some(manager.key()) @MintErrors::InvalidFreezeAuthority - )] - pub mint: Box>, - #[account( - mut, - associated_token::token_program = token_program, - associated_token::mint = mint, - associated_token::authority = user, - constraint = mint_token_account.delegate == COption::Some(delegate_authority.key()) @MintErrors::InvalidDelegateAuthority - )] - pub mint_token_account: Box>, - #[account( - seeds = [MANAGER_SEED], - bump - )] - pub manager: Account<'info, Manager>, - pub token_program: Program<'info, Token2022>, -} - -impl<'info> ThawDelegatedAccount<'info> { - fn thaw(&self, bumps: ThawDelegatedAccountBumps) -> Result<()> { - let seeds: &[&[u8]; 2] = &[MANAGER_SEED, &[bumps.manager]]; - let signer_seeds = &[&seeds[..]]; - - let cpi_accounts = ThawAccount { - account: self.mint_token_account.to_account_info(), - mint: self.mint.to_account_info(), - authority: self.manager.to_account_info(), - }; - let cpi_ctx = CpiContext::new_with_signer( - self.token_program.to_account_info(), - cpi_accounts, - signer_seeds, - ); - thaw_account(cpi_ctx)?; - - Ok(()) - } -} - -pub fn handler(ctx: Context) -> Result<()> { - // thaw the token account - ctx.accounts.thaw(ctx.bumps)?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/mod.rs b/programs/wen_new_standard/src/instructions/mod.rs deleted file mode 100644 index 06f3f6b0..00000000 --- a/programs/wen_new_standard/src/instructions/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -pub mod group; -pub mod manager; -pub mod mint; -pub mod royalty; - -pub use group::*; -pub use manager::*; -pub use mint::*; -pub use royalty::*; diff --git a/programs/wen_new_standard/src/instructions/royalty/approve.rs b/programs/wen_new_standard/src/instructions/royalty/approve.rs deleted file mode 100644 index 3a1889f4..00000000 --- a/programs/wen_new_standard/src/instructions/royalty/approve.rs +++ /dev/null @@ -1,127 +0,0 @@ -use std::str::FromStr; - -use anchor_lang::{ - accounts::{interface_account::InterfaceAccount, program::Program}, - prelude::*, - solana_program::account_info::AccountInfo, - system_program::System, -}; -use anchor_spl::token_interface::{ - spl_token_2022::{ - extension::{BaseStateWithExtensions, StateWithExtensions}, - state::Mint as BaseStateMint, - }, - spl_token_metadata_interface::state::TokenMetadata, - Mint, Token2022, TokenAccount, TokenInterface, -}; -use wen_royalty_distribution::{ - cpi::{accounts::UpdateDistribution, update_distribution}, - program::WenRoyaltyDistribution, - UpdateDistributionArgs, -}; - -use crate::{ApproveAccount, APPROVE_ACCOUNT_SEED, ROYALTY_BASIS_POINTS_FIELD}; - -#[derive(Accounts)] -#[instruction(amount: u64)] -pub struct ApproveTransfer<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account(mut)] - pub authority: Signer<'info>, - #[account( - mint::token_program = anchor_spl::token_interface::spl_token_2022::id(), - )] - pub mint: Box>, - #[account( - init_if_needed, - seeds = [APPROVE_ACCOUNT_SEED, mint.key().as_ref()], - bump, - payer = payer, - space = 8 + ApproveAccount::INIT_SPACE, - )] - pub approve_account: Account<'info, ApproveAccount>, - /// CHECK: This account can be any mint or Pubkey::default() - pub payment_mint: UncheckedAccount<'info>, - #[account( - mut, - token::authority = distribution_account, - token::mint = payment_mint, - token::token_program = payment_token_program, - )] - pub distribution_token_account: Option>>, - #[account( - mut, - token::authority = authority, - token::mint = payment_mint, - token::token_program = payment_token_program, - )] - pub authority_token_account: Option>>, - #[account(mut)] - /// CHECK: CPI Checks - pub distribution_account: UncheckedAccount<'info>, - pub system_program: Program<'info, System>, - pub distribution_program: Program<'info, WenRoyaltyDistribution>, - pub token_program: Program<'info, Token2022>, - pub payment_token_program: Option>, -} - -impl ApproveTransfer<'_> { - pub fn distribute_royalties(&self, amount: u64) -> Result<()> { - let distribution_token_account_info = self - .distribution_token_account - .as_ref() - .map(|d| d.to_account_info()); - - let authority_token_account_info = self - .authority_token_account - .as_ref() - .map(|a| a.to_account_info()); - - let payment_token_program_account_info = self - .payment_token_program - .as_ref() - .map(|a| a.to_account_info()); - - let cpi_accounts = UpdateDistribution { - authority: self.authority.to_account_info(), - mint: self.mint.to_account_info(), - payment_mint: self.payment_mint.to_account_info(), - distribution_account: self.distribution_account.to_account_info(), - distribution_token_account: distribution_token_account_info, - authority_token_account: authority_token_account_info, - system_program: self.system_program.to_account_info(), - token_program: self.token_program.to_account_info(), - payment_token_program: payment_token_program_account_info, - }; - let cpi_ctx = CpiContext::new(self.distribution_program.to_account_info(), cpi_accounts); - update_distribution(cpi_ctx, UpdateDistributionArgs { amount }) - } -} - -pub fn handler(ctx: Context, amount: u64) -> Result<()> { - let mint_account = ctx.accounts.mint.to_account_info(); - let mint_account_data = mint_account.try_borrow_data()?; - let mint_data = StateWithExtensions::::unpack(&mint_account_data)?; - let metadata = mint_data.get_variable_len_extension::()?; - - // Load clock and write slot - let clock = Clock::get()?; - ctx.accounts.approve_account.slot = clock.slot; - - // get royalty basis points from metadata Vec(String, String) - let royalty_basis_points = metadata - .additional_metadata - .iter() - .find(|(key, _)| key == ROYALTY_BASIS_POINTS_FIELD) - .map(|(_, value)| value) - .map(|value| u64::from_str(value).unwrap()) - .unwrap_or(0); - - let royalty_amount = (amount * royalty_basis_points) / 10000; - - // transfer royalty amount to distribution pda - ctx.accounts.distribute_royalties(royalty_amount)?; - - Ok(()) -} diff --git a/programs/wen_new_standard/src/instructions/royalty/execute.rs b/programs/wen_new_standard/src/instructions/royalty/execute.rs deleted file mode 100644 index 8006c950..00000000 --- a/programs/wen_new_standard/src/instructions/royalty/execute.rs +++ /dev/null @@ -1,56 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::token_interface::{Mint, TokenAccount}; - -use crate::{hook_in_cpi, ApproveAccount, MetadataErrors, META_LIST_ACCOUNT_SEED}; - -#[derive(Accounts)] -#[instruction(amount: u64)] -pub struct ExecuteTransferHook<'info> { - #[account( - token::mint = mint, - token::token_program = anchor_spl::token_interface::spl_token_2022::id(), - )] - pub source_account: Box>, - #[account( - token::token_program = anchor_spl::token_interface::spl_token_2022::id(), - )] - pub mint: Box>, - #[account( - token::mint = mint, - token::token_program = anchor_spl::token_interface::spl_token_2022::id(), - )] - pub destination_account: Box>, - /// CHECK: can be any type of account, checked with a constraint above - pub owner_delegate: UncheckedAccount<'info>, - /// CHECK: meta list account - #[account( - seeds = [META_LIST_ACCOUNT_SEED, mint.key().as_ref()], - bump, - )] - pub extra_metas_account: UncheckedAccount<'info>, -} - -pub fn handler(ctx: Context) -> Result<()> { - // if transfer is a cpi, enforce royalties if applicable, else do nothing - if hook_in_cpi() { - if ctx.remaining_accounts.is_empty() { - return Err(MetadataErrors::MissingApproveAccount.into()); - } - let mut approve_account: ApproveAccount = AnchorDeserialize::deserialize( - &mut &ctx.remaining_accounts[0].try_borrow_mut_data()?[8..], - )?; - if approve_account.slot == Clock::get()?.slot { - // mark approve account as used by setting slot to 0 - approve_account.slot = 0; - AnchorSerialize::serialize( - &approve_account, - &mut &mut ctx.remaining_accounts[0].try_borrow_mut_data()?[8..], - )?; - Ok(()) - } else { - Err(MetadataErrors::ExpiredApproveAccount.into()) - } - } else { - Ok(()) - } -} diff --git a/programs/wen_new_standard/src/instructions/royalty/mod.rs b/programs/wen_new_standard/src/instructions/royalty/mod.rs deleted file mode 100644 index 225ce0e4..00000000 --- a/programs/wen_new_standard/src/instructions/royalty/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod approve; -pub mod execute; - -pub use approve::*; -pub use execute::*; diff --git a/programs/wen_new_standard/src/lib.rs b/programs/wen_new_standard/src/lib.rs deleted file mode 100644 index f68aa3e6..00000000 --- a/programs/wen_new_standard/src/lib.rs +++ /dev/null @@ -1,116 +0,0 @@ -#![allow(ambiguous_glob_reexports)] - -use anchor_lang::prelude::*; - -pub mod errors; -pub mod instructions; -pub mod state; -pub mod utils; - -pub use errors::*; -pub use instructions::*; -pub use state::*; -pub use utils::*; - -declare_id!("wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM"); - -#[program] -pub mod wen_new_standard { - use super::*; - - /* - Manager instructions - */ - /// Init manager account - pub fn init_manager_account(ctx: Context) -> Result<()> { - instructions::manager::init::handler(ctx) - } - - /// Token group instructions - /// create group - pub fn create_group_account( - ctx: Context, - args: CreateGroupAccountArgs, - ) -> Result<()> { - instructions::group::create::handler(ctx, args) - } - - /// update group - pub fn update_group_account( - ctx: Context, - args: UpdateGroupAccountArgs, - ) -> Result<()> { - instructions::group::update::handler(ctx, args) - } - - /// create mint - pub fn create_mint_account( - ctx: Context, - args: CreateMintAccountArgs, - ) -> Result<()> { - instructions::mint::create::handler(ctx, args) - } - - /// add mint to group - pub fn add_mint_to_group(ctx: Context) -> Result<()> { - instructions::mint::group::add::handler(ctx) - } - - /// remove mint from group - pub fn remove_mint_from_group(ctx: Context) -> Result<()> { - instructions::mint::group::remove::handler(ctx) - } - - /// add royalties to mint - pub fn add_royalties(ctx: Context, args: UpdateRoyaltiesArgs) -> Result<()> { - instructions::mint::royalties::add::handler(ctx, args) - } - - /// modify royalties of mint - pub fn modify_royalties( - ctx: Context, - args: UpdateRoyaltiesArgs, - ) -> Result<()> { - instructions::mint::royalties::modify::handler(ctx, args) - } - - /// add additional metadata to mint - pub fn add_metadata(ctx: Context, args: Vec) -> Result<()> { - instructions::mint::metadata::add::handler(ctx, args) - } - - /// remove additional metadata to mint - pub fn remove_metadata( - ctx: Context, - args: Vec, - ) -> Result<()> { - instructions::mint::metadata::remove::handler(ctx, args) - } - - /// freeze mint - pub fn freeze_mint_account(ctx: Context) -> Result<()> { - instructions::mint::freeze::handler(ctx) - } - - /// thaw mint - pub fn thaw_mint_account(ctx: Context) -> Result<()> { - instructions::mint::thaw::handler(ctx) - } - - /// burn mint - pub fn burn_mint_account(ctx: Context) -> Result<()> { - instructions::mint::burn::handler(ctx) - } - - /// Royalty distribution + enforcement instructions - /// validate transfer - #[interface(spl_transfer_hook_interface::execute)] - pub fn execute(ctx: Context, _amount: u64) -> Result<()> { - instructions::royalty::execute::handler(ctx) - } - - /// approve transfer - pub fn approve_transfer(ctx: Context, buy_amount: u64) -> Result<()> { - instructions::royalty::approve::handler(ctx, buy_amount) - } -} diff --git a/programs/wen_new_standard/src/state/approve.rs b/programs/wen_new_standard/src/state/approve.rs deleted file mode 100644 index 43506542..00000000 --- a/programs/wen_new_standard/src/state/approve.rs +++ /dev/null @@ -1,7 +0,0 @@ -use anchor_lang::prelude::*; - -#[account()] -#[derive(InitSpace)] -pub struct ApproveAccount { - pub slot: u64, -} diff --git a/programs/wen_new_standard/src/state/group.rs b/programs/wen_new_standard/src/state/group.rs deleted file mode 100644 index ad616ec0..00000000 --- a/programs/wen_new_standard/src/state/group.rs +++ /dev/null @@ -1,66 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::token_interface::spl_pod::error::PodSliceError; - -use crate::MetadataErrors; - -/// Data struct for a `TokenGroup` -#[account()] -#[derive(InitSpace)] -pub struct TokenGroup { - /// The authority that can sign to update the group - pub update_authority: Pubkey, - /// The associated mint, used to counter spoofing to be sure that group - /// belongs to a particular mint - pub mint: Pubkey, - /// The current number of group members - pub size: u32, - /// The maximum number of group members - pub max_size: u32, -} - -impl TokenGroup { - /// Creates a new `TokenGroup` state - pub fn new(mint: &Pubkey, update_authority: Pubkey, max_size: u32) -> Self { - Self { - mint: *mint, - update_authority, - size: 0, - max_size, - } - } - - /// Updates the max size for a group - pub fn update_max_size(&mut self, new_max_size: u32) -> Result<()> { - // The new max size cannot be less than the current size - if new_max_size < self.size { - return Err(MetadataErrors::MaxSizeBelowCurrentSize.into()); - } - self.max_size = new_max_size; - Ok(()) - } - - /// Increment the size for a group, returning the new size - pub fn increment_size(&mut self) -> Result { - // The new size cannot be greater than the max size - let new_size = self - .size - .checked_add(1) - .ok_or::(PodSliceError::CalculationFailure.into())?; - if new_size > self.max_size { - return Err(MetadataErrors::SizeExceedsMaxSize.into()); - } - self.size = new_size; - Ok(new_size) - } - - /// Increment the size for a group, returning the new size - pub fn decrement_size(&mut self) -> Result { - // The new size cannot be greater than the max size - let new_size = self - .size - .checked_sub(1) - .ok_or::(PodSliceError::CalculationFailure.into())?; - self.size = new_size; - Ok(new_size) - } -} diff --git a/programs/wen_new_standard/src/state/manager.rs b/programs/wen_new_standard/src/state/manager.rs deleted file mode 100644 index 110b7866..00000000 --- a/programs/wen_new_standard/src/state/manager.rs +++ /dev/null @@ -1,7 +0,0 @@ -use anchor_lang::prelude::*; - -/// Data struct for a `Manager` -#[account()] -#[derive(InitSpace)] -pub struct Manager {} -impl Manager {} diff --git a/programs/wen_new_standard/src/state/member.rs b/programs/wen_new_standard/src/state/member.rs deleted file mode 100644 index 70defaf8..00000000 --- a/programs/wen_new_standard/src/state/member.rs +++ /dev/null @@ -1,24 +0,0 @@ -use anchor_lang::prelude::*; - -/// Data struct for a `TokenGroupMember` -#[account()] -#[derive(InitSpace)] -pub struct TokenGroupMember { - /// The associated mint, used to counter spoofing to be sure that member - /// belongs to a particular mint - pub mint: Pubkey, - /// The pubkey of the `TokenGroup` - pub group: Pubkey, - /// The member number - pub member_number: u32, -} -impl TokenGroupMember { - /// Creates a new `TokenGroupMember` state - pub fn new(mint: &Pubkey, group: &Pubkey, member_number: u32) -> Self { - Self { - mint: *mint, - group: *group, - member_number, - } - } -} diff --git a/programs/wen_new_standard/src/state/mod.rs b/programs/wen_new_standard/src/state/mod.rs deleted file mode 100644 index 6f47ea13..00000000 --- a/programs/wen_new_standard/src/state/mod.rs +++ /dev/null @@ -1,21 +0,0 @@ -use anchor_lang::solana_program::pubkey::Pubkey; - -pub const ROYALTY_BASIS_POINTS_FIELD: &str = "royalty_basis_points"; - -pub const MANAGER_SEED: &[u8] = b"manager"; -pub const GROUP_ACCOUNT_SEED: &[u8] = b"group"; -pub const MEMBER_ACCOUNT_SEED: &[u8] = b"member"; -pub const META_LIST_ACCOUNT_SEED: &[u8] = b"extra-account-metas"; -pub const APPROVE_ACCOUNT_SEED: &[u8] = b"approve-account"; - -pub const TOKEN22: Pubkey = anchor_spl::token_2022::ID; - -pub mod approve; -pub mod group; -pub mod manager; -pub mod member; - -pub use approve::*; -pub use group::*; -pub use manager::*; -pub use member::*; diff --git a/programs/wen_royalty_distribution/Cargo.lock b/programs/wen_royalty_distribution/Cargo.lock deleted file mode 100644 index 71b5b8d2..00000000 --- a/programs/wen_royalty_distribution/Cargo.lock +++ /dev/null @@ -1,2819 +0,0 @@ -# This file is automatically @generated by Cargo. -# 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.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", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "anchor-attribute-access-control" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7368e171b3a317885dc08ec0f74eed9d0ad6c726cc819593aed81440dca926" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-account" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f527df85a8cba3f2bea04e46ed71b66e525ea378c7fec538aa205f4520b73e31" -dependencies = [ - "anchor-syn", - "bs58 0.5.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-constant" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb1dc1845cf8636c2e046a274ca074dabd3884ac8ed11cc4ed64b7e8ef5a318" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-error" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f382e41514c59a77ffa7bb1a47df9a0359564a749b6934485c742c11962e540" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-event" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473a122aeed3f6b666438236338d2ef7833ee5fdc5688e1baa80185d61088a53" -dependencies = [ - "anchor-syn", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-attribute-program" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f88c7ffe2eb40aeac43ffd0d74a6671581158aedfaa0552330a2ef92fa5c889" -dependencies = [ - "anchor-lang-idl", - "anchor-syn", - "anyhow", - "bs58 0.5.1", - "heck", - "proc-macro2", - "quote", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-accounts" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9b97c99dcec135aae0ff908c14bcfcd3e78cfc16a0c6f245135038f0e6d390" -dependencies = [ - "anchor-syn", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-serde" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbece98f6ad9c37070edc0841326c9623a249346cd74f433e7cef69b14f7f31d" -dependencies = [ - "anchor-syn", - "borsh-derive-internal 0.10.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-derive-space" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8badbe2648bc99a85ee05a7a5f9512e5e2af8ffac71476a69350cb278057ac53" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "anchor-lang" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e41feb9c1cd9f4b0fad1c004fc8f289183f3ce27e9db38fa6e434470c716fb1e" -dependencies = [ - "anchor-attribute-access-control", - "anchor-attribute-account", - "anchor-attribute-constant", - "anchor-attribute-error", - "anchor-attribute-event", - "anchor-attribute-program", - "anchor-derive-accounts", - "anchor-derive-serde", - "anchor-derive-space", - "anchor-lang-idl", - "arrayref", - "base64 0.21.7", - "bincode", - "borsh 0.10.3", - "bytemuck", - "getrandom 0.2.14", - "solana-program", - "thiserror", -] - -[[package]] -name = "anchor-lang-idl" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b29da81eae478b1bb846749b06b8a2cb9c6f9ed26ca793b0c916793fdf36adab" -dependencies = [ - "anchor-syn", - "anyhow", - "regex", - "serde", - "serde_json", -] - -[[package]] -name = "anchor-spl" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcee54a30b27ea8317ca647759b5d9701a8c7caaaa0c922c6d3c306a7278a7a" -dependencies = [ - "anchor-lang", - "spl-associated-token-account", - "spl-pod 0.2.2", - "spl-token", - "spl-token-2022", - "spl-token-group-interface", - "spl-token-metadata-interface", -] - -[[package]] -name = "anchor-syn" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac53f2378bc08e89e20c2b893c01986ffd34cfbc69a17e35bd6f754753e9fdad" -dependencies = [ - "anyhow", - "bs58 0.5.1", - "cargo_toml", - "heck", - "proc-macro2", - "quote", - "serde", - "serde_json", - "sha2 0.10.8", - "syn 1.0.109", - "thiserror", -] - -[[package]] -name = "anyhow" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" - -[[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.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", - "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", -] - -[[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 = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -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" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "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.59", - "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 = "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.59", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "cargo_toml" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" -dependencies = [ - "serde", - "toml 0.8.12", -] - -[[package]] -name = "cc" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" -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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] - -[[package]] -name = "console_log" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" -dependencies = [ - "log", - "web-sys", -] - -[[package]] -name = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[package]] -name = "cpufeatures" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" -dependencies = [ - "libc", -] - -[[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", - "syn 2.0.59", -] - -[[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.59", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "crypto-common", - "subtle", -] - -[[package]] -name = "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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" - -[[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 = "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 = "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.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 = "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.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 = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[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 = "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" -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 = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.3", -] - -[[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.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" -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 = "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-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254", - "ark-ff", - "num-bigint", - "thiserror", -] - -[[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.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "merlin" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" -dependencies = [ - "byteorder", - "keccak", - "rand_core 0.6.4", - "zeroize", -] - -[[package]] -name = "num-bigint" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.59", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" -dependencies = [ - "num_enum_derive", -] - -[[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.59", -] - -[[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 = "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", -] - -[[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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[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.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 = "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.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" -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.59", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -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 = "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 = "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 = "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 = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[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.198" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" -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.198" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.59", -] - -[[package]] -name = "serde_json" -version = "1.0.116" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" -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_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.59", -] - -[[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 = "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 = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "solana-frozen-abi" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8177685ab2bc8cc8b3bf63aa1eaa0580d5af850ecefac323ca1c2473085d77" -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.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a68241cad17b74c6034a68ba4890632d409a2c886e7bead9c1e1432befdb7c9" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.59", -] - -[[package]] -name = "solana-logger" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea560989ef67ba4a1a0fd62a248721f1aa5bac8fa5ede9ccf4fe9ee484ccadf" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-program" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bddf573103c890b4ab8f9a6641d4f969d4148bce9a451c263f4a62afa949fae" -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", - "num-bigint", - "num-derive", - "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-sdk" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08b24b06fa176209ddb2a2f8172a00b07e8a3b18229fbfc49f1eb3ce6ad11ff1" -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", - "num-traits", - "num_enum", - "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.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869483c05f18d37d4d95a08d9e05e00a4f76a8c8349aeedeee9ba2d013cbacde" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.59", -] - -[[package]] -name = "solana-security-txt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" - -[[package]] -name = "solana-zk-token-sdk" -version = "1.18.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459c27f7b954798677d8243aa53b8080cfb314ecfecbf8889a5a65c91ad11fee" -dependencies = [ - "aes-gcm-siv", - "base64 0.21.7", - "bincode", - "bytemuck", - "byteorder", - "curve25519-dalek", - "getrandom 0.1.16", - "itertools", - "lazy_static", - "merlin", - "num-derive", - "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 = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" -dependencies = [ - "assert_matches", - "borsh 1.4.0", - "num-derive", - "num-traits", - "solana-program", - "spl-token", - "spl-token-2022", - "thiserror", -] - -[[package]] -name = "spl-discriminator" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.1.2", -] - -[[package]] -name = "spl-discriminator" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.2.0", -] - -[[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 0.1.2", - "syn 2.0.59", -] - -[[package]] -name = "spl-discriminator-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" -dependencies = [ - "quote", - "spl-discriminator-syn 0.2.0", - "syn 2.0.59", -] - -[[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.59", - "thiserror", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.59", - "thiserror", -] - -[[package]] -name = "spl-memo" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e9bae02de3405079a057fe244c867a08f92d48327d231fc60da831f94caf0a" -dependencies = [ - "solana-program", -] - -[[package]] -name = "spl-pod" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-pod" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" -dependencies = [ - "borsh 1.4.0", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.4.0", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive 0.3.2", - "thiserror", -] - -[[package]] -name = "spl-program-error" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5528f4dfa2a905012007999526955c79162c09668c69ad3c3f2ddfbd0b2984a4" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive 0.4.0", - "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.59", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "641aa3116b1d58481e921b5d41dafc26a67bd488cb288330dbde004641764dd4" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.59", -] - -[[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 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-token" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ae123223633a389f95d1da9d49c2d0a50d499e7060b9624626a69e536ad2a4" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "thiserror", -] - -[[package]] -name = "spl-token-2022" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-token-sdk", - "spl-memo", - "spl-pod 0.2.2", - "spl-token", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface 0.6.3", - "spl-type-length-value 0.4.3", - "thiserror", -] - -[[package]] -name = "spl-token-group-interface" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" -dependencies = [ - "borsh 1.4.0", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6dfe329fcff44cbe2eea994bd8f737f0b0a69faed39e56f9b6ee03badf7e14" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-tlv-account-resolution 0.5.2", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-tlv-account-resolution 0.6.3", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-type-length-value" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-type-length-value" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", -] - -[[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" -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.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" -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.59", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.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.59", -] - -[[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.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.9", -] - -[[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.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.6", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[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 = "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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[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.59", - "wasm-bindgen-shared", -] - -[[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.59", - "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 = "wen_royalty_distribution" -version = "0.2.0-alpha" -dependencies = [ - "anchor-lang", - "anchor-spl", - "spl-tlv-account-resolution 0.4.0", - "spl-transfer-hook-interface 0.5.1", -] - -[[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-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[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_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[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_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[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_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[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.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" -dependencies = [ - "memchr", -] - -[[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.59", -] - -[[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.59", -] diff --git a/programs/wen_royalty_distribution/Cargo.toml b/programs/wen_royalty_distribution/Cargo.toml deleted file mode 100644 index 4c7bee3b..00000000 --- a/programs/wen_royalty_distribution/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "wen_royalty_distribution" -version = "0.2.0-alpha" -description = "Distribution program for WNS royalties" -edition = "2018" - -[package.metadata.docs.rs] -tags = ["wns", "alpha", "solana", "token_extensions"] - -[lib] -crate-type = ["cdylib", "lib"] -name = "wen_royalty_distribution" - -[features] -no-entrypoint = [] -no-idl = [] -cpi = ["no-entrypoint"] -default = [] -idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] - - -[dependencies] -anchor-lang = { workspace = true, features = ["init-if-needed"] } -anchor-spl.workspace = true -spl-transfer-hook-interface.workspace = true -spl-tlv-account-resolution.workspace = true -bincode = "1.3.3" -serde = "1.0.203" diff --git a/programs/wen_royalty_distribution/README.md b/programs/wen_royalty_distribution/README.md deleted file mode 100644 index 3ccbe164..00000000 --- a/programs/wen_royalty_distribution/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# WEN Royalty Distribution - ---- - -## Table of Contents - -- [Program Instructions](#program-instructions) -- [State structs](#state-structs) -- [Lifecycle of Program](#lifecycle-of-instructions) - ---- - -### Program Instructions - -The core functionality of this program is to aid creators to be able to withdraw their royalty shares whenever a token transfer is made through a CPI (Protocols like Magic Eden or any Marketplace). There are 3 vital instructions that help us achieve the above - -1. `initialize` - Allows a Distriibution account PDA to be initialized and be filled with the necessary values - -#### Accounts required - -- payer [signer, writable] -- group_mint (collection_nft) [] -- distribution_account [writable] -- token_extensions_program [] -- system_program [] - -2. `update` - Allows a Distribution account become a vault to either store native SOL or any SPL mentioned w.r.t the creators share fetched from the metadata under the NFT, referring the `payment_field` of the Distribution account's state. - -#### Accounts required - -- authority [signer, writable] -- member_mint (member_nft) [] -- distribution_account [writable] -- authority_token_account [writable] -- distribution_token_account [writable] -- system_program [] -- associated_token_program [] -- token_extensions_program [] - -3. `claim` - Once the transfer is completed, the vault keeps a note of `claim_data` of which creator requires how much percentage of the vault royalty funds. Allows any `creator` to withdraw their share. - -#### Accounts required - -- creator [signer, writable] -- distribution_token_account [writable] -- distribution_account [writable] -- creator_token_account [writable] -- token_extensions_program [] - -### State structs - -The distribution account contains the state values by the following struct - -```rust -pub struct Creator { - /// creator address - pub address: Pubkey, - /// token amount that creator can claim - pub claim_amount: u64, -} - -pub struct DistributionAccount { - /// distribution version (currently defaulted to 1) - pub version: u8, - /// The collection NFT - pub group_mint: Pubkey, - /// payment mint for the distribution account - pub payment_mint: Pubkey, - #[max_len(10)] // we currently support 10 creators - pub claim_data: Vec, -} -``` - ---- - -### Lifecycle of program - -1. The `initialize` function is called after a group account is created in WNS program. This makes sure for every collection that's being created, a distribution vault is also created at a 1:1 account mapping. - -2. After member NFTs (mint accounts in WNS program), are minted, the mint accounts are added into the group account and royalty metadata fields are pushed to the individual member NFT mint address. The specific metadata fields are the following key value pairs. - -- royalty_basis_points (Similar to creator_basis_points in metaplex NFTs) <=> percentage from each sale -- creator key <=> share percentage of the royalty fee. - -So for example, if the royalty is 10%, and we have 2 creators who takes equal splits, the additional metadata would be of the following - -```rust -let additional_metadata = Vec<[String; 2]> = [ - ["royalty_basis_points", "1000"], - [Pubkey::new_unique().to_string(), "50"], - [Pubkey::new_unique().to_string(), "50"], -] -``` - -Since in token extensions, we can't update metadata fields in batch, each additional field requires a new CPI call to the token extensions program. - -Now if a program has to first call the `approve_transfer` ix to set the `Clock`'s slot value for enforcing royalties. This `approve_transfer` makes sure to transfer the funds that was used for purchase of the NFT towards the `update` function of this program resulting in depositing under the `distribution_account` or `distribution_token_account` (for SOL and SPL transfers respectively). - -3. Once the transfer is done (with transfer hook execute function verifying the royalty enforcement), creators can call the `claim` function anytime they wish to withdraw their share of the royalty fund pool. diff --git a/programs/wen_royalty_distribution/src/errors.rs b/programs/wen_royalty_distribution/src/errors.rs deleted file mode 100644 index 7403c473..00000000 --- a/programs/wen_royalty_distribution/src/errors.rs +++ /dev/null @@ -1,15 +0,0 @@ -use anchor_lang::prelude::*; - -#[error_code] -pub enum DistributionErrors { - #[msg("Invalid Group Authority for collection account")] - InvalidGroupAuthority, - #[msg("Invalid creator pct amount. Must add up to 100")] - InvalidCreatorPctAmount, - #[msg("Invalid payment token account")] - InvalidPaymentTokenAccount, - #[msg("Invalid payment token program")] - InvalidPaymentTokenProgram, - #[msg("Arithmetic overflow")] - ArithmeticOverflow, -} diff --git a/programs/wen_royalty_distribution/src/instructions/claim.rs b/programs/wen_royalty_distribution/src/instructions/claim.rs deleted file mode 100644 index a18a978d..00000000 --- a/programs/wen_royalty_distribution/src/instructions/claim.rs +++ /dev/null @@ -1,143 +0,0 @@ -use anchor_lang::{ - prelude::*, - solana_program::{program::invoke, program_pack::Pack, system_instruction::transfer}, -}; -use anchor_spl::{ - token::{spl_token::state::Mint as TokenMint, ID as token_keg_program_id}, - token_2022::spl_token_2022::{extension::StateWithExtensions, state::Mint as Token2022Mint}, - token_interface::{transfer_checked, TokenAccount, TokenInterface, TransferChecked}, -}; - -use crate::{ - get_and_clear_creator_royalty_amount, get_bump_in_seed_form, Creator, DistributionAccount, - DistributionErrors, CLAIM_DATA_OFFSET, -}; - -#[derive(Accounts)] -pub struct ClaimDistribution<'info> { - #[account(mut)] - pub creator: Signer<'info>, - #[account( - mut, - has_one = payment_mint, - seeds = [distribution.group_mint.as_ref(), payment_mint.key().as_ref()], - bump, - )] - pub distribution: Account<'info, DistributionAccount>, - /// CHECK: can be Pubkey::default() or mint address - #[account()] - pub payment_mint: UncheckedAccount<'info>, - #[account( - mut, - token::authority = distribution, - token::mint = payment_mint, - token::token_program = token_program, - )] - pub distribution_token_account: Option>>, - #[account( - mut, - token::authority = creator, - token::mint = payment_mint, - token::token_program = token_program, - )] - pub creator_token_account: Option>>, - pub token_program: Interface<'info, TokenInterface>, - pub system_program: Program<'info, System>, -} - -impl ClaimDistribution<'_> { - pub fn transfer_tokens(&self, amount: u64, signer_seeds: &[&[&[u8]]]) -> Result<()> { - let mint_data = self.payment_mint.try_borrow_data()?; - let mint_decimals = if self.token_program.key.eq(&token_keg_program_id) { - TokenMint::unpack(&mint_data)?.decimals - } else { - StateWithExtensions::::unpack(&mint_data)? - .base - .decimals - }; - - let creator_token_account = self - .creator_token_account - .clone() - .ok_or(DistributionErrors::InvalidPaymentTokenAccount)?; - - let distribution_token_account = self - .distribution_token_account - .clone() - .ok_or(DistributionErrors::InvalidPaymentTokenAccount)?; - - let cpi_accounts = TransferChecked { - mint: self.payment_mint.to_account_info(), - from: distribution_token_account.to_account_info(), - to: creator_token_account.to_account_info(), - authority: self.distribution.to_account_info(), - }; - let cpi_program = self.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer_seeds); - transfer_checked(cpi_ctx, amount, mint_decimals)?; - Ok(()) - } - - pub fn transfer_sol(&self, amount: u64) -> Result<()> { - invoke( - &transfer(self.creator.key, &self.distribution.key(), amount), - &[ - self.creator.to_account_info(), - self.distribution.to_account_info(), - self.system_program.to_account_info(), - ], - )?; - - Ok(()) - } -} - -pub fn handler(ctx: Context) -> Result<()> { - let mut claim_data = ctx.accounts.distribution.claim_data.clone(); - let payment_mint = &ctx.accounts.payment_mint; - - let claim_amount = - get_and_clear_creator_royalty_amount(ctx.accounts.creator.key(), &mut claim_data); - - if claim_amount == 0 { - return Ok(()); // No royalties to claim - } - - let payment_mint = payment_mint.key(); - - let signer_seeds = [ - ctx.accounts.distribution.group_mint.as_ref(), - payment_mint.as_ref(), - &get_bump_in_seed_form(&ctx.bumps.distribution), - ]; - let rent = Rent::get()?; - // Transfer the claim amount - if payment_mint == Pubkey::default() { - ctx.accounts.distribution.sub_lamports(claim_amount)?; - ctx.accounts.creator.add_lamports(claim_amount)?; - } else { - ctx.accounts - .transfer_tokens(claim_amount, &[&signer_seeds])?; - } - - // Update the distribution account data - let new_creator_size = - std::cmp::max(claim_data.len() * Creator::INIT_SPACE, Creator::INIT_SPACE); - let realloc_size = CLAIM_DATA_OFFSET + new_creator_size; - - // Transfer min rent in or out of distribution account - let min_rent = rent.minimum_balance(realloc_size); - let current_lamports = ctx.accounts.distribution.to_account_info().lamports(); - if min_rent > current_lamports { - let updated_amount = min_rent - current_lamports; - ctx.accounts.transfer_sol(updated_amount)?; - } - - ctx.accounts.distribution.claim_data = claim_data; - - ctx.accounts - .distribution - .to_account_info() - .realloc(realloc_size, false)?; - Ok(()) -} diff --git a/programs/wen_royalty_distribution/src/instructions/initialize.rs b/programs/wen_royalty_distribution/src/instructions/initialize.rs deleted file mode 100644 index 99eb2d19..00000000 --- a/programs/wen_royalty_distribution/src/instructions/initialize.rs +++ /dev/null @@ -1,32 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::token_interface::Mint; - -use crate::DistributionAccount; - -#[derive(Accounts)] -#[instruction(payment_mint: Pubkey)] -pub struct InitializeDistribution<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account( - mint::token_program = anchor_spl::token_interface::spl_token_2022::id() - )] - /// CHECK: group account, can be any account - pub group_mint: Box>, - #[account( - init, - seeds = [group_mint.key().as_ref(), payment_mint.as_ref()], - bump, - payer = payer, - space = 8 + DistributionAccount::INIT_SPACE - )] - pub distribution_account: Box>, - pub system_program: Program<'info, System>, -} - -pub fn handler(ctx: Context, payment_mint: Pubkey) -> Result<()> { - ctx.accounts - .distribution_account - .initialize_account_data(ctx.accounts.group_mint.key(), payment_mint); - Ok(()) -} diff --git a/programs/wen_royalty_distribution/src/instructions/mod.rs b/programs/wen_royalty_distribution/src/instructions/mod.rs deleted file mode 100644 index d4f91dd7..00000000 --- a/programs/wen_royalty_distribution/src/instructions/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -#![allow(ambiguous_glob_reexports)] - -pub mod claim; -pub mod initialize; -pub mod update; - -pub use claim::*; -pub use initialize::*; -pub use update::*; diff --git a/programs/wen_royalty_distribution/src/instructions/update.rs b/programs/wen_royalty_distribution/src/instructions/update.rs deleted file mode 100644 index 14ca8116..00000000 --- a/programs/wen_royalty_distribution/src/instructions/update.rs +++ /dev/null @@ -1,239 +0,0 @@ -use std::str::FromStr; - -use anchor_lang::{ - prelude::*, - solana_program::{program::invoke, program_pack::Pack, system_instruction::transfer}, -}; - -use anchor_spl::{ - token::{spl_token::state::Mint as TokenMint, ID as token_keg_program_id}, - token_interface::{ - spl_token_2022::{ - extension::{BaseStateWithExtensions, StateWithExtensions}, - state::Mint as Token2022Mint, - }, - spl_token_metadata_interface::state::TokenMetadata, - transfer_checked, Mint, TokenAccount, TokenInterface, TransferChecked, - }, -}; - -use crate::{ - Creator, DistributionAccount, DistributionErrors, CLAIM_DATA_OFFSET, ROYALTY_BASIS_POINTS_FIELD, -}; - -#[derive(AnchorSerialize, AnchorDeserialize)] -pub struct CreatorShare { - /// creator address - pub address: Pubkey, - /// creator share percentage - pub pct: u8, -} - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct UpdateDistributionArgs { - pub amount: u64, -} - -#[derive(Accounts)] -#[instruction()] -pub struct UpdateDistribution<'info> { - #[account(mut)] - pub authority: Signer<'info>, - #[account( - mint::token_program = anchor_spl::token_interface::spl_token_2022::id(), - )] - pub mint: Box>, - /// CHECK: can be Pubkey::default() or mint address - #[account()] - pub payment_mint: UncheckedAccount<'info>, - #[account( - mut, - has_one = payment_mint, - seeds = [distribution_account.group_mint.as_ref(), payment_mint.key().as_ref()], - bump, - )] - pub distribution_account: Account<'info, DistributionAccount>, - #[account( - mut, - token::authority = distribution_account, - token::mint = payment_mint, - token::token_program = payment_token_program, - )] - pub distribution_token_account: Option>>, - #[account( - mut, - token::authority = authority, - token::mint = payment_mint, - token::token_program = payment_token_program, - )] - pub authority_token_account: Option>>, - pub token_program: Interface<'info, TokenInterface>, - pub payment_token_program: Option>, - pub system_program: Program<'info, System>, -} - -impl UpdateDistribution<'_> { - pub fn transfer_royalty_amount(&self, amount: u64) -> Result<()> { - if self.payment_token_program.is_none() { - return err!(DistributionErrors::InvalidPaymentTokenProgram); - } - - let cpi_program = self.payment_token_program.clone().unwrap(); - - let mint_data = self.payment_mint.try_borrow_data()?; - let mint_decimals = if self.token_program.key.eq(&token_keg_program_id) { - TokenMint::unpack(&mint_data)?.decimals - } else { - StateWithExtensions::::unpack(&mint_data)? - .base - .decimals - }; - - let authority_token_account = self - .authority_token_account - .clone() - .ok_or(DistributionErrors::InvalidPaymentTokenAccount)?; - - let distribution_token_account = self - .distribution_token_account - .clone() - .ok_or(DistributionErrors::InvalidPaymentTokenAccount)?; - - let cpi_accounts = TransferChecked { - mint: self.payment_mint.to_account_info(), - from: authority_token_account.to_account_info(), - to: distribution_token_account.to_account_info(), - authority: self.authority.to_account_info(), - }; - - let cpi_ctx = CpiContext::new(cpi_program.to_account_info(), cpi_accounts); - transfer_checked(cpi_ctx, amount, mint_decimals)?; - Ok(()) - } - - pub fn transfer_sol(&self, amount: u64) -> Result<()> { - invoke( - &transfer(self.authority.key, &self.distribution_account.key(), amount), - &[ - self.authority.to_account_info(), - self.distribution_account.to_account_info(), - self.system_program.to_account_info(), - ], - )?; - - Ok(()) - } -} - -pub fn handler(ctx: Context, args: UpdateDistributionArgs) -> Result<()> { - let mint_account = ctx.accounts.mint.to_account_info(); - let mint_account_data = mint_account.try_borrow_data()?; - let mint_data = StateWithExtensions::::unpack(&mint_account_data)?; - let metadata = mint_data.get_variable_len_extension::()?; - if args.amount == 0 { - return Ok(()); - } - - // get all creators from metadata Vec(String, String), only royalty_basis_points needs to be removed - let creators = metadata - .additional_metadata - .iter() - .filter(|(key, _)| key != ROYALTY_BASIS_POINTS_FIELD) - .filter_map(|(key, value)| match Pubkey::from_str(key) { - Ok(pubkey) => Some(CreatorShare { - address: pubkey, - pct: u8::from_str(value).unwrap(), - }), - Err(_) => None, - }) - .collect::>(); - - // update creator amounts in distribution account. add creator if not present, else update amount (amount * pct / 100) - let current_data = ctx.accounts.distribution_account.claim_data.clone(); - let rent = Rent::get()?; - let current_rent = rent.minimum_balance( - ctx.accounts - .distribution_account - .to_account_info() - .data_len(), - ); - let mut new_data = vec![]; - // Incoming creator updates - for creator in creators.iter() { - let mut creator_found = false; - for current_creator in current_data.iter() { - if creator.address == current_creator.address { - creator_found = true; - new_data.push(Creator { - address: creator.address, - claim_amount: current_creator - .claim_amount - .checked_add( - (args - .amount - .checked_mul(creator.pct as u64) - .ok_or(DistributionErrors::ArithmeticOverflow)?) - .checked_div(100) - .ok_or(DistributionErrors::ArithmeticOverflow)?, - ) - .ok_or(DistributionErrors::ArithmeticOverflow)?, - }); - break; - } - } - if !creator_found { - new_data.push(Creator { - address: creator.address, - claim_amount: (args - .amount - .checked_mul(creator.pct as u64) - .ok_or(DistributionErrors::ArithmeticOverflow)?) - .checked_div(100) - .ok_or(DistributionErrors::ArithmeticOverflow)?, - }); - } - } - - // add creators from old data with claim amount > 0 if not present in incoming creator updates - for creator in current_data.iter() { - if creator.claim_amount > 0 { - let mut creator_found = false; - for new_creator in new_data.iter() { - if creator.address == new_creator.address { - creator_found = true; - break; - } - } - if !creator_found { - new_data.push(creator.clone()); - } - } - } - - let payment_mint = &ctx.accounts.payment_mint; - let payment_mint_pubkey = payment_mint.key(); - - ctx.accounts.distribution_account.claim_data = new_data.clone(); - - let new_creator_size = std::cmp::max(new_data.len() * Creator::INIT_SPACE, Creator::INIT_SPACE); - let realloc_size = CLAIM_DATA_OFFSET + new_creator_size; - - if payment_mint_pubkey == Pubkey::default() { - ctx.accounts.transfer_sol(args.amount)?; - } else { - ctx.accounts.transfer_royalty_amount(args.amount)?; - // transfer min rent in or out of distribution account - let min_rent = rent.minimum_balance(realloc_size); - if current_rent < min_rent { - let new_rent = min_rent - current_rent; - ctx.accounts.transfer_sol(new_rent)?; - } - } - - ctx.accounts - .distribution_account - .to_account_info() - .realloc(realloc_size, false)?; - - Ok(()) -} diff --git a/programs/wen_royalty_distribution/src/lib.rs b/programs/wen_royalty_distribution/src/lib.rs deleted file mode 100644 index bb6e0079..00000000 --- a/programs/wen_royalty_distribution/src/lib.rs +++ /dev/null @@ -1,40 +0,0 @@ -use anchor_lang::prelude::*; - -pub mod errors; -pub mod instructions; -pub mod state; -pub mod utils; - -pub use errors::*; -pub use instructions::*; -pub use state::*; -pub use utils::*; - -declare_id!("diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay"); - -#[program] -pub mod wen_royalty_distribution { - - use super::*; - - /// Initializes a new distribution account. - pub fn initialize_distribution( - ctx: Context, - payment_mint: Pubkey, - ) -> Result<()> { - instructions::initialize::handler(ctx, payment_mint) - } - - /// Update royalty amount for creators a distribution account. - pub fn update_distribution( - ctx: Context, - args: UpdateDistributionArgs, - ) -> Result<()> { - instructions::update::handler(ctx, args) - } - - /// Claim royalties from a distribution account. - pub fn claim_distribution(ctx: Context) -> Result<()> { - instructions::claim::handler(ctx) - } -} diff --git a/programs/wen_royalty_distribution/src/state.rs b/programs/wen_royalty_distribution/src/state.rs deleted file mode 100644 index 996598ed..00000000 --- a/programs/wen_royalty_distribution/src/state.rs +++ /dev/null @@ -1,38 +0,0 @@ -use anchor_lang::prelude::*; -use serde::Serialize; - -#[derive(Clone, AnchorSerialize, AnchorDeserialize, InitSpace, Debug, Serialize)] -pub struct Creator { - /// creator address - pub address: Pubkey, - /// token amount that creator can claim - pub claim_amount: u64, -} - -pub const ROYALTY_BASIS_POINTS_FIELD: &str = "royalty_basis_points"; - -#[account()] -#[derive(InitSpace)] -pub struct DistributionAccount { - /// distribution version - pub version: u8, - /// group to which the distribution account belongs to - pub group_mint: Pubkey, - /// payment mint for the distribution account - pub payment_mint: Pubkey, - #[max_len(1)] // initial length - pub claim_data: Vec, -} - -pub const CLAIM_DATA_OFFSET: usize = 8 + DistributionAccount::INIT_SPACE - Creator::INIT_SPACE; -pub const DISTRIBUTION_ACCOUNT_MIN_LEN: usize = DistributionAccount::INIT_SPACE + 8; - -impl DistributionAccount { - pub const VERSION: u8 = 1; - pub fn initialize_account_data(&mut self, group_mint: Pubkey, payment_mint: Pubkey) { - self.version = Self::VERSION; - self.group_mint = group_mint; - self.payment_mint = payment_mint; - self.claim_data = vec![]; - } -} diff --git a/programs/wen_royalty_distribution/src/utils.rs b/programs/wen_royalty_distribution/src/utils.rs deleted file mode 100644 index 9cbbed6f..00000000 --- a/programs/wen_royalty_distribution/src/utils.rs +++ /dev/null @@ -1,24 +0,0 @@ -use anchor_lang::solana_program::pubkey::Pubkey; - -use crate::Creator; - -/// search for creator, if found return amount and set claim amount to 0 -pub fn get_and_clear_creator_royalty_amount( - creator_address: Pubkey, - claim_data: &mut [Creator], -) -> u64 { - let mut amount = 0; - for creator in claim_data.iter_mut() { - if creator.address == creator_address { - amount = creator.claim_amount; - creator.claim_amount = 0; - break; - } - } - amount -} - -pub fn get_bump_in_seed_form(bump: &u8) -> [u8; 1] { - let bump_val = *bump; - [bump_val] -} diff --git a/programs/wen_transfer_guard/Cargo.toml b/programs/wen_transfer_guard/Cargo.toml deleted file mode 100644 index f2d88516..00000000 --- a/programs/wen_transfer_guard/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "wen_transfer_guard" -version = "0.1.0" -description = "A generic transfer hook implementation for Token Extensions" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "wen_transfer_guard" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] - -[dependencies] -anchor-lang.workspace = true -anchor-spl.workspace = true -spl-pod.workspace = true -spl-transfer-hook-interface.workspace = true -spl-tlv-account-resolution.workspace = true diff --git a/programs/wen_transfer_guard/README.md b/programs/wen_transfer_guard/README.md deleted file mode 100644 index 47586d9f..00000000 --- a/programs/wen_transfer_guard/README.md +++ /dev/null @@ -1,150 +0,0 @@ -# Wen Transfer Guard Program - -The Wen Transfer Guard Program secures token transfers on the Solana blockchain by enforcing customizable rules using the token_2022 program transfer hook interface. - -## How It Works - -### Overview - -1. **Create a Transfer Guard Account:** - - Set up an account with a ruleset and identifiable metadata. - -2. **Update the Guard:** - - Modify the ruleset of the guard account. - -3. **Initialize the Guard:** - - Link the guard to a specific mint. - -4. **Execute Transfer Rules:** - - Enforce the ruleset during token transfers. - -### Instructions Summary - -- `create_guard`: Creates a new transfer guard account. -- `update_guard`: Updates the ruleset of a transfer guard account. -- `initialize`: Assigns extra metas to a given mint, linking the guard to it. -- `execute`: Enforces the ruleset during a token transfer. - -### Guard Ruleset Modes - -- **Metadata Rules:** Validate against custom metadata fields. -- **Amount Rules:** Enforce limits on the amount of tokens being transferred. -- **CPI Rules:** Control which programs can interact with the mint’s tokens. - -### Example Flow (Anchor Based) - -#### Creating a guard - -```ts -const guardMint = web3.Keypair.generate(); - -const guardMintAta = getAssociatedTokenAddressSync( - guardMint.publicKey, - guardAuthority, - false, - TOKEN_2022_PROGRAM_ID -); - -const ix = await program.methods - .createGuard({ - name: "Guard", - symbol: "GRD", - uri: "https://example.com/metadata.json", - additionalFieldsRule: [], - transferAmountRule: null, - cpiRule: { - deny: { 0: [new web3.PublicKey("11111111111111111111111111111111")] }, - }, - }) - .accounts({ - mint: guardMint.publicKey, - mintTokenAccount: guardMintAta, - guardAuthority, - payer, - }) - .instruction(); - -const txId = await sendSignedVtx( - provider, - payer.publicKey, - [payer, guardAuthority, guardMint], - ix -); -``` - -#### Updating a guard - -```ts -const ix = await program.methods - .updateGuard({ - additionFieldsRule: [], - transferAmountRule: null, - cpiRule: { - deny: { 0: [] }, - }, - }) - .accounts({ - mint: guardMint.publicKey, - tokenAccount: guardMintAta, - guardAuthority: kGuardOwner.publicKey, - }) - .instruction(); - -const txId = await sendSignedVtx(provider, payer, [guardAuthority], ix); -``` - -#### Initializing (Assign guard to mint) - -```ts -const [guardAddress] = web3.PublicKey.findProgramAddressSync( - [ - Buffer.from("wen_token_transfer_guard"), - Buffer.from("guard_v1"), - // Not to be confused with the actual mint for the guard to be assigned to. - guardMint.publicKey.toBuffer(), - ], - program.programId -); -const extraMetasAddress = getExtraAccountMetaAddress( - mint.publicKey, - program.programId -); - -const ix = await program.methods - .initialize() - .accountsStrict({ - guard: guardAddress, - mint: mint.publicKey, - mintAuthority: mintAuthority.publicKey, - payer: payer.publicKey, - extraMetasAccount: extraMetasAddress, - systemProgram: web3.SystemProgram.programId, - }) - .instruction(); - -await sendSignedVtx(provider, payer.publicKey, [payer, mintAuthority], ix); -``` - -#### Executing a transfer - -```ts -let ix = await createTransferCheckedWithTransferHookInstruction( - provider.connection, - sourceAta, - mint.publicKey, - destinationAta, - sourceAuthority.publicKey, - BigInt(1e8), // Amount, 1e8 would be something like 0.1 sol (If using 9 decimals). - mint.decimals, - undefined, - undefined, - TOKEN_2022_PROGRAM_ID -); - -await sendSignedVtx( - provider, - context.payer.publicKey, - [kSourceAuthority, context.payer], - ix -); -``` \ No newline at end of file diff --git a/programs/wen_transfer_guard/src/constants.rs b/programs/wen_transfer_guard/src/constants.rs deleted file mode 100644 index d64bf52f..00000000 --- a/programs/wen_transfer_guard/src/constants.rs +++ /dev/null @@ -1,10 +0,0 @@ -use anchor_lang::prelude::*; - -#[constant] -pub const EXTRA_ACCOUNT_METAS: [u8; 19] = *b"extra-account-metas"; - -#[constant] -pub const WEN_TOKEN_GUARD: [u8; 24] = *b"wen_token_transfer_guard"; - -#[constant] -pub const GUARD_V1: [u8; 8] = *b"guard_v1"; diff --git a/programs/wen_transfer_guard/src/error.rs b/programs/wen_transfer_guard/src/error.rs deleted file mode 100644 index 3f706a92..00000000 --- a/programs/wen_transfer_guard/src/error.rs +++ /dev/null @@ -1,21 +0,0 @@ -use anchor_lang::prelude::*; - -#[error_code] -pub enum WenTransferGuardError { - #[msg("Cpi Rule Enforcement Failed")] - CpiRuleEnforcementFailed, - #[msg("Transfer Amount Rule Enforce Failed")] - TransferAmountRuleEnforceFailed, - #[msg("Metadata Field Does Not Exist")] - MetadataFieldDoesNotExist, - #[msg("Metadata Field Does Not Pass")] - MetadataFieldDoesNotPass, - #[msg("Guard token amount should be at least 1")] - GuardTokenAmountShouldBeAtLeastOne, - #[msg("Not owned by token 2022 program")] - NotOwnedByToken2022Program, - #[msg("Must be initialized by Transfer Hook Authority")] - MustBeInitializedByTransferHookAuthority, - #[msg("Mint's assigned Transfer Hook Program is not this one")] - MintAssignedTransferHookProgramIsNotThisOne, -} diff --git a/programs/wen_transfer_guard/src/instructions/create_guard.rs b/programs/wen_transfer_guard/src/instructions/create_guard.rs deleted file mode 100644 index 18a6dde1..00000000 --- a/programs/wen_transfer_guard/src/instructions/create_guard.rs +++ /dev/null @@ -1,120 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::{ - associated_token::AssociatedToken, - token_2022::{mint_to, MintTo, Token2022}, - token_interface::{token_metadata_initialize, Mint, TokenAccount, TokenMetadataInitialize}, -}; - -use crate::{ - tools::{ - update_account_lamports_to_minimum_balance, - UpdateAccountLamportsToMinimumBalanceAccountInfos, - }, - CpiRule, GuardV1, MetadataAdditionalFieldRule, TransferAmountRule, GUARD_V1, WEN_TOKEN_GUARD, -}; - -#[derive(Accounts)] -#[instruction(args: CreateGuardArgs)] -pub struct CreateGuard<'info> { - #[account( - init, - seeds = [WEN_TOKEN_GUARD.as_ref(), GUARD_V1.as_ref(), mint.key().as_ref()], - bump, - payer = payer, - space = GuardV1::size_of(args.cpi_rule, args.transfer_amount_rule, args.additional_fields_rule), - )] - pub guard: Account<'info, GuardV1>, - - #[account( - init, - signer, - payer = payer, - mint::decimals = 0, - mint::authority = guard_authority, - mint::freeze_authority = guard_authority, - extensions::metadata_pointer::authority = guard_authority, - extensions::metadata_pointer::metadata_address = mint, - mint::token_program = token_program, - )] - pub mint: Box>, - - #[account( - init, - payer = payer, - associated_token::mint = mint, - associated_token::authority = guard_authority, - associated_token::token_program = token_program, - )] - pub mint_token_account: Box>, - - pub guard_authority: Signer<'info>, - - #[account(mut)] - pub payer: Signer<'info>, - - pub associated_token_program: Program<'info, AssociatedToken>, - pub token_program: Program<'info, Token2022>, - pub system_program: Program<'info, System>, -} - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct CreateGuardArgs { - pub name: String, - pub symbol: String, - pub uri: String, - pub cpi_rule: Option, - pub transfer_amount_rule: Option, - pub additional_fields_rule: Vec, -} - -/// IX: create_guard -/// Creates a guard and mints an ownership token to the creator. -pub fn processor(ctx: Context, args: CreateGuardArgs) -> Result<()> { - let guard = &mut ctx.accounts.guard; - let bump = ctx.bumps.guard; - - token_metadata_initialize( - CpiContext::new( - ctx.accounts.token_program.to_account_info(), - TokenMetadataInitialize { - token_program_id: ctx.accounts.token_program.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - metadata: ctx.accounts.mint.to_account_info(), // metadata account is the mint, since data is stored in mint - mint_authority: ctx.accounts.guard_authority.to_account_info(), - update_authority: ctx.accounts.guard_authority.to_account_info(), - }, - ), - args.name, - args.symbol, - args.uri, - )?; - - mint_to( - CpiContext::new( - ctx.accounts.token_program.to_account_info(), - MintTo { - mint: ctx.accounts.mint.to_account_info(), - to: ctx.accounts.mint_token_account.to_account_info(), - authority: ctx.accounts.guard_authority.to_account_info(), - }, - ), - 1, - )?; - - guard.set_inner(GuardV1::new( - ctx.accounts.mint.key(), - bump, - args.cpi_rule, - args.transfer_amount_rule, - args.additional_fields_rule, - )); - - update_account_lamports_to_minimum_balance( - UpdateAccountLamportsToMinimumBalanceAccountInfos { - account: ctx.accounts.mint.to_account_info(), - payer: ctx.accounts.payer.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }, - )?; - Ok(()) -} diff --git a/programs/wen_transfer_guard/src/instructions/execute.rs b/programs/wen_transfer_guard/src/instructions/execute.rs deleted file mode 100644 index 5eceb85f..00000000 --- a/programs/wen_transfer_guard/src/instructions/execute.rs +++ /dev/null @@ -1,86 +0,0 @@ -use anchor_lang::{ - prelude::*, - solana_program::sysvar::{self, instructions::get_instruction_relative}, -}; -use anchor_spl::{ - token_2022::spl_token_2022::ID as TOKEN_2022_PROGRAM_ID, - token_interface::{Mint, TokenAccount}, -}; -use spl_tlv_account_resolution::state::ExtraAccountMetaList; -use spl_transfer_hook_interface::instruction::{ExecuteInstruction, TransferHookInstruction}; - -use crate::{ - tools::{check_token_account_is_transferring, get_metadata}, - GuardV1, EXTRA_ACCOUNT_METAS, GUARD_V1, WEN_TOKEN_GUARD, -}; - -#[derive(Accounts)] -pub struct Execute<'info> { - #[account( - token::mint = mint, - token::authority = owner_delegate, - token::token_program = TOKEN_2022_PROGRAM_ID, - )] - pub source_account: Box>, - - #[account(mint::token_program = TOKEN_2022_PROGRAM_ID)] - pub mint: Box>, - - #[account( - token::mint = mint, - token::token_program = TOKEN_2022_PROGRAM_ID, - )] - pub destination_account: Box>, - - pub owner_delegate: SystemAccount<'info>, - - /// CHECK: This account's data is a buffer of TLV data - #[account( - seeds = [EXTRA_ACCOUNT_METAS.as_ref(), mint.key().as_ref()], - bump, - )] - pub extra_metas_account: UncheckedAccount<'info>, - - #[account( - seeds = [WEN_TOKEN_GUARD.as_ref(), GUARD_V1.as_ref(), guard.mint.as_ref()], - bump = guard.bump, - )] - pub guard: Account<'info, GuardV1>, - - /// CHECK: sysvar account for instruction data - #[account(address = sysvar::instructions::id())] - instruction_sysvar_account: UncheckedAccount<'info>, -} - -pub fn processor(ctx: Context, amount: u64) -> Result<()> { - let source_account = &ctx.accounts.source_account; - let destination_account = &ctx.accounts.destination_account; - let mint_account = &ctx.accounts.mint; - let guard = &ctx.accounts.guard; - - check_token_account_is_transferring(&source_account.to_account_info().try_borrow_data()?)?; - check_token_account_is_transferring(&destination_account.to_account_info().try_borrow_data()?)?; - - ExtraAccountMetaList::check_account_infos::( - &ctx.accounts.to_account_infos(), - &TransferHookInstruction::Execute { amount }.pack(), - ctx.program_id, - &ctx.accounts.extra_metas_account.try_borrow_data()?, - )?; - - let metadata = get_metadata(&mint_account.to_account_info()).unwrap_or_else(|_| vec![]); - - // Note: - // In CPI, if program A calls program B and then program B calls this program, - // the the resulting program id from current_ix will be program A. - let caller_program_id = &get_instruction_relative( - 0, - &ctx.accounts.instruction_sysvar_account.to_account_info(), - )? - .program_id; - - // Enforce guard rules - guard.enforce_rules(&metadata, amount, caller_program_id.key())?; - - Ok(()) -} diff --git a/programs/wen_transfer_guard/src/instructions/initialize.rs b/programs/wen_transfer_guard/src/instructions/initialize.rs deleted file mode 100644 index 4f3d240b..00000000 --- a/programs/wen_transfer_guard/src/instructions/initialize.rs +++ /dev/null @@ -1,69 +0,0 @@ -use anchor_lang::{ - prelude::*, - solana_program::sysvar::{self}, -}; -use anchor_spl::{token_2022::spl_token_2022::ID as TOKEN_2022_PROGRAM_ID, token_interface::Mint}; -use spl_tlv_account_resolution::{account::ExtraAccountMeta, state::ExtraAccountMetaList}; -use spl_transfer_hook_interface::instruction::ExecuteInstruction; - -use crate::{ - error::WenTransferGuardError, - tools::{ - is_initialized_by_transfer_hook_authority, is_mint_transfer_hook_assigned_to_this_program, - }, - GuardV1, EXTRA_ACCOUNT_METAS, GUARD_V1, WEN_TOKEN_GUARD, -}; - -#[derive(Accounts)] -pub struct Initialize<'info> { - /// CHECK: This account's data is a buffer of TLV data - #[account( - init, - space = ExtraAccountMetaList::size_of(2).unwrap(), - // space = 8 + 4 + 2 * 35, - seeds = [EXTRA_ACCOUNT_METAS.as_ref(), mint.key().as_ref()], - bump, - payer = payer, - )] - pub extra_metas_account: UncheckedAccount<'info>, - - #[account( - seeds = [WEN_TOKEN_GUARD.as_ref(), GUARD_V1.as_ref(), guard.mint.as_ref()], - bump = guard.bump, - )] - pub guard: Account<'info, GuardV1>, - - #[account( - mint::token_program = TOKEN_2022_PROGRAM_ID, - constraint = is_initialized_by_transfer_hook_authority(&mint.to_account_info(), transfer_hook_authority.key())? @ WenTransferGuardError::MustBeInitializedByTransferHookAuthority, - constraint = is_mint_transfer_hook_assigned_to_this_program(&mint.to_account_info())? @ WenTransferGuardError::MintAssignedTransferHookProgramIsNotThisOne, - )] - pub mint: Box>, - - #[account(mut)] - pub transfer_hook_authority: Signer<'info>, - - pub system_program: Program<'info, System>, - - #[account(mut)] - pub payer: Signer<'info>, -} - -/// IX: Initialize -/// Initializes the ExtraMetasAccount set up with the Guard and System Instruction accounts, -/// assigning the Guard to the current Mint in the process. -pub fn processor(ctx: Context) -> Result<()> { - let extra_metas_account = &ctx.accounts.extra_metas_account; - let guard = &ctx.accounts.guard; - - let mut data = extra_metas_account.try_borrow_mut_data()?; - ExtraAccountMetaList::init::( - &mut data, - &([ - ExtraAccountMeta::new_with_pubkey(&guard.key(), false, false)?, - ExtraAccountMeta::new_with_pubkey(&sysvar::instructions::id(), false, false)?, - ]), - )?; - - Ok(()) -} diff --git a/programs/wen_transfer_guard/src/instructions/mod.rs b/programs/wen_transfer_guard/src/instructions/mod.rs deleted file mode 100644 index 3e62434c..00000000 --- a/programs/wen_transfer_guard/src/instructions/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -#![allow(ambiguous_glob_reexports)] - -pub mod create_guard; -pub mod execute; -pub mod initialize; -pub mod update_guard; - -pub use create_guard::*; -pub use execute::*; -pub use initialize::*; -pub use update_guard::*; diff --git a/programs/wen_transfer_guard/src/instructions/update_guard.rs b/programs/wen_transfer_guard/src/instructions/update_guard.rs deleted file mode 100644 index 0ac1f435..00000000 --- a/programs/wen_transfer_guard/src/instructions/update_guard.rs +++ /dev/null @@ -1,59 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::{ - token_2022::Token2022, - token_interface::{Mint, TokenAccount}, -}; - -use crate::{ - error::WenTransferGuardError, CpiRule, GuardV1, MetadataAdditionalFieldRule, - TransferAmountRule, GUARD_V1, WEN_TOKEN_GUARD, -}; - -#[derive(Accounts)] -#[instruction(args: UpdateGuardArgs)] -pub struct UpdateGuard<'info> { - #[account( - mut, - seeds = [WEN_TOKEN_GUARD.as_ref(), GUARD_V1.as_ref(), mint.key().as_ref()], - bump = guard.bump, - )] - pub guard: Account<'info, GuardV1>, - - #[account( - constraint = guard.mint == mint.key(), - mint::token_program = token_program, - )] - pub mint: Box>, - - #[account( - associated_token::mint = mint, - associated_token::authority = guard_authority, - associated_token::token_program = token_program, - constraint = token_account.amount == 1 @ WenTransferGuardError::GuardTokenAmountShouldBeAtLeastOne - )] - pub token_account: Box>, - - pub guard_authority: Signer<'info>, - - pub token_program: Program<'info, Token2022>, - pub system_program: Program<'info, System>, -} - -#[derive(AnchorDeserialize, AnchorSerialize)] -pub struct UpdateGuardArgs { - pub cpi_rule: Option, - pub transfer_amount_rule: Option, - pub additional_fields_rule: Vec, -} - -/// IX: update_guard -/// Updates a guard after verifying ownership of the token -pub fn processor(ctx: Context, args: UpdateGuardArgs) -> Result<()> { - let guard = &mut ctx.accounts.guard; - guard.update( - args.cpi_rule, - args.transfer_amount_rule, - args.additional_fields_rule, - ); - Ok(()) -} diff --git a/programs/wen_transfer_guard/src/lib.rs b/programs/wen_transfer_guard/src/lib.rs deleted file mode 100644 index ce9efbd2..00000000 --- a/programs/wen_transfer_guard/src/lib.rs +++ /dev/null @@ -1,36 +0,0 @@ -pub mod constants; -pub mod error; -pub mod instructions; -pub mod state; -pub mod tools; - -use anchor_lang::prelude::*; - -pub use constants::*; -pub use instructions::*; -pub use state::*; - -declare_id!("LockdqYQ9X2kwtWB99ioSbxubAmEi8o9jqYwbXgrrRw"); - -#[program] -pub mod wen_transfer_guard { - use super::*; - - pub fn create_guard(ctx: Context, args: CreateGuardArgs) -> Result<()> { - create_guard::processor(ctx, args) - } - - pub fn update_guard(ctx: Context, args: UpdateGuardArgs) -> Result<()> { - update_guard::processor(ctx, args) - } - - #[interface(spl_transfer_hook_interface::initialize_extra_account_meta_list)] - pub fn initialize(ctx: Context) -> Result<()> { - initialize::processor(ctx) - } - - #[interface(spl_transfer_hook_interface::execute)] - pub fn execute(ctx: Context, amount: u64) -> Result<()> { - execute::processor(ctx, amount) - } -} diff --git a/programs/wen_transfer_guard/src/state/anchor_extra_account_meta.rs b/programs/wen_transfer_guard/src/state/anchor_extra_account_meta.rs deleted file mode 100644 index 2e394543..00000000 --- a/programs/wen_transfer_guard/src/state/anchor_extra_account_meta.rs +++ /dev/null @@ -1,21 +0,0 @@ -use anchor_lang::prelude::*; -use spl_tlv_account_resolution::account::ExtraAccountMeta; - -#[derive(AnchorSerialize, AnchorDeserialize)] -pub struct AnchorExtraAccountMeta { - pub discriminator: u8, - pub address_config: [u8; 32], - pub is_signer: bool, - pub is_writable: bool, -} - -impl From for ExtraAccountMeta { - fn from(meta: AnchorExtraAccountMeta) -> Self { - Self { - discriminator: meta.discriminator, - address_config: meta.address_config, - is_signer: meta.is_signer.into(), - is_writable: meta.is_writable.into(), - } - } -} diff --git a/programs/wen_transfer_guard/src/state/guard.rs b/programs/wen_transfer_guard/src/state/guard.rs deleted file mode 100644 index 256e8f7c..00000000 --- a/programs/wen_transfer_guard/src/state/guard.rs +++ /dev/null @@ -1,331 +0,0 @@ -use anchor_lang::prelude::*; - -use crate::error::WenTransferGuardError; - -/// Controls which protocols can interact with the token by -/// enforcing Allow and Deny lists. -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)] -pub enum CpiRule { - Allow(Vec), - Deny(Vec), -} - -impl CpiRule { - pub fn size_of(vec: Vec) -> usize { - 1 + // Enum size - 4 + (vec.len() * 32) // Vec size - } - - /// Enforces the CPI rule set in the guard by - /// checking if the caller program id is in the allow - /// list or in the deny list, depending on the ruleset. - /// - /// ### Arguments - /// - /// * `caller_program_id` - The program id of the caller program. - /// - /// ### Errors - /// - /// * `CpiRuleEnforcementFailed` - The caller program id is not in the allow list or is in the deny list. - /// - pub fn enforce_rule(&self, caller_program_id: &Pubkey) -> Result<()> { - require!( - match self { - CpiRule::Allow(allow_vec) => allow_vec.contains(caller_program_id), - CpiRule::Deny(deny_vec) => !deny_vec.contains(caller_program_id), - }, - WenTransferGuardError::CpiRuleEnforcementFailed - ); - Ok(()) - } -} - -/// Enforces rules on the amount of tokens being transferred. -/// The rules can be above, below, equal to, or within a range. -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)] -pub enum TransferAmountRule { - Above(u64), - Below(u64), - Equal(u64), - Rang(u64, u64), -} - -impl TransferAmountRule { - pub fn size_of() -> usize { - 1 + // Enum size - (8 + 8) // (u64, u64) size (Largest enum variant) - } - - /// Enforces the transfer amount rule set in the guard. - /// The rule can be above, below, equal to, or within a range. - /// If the rule is not met, an error is returned. - /// - /// ### Arguments - /// - /// * `amount` - The amount of tokens being transferred. - /// - /// ### Errors - /// - /// * `TransferAmountRuleEnforceFailed` - The transfer amount rule was not met. - /// - pub fn enforce_rule(&self, amount: u64) -> Result<()> { - match self { - TransferAmountRule::Above(above) => { - require!( - amount > *above, - WenTransferGuardError::TransferAmountRuleEnforceFailed - ); - } - TransferAmountRule::Below(below) => { - require!( - amount < *below, - WenTransferGuardError::TransferAmountRuleEnforceFailed - ); - } - TransferAmountRule::Equal(equal) => { - require!( - amount == *equal, - WenTransferGuardError::TransferAmountRuleEnforceFailed - ); - } - TransferAmountRule::Rang(min, max) => { - require!( - amount > *min && amount < *max, - WenTransferGuardError::TransferAmountRuleEnforceFailed - ); - } - } - Ok(()) - } -} - -/// Inner enum for the MetadataAdditionalFieldRestriction enum. -/// * Includes - The field must include one of the values in the vector. -/// * Excludes - The field must not include any of the values in the vector. -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)] -pub enum MetadataAdditionalFieldRestriction { - Includes(Vec), - Excludes(Vec), -} - -impl MetadataAdditionalFieldRestriction { - pub fn size_of(vec: Vec) -> usize { - 1 + // Enum size - 4 + vec.iter().map(|s| s.len() + 4).sum::() // 4 bytes for vector, plus each string is also a vector so + 4 and length of string - } -} - -/// Enforces rules on a single additional field in the mint metadata. -/// The field must exist and the value must pass the restriction. -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)] -pub struct MetadataAdditionalFieldRule { - field: String, - value_restrictions: Option, -} - -impl MetadataAdditionalFieldRule { - pub fn size_of( - field: String, - value_restrictions: Option, - ) -> usize { - let mut size = 0; - size += 4 + field.len(); // Field - size += 1; // Option - if let Some(restriction) = value_restrictions { - match restriction { - MetadataAdditionalFieldRestriction::Includes(includes) => { - // Add size of includes - size += MetadataAdditionalFieldRestriction::size_of(includes); - } - MetadataAdditionalFieldRestriction::Excludes(excludes) => { - // Add size of excludes - size += MetadataAdditionalFieldRestriction::size_of(excludes); - } - } - } - size - } - - /// Enforces the additional field rule set in the guard by - /// checking if the field exists and if the value passes the restriction. - /// - /// If the restrictions vector is empty, the only requirement is that the field exists. - /// - /// ### Arguments - /// - /// * `metadata` - The mint metadata. - /// - /// ### Errors - /// - /// * `MetadataFieldDoesNotExist` - The field does not exist in the metadata. - /// * `MetadataFieldDoesNotPass` - The field value does not pass the restriction. - /// - pub fn enforce_rule(&self, metadata: &Vec<(String, String)>) -> Result<()> { - let mut field_exists = false; - let mut field_value_passes = false; - - for (key, value) in metadata { - if key == &self.field { - field_exists = true; - if let Some(restriction) = &self.value_restrictions { - match restriction { - MetadataAdditionalFieldRestriction::Includes(includes) => { - if includes.contains(value) { - field_value_passes = true; - break; - } - } - MetadataAdditionalFieldRestriction::Excludes(excludes) => { - if !excludes.contains(value) { - field_value_passes = true; - } else { - field_value_passes = false; - break; - } - } - } - } else { - field_value_passes = true; - } - } - } - - require!( - field_exists, - WenTransferGuardError::MetadataFieldDoesNotExist - ); - if self.value_restrictions.is_some() { - require!( - field_value_passes, - WenTransferGuardError::MetadataFieldDoesNotPass - ); - } - Ok(()) - } -} - -#[account] -pub struct GuardV1 { - /// Mint token representing the guard, do not confuse with the mint of the token being transferred. - pub mint: Pubkey, - /// Bump seed for the guard account. - pub bump: u8, - /// CPI ruleset for the guard. - pub cpi_rule: Option, - /// Transfer amount ruleset for the guard. - pub transfer_amount_rule: Option, - /// Additional fields ruleset for the guard. - pub additional_fields_rule: Vec, -} - -impl GuardV1 { - pub fn size_of( - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Vec, - ) -> usize { - let mut size: usize = 0; - size += 8; // Discriminator - size += 1; // Bump - size += 32; // Mint - - size += 1; // Option (CPIRule) - - // CpiRule size (if present) - if let Some(rule) = cpi_rule { - match rule { - CpiRule::Allow(allow_vec) => { - size += CpiRule::size_of(allow_vec); - } - CpiRule::Deny(deny_vec) => { - size += CpiRule::size_of(deny_vec); - } - } - } - - size += 1; // Option (TransferAmountRule) - - // Transfer amount rule size (if present) - if transfer_amount_rule.is_some() { - size += TransferAmountRule::size_of(); - } - - size += 4; // additional_fields_rules vec length - - // Additional fields rule size - size += additional_fields_rule - .iter() - .map(|rule| { - MetadataAdditionalFieldRule::size_of( - rule.field.clone(), - rule.value_restrictions.clone(), // TODO: Clean up clone - ) - }) - .sum::(); - - size - } - - pub fn new( - mint: Pubkey, - bump: u8, - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Vec, - ) -> Self { - Self { - mint, - bump, - cpi_rule, - transfer_amount_rule, - additional_fields_rule, - } - } - - pub fn update( - &mut self, - cpi_rule: Option, - transfer_amount_rule: Option, - additional_fields_rule: Vec, - ) { - self.cpi_rule = cpi_rule; - self.transfer_amount_rule = transfer_amount_rule; - self.additional_fields_rule = additional_fields_rule; - } - - /// Enforce all rules set in the guard. - /// - /// ### Arguments - /// - /// * `metadata` - The mint metadata. - /// * `amount` - The amount of tokens being transferred. - /// * `caller_program_id` - The program id of the caller program. - /// - /// ### Errors - /// - /// * `CpiRuleEnforcementFailed` - The caller program id is not in the allow list or is in the deny list. - /// * `TransferAmountRuleEnforceFailed` - The transfer amount rule was not met. - /// * `MetadataFieldDoesNotExist` - The field does not exist in the metadata. - /// * `MetadataFieldDoesNotPass` - The field value does not pass the restriction. - /// - pub fn enforce_rules( - &self, - metadata: &Vec<(String, String)>, - amount: u64, - caller_program_id: Pubkey, - ) -> Result<()> { - if let Some(rule) = &self.cpi_rule { - rule.enforce_rule(&caller_program_id)?; - } - - if let Some(rule) = &self.transfer_amount_rule { - rule.enforce_rule(amount)?; - } - - for rule in &self.additional_fields_rule { - rule.enforce_rule(metadata)?; - } - - Ok(()) - } -} diff --git a/programs/wen_transfer_guard/src/state/mod.rs b/programs/wen_transfer_guard/src/state/mod.rs deleted file mode 100644 index c2cd8f44..00000000 --- a/programs/wen_transfer_guard/src/state/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod anchor_extra_account_meta; -pub mod guard; - -pub use anchor_extra_account_meta::*; -pub use guard::*; diff --git a/programs/wen_transfer_guard/src/tools/checks.rs b/programs/wen_transfer_guard/src/tools/checks.rs deleted file mode 100644 index 53a1c4b6..00000000 --- a/programs/wen_transfer_guard/src/tools/checks.rs +++ /dev/null @@ -1,75 +0,0 @@ -use crate::tools::get_transfer_hook_data; -use anchor_lang::prelude::*; -use anchor_spl::token_2022::spl_token_2022::{ - extension::{transfer_hook::TransferHookAccount, BaseStateWithExtensions, StateWithExtensions}, - state::Account as Token2022Account, -}; -use spl_transfer_hook_interface::error::TransferHookError; - -/// Checks that the input token account in the form of account data -/// has been set as transferring by the Token Program, so this only -/// happens within the context of a transfer performed by the Token Program. -/// -/// ### Arguments -/// -/// * `account_data` - The account data of the token account to check. -/// -/// ### Errors -/// -/// * If the token account is not set as transferring. -pub fn check_token_account_is_transferring(account_data: &[u8]) -> Result<()> { - let token_account = StateWithExtensions::::unpack(account_data)?; - let extension = token_account.get_extension::()?; - if bool::from(extension.transferring) { - Ok(()) - } else { - Err(Into::::into( - TransferHookError::ProgramCalledOutsideOfTransfer, - ))? - } -} - -/// Checks if the mint account has been initialized by the transfer hook authority. -/// -/// ### Arguments -/// -/// * `mint_account` - The mint account info to check. -/// * `transfer_hook_authority` - The alleged transfer hook authority. -/// -/// ### Errors -/// -/// * If the mint account data is not initialized with the TransferHook extension or -/// if the data is not serialized correctly. -/// -/// ### Returns -/// -/// A boolean indicating if the mint account has been initialized by the transfer hook authority. -pub fn is_initialized_by_transfer_hook_authority( - mint_account: &AccountInfo, - transfer_hook_authority: Pubkey, -) -> Result { - let transfer_hook_data = get_transfer_hook_data(mint_account)?; - let pubkey = transfer_hook_data.authority.0; - Ok(pubkey == transfer_hook_authority) -} - -/// Checks if the transfer hook data has been initialized and is pointing -/// to the current program. -/// -/// ### Arguments -/// -/// * `mint_account` - The mint account info to check. -/// -/// ### Errors -/// -/// * If the mint account data is not initialized with the TransferHook extension or -/// if the data is not serialized correctly. -/// -/// ### Returns -/// -/// A boolean indicating if the mint account has been initialized by the current program. -pub fn is_mint_transfer_hook_assigned_to_this_program(mint_account: &AccountInfo) -> Result { - let transfer_hook_data = get_transfer_hook_data(mint_account)?; - let pubkey = transfer_hook_data.program_id.0; - Ok(pubkey == crate::ID) -} diff --git a/programs/wen_transfer_guard/src/tools/helpers.rs b/programs/wen_transfer_guard/src/tools/helpers.rs deleted file mode 100644 index 05403f53..00000000 --- a/programs/wen_transfer_guard/src/tools/helpers.rs +++ /dev/null @@ -1,54 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::{ - token_2022::spl_token_2022::{ - extension::{transfer_hook::TransferHook, BaseStateWithExtensions, StateWithExtensions}, - state::Mint as BaseStateMint, - }, - token_interface::spl_token_metadata_interface::state::TokenMetadata, -}; - -/// Attempts to get the additional metadata from a mint account that -/// is supposed to have been initialized with the TokenMetadata extension. -/// -/// ### Arguments -/// -/// * `mint_account` - The mint account to get the metadata from. -/// -/// ### Errors -/// -/// * If the mint account data is not initialized with the TokenMetadata extension or -/// if the data is not serialized correctly. -/// -/// ### Returns -/// -/// A vector of tuples containing the key and value of the additional metadata. -pub fn get_metadata(mint_account: &AccountInfo) -> Result> { - let mint_account_data = mint_account.try_borrow_data()?; - let mint_data: StateWithExtensions<_> = - StateWithExtensions::::unpack(&mint_account_data)?; - let metadata = mint_data.get_variable_len_extension::()?; - Ok(metadata.additional_metadata) -} - -/// Attempts to get the transfer hook data from a mint account that -/// is supposed to have been initialized with the TransferHook extension. -/// -/// ### Arguments -/// -/// * `mint_account` - The mint account to get the transfer hook data from. -/// -/// ### Errors -/// -/// * If the mint account data is not initialized with the TransferHook extension or -/// if the data is not serialized correctly. -/// -/// ### Returns -/// -/// The transfer hook data. -pub fn get_transfer_hook_data(mint_account: &AccountInfo) -> Result { - let mint_account_data = mint_account.try_borrow_data()?; - let mint_data: StateWithExtensions<_> = - StateWithExtensions::::unpack(&mint_account_data)?; - let transfer_hook_data = mint_data.get_extension::()?; - Ok(transfer_hook_data.to_owned()) -} diff --git a/programs/wen_transfer_guard/src/tools/mod.rs b/programs/wen_transfer_guard/src/tools/mod.rs deleted file mode 100644 index 41fead26..00000000 --- a/programs/wen_transfer_guard/src/tools/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod checks; -pub mod helpers; -pub mod space; - -pub use checks::*; -pub use helpers::*; -pub use space::*; diff --git a/programs/wen_transfer_guard/src/tools/space.rs b/programs/wen_transfer_guard/src/tools/space.rs deleted file mode 100644 index bacf1026..00000000 --- a/programs/wen_transfer_guard/src/tools/space.rs +++ /dev/null @@ -1,49 +0,0 @@ -use anchor_lang::{ - prelude::Result, - solana_program::{ - account_info::AccountInfo, program::invoke, rent::Rent, system_instruction::transfer, - sysvar::Sysvar, - }, - Lamports, -}; - -/// Accounts needed to update an account to have the minimum balance -/// required to be rent exempt. -pub struct UpdateAccountLamportsToMinimumBalanceAccountInfos<'info> { - /// CHECK: Source account to update. - pub account: AccountInfo<'info>, - /// CHECK: Account to transfer lamports from. - pub payer: AccountInfo<'info>, - /// CHECK: System program account. - pub system_program: AccountInfo<'info>, -} - -/// Checks if an account has enough lamports to be rent exempt, and if not, -/// transfers enough lamports from the payer to the account to make it rent -/// exempt. -/// -/// ### Arguments -/// -/// * `account_infos` - Accounts needed to update an account to have the minimum -/// balance required to be rent exempt. -/// -/// ### Errors -/// -/// * If the account is not rent exempt and the payer does not have enough -/// lamports to make the account rent exempt. -pub fn update_account_lamports_to_minimum_balance( - UpdateAccountLamportsToMinimumBalanceAccountInfos { - account, - payer, - system_program, - }: UpdateAccountLamportsToMinimumBalanceAccountInfos, -) -> Result<()> { - let extra_lamports = Rent::get()?.minimum_balance(account.data_len()) - account.get_lamports(); - if extra_lamports > 0 { - invoke( - &transfer(payer.key, account.key, extra_lamports), - &[payer, account, system_program], - )?; - } - Ok(()) -} diff --git a/programs/wen_wns_marketplace/Cargo.toml b/programs/wen_wns_marketplace/Cargo.toml deleted file mode 100644 index f9422973..00000000 --- a/programs/wen_wns_marketplace/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "wen_wns_marketplace" -version = "0.1.0" -description = "A minimalistic sale program demonstrating WNS and Wen distribution royalty functionalities" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "wen_wns_marketplace" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = [ - "anchor-lang/idl-build", - "anchor-spl/idl-build", - "wen_new_standard/idl-build", - "wen_royalty_distribution/idl-build" -] - -[dependencies] -anchor-lang.workspace = true -anchor-spl.workspace = true -wen_new_standard.workspace = true -wen_royalty_distribution.workspace = true -spl-transfer-hook-interface.workspace = true diff --git a/programs/wen_wns_marketplace/Xargo.toml b/programs/wen_wns_marketplace/Xargo.toml deleted file mode 100644 index 475fb71e..00000000 --- a/programs/wen_wns_marketplace/Xargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.bpfel-unknown-unknown.dependencies.std] -features = [] diff --git a/programs/wen_wns_marketplace/src/constants.rs b/programs/wen_wns_marketplace/src/constants.rs deleted file mode 100644 index 49662293..00000000 --- a/programs/wen_wns_marketplace/src/constants.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub const MARKETPLACE: &[u8] = b"marketplace"; -pub const LISTING: &[u8] = b"listing"; diff --git a/programs/wen_wns_marketplace/src/errors.rs b/programs/wen_wns_marketplace/src/errors.rs deleted file mode 100644 index 81324e1b..00000000 --- a/programs/wen_wns_marketplace/src/errors.rs +++ /dev/null @@ -1,13 +0,0 @@ -use anchor_lang::prelude::*; - -#[error_code] -pub enum WenWnsMarketplaceError { - #[msg("Buy amount mismatch with listing amount")] - ListingAmountMismatch, - #[msg("SPL Payment token account required")] - PaymentTokenAccountNotExistant, - #[msg("Invalid SPL Payment token account")] - InvalidPaymentTokenAccount, - #[msg("Arithmetic error")] - ArithmeticError, -} diff --git a/programs/wen_wns_marketplace/src/instructions/listing/buy.rs b/programs/wen_wns_marketplace/src/instructions/listing/buy.rs deleted file mode 100644 index 13bc8c21..00000000 --- a/programs/wen_wns_marketplace/src/instructions/listing/buy.rs +++ /dev/null @@ -1,268 +0,0 @@ -use anchor_lang::{ - prelude::*, - system_program::{transfer, Transfer}, -}; -use anchor_spl::{ - associated_token::AssociatedToken, - token_2022::{ - spl_token_2022::{extension::StateWithExtensions, state::Mint as StateMint}, - transfer_checked, Token2022, TransferChecked, - }, - token_interface::{Mint, TokenAccount, TokenInterface}, -}; -use wen_new_standard::{ - cpi::{ - accounts::{ApproveTransfer, ThawDelegatedAccount}, - approve_transfer, thaw_mint_account, - }, - program::WenNewStandard, -}; -use wen_royalty_distribution::{program::WenRoyaltyDistribution, DistributionAccount}; - -use crate::constants::*; -use crate::errors::*; -use crate::state::*; -use crate::utils::*; - -#[derive(Accounts)] -#[instruction(args: FulfillListingArgs)] -pub struct FulfillListing<'info> { - #[account(mut)] - pub payer: Signer<'info>, - - #[account( - mut, - seeds = [ - MARKETPLACE, - LISTING, - listing.seller.as_ref(), - listing.mint.as_ref(), - ], - bump = listing.bump, - has_one = mint, - has_one = seller, - has_one = seller_token_account, - constraint = args.buy_amount.eq(&args.buy_amount) @ WenWnsMarketplaceError::ListingAmountMismatch - )] - pub listing: Account<'info, Listing>, - - /// CHECK: Could be SOL or SPL, checked in distribution program - pub payment_mint: UncheckedAccount<'info>, - - #[account(mut)] - pub buyer: Signer<'info>, - - #[account( - mut, - has_one = payment_mint, - constraint = listing.payment_mint.eq(&distribution.payment_mint), - )] - pub distribution: Account<'info, DistributionAccount>, - - #[account(mut)] - pub mint: InterfaceAccount<'info, Mint>, - - #[account( - mut, - token::mint = mint, - token::authority = seller, - )] - pub seller_token_account: InterfaceAccount<'info, TokenAccount>, - - #[account( - init_if_needed, - payer = payer, - associated_token::mint = mint, - associated_token::authority = buyer, - )] - pub buyer_token_account: InterfaceAccount<'info, TokenAccount>, - - #[account(mut)] - pub seller: SystemAccount<'info>, - - /// CHECK: Checked inside WNS program - pub manager: UncheckedAccount<'info>, - /// CHECK: Checked inside Token extensions program - pub extra_metas_account: UncheckedAccount<'info>, - /// CHECK: Checked inside WNS program - #[account(mut)] - pub approve_account: UncheckedAccount<'info>, - - pub wns_program: Program<'info, WenNewStandard>, - pub distribution_program: Program<'info, WenRoyaltyDistribution>, - pub associated_token_program: Program<'info, AssociatedToken>, - pub token_program: Program<'info, Token2022>, - pub payment_token_program: Option>, - pub system_program: Program<'info, System>, - - /* Optional accounts */ - #[account( - mut, - token::authority = seller, - token::mint = payment_mint, - token::token_program = payment_token_program - )] - pub seller_payment_token_account: Option>>, - #[account( - mut, - token::authority = buyer, - token::mint = payment_mint, - token::token_program = payment_token_program - )] - pub buyer_payment_token_account: Option>>, - #[account( - mut, - token::authority = distribution, - token::mint = payment_mint, - token::token_program = payment_token_program - )] - pub distribution_payment_token_account: Option>>, -} - -pub fn handler(ctx: Context, args: FulfillListingArgs) -> Result<()> { - let listing = &mut ctx.accounts.listing; - - let is_payment_mint_spl = ctx.accounts.payment_mint.key.ne(&Pubkey::default()); - - let signer_seeds: &[&[&[u8]]] = &[&[ - MARKETPLACE, - LISTING, - listing.seller.as_ref(), - listing.mint.as_ref(), - &[listing.bump], - ]]; - - // Thaw NFT - thaw_mint_account(CpiContext::new_with_signer( - ctx.accounts.wns_program.to_account_info(), - ThawDelegatedAccount { - delegate_authority: listing.to_account_info(), - manager: ctx.accounts.manager.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - mint_token_account: ctx.accounts.seller_token_account.to_account_info(), - token_program: ctx.accounts.token_program.to_account_info(), - user: ctx.accounts.seller.to_account_info(), - }, - signer_seeds, - ))?; - - // Transfer (listing_amount - royalty) to seller - let royalty_funds = calculate_royalties(&ctx.accounts.mint.to_account_info(), args.buy_amount)?; - - let funds_to_send = listing - .listing_amount - .checked_sub(royalty_funds) - .ok_or(WenWnsMarketplaceError::ArithmeticError)?; - - let buyer_token_account_info = if is_payment_mint_spl { - let payment_mint = &ctx.accounts.payment_mint.try_borrow_data()?; - let payment_mint_data = StateWithExtensions::::unpack(payment_mint)?; - - let buyer_payment_token_account = ctx - .accounts - .buyer_payment_token_account - .clone() - .ok_or(WenWnsMarketplaceError::InvalidPaymentTokenAccount)?; - - let seller_payment_token_account = ctx - .accounts - .seller_payment_token_account - .clone() - .ok_or(WenWnsMarketplaceError::InvalidPaymentTokenAccount)?; - - transfer_checked( - CpiContext::new( - ctx.accounts - .payment_token_program - .clone() - .unwrap() - .to_account_info(), - TransferChecked { - authority: ctx.accounts.buyer.to_account_info(), - from: buyer_payment_token_account.to_account_info(), - to: seller_payment_token_account.to_account_info(), - mint: ctx.accounts.payment_mint.to_account_info(), - }, - ), - funds_to_send, - payment_mint_data.base.decimals, - )?; - - Some(buyer_payment_token_account.to_account_info()) - } else { - transfer( - CpiContext::new( - ctx.accounts.system_program.to_account_info(), - Transfer { - from: ctx.accounts.buyer.to_account_info(), - to: ctx.accounts.seller.to_account_info(), - }, - ), - funds_to_send, - )?; - None - }; - - // Approve Transfer - let distribution_token_account_info = ctx - .accounts - .distribution_payment_token_account - .as_ref() - .map(|d| d.to_account_info()); - - let payment_token_program = ctx - .accounts - .payment_token_program - .as_ref() - .map(|d| d.to_account_info()); - - approve_transfer( - CpiContext::new( - ctx.accounts.wns_program.to_account_info(), - ApproveTransfer { - payer: ctx.accounts.payer.to_account_info(), - authority: ctx.accounts.buyer.to_account_info(), - payment_mint: ctx.accounts.payment_mint.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - distribution_account: ctx.accounts.distribution.to_account_info(), - authority_token_account: buyer_token_account_info, - distribution_token_account: distribution_token_account_info, - approve_account: ctx.accounts.approve_account.to_account_info(), - distribution_program: ctx.accounts.distribution_program.to_account_info(), - token_program: ctx.accounts.token_program.to_account_info(), - payment_token_program, - system_program: ctx.accounts.system_program.to_account_info(), - }, - ), - args.buy_amount, - )?; - - // Transfer NFT to buyer - transfer_checked_with_hook( - CpiContext::new_with_signer( - ctx.accounts.token_program.to_account_info(), - TransferCheckedWithHook { - authority: listing.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - from: ctx.accounts.seller_token_account.to_account_info(), - to: ctx.accounts.buyer_token_account.to_account_info(), - extra_metas_account: ctx.accounts.extra_metas_account.to_account_info(), - approve_account: ctx.accounts.approve_account.to_account_info(), - wns_program: ctx.accounts.wns_program.to_account_info(), - }, - signer_seeds, - ), - 1, - 0, - )?; - - // Close listing - listing.close(ctx.accounts.payer.to_account_info())?; - - Ok(()) -} - -#[derive(AnchorSerialize, AnchorDeserialize)] -pub struct FulfillListingArgs { - pub buy_amount: u64, -} diff --git a/programs/wen_wns_marketplace/src/instructions/listing/list.rs b/programs/wen_wns_marketplace/src/instructions/listing/list.rs deleted file mode 100644 index bfc098b1..00000000 --- a/programs/wen_wns_marketplace/src/instructions/listing/list.rs +++ /dev/null @@ -1,110 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::{ - token_2022::{approve, Approve, Token2022}, - token_interface::{Mint, TokenAccount}, -}; -use wen_new_standard::{ - cpi::{accounts::FreezeDelegatedAccount, freeze_mint_account}, - program::WenNewStandard, -}; - -use crate::constants::*; -use crate::state::*; - -#[derive(Accounts)] -pub struct ListNFT<'info> { - #[account(mut)] - pub payer: Signer<'info>, - pub seller: Signer<'info>, - - #[account( - init, - payer = payer, - space = Listing::size(), - seeds = [ - MARKETPLACE, - LISTING, - seller.key().as_ref(), - mint.key().as_ref() - ], - bump - )] - pub listing: Account<'info, Listing>, - - #[account(mut)] - pub mint: InterfaceAccount<'info, Mint>, - - #[account( - mut, - token::mint = mint, - token::authority = seller, - )] - pub seller_token_account: InterfaceAccount<'info, TokenAccount>, - - /// CHECK: Checked inside WNS program - pub manager: UncheckedAccount<'info>, - - pub wns_program: Program<'info, WenNewStandard>, - pub token_program: Program<'info, Token2022>, - pub system_program: Program<'info, System>, -} - -pub fn handler(ctx: Context, args: ListNFTArgs) -> Result<()> { - let listing = &mut ctx.accounts.listing; - - // Approving NFT to Listing PDA - approve( - CpiContext::new( - ctx.accounts.token_program.to_account_info(), - Approve { - to: ctx.accounts.seller_token_account.to_account_info(), - authority: ctx.accounts.seller.to_account_info(), - delegate: listing.to_account_info(), - }, - ), - 1, - )?; - - // Freezing NFT via Listing PDA - let seller_key = ctx.accounts.seller.key(); - let mint_key = ctx.accounts.mint.key(); - - let signer_seeds: &[&[&[u8]]] = &[&[ - MARKETPLACE, - LISTING, - seller_key.as_ref(), - mint_key.as_ref(), - &[ctx.bumps.listing], - ]]; - - freeze_mint_account(CpiContext::new_with_signer( - ctx.accounts.wns_program.to_account_info(), - FreezeDelegatedAccount { - delegate_authority: listing.to_account_info(), - manager: ctx.accounts.manager.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - mint_token_account: ctx.accounts.seller_token_account.to_account_info(), - token_program: ctx.accounts.token_program.to_account_info(), - user: ctx.accounts.seller.to_account_info(), - }, - signer_seeds, - ))?; - - // Assigning fields to listing - listing.set_inner(Listing { - bump: ctx.bumps.listing, - listing_amount: args.listing_amount, - payment_mint: args.payment_mint, - mint: ctx.accounts.mint.key(), - seller: ctx.accounts.seller.key(), - seller_token_account: ctx.accounts.seller_token_account.key(), - }); - - Ok(()) -} - -#[derive(AnchorSerialize, AnchorDeserialize)] -pub struct ListNFTArgs { - pub listing_amount: u64, - pub payment_mint: Pubkey, -} diff --git a/programs/wen_wns_marketplace/src/instructions/listing/mod.rs b/programs/wen_wns_marketplace/src/instructions/listing/mod.rs deleted file mode 100644 index 46ffac49..00000000 --- a/programs/wen_wns_marketplace/src/instructions/listing/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -pub mod buy; -pub mod list; -pub mod royalty; -pub mod unlist; - -pub use buy::*; -pub use list::*; -pub use royalty::*; -pub use unlist::*; diff --git a/programs/wen_wns_marketplace/src/instructions/listing/royalty.rs b/programs/wen_wns_marketplace/src/instructions/listing/royalty.rs deleted file mode 100644 index 6aeada72..00000000 --- a/programs/wen_wns_marketplace/src/instructions/listing/royalty.rs +++ /dev/null @@ -1,80 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::{ - associated_token::AssociatedToken, - token_interface::{TokenAccount, TokenInterface}, -}; -use wen_royalty_distribution::{ - cpi::{accounts::ClaimDistribution, claim_distribution}, - program::WenRoyaltyDistribution, - DistributionAccount, -}; - -#[derive(Accounts)] -pub struct ClaimRoyalty<'info> { - #[account(mut)] - pub payer: Signer<'info>, - #[account(mut)] - pub creator: Signer<'info>, - - /// CHECK: Could be SOL or SPL, checked in distribution program - pub payment_mint: UncheckedAccount<'info>, - #[account( - mut, - has_one = payment_mint, - seeds = [distribution.group_mint.as_ref(), payment_mint.key().as_ref()], - seeds::program = wen_distribution_program.key(), - bump - )] - pub distribution: Account<'info, DistributionAccount>, - - pub wen_distribution_program: Program<'info, WenRoyaltyDistribution>, - pub associated_token_program: Program<'info, AssociatedToken>, - pub token_program: Interface<'info, TokenInterface>, - pub system_program: Program<'info, System>, - - /* Optional accounts */ - #[account( - mut, - token::authority = distribution, - token::mint = payment_mint, - token::token_program = token_program, - )] - pub distribution_payment_token_account: Option>>, - #[account( - mut, - token::authority = creator, - token::mint = payment_mint, - token::token_program = token_program, - )] - pub creator_payment_token_account: Option>>, -} - -pub fn handler(ctx: Context) -> Result<()> { - // CPI Claim distribution - let distribution_token_account_info = ctx - .accounts - .distribution_payment_token_account - .as_ref() - .map(|d| d.to_account_info()); - - let creator_token_account_info = ctx - .accounts - .creator_payment_token_account - .as_ref() - .map(|c| c.to_account_info()); - - claim_distribution(CpiContext::new( - ctx.accounts.wen_distribution_program.to_account_info(), - ClaimDistribution { - creator: ctx.accounts.creator.to_account_info(), - payment_mint: ctx.accounts.payment_mint.to_account_info(), - creator_token_account: creator_token_account_info, - distribution: ctx.accounts.distribution.to_account_info(), - distribution_token_account: distribution_token_account_info, - token_program: ctx.accounts.token_program.to_account_info(), - system_program: ctx.accounts.system_program.to_account_info(), - }, - ))?; - - Ok(()) -} diff --git a/programs/wen_wns_marketplace/src/instructions/listing/unlist.rs b/programs/wen_wns_marketplace/src/instructions/listing/unlist.rs deleted file mode 100644 index 5199345e..00000000 --- a/programs/wen_wns_marketplace/src/instructions/listing/unlist.rs +++ /dev/null @@ -1,91 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_spl::{ - token_2022::{revoke, Revoke, Token2022}, - token_interface::{Mint, TokenAccount}, -}; -use wen_new_standard::{ - cpi::{accounts::ThawDelegatedAccount, thaw_mint_account}, - program::WenNewStandard, -}; - -use crate::constants::*; -use crate::state::*; - -#[derive(Accounts)] -pub struct UnlistNFT<'info> { - #[account(mut)] - pub payer: Signer<'info>, - pub seller: Signer<'info>, - - #[account( - mut, - seeds = [ - MARKETPLACE, - LISTING, - listing.seller.key().as_ref(), - listing.mint.key().as_ref() - ], - bump = listing.bump, - has_one = mint, - has_one = seller, - has_one = seller_token_account, - )] - pub listing: Account<'info, Listing>, - - #[account(mut)] - pub mint: InterfaceAccount<'info, Mint>, - - #[account( - mut, - token::mint = mint, - token::authority = seller, - )] - pub seller_token_account: InterfaceAccount<'info, TokenAccount>, - - /// CHECK: Checked inside WNS program - pub manager: UncheckedAccount<'info>, - - pub wns_program: Program<'info, WenNewStandard>, - pub token_program: Program<'info, Token2022>, - pub system_program: Program<'info, System>, -} - -pub fn handler(ctx: Context) -> Result<()> { - let listing = &mut ctx.accounts.listing; - - // Thawing NFT via Listing PDA - let signer_seeds: &[&[&[u8]]] = &[&[ - MARKETPLACE, - LISTING, - listing.seller.as_ref(), - listing.mint.as_ref(), - &[listing.bump], - ]]; - - thaw_mint_account(CpiContext::new_with_signer( - ctx.accounts.wns_program.to_account_info(), - ThawDelegatedAccount { - delegate_authority: listing.to_account_info(), - manager: ctx.accounts.manager.to_account_info(), - mint: ctx.accounts.mint.to_account_info(), - mint_token_account: ctx.accounts.seller_token_account.to_account_info(), - token_program: ctx.accounts.token_program.to_account_info(), - user: ctx.accounts.seller.to_account_info(), - }, - signer_seeds, - ))?; - - // Revoking NFT to Sale PDA - revoke(CpiContext::new( - ctx.accounts.token_program.to_account_info(), - Revoke { - source: ctx.accounts.seller_token_account.to_account_info(), - authority: ctx.accounts.seller.to_account_info(), - }, - ))?; - - // Closing listing account - listing.close(ctx.accounts.payer.to_account_info())?; - - Ok(()) -} diff --git a/programs/wen_wns_marketplace/src/instructions/mod.rs b/programs/wen_wns_marketplace/src/instructions/mod.rs deleted file mode 100644 index 84c95028..00000000 --- a/programs/wen_wns_marketplace/src/instructions/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod listing; - -pub use listing::*; diff --git a/programs/wen_wns_marketplace/src/lib.rs b/programs/wen_wns_marketplace/src/lib.rs deleted file mode 100644 index 281fd9cb..00000000 --- a/programs/wen_wns_marketplace/src/lib.rs +++ /dev/null @@ -1,38 +0,0 @@ -#![allow(ambiguous_glob_reexports)] - -use anchor_lang::prelude::*; - -pub mod constants; -pub mod errors; -pub mod instructions; -pub mod state; -pub mod utils; - -pub use instructions::*; - -declare_id!("sALEeD9VGNquoGSXvUAKLeVbXdjiPCb3FTuTm1xSLod"); - -#[program] -pub mod wen_wns_marketplace { - use super::*; - - /* region LISTING INSTRUCTIONS (CORE LOGIC) */ - pub fn list(ctx: Context, args: ListNFTArgs) -> Result<()> { - listing::list::handler(ctx, args) - } - - pub fn unlist(ctx: Context) -> Result<()> { - listing::unlist::handler(ctx) - } - - pub fn buy(ctx: Context, args: FulfillListingArgs) -> Result<()> { - listing::buy::handler(ctx, args) - } - /* endregion */ - - /* region CLAIM ROYALTY */ - pub fn claim_royalty(ctx: Context) -> Result<()> { - listing::royalty::handler(ctx) - } - /* endregion */ -} diff --git a/programs/wen_wns_marketplace/src/state/listing.rs b/programs/wen_wns_marketplace/src/state/listing.rs deleted file mode 100644 index a9c4847a..00000000 --- a/programs/wen_wns_marketplace/src/state/listing.rs +++ /dev/null @@ -1,23 +0,0 @@ -use anchor_lang::prelude::*; - -#[account] -pub struct Listing { - pub bump: u8, - pub mint: Pubkey, - pub payment_mint: Pubkey, - pub seller: Pubkey, - pub seller_token_account: Pubkey, - pub listing_amount: u64, -} - -impl Listing { - pub fn size() -> usize { - 8 + // anchor discriminator - 1 + // bump - 32 + // mint - 32 + // payment_mint - 32 + // seller - 32 + // seller_token_account - 8 // listing_amount - } -} diff --git a/programs/wen_wns_marketplace/src/state/mod.rs b/programs/wen_wns_marketplace/src/state/mod.rs deleted file mode 100644 index 2aa4e688..00000000 --- a/programs/wen_wns_marketplace/src/state/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod listing; -pub mod sale; - -pub use listing::*; -pub use sale::*; diff --git a/programs/wen_wns_marketplace/src/state/sale.rs b/programs/wen_wns_marketplace/src/state/sale.rs deleted file mode 100644 index 051b68f6..00000000 --- a/programs/wen_wns_marketplace/src/state/sale.rs +++ /dev/null @@ -1,19 +0,0 @@ -use anchor_lang::prelude::*; - -#[account] -pub struct Sale { - pub bump: u8, - pub group: Pubkey, - pub distribution: Pubkey, - pub authority: Pubkey, -} - -impl Sale { - pub fn size() -> usize { - 8 + // anchor discriminator - 1 + // bump - 32 + // group - 32 + // distribution - 32 // authority - } -} diff --git a/programs/wen_wns_marketplace/src/utils.rs b/programs/wen_wns_marketplace/src/utils.rs deleted file mode 100644 index 8bf38002..00000000 --- a/programs/wen_wns_marketplace/src/utils.rs +++ /dev/null @@ -1,142 +0,0 @@ -use crate::errors::*; -use anchor_lang::prelude::*; -use anchor_spl::{ - associated_token::{ - create as create_associated_token, get_associated_token_address_with_program_id, - Create as CreateAssociatedToken, - }, - token_2022::{ - self, - spl_token_2022::{ - extension::{BaseStateWithExtensions, StateWithExtensions}, - instruction::transfer_checked, - state::Mint as StateMint, - }, - }, - token_interface::spl_token_metadata_interface::state::TokenMetadata, -}; -use spl_transfer_hook_interface::onchain::add_extra_accounts_for_execute_cpi; -use std::str::FromStr; -use wen_new_standard::ROYALTY_BASIS_POINTS_FIELD; - -pub fn calculate_royalties(mint: &AccountInfo, amount: u64) -> Result { - let mint_account_data = mint.try_borrow_data()?; - let mint_data = StateWithExtensions::::unpack(&mint_account_data)?; - let metadata = mint_data.get_variable_len_extension::()?; - - // get royalty basis points from metadata Vec(String, String) - let royalty_basis_points = metadata - .additional_metadata - .iter() - .find(|(key, _)| key == ROYALTY_BASIS_POINTS_FIELD) - .map(|(_, value)| u64::from_str(value).unwrap()) - .unwrap_or(0); - - Ok((amount * royalty_basis_points) / 10000) -} - -pub fn assert_right_associated_token_account( - owner: &Pubkey, - mint: &Pubkey, - associated_token_account: &Pubkey, -) -> Result<()> { - let expected_associated_token_account = - get_associated_token_address_with_program_id(owner, mint, &token_2022::ID); - - require_eq!( - associated_token_account, - &expected_associated_token_account, - WenWnsMarketplaceError::InvalidPaymentTokenAccount - ); - - Ok(()) -} - -pub fn create_associated_token_account<'info>( - payer: AccountInfo<'info>, - owner: AccountInfo<'info>, - mint: AccountInfo<'info>, - associated_token_account: AccountInfo<'info>, - associated_token_program: AccountInfo<'info>, - token_program: AccountInfo<'info>, - system_program: AccountInfo<'info>, -) -> Result<()> { - assert_right_associated_token_account(owner.key, mint.key, associated_token_account.key)?; - - create_associated_token(CpiContext::new( - associated_token_program, - CreateAssociatedToken { - payer, - authority: owner, - mint, - associated_token: associated_token_account, - system_program, - token_program, - }, - ))?; - - Ok(()) -} - -#[derive(Accounts)] -pub struct TransferCheckedWithHook<'info> { - /// CHECK: CPI Accounts - pub from: AccountInfo<'info>, - /// CHECK: CPI Accounts - pub mint: AccountInfo<'info>, - /// CHECK: CPI Accounts - pub to: AccountInfo<'info>, - /// CHECK: CPI Accounts - pub authority: AccountInfo<'info>, - /// CHECK: CPI Accounts - pub wns_program: AccountInfo<'info>, - /// CHECK: CPI Accounts - pub extra_metas_account: AccountInfo<'info>, - /// CHECK: CPI Accounts - pub approve_account: AccountInfo<'info>, -} - -pub fn transfer_checked_with_hook<'info>( - ctx: CpiContext<'_, '_, '_, 'info, TransferCheckedWithHook<'info>>, - amount: u64, - decimals: u8, -) -> Result<()> { - let mut ix = transfer_checked( - ctx.program.key, - ctx.accounts.from.key, - ctx.accounts.mint.key, - ctx.accounts.to.key, - ctx.accounts.authority.key, - &[], - amount, - decimals, - )?; - - let mut account_infos = vec![ - ctx.accounts.from.clone(), - ctx.accounts.mint.clone(), - ctx.accounts.to.clone(), - ctx.accounts.authority.clone(), - ]; - - let additional_account_infos = vec![ - ctx.accounts.approve_account.to_account_info(), - ctx.accounts.wns_program.to_account_info(), - ctx.accounts.extra_metas_account.to_account_info(), - ]; - - add_extra_accounts_for_execute_cpi( - &mut ix, - &mut account_infos, - &ctx.accounts.wns_program.key(), - ctx.accounts.from, - ctx.accounts.mint, - ctx.accounts.to, - ctx.accounts.authority, - amount, - &additional_account_infos, - )?; - - anchor_lang::solana_program::program::invoke_signed(&ix, &account_infos, ctx.signer_seeds) - .map_err(Into::into) -} diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index 0d8ade43..00000000 --- a/scripts/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Installation instructions - -0. `npm install` or `yarn install` - -1. Run `npm run calculate` or `yarn calculate` to fetch the accounts either on devnet or mainnet (toggle boolean inside function argument at the end of function body). - -2. For STEP 1 (Resizing bump), run `npm run resize` or `yarn resize` to create an address look up table and then start resizing the accounts. The address lookup account will be printed over the terminal, hence copy it for the next step or the same step if errored out in the middle, thereby it wouldn't create another account. Address table look up is used to avoid the "Transaction too long" error by passing duplicate accounts (System program, distribution program, signer, WNS program). - -3. For STEP 2 (Updating bump), run `npm run update` or `yarn update` to either create the address table lookup account or feed it via the function arguments at the end. This will make sure bump value updates are happening in the same fashion as STEP 1. diff --git a/scripts/package-lock.json b/scripts/package-lock.json deleted file mode 100644 index 0a618d24..00000000 --- a/scripts/package-lock.json +++ /dev/null @@ -1,2288 +0,0 @@ -{ - "name": "scripts", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "@coral-xyz/anchor": "^0.30.1", - "bs58": "^5.0.0", - "dotenv": "16.4.5", - "fs-extra": "^11.2.0" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/dotenv": "^8.2.0", - "@types/fs-extra": "^11.0.4", - "@types/mocha": "^9.0.0", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "prettier": "^2.6.2", - "ts-mocha": "^10.0.0", - "ts-node": "^10.9.2", - "typescript": "^4.3.5" - } - }, - "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@coral-xyz/anchor": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.30.1.tgz", - "integrity": "sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "@coral-xyz/anchor-errors": "^0.30.1", - "@coral-xyz/borsh": "^0.30.1", - "@noble/hashes": "^1.3.1", - "@solana/web3.js": "^1.68.0", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^6.3.0", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=11" - } - }, - "node_modules/@coral-xyz/anchor-errors": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz", - "integrity": "sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/@coral-xyz/anchor/node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@coral-xyz/anchor/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@coral-xyz/borsh": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.30.1.tgz", - "integrity": "sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@solana/web3.js": "^1.68.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/curves": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", - "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@solana/buffer-layout": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", - "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", - "license": "MIT", - "dependencies": { - "buffer": "~6.0.3" - }, - "engines": { - "node": ">=5.10" - } - }, - "node_modules/@solana/web3.js": { - "version": "1.93.2", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.93.2.tgz", - "integrity": "sha512-U8GlrvjfheJTFNavJHb2v/CnpzoqbGKaShLJGf1cELeFUlweUrfYXc9YFX0tw8Icb4ll48vDxt/zEPQOQ29+kw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.24.7", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0", - "@solana/buffer-layout": "^4.0.1", - "agentkeepalive": "^4.5.0", - "bigint-buffer": "^1.1.5", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.3", - "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.0", - "node-fetch": "^2.7.0", - "rpc-websockets": "^9.0.2", - "superstruct": "^1.0.4" - } - }, - "node_modules/@solana/web3.js/node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@solana/web3.js/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/superstruct": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", - "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", - "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "4.3.16", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", - "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", - "dev": true - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", - "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "dotenv": "*" - } - }, - "node_modules/@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "dev": true, - "dependencies": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "optional": true - }, - "node_modules/@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.12.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", - "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bigint-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", - "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "bindings": "^1.3.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/borsh/node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/borsh/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-layout": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", - "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", - "license": "MIT", - "engines": { - "node": ">=4.5" - } - }, - "node_modules/bufferutil": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", - "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/crypto-hash": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", - "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "license": "MIT" - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "license": "MIT", - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/fast-stable-stringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", - "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", - "license": "MIT" - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/jayson": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", - "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", - "license": "MIT", - "dependencies": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "JSONStream": "^1.3.5", - "uuid": "^8.3.2", - "ws": "^7.4.5" - }, - "bin": { - "jayson": "bin/jayson.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jayson/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "optional": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rpc-websockets": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.2.tgz", - "integrity": "sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw==", - "license": "LGPL-3.0-only", - "dependencies": { - "@swc/helpers": "^0.5.11", - "@types/uuid": "^8.3.4", - "@types/ws": "^8.2.2", - "buffer": "^6.0.3", - "eventemitter3": "^5.0.1", - "uuid": "^8.3.2", - "ws": "^8.5.0" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/kozjak" - }, - "optionalDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - } - }, - "node_modules/rpc-websockets/node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/rpc-websockets/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/rpc-websockets/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superstruct": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", - "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/text-encoding-utf-8": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", - "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", - "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", - "dev": true, - "dependencies": { - "ts-node": "7.0.1" - }, - "bin": { - "ts-mocha": "bin/ts-mocha" - }, - "engines": { - "node": ">= 6.X.X" - }, - "optionalDependencies": { - "tsconfig-paths": "^3.5.0" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" - } - }, - "node_modules/ts-mocha/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/ts-mocha/node_modules/ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, - "bin": { - "ts-node": "dist/bin.js" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ts-mocha/node_modules/yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "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 - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "optional": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index 49e1fe7f..00000000 --- a/scripts/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check", - "calculate": "ts-node src/calculate.ts", - "resize": "ts-node src/resize.ts", - "update": "ts-node src/update.ts", - "audit": "ts-node src/audit.ts" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.30.1", - "bs58": "^5.0.0", - "fs-extra": "^11.2.0", - "dotenv": "16.4.5" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/fs-extra": "^11.0.4", - "@types/mocha": "^9.0.0", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "prettier": "^2.6.2", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5", - "ts-node": "^10.9.2", - "@types/dotenv": "^8.2.0" - } -} diff --git a/scripts/src/audit.ts b/scripts/src/audit.ts deleted file mode 100644 index cf26f7f0..00000000 --- a/scripts/src/audit.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { Program, AnchorProvider, Wallet } from "@coral-xyz/anchor"; -import { Keypair, Connection, PublicKey } from "@solana/web3.js"; -import { config } from "dotenv"; - -import { WenNewStandard } from "../../target/types/wen_new_standard"; -import WNSIdl from "../../target/idl/wen_new_standard.json"; -import { WenRoyaltyDistribution } from "../../target/types/wen_royalty_distribution"; -import WenRoyaltyIdl from "../../target/idl/wen_royalty_distribution.json"; - -import accountsDevnet from "../devnet.json"; -import accountsMainnet from "../mainnet.json"; -import { filterAvailableAccounts } from "./utils"; - -(async function (isDevnet: boolean) { - config({ path: "../.env" }); - try { - const DEVNET_URL = process.env.DEVNET_URL; - const MAINNET_URL = process.env.MAINNET_URL; - const keypair = Keypair.fromSecretKey( - Uint8Array.from(JSON.parse(process.env.KEYPAIR)), - ); - console.log(`Signing Address: ${keypair.publicKey.toString()}`); - const connection = new Connection(isDevnet ? DEVNET_URL : MAINNET_URL, { - commitment: "confirmed", - }); - - // To test locally. - // const connection = new Connection("http://localhost:8899"); - - const wallet = new Wallet(keypair); - const provider = new AnchorProvider(connection, wallet, { - skipPreflight: true, - commitment: "confirmed", - preflightCommitment: "confirmed", - }); - - const wnsProgram = new Program(WNSIdl as WenNewStandard, provider); - const distributionProgram = new Program( - WenRoyaltyIdl as WenRoyaltyDistribution, - provider, - ); - - const wnsAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = isDevnet ? accountsDevnet["wns"] : accountsMainnet["wns"]; - - const finalAccounts = await filterAvailableAccounts( - connection, - wnsAccounts, - ); - const filteredWnsAccounts = Object.values(finalAccounts).filter( - (wnsAccount) => wnsAccount.type !== "unknown", - ); - - for (const { - pubkey, - type, - account: { data }, - } of Object.values(filteredWnsAccounts)) { - const accountBuffer = Buffer.from(data[0], "base64"); - - try { - switch (type) { - case "tokenGroup": { - const tokenGroup = wnsProgram.coder.accounts.decode( - "tokenGroup", - accountBuffer, - ); - const [_, bump] = PublicKey.findProgramAddressSync( - [Buffer.from("group"), tokenGroup.mint.toBuffer()], - wnsProgram.programId, - ); - - console.log( - `Expected Bump: ${bump}, Received Bump: ${ - tokenGroup.bump - }. Is Equal: ${bump === tokenGroup.bump}\n`, - ); - continue; - } - case "manager": { - const manager = wnsProgram.coder.accounts.decode( - "manager", - accountBuffer, - ); - const [_, bump] = PublicKey.findProgramAddressSync( - [Buffer.from("manager")], - wnsProgram.programId, - ); - - console.log( - `Expected Bump: ${bump}, Received Bump: ${ - manager.bump - }. Is Equal: ${bump === manager.bump}\n`, - ); - continue; - } - case "tokenGroupMember": { - const tokenGroupMember = wnsProgram.coder.accounts.decode( - "tokenGroupMember", - accountBuffer, - ); - const [_, bump] = PublicKey.findProgramAddressSync( - [Buffer.from("member"), tokenGroupMember.mint.toBuffer()], - wnsProgram.programId, - ); - - console.log( - `Expected Bump: ${bump}, Received Bump: ${ - tokenGroupMember.bump - }. Is Equal: ${bump === tokenGroupMember.bump}\n`, - ); - continue; - } - } - } catch (err) { - console.log(err); - continue; - } - } - - const distributionAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = isDevnet - ? accountsDevnet["distribution"] - : accountsMainnet["distribution"]; - - const finalDistAccounts = await filterAvailableAccounts( - connection, - distributionAccounts, - ); - - for (const { pubkey, type } of Object.values(finalDistAccounts)) { - const accountPubkey = new PublicKey(pubkey); - const { data: accountBuffer } = await connection.getAccountInfo( - accountPubkey, - "confirmed", - ); - - console.log(type); - - const distributionAccount = distributionProgram.coder.accounts.decode( - "distributionAccount", - accountBuffer, - ); - - const [_, bump] = PublicKey.findProgramAddressSync( - [ - distributionAccount.groupMint.toBuffer(), - distributionAccount.paymentMint.toBuffer(), - ], - distributionProgram.programId, - ); - - console.log( - `Expected Bump: ${bump}, Received Bump: ${ - distributionAccount.bump - }. Is Equal: ${bump === distributionAccount.bump}\n`, - ); - } - } catch (err) { - console.error(err); - } -})(false); diff --git a/scripts/src/calculate.ts b/scripts/src/calculate.ts deleted file mode 100644 index e6b4f4c9..00000000 --- a/scripts/src/calculate.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { Program, AnchorProvider, Wallet } from "@coral-xyz/anchor"; -import { Keypair, Connection, AccountInfo, PublicKey } from "@solana/web3.js"; - -import { WenNewStandard } from "../../target/types/wen_new_standard"; -import WNSIdl from "../../target/idl/wen_new_standard.json"; -import { WenRoyaltyDistribution } from "../../target/types/wen_royalty_distribution"; -import WenRoyaltyIdl from "../../target/idl/wen_royalty_distribution.json"; - -import { writeFile } from "fs-extra"; - -import { config } from "dotenv"; -import { getType } from "./utils"; - -(async function (isDevnet: boolean) { - config({ path: "../.env" }); - try { - const DEVNET_URL = process.env.DEVNET_URL; - const MAINNET_URL = process.env.MAINNET_URL; - - const keypair = Keypair.generate(); - const connection = new Connection(isDevnet ? DEVNET_URL : MAINNET_URL, { - commitment: "confirmed", - }); - const wallet = new Wallet(keypair); - const provider = new AnchorProvider(connection, wallet, { - skipPreflight: true, - commitment: "confirmed", - preflightCommitment: "confirmed", - }); - - const wnsProgram = new Program(WNSIdl as WenNewStandard, provider); - const distributionProgram = new Program( - WenRoyaltyIdl as WenRoyaltyDistribution, - provider, - ); - - const data: Record< - string, - { - account: AccountInfo; - pubkey: PublicKey; - } - > = {}; - - console.log(`\n-----------------------------------------------------`); - console.log(`WNS:`); - console.log(`-----------------------------------------------------`); - - const wnsAccounts = ( - await connection.getProgramAccounts(wnsProgram.programId, "confirmed") - ).reduce( - (acc, account) => { - acc[account.pubkey.toString()] = { - ...account, - account: { - ...account.account, - data: [account.account.data.toString("base64"), "base64"], - }, - type: getType(account.account.data), - }; - - return acc; - }, - {} as Readonly<{ - account: AccountInfo; - pubkey: PublicKey; - }>, - ); - - const pubkeys = Object.keys(wnsAccounts) - .map((a) => `--clone ${a}`) - .slice(0, 50); - - console.log("WNS GPA Count:", Object.keys(wnsAccounts).length); - console.log(`-----------------------------------------------------`); - - data.wns = wnsAccounts; - console.log(`\n-----------------------------------------------------`); - console.log(`Distribution Program:`); - console.log(`-----------------------------------------------------`); - - const distributionAccounts = ( - await connection.getProgramAccounts(distributionProgram.programId) - ).reduce( - (acc, account) => { - acc[account.pubkey.toString()] = { - ...account, - account: { - ...account.account, - data: [account.account.data.toString("base64"), "base64"], - }, - type: getType(account.account.data), - }; - - return acc; - }, - {} as Readonly<{ - account: AccountInfo; - pubkey: PublicKey; - }>, - ); - - console.log( - "Distribution Program GPA:", - Object.keys(distributionAccounts).length, - ); - console.log(`-----------------------------------------------------`); - - data.distribution = distributionAccounts; - - pubkeys.push( - ...Object.keys(distributionAccounts) - .slice(0, 50) - .map((a) => `--clone ${a}`), - ); - - await writeFile( - `${__dirname}/../${isDevnet ? "devnet" : "mainnet"}.json`, - JSON.stringify(data, null, 2), - { encoding: "utf8" }, - ); - - // console.log( - // `solana-test-validator -r --bpf-program wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM ~/Desktop/blockchain-projects/abk-wpl/target/deploy/wen_new_standard.so --bpf-program diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay ~/Desktop/blockchain-projects/abk-wpl/target/deploy/wen_royalty_distribution.so ${pubkeys.join( - // " " - // )} -u${isDevnet ? "d" : "m"}` - // ); - } catch (err) { - console.error(err); - } -})(false); diff --git a/scripts/src/resize.ts b/scripts/src/resize.ts deleted file mode 100644 index 218797f5..00000000 --- a/scripts/src/resize.ts +++ /dev/null @@ -1,349 +0,0 @@ -import { Program, AnchorProvider, Wallet } from "@coral-xyz/anchor"; -import { - Keypair, - Connection, - PublicKey, - SystemProgram, - LAMPORTS_PER_SOL, - TransactionMessage, - VersionedTransaction, - AddressLookupTableProgram, - AddressLookupTableAccount, - ComputeBudgetProgram, -} from "@solana/web3.js"; -import { config } from "dotenv"; - -import { WenNewStandard } from "../../target/types/wen_new_standard"; -import WNSIdl from "../../target/idl/wen_new_standard.json"; -import { WenRoyaltyDistribution } from "../../target/types/wen_royalty_distribution"; -import WenRoyaltyIdl from "../../target/idl/wen_royalty_distribution.json"; - -import accountsDevnet from "../devnet.json"; -import accountsMainnet from "../mainnet.json"; -import { filterAvailableAccounts, sleep } from "./utils"; - -const INSTRUCTIONS_PER_TX = 20; - -(async function (isDevnet: boolean, addressTableLookupAddress?: PublicKey) { - config({ path: "../.env" }); - try { - const DEVNET_URL = process.env.DEVNET_URL; - const MAINNET_URL = process.env.MAINNET_URL; - const keypair = Keypair.fromSecretKey( - Uint8Array.from(JSON.parse(process.env.KEYPAIR)), - ); - console.log(`Signing Address: ${keypair.publicKey.toString()}`); - - const connection = new Connection(isDevnet ? DEVNET_URL : MAINNET_URL, { - commitment: "confirmed", - }); - - // // To test locally - // const connection = new Connection("http://localhost:8899"); - const wallet = new Wallet(keypair); - const provider = new AnchorProvider(connection, wallet, { - skipPreflight: true, - commitment: "confirmed", - preflightCommitment: "confirmed", - }); - - /** Airdrop only for devnet/localnet */ - if ( - isDevnet && - (await connection.getBalance(keypair.publicKey, "confirmed")) === 0 - ) { - console.log(`Zero balance account. Airdropping`); - await connection.confirmTransaction({ - ...(await connection.getLatestBlockhash("confirmed")), - signature: await connection.requestAirdrop( - keypair.publicKey, - 1 * LAMPORTS_PER_SOL, - ), - }); - } - /** */ - - const wnsProgram = new Program(WNSIdl as WenNewStandard, provider); - const distributionProgram = new Program( - WenRoyaltyIdl as WenRoyaltyDistribution, - provider, - ); - - /** Address table lookup for maximum efficiency */ - let addressTableLookupAccount: AddressLookupTableAccount; - if (!addressTableLookupAddress) { - const slot = await provider.connection.getSlot("confirmed"); - const { blockhash, lastValidBlockHeight } = - await provider.connection.getLatestBlockhash("confirmed"); - const [createLookupTableIx, lookupTableAccount] = - AddressLookupTableProgram.createLookupTable({ - authority: keypair.publicKey, - payer: keypair.publicKey, - recentSlot: slot - 1, - }); - - console.log( - `Created address table lookup: ${lookupTableAccount.toString()}`, - ); - - const extendLookupTableIx = AddressLookupTableProgram.extendLookupTable({ - addresses: [ - keypair.publicKey, - wnsProgram.programId, - distributionProgram.programId, - SystemProgram.programId, - ], - authority: keypair.publicKey, - lookupTable: lookupTableAccount, - payer: keypair.publicKey, - }); - - const txMessage = new TransactionMessage({ - instructions: [createLookupTableIx, extendLookupTableIx], - payerKey: keypair.publicKey, - recentBlockhash: blockhash, - }).compileToV0Message(); - - const tx = new VersionedTransaction(txMessage); - tx.sign([keypair]); - - const sig = await provider.connection.sendTransaction(tx, { - skipPreflight: true, - preflightCommitment: "confirmed", - }); - await provider.connection.confirmTransaction( - { - blockhash, - lastValidBlockHeight, - signature: sig, - }, - "confirmed", - ); - const { value } = await connection.getAddressLookupTable( - lookupTableAccount, - { commitment: "confirmed" }, - ); - addressTableLookupAccount = value; - - console.log(`Allowing for ATL to be indexed`); - await sleep(2000); - } else { - const { value } = await connection.getAddressLookupTable( - addressTableLookupAddress, - { commitment: "confirmed" }, - ); - addressTableLookupAccount = value; - } - /** */ - - const wnsAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = isDevnet ? accountsDevnet["wns"] : accountsMainnet["wns"]; - - const finalAccounts = await filterAvailableAccounts( - connection, - wnsAccounts, - ); - const filteredWnsAccounts = Object.values(finalAccounts).filter( - (wnsAccount) => wnsAccount.type !== "unknown", - ); - - const totalWNSBatches = Array.from( - { - length: Math.round(filteredWnsAccounts.length / INSTRUCTIONS_PER_TX), - }, - (_, i) => i + 1, - ); - console.log(`Total Tx batches: ${totalWNSBatches.length}`); - - for (const batch of totalWNSBatches) { - const accounts = filteredWnsAccounts.slice( - (batch - 1) * INSTRUCTIONS_PER_TX, - batch * INSTRUCTIONS_PER_TX, - ); - - const instructions = [ - ComputeBudgetProgram.setComputeUnitLimit({ units: 350_000 }), - ]; - for (const { pubkey, type } of accounts) { - console.log(`Resizing account ${pubkey.toString()}`); - const wnsAccount = new PublicKey(pubkey); - - switch (type) { - case "tokenGroup": { - const instruction = await wnsProgram.methods - .resizeGroup() - .accountsStrict({ - payer: keypair.publicKey, - group: wnsAccount, - systemProgram: SystemProgram.programId, - }) - .instruction(); - instructions.push(instruction); - continue; - } - case "tokenGroupMember": { - const instruction = await wnsProgram.methods - .resizeGroupMember() - .accountsStrict({ - payer: keypair.publicKey, - member: wnsAccount, - systemProgram: SystemProgram.programId, - }) - .instruction(); - instructions.push(instruction); - continue; - } - case "manager": { - const instruction = await wnsProgram.methods - .resizeManager() - .accountsStrict({ - payer: keypair.publicKey, - manager: wnsAccount, - systemProgram: SystemProgram.programId, - }) - .instruction(); - instructions.push(instruction); - continue; - } - case "approveAccount": { - const instruction = await wnsProgram.methods - .resizeApprove() - .accountsStrict({ - payer: keypair.publicKey, - approveAccount: wnsAccount, - systemProgram: SystemProgram.programId, - }) - .instruction(); - instructions.push(instruction); - continue; - } - default: { - console.log("Account is extra meta account info. Continuing"); - continue; - } - } - } - - const { blockhash, lastValidBlockHeight } = - await connection.getLatestBlockhash("confirmed"); - const transactionMessage = new TransactionMessage({ - instructions, - payerKey: keypair.publicKey, - recentBlockhash: blockhash, - }).compileToV0Message([addressTableLookupAccount]); - - const transaction = new VersionedTransaction(transactionMessage); - transaction.sign([keypair]); - console.log(`Submitting batch: ${batch}`); - - let isFinished = false; - while (!isFinished) { - try { - const signature = await connection.sendTransaction(transaction, { - skipPreflight: true, - preflightCommitment: "confirmed", - }); - await connection.confirmTransaction( - { signature, blockhash, lastValidBlockHeight }, - "confirmed", - ); - isFinished = true; - console.log( - `Batch resize success. https://explorer.solana.com/tx/${signature}/${ - isDevnet ? "?cluster=devnet" : "" - }`, - ); - } catch (err) { - console.log(err); - continue; - } - } - } - - const distributionAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = isDevnet - ? accountsDevnet["distribution"] - : accountsMainnet["distribution"]; - - const finalDistAccounts = await filterAvailableAccounts( - connection, - distributionAccounts, - ); - - const totalDistributionBatches = Array.from( - { - length: Math.round( - Object.keys(finalDistAccounts).length / INSTRUCTIONS_PER_TX, - ), - }, - (_, i) => i + 1, - ); - - for (const batch of totalDistributionBatches) { - const accounts = Object.values(finalDistAccounts).slice( - (batch - 1) * INSTRUCTIONS_PER_TX, - batch * INSTRUCTIONS_PER_TX, - ); - - const instructions = [ - ComputeBudgetProgram.setComputeUnitLimit({ units: 350_000 }), - ]; - for (const { pubkey } of accounts) { - console.log(`Resizing account: ${pubkey}`); - const distributionAccount = new PublicKey(pubkey); - - const instruction = await distributionProgram.methods - .resizeDistribution() - .accountsStrict({ - distributionAccount, - payer: keypair.publicKey, - systemProgram: SystemProgram.programId, - }) - .instruction(); - instructions.push(instruction); - } - - const { blockhash, lastValidBlockHeight } = - await connection.getLatestBlockhash("confirmed"); - const transactionMessage = new TransactionMessage({ - instructions, - payerKey: keypair.publicKey, - recentBlockhash: blockhash, - }).compileToV0Message([addressTableLookupAccount]); - - const transaction = new VersionedTransaction(transactionMessage); - transaction.sign([keypair]); - console.log(`Submitting batch: ${batch}`); - - let isFinished = false; - while (!isFinished) { - try { - const signature = await connection.sendTransaction(transaction, { - skipPreflight: true, - preflightCommitment: "confirmed", - }); - await connection.confirmTransaction( - { signature, blockhash, lastValidBlockHeight }, - "confirmed", - ); - isFinished = true; - console.log( - `Batch resize success. https://explorer.solana.com/tx/${signature}/${ - isDevnet ? "?cluster=devnet" : "" - }`, - ); - } catch (err) { - console.log(err); - continue; - } - } - } - } catch (err) { - console.error(err); - } - // Change address table lookup account here (at undefined), if script errored out in the middle. -})(false, undefined); diff --git a/scripts/src/update.ts b/scripts/src/update.ts deleted file mode 100644 index 3fa6c6a9..00000000 --- a/scripts/src/update.ts +++ /dev/null @@ -1,342 +0,0 @@ -import { Program, AnchorProvider, Wallet } from "@coral-xyz/anchor"; -import { - Keypair, - Connection, - PublicKey, - SystemProgram, - LAMPORTS_PER_SOL, - TransactionMessage, - VersionedTransaction, - AddressLookupTableProgram, - AddressLookupTableAccount, - ComputeBudgetProgram, -} from "@solana/web3.js"; -import { config } from "dotenv"; - -import { WenNewStandard } from "../../target/types/wen_new_standard"; -import WNSIdl from "../../target/idl/wen_new_standard.json"; -import { WenRoyaltyDistribution } from "../../target/types/wen_royalty_distribution"; -import WenRoyaltyIdl from "../../target/idl/wen_royalty_distribution.json"; - -import accountsDevnet from "../devnet.json"; -import accountsMainnet from "../mainnet.json"; -import { filterAvailableAccounts, sleep } from "./utils"; - -const INSTRUCTIONS_PER_TX = 20; - -(async function (isDevnet: boolean, addressTableLookupAddress?: PublicKey) { - config({ path: "../.env" }); - try { - const DEVNET_URL = process.env.DEVNET_URL; - const MAINNET_URL = process.env.MAINNET_URL; - const keypair = Keypair.fromSecretKey( - Uint8Array.from(JSON.parse(process.env.KEYPAIR)), - ); - console.log(`Signing Address: ${keypair.publicKey.toString()}`); - - const connection = new Connection(isDevnet ? DEVNET_URL : MAINNET_URL, { - commitment: "confirmed", - }); - - // To test locally - // const connection = new Connection("http://localhost:8899"); - const wallet = new Wallet(keypair); - const provider = new AnchorProvider(connection, wallet, { - skipPreflight: true, - commitment: "confirmed", - preflightCommitment: "confirmed", - }); - - /** Airdrop only for devnet/localnet */ - if ( - isDevnet && - (await connection.getBalance(keypair.publicKey, "confirmed")) === 0 - ) { - console.log(`Zero balance account. Airdropping`); - await connection.confirmTransaction({ - ...(await connection.getLatestBlockhash("confirmed")), - signature: await connection.requestAirdrop( - keypair.publicKey, - 1 * LAMPORTS_PER_SOL, - ), - }); - } - /** */ - - const wnsProgram = new Program(WNSIdl as WenNewStandard, provider); - const distributionProgram = new Program( - WenRoyaltyIdl as WenRoyaltyDistribution, - provider, - ); - - /** Address table lookup for maximum efficiency */ - let addressTableLookupAccount: AddressLookupTableAccount; - if (!addressTableLookupAddress) { - const slot = await provider.connection.getSlot("confirmed"); - const { blockhash, lastValidBlockHeight } = - await provider.connection.getLatestBlockhash("confirmed"); - const [createLookupTableIx, lookupTableAccount] = - AddressLookupTableProgram.createLookupTable({ - authority: keypair.publicKey, - payer: keypair.publicKey, - recentSlot: slot - 1, - }); - - console.log( - `Created address table lookup: ${lookupTableAccount.toString()}`, - ); - - const extendLookupTableIx = AddressLookupTableProgram.extendLookupTable({ - addresses: [ - keypair.publicKey, - wnsProgram.programId, - distributionProgram.programId, - SystemProgram.programId, - ], - authority: keypair.publicKey, - lookupTable: lookupTableAccount, - payer: keypair.publicKey, - }); - - const txMessage = new TransactionMessage({ - instructions: [createLookupTableIx, extendLookupTableIx], - payerKey: keypair.publicKey, - recentBlockhash: blockhash, - }).compileToV0Message(); - - const tx = new VersionedTransaction(txMessage); - tx.sign([keypair]); - - const sig = await provider.connection.sendTransaction(tx, { - skipPreflight: true, - preflightCommitment: "confirmed", - }); - await provider.connection.confirmTransaction( - { - blockhash, - lastValidBlockHeight, - signature: sig, - }, - "confirmed", - ); - const { value } = await connection.getAddressLookupTable( - lookupTableAccount, - { commitment: "confirmed" }, - ); - addressTableLookupAccount = value; - - console.log(`Allowing for ATL to be indexed`); - await sleep(2000); - } else { - const { value } = await connection.getAddressLookupTable( - addressTableLookupAddress, - { commitment: "confirmed" }, - ); - addressTableLookupAccount = value; - } - /** */ - - const wnsAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = isDevnet ? accountsDevnet["wns"] : accountsMainnet["wns"]; - const finalAccounts = await filterAvailableAccounts( - connection, - wnsAccounts, - ); - - const filteredWnsAccounts = Object.values(finalAccounts).filter( - (wnsAccount) => wnsAccount.type !== "unknown", - ); - - const totalWNSBatches = Array.from( - { - length: Math.round(filteredWnsAccounts.length / INSTRUCTIONS_PER_TX), - }, - (_, i) => i + 1, - ); - console.log(`Total Tx batches: ${totalWNSBatches.length}`); - - for (const batch of totalWNSBatches) { - const accounts = filteredWnsAccounts.slice( - (batch - 1) * INSTRUCTIONS_PER_TX, - batch * INSTRUCTIONS_PER_TX, - ); - - const instructions = [ - ComputeBudgetProgram.setComputeUnitLimit({ units: 350_000 }), - ]; - - for (const { pubkey, type } of accounts) { - console.log(`Updating account: ${pubkey}`); - const wnsAccount = new PublicKey(pubkey); - - switch (type) { - case "tokenGroup": { - instructions.push( - await wnsProgram.methods - .updateBumpGroup() - .accountsStrict({ - signer: keypair.publicKey, - group: wnsAccount, - }) - .instruction(), - ); - continue; - } - case "tokenGroupMember": { - instructions.push( - await wnsProgram.methods - .updateBumpGroupMember() - .accountsStrict({ - signer: keypair.publicKey, - member: wnsAccount, - }) - .instruction(), - ); - continue; - } - case "manager": { - instructions.push( - await wnsProgram.methods - .updateBumpManager() - .accountsStrict({ - signer: keypair.publicKey, - manager: wnsAccount, - }) - .instruction(), - ); - continue; - } - case "approveAccount": { - console.log("Account type approve. Continuing"); - continue; - } - default: { - console.log("Account is extra meta account info. Continuing"); - continue; - } - } - } - - const { blockhash, lastValidBlockHeight } = - await connection.getLatestBlockhash("confirmed"); - const transactionMessage = new TransactionMessage({ - instructions, - payerKey: keypair.publicKey, - recentBlockhash: blockhash, - }).compileToV0Message([addressTableLookupAccount]); - - const transaction = new VersionedTransaction(transactionMessage); - transaction.sign([keypair]); - console.log(`Submitting batch: ${batch}`); - - let isFinished = false; - while (!isFinished) { - try { - const signature = await connection.sendTransaction(transaction, { - skipPreflight: true, - preflightCommitment: "confirmed", - }); - await connection.confirmTransaction( - { signature, blockhash, lastValidBlockHeight }, - "confirmed", - ); - isFinished = true; - console.log( - `Batch resize success. https://explorer.solana.com/tx/${signature}/${ - isDevnet ? "?cluster=devnet" : "" - }`, - ); - } catch (err) { - console.log(err); - continue; - } - } - } - - const distributionAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = isDevnet - ? accountsDevnet["distribution"] - : accountsMainnet["distribution"]; - - const finalDistAccounts = await filterAvailableAccounts( - connection, - distributionAccounts, - ); - - const totalDistributionBatches = Array.from( - { - length: Math.round( - Object.keys(finalDistAccounts).length / INSTRUCTIONS_PER_TX, - ), - }, - (_, i) => i + 1, - ); - - for (const batch of totalDistributionBatches) { - const accounts = Object.values(finalDistAccounts).slice( - (batch - 1) * INSTRUCTIONS_PER_TX, - batch * INSTRUCTIONS_PER_TX, - ); - - const instructions = [ - ComputeBudgetProgram.setComputeUnitLimit({ units: 350_000 }), - ]; - for (const { pubkey } of accounts) { - console.log(`Updating account: ${pubkey}`); - const distributionAccount = new PublicKey(pubkey); - - instructions.push( - await distributionProgram.methods - .updateBumpDistribution() - .accountsStrict({ - distributionAccount, - signer: keypair.publicKey, - }) - .instruction(), - ); - } - - const { blockhash, lastValidBlockHeight } = - await connection.getLatestBlockhash("confirmed"); - const transactionMessage = new TransactionMessage({ - instructions, - payerKey: keypair.publicKey, - recentBlockhash: blockhash, - }).compileToV0Message([addressTableLookupAccount]); - - const transaction = new VersionedTransaction(transactionMessage); - transaction.sign([keypair]); - console.log(`Submitting batch: ${batch}`); - - let isFinished = false; - while (!isFinished) { - try { - const signature = await connection.sendTransaction(transaction, { - skipPreflight: true, - preflightCommitment: "confirmed", - }); - await connection.confirmTransaction( - { signature, blockhash, lastValidBlockHeight }, - "confirmed", - ); - isFinished = true; - console.log( - `Batch resize success. https://explorer.solana.com/tx/${signature}/${ - isDevnet ? "?cluster=devnet" : "" - }`, - ); - } catch (err) { - console.log(err); - continue; - } - } - } - } catch (err) { - console.error(err); - } - // Paste the ATL address generated from resize.ts -})(false, undefined); diff --git a/scripts/src/utils.ts b/scripts/src/utils.ts deleted file mode 100644 index c7846c57..00000000 --- a/scripts/src/utils.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { createHash } from "crypto"; -import { Connection, PublicKey } from "@solana/web3.js"; - -export async function sleep(ms: number) { - return new Promise((res) => { - setTimeout(res, ms); - }); -} - -export function getType(data: Buffer) { - const managerDiscriminator = Buffer.from( - createHash("sha256").update("account:Manager").digest(), - ).subarray(0, 8); - - const groupDiscriminator = Buffer.from( - createHash("sha256").update("account:TokenGroup").digest(), - ).subarray(0, 8); - - const memberDiscriminator = Buffer.from( - createHash("sha256").update("account:TokenGroupMember").digest(), - ).subarray(0, 8); - - const approveDiscriminator = Buffer.from( - createHash("sha256").update("account:ApproveAccount").digest(), - ).subarray(0, 8); - - const distributionDiscriminator = Buffer.from( - createHash("sha256").update("account:DistributionAccount").digest(), - ).subarray(0, 8); - - const dataFirst8Bytes = data.subarray(0, 8); - - if (dataFirst8Bytes.equals(managerDiscriminator)) { - return "manager"; - } else if (dataFirst8Bytes.equals(groupDiscriminator)) { - return "tokenGroup"; - } else if (dataFirst8Bytes.equals(memberDiscriminator)) { - return "tokenGroupMember"; - } else if (dataFirst8Bytes.equals(approveDiscriminator)) { - return "approveAccount"; - } else if (dataFirst8Bytes.equals(distributionDiscriminator)) { - return "distributionAccount"; - } else { - return "unknown"; - } -} - -export async function filterAvailableAccounts( - connection: Connection, - accounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - >, -): Promise< - Record -> { - const finalAccounts: Record< - string, - { pubkey: string; type: string; account: { data: string[] } } - > = {}; - for (const account of Object.keys(accounts)) { - const accountPubkey = new PublicKey(account); - const accountInfo = await connection.getAccountInfo( - accountPubkey, - "confirmed", - ); - if (accountInfo) { - finalAccounts[account] = { - ...accounts[account], - account: { - ...accounts[account].account, - data: [accountInfo.data.toString("base64"), "base64"], - }, - }; - } - } - - return finalAccounts; -} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json deleted file mode 100644 index 247d160a..00000000 --- a/scripts/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true, - "resolveJsonModule": true - } -} diff --git a/tests/constants.ts b/tests/constants.ts new file mode 100644 index 00000000..5a68b131 --- /dev/null +++ b/tests/constants.ts @@ -0,0 +1,4 @@ +// @dev: sync with Anchor.toml to ensure correct program ids are used on tests +export const EDITIONS_PROGRAM_ID = 'Rari9ftBd6vFdtpn8TDLwN2ze24KKkM5MLEETNiBMNn'; +export const EDITIONS_CONTROLS_PROGRAM_ID = 'RariUNM3vz1rwxPg8UJyRAN7rSKXxgd2ncS2ddCa4ZE'; +export const TOKEN_GROUP_EXTENSION_PROGRAM_ID = 'RariGDYwEF1jQA4kisHxBxiv1TDuBPVHNNoXFNYriFb'; diff --git a/tests/data/merkle_tree.json b/tests/data/merkle_tree.json new file mode 100644 index 00000000..2121a02e --- /dev/null +++ b/tests/data/merkle_tree.json @@ -0,0 +1,41 @@ +{ + "merkle_root": [ + 125, 184, 194, 116, 52, 36, 65, 219, 171, 135, 154, 27, 188, 122, 207, 204, + 111, 70, 66, 115, 161, 228, 44, 84, 67, 97, 29, 70, 253, 69, 11, 245 + ], + "max_num_nodes": 2, + "max_total_claim": 6, + "tree_nodes": [ + { + "claimant": [ + 104, 164, 83, 51, 23, 177, 193, 29, 252, 241, 86, 132, 173, 155, 114, + 131, 130, 73, 27, 101, 233, 95, 12, 45, 107, 255, 120, 26, 121, 221, + 120, 54 + ], + "claim_price": 500000, + "max_claims": 3, + "proof": [ + [ + 64, 131, 242, 169, 206, 112, 155, 119, 81, 214, 17, 137, 174, 140, + 208, 220, 141, 177, 213, 131, 127, 104, 181, 15, 121, 228, 87, 25, + 232, 172, 235, 168 + ] + ] + }, + { + "claimant": [ + 186, 39, 133, 92, 39, 241, 42, 161, 180, 15, 92, 18, 15, 101, 248, 80, + 238, 254, 220, 231, 1, 14, 231, 145, 170, 49, 163, 111, 239, 112, 135, 6 + ], + "claim_price": 500000, + "max_claims": 3, + "proof": [ + [ + 86, 37, 15, 136, 192, 159, 125, 244, 163, 213, 251, 242, 217, 215, + 159, 249, 93, 166, 82, 38, 187, 58, 199, 64, 161, 50, 122, 122, 17, + 125, 63, 188 + ] + ] + } + ] +} diff --git a/tests/data/minter1.json b/tests/data/minter1.json new file mode 100644 index 00000000..018778a6 --- /dev/null +++ b/tests/data/minter1.json @@ -0,0 +1,6 @@ +[ + 110, 76, 59, 154, 201, 225, 246, 121, 152, 90, 45, 211, 52, 244, 216, 108, + 118, 248, 113, 239, 61, 248, 207, 122, 98, 26, 184, 92, 51, 97, 52, 218, 104, + 164, 83, 51, 23, 177, 193, 29, 252, 241, 86, 132, 173, 155, 114, 131, 130, 73, + 27, 101, 233, 95, 12, 45, 107, 255, 120, 26, 121, 221, 120, 54 +] diff --git a/tests/data/minter2.json b/tests/data/minter2.json new file mode 100644 index 00000000..6abe9d9b --- /dev/null +++ b/tests/data/minter2.json @@ -0,0 +1,6 @@ +[ + 16, 27, 49, 140, 228, 142, 201, 93, 199, 209, 62, 136, 151, 212, 238, 114, 46, + 204, 155, 132, 26, 227, 44, 245, 239, 29, 195, 63, 77, 162, 28, 220, 186, 39, + 133, 92, 39, 241, 42, 161, 180, 15, 92, 18, 15, 101, 248, 80, 238, 254, 220, + 231, 1, 14, 231, 145, 170, 49, 163, 111, 239, 112, 135, 6 +] diff --git a/tests/wen_new_standard.test.ts b/tests/rarible_marketplace.ts similarity index 100% rename from tests/wen_new_standard.test.ts rename to tests/rarible_marketplace.ts diff --git a/tests/tests/editions_controls.test.ts b/tests/tests/editions_controls.test.ts new file mode 100644 index 00000000..d20ee15d --- /dev/null +++ b/tests/tests/editions_controls.test.ts @@ -0,0 +1,1469 @@ +import * as anchor from '@coral-xyz/anchor'; +import { Program } from '@coral-xyz/anchor'; +import { PublicKey, Keypair, SystemProgram, ComputeBudgetProgram, LAMPORTS_PER_SOL } from '@solana/web3.js'; +import { ASSOCIATED_TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID } from '@solana/spl-token'; +import { RaribleEditionsControls } from '../../target/types/rarible_editions_controls'; +import { RaribleEditions } from '../../target/types/rarible_editions'; +import { expect } from 'chai'; +import { describe, it } from 'mocha'; +import { estimateTransactionFee, getCluster } from '../utils/utils'; +import { + getEditions, + getEditionsControls, + getMinterStats, + getTokenMetadata, + logEditions, + logEditionsControls, + logMinterStats, + logMinterStatsPhase, + logTokenMetadata, +} from '../utils/getters'; +import { Transaction } from '@solana/web3.js'; +// devnote: try to make tests don't rely on hard addresses but on dynamic runtime ids. +import { TOKEN_GROUP_EXTENSION_PROGRAM_ID } from '../constants'; +import { getEditionsPda, getEditionsControlsPda, getHashlistPda, getHashlistMarkerPda, getMinterStatsPda, getMinterStatsPhasePda } from '../utils/pdas'; +import { CollectionConfig, AllowListConfig, PhaseConfig } from '../utils/types'; + +const VERBOSE_LOGGING = false; + +describe('Editions Controls Test Suite', () => { + const provider = anchor.AnchorProvider.env(); + anchor.setProvider(provider); + + // Modify compute units + const modifiedComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({ + units: 800000, + }); + + let editionsControlsProgram: Program; + let editionsProgram: Program; + + let editionsPda: PublicKey; + let editionsControlsPda: PublicKey; + let hashlistPda: PublicKey; + + let payer: Keypair; + let creator1: Keypair; + let creator2: Keypair; + let treasury: Keypair; + let platformFeeAdmin: Keypair; + let groupMint: Keypair; + let group: Keypair; + + let minter0: Keypair; // in allowlist + let minter1: Keypair; // in allowlist + let minter2: Keypair; // not in allowlist + + let collectionConfig: CollectionConfig; + let allowListConfig: AllowListConfig; + + let phase0Config: PhaseConfig; + let phase1Config: PhaseConfig; + let phase2Config: PhaseConfig; + let phase3Config: PhaseConfig; + let phase4Config: PhaseConfig; + let phase5Config: PhaseConfig; + + // Generate dynamic keypairs and collection config + before(async () => { + if (VERBOSE_LOGGING) { + const cluster = await getCluster(provider.connection); + console.log('Cluster:', cluster); + } + + editionsControlsProgram = anchor.workspace.RaribleEditionsControls as Program; + editionsProgram = anchor.workspace.RaribleEditions as Program; + + payer = (provider.wallet as anchor.Wallet).payer; + creator1 = Keypair.generate(); + creator2 = Keypair.generate(); + treasury = Keypair.generate(); + platformFeeAdmin = Keypair.generate(); + groupMint = Keypair.generate(); + group = Keypair.generate(); + + collectionConfig = { + maxNumberOfTokens: new anchor.BN(20), + symbol: 'COOLX55', + collectionName: 'Collection name with meta, platform fee and royalties', + collectionUri: 'ipfs://QmbsXNSkPUtYNmKfYw1mUSVuz9QU8nhu7YvzM1aAQsv6xw/0', + treasury: treasury.publicKey, + maxMintsPerWallet: new anchor.BN(100), + royalties: { + royaltyBasisPoints: new anchor.BN(1000), + creators: [ + { + address: creator1.publicKey, + share: 50, + }, + { + address: creator2.publicKey, + share: 50, + }, + ], + }, + platformFee: { + platformFeeValue: new anchor.BN(50000), + recipients: [ + { + address: platformFeeAdmin.publicKey, + share: 100, + }, + ], + isFeeFlat: true, + }, + extraMeta: [ + { field: 'field1', value: 'value1' }, + { field: 'field2', value: 'value2' }, + { field: 'field3', value: 'value3' }, + { field: 'field4', value: 'value4' }, + ], + itemBaseUri: 'ipfs://QmbsXNSkPUtYNmKfYw1mUSVuz9QU8nhu7YvzM1aAQsv6xw/{}', + itemBaseName: 'Item T8 V4 #{}', + cosignerProgramId: null, + }; + if (VERBOSE_LOGGING) { + console.log('Collection config: ', collectionConfig); + } + + editionsPda = getEditionsPda(collectionConfig.symbol, editionsProgram.programId); + editionsControlsPda = getEditionsControlsPda(editionsPda, editionsControlsProgram.programId); + hashlistPda = getHashlistPda(editionsPda, editionsProgram.programId); + }); + + // Generate allowlist variables + before(async () => { + minter0 = Keypair.fromSecretKey( + new Uint8Array([ + 110, 76, 59, 154, 201, 225, 246, 121, 152, 90, 45, 211, 52, 244, 216, 108, 118, 248, 113, 239, 61, 248, 207, 122, 98, 26, 184, 92, 51, 97, 52, 218, 104, + 164, 83, 51, 23, 177, 193, 29, 252, 241, 86, 132, 173, 155, 114, 131, 130, 73, 27, 101, 233, 95, 12, 45, 107, 255, 120, 26, 121, 221, 120, 54, + ]) + ); + minter1 = Keypair.fromSecretKey( + new Uint8Array([ + 16, 27, 49, 140, 228, 142, 201, 93, 199, 209, 62, 136, 151, 212, 238, 114, 46, 204, 155, 132, 26, 227, 44, 245, 239, 29, 195, 63, 77, 162, 28, 220, 186, + 39, 133, 92, 39, 241, 42, 161, 180, 15, 92, 18, 15, 101, 248, 80, 238, 254, 220, 231, 1, 14, 231, 145, 170, 49, 163, 111, 239, 112, 135, 6, + ]) + ); + minter2 = Keypair.generate(); + allowListConfig = { + merkleRoot: Buffer.from([ + 125, 184, 194, 116, 52, 36, 65, 219, 171, 135, 154, 27, 188, 122, 207, 204, 111, 70, 66, 115, 161, 228, 44, 84, 67, 97, 29, 70, 253, 69, 11, 245, + ]), + list: [ + { + address: minter0.publicKey, + price: new anchor.BN(500000), // 0.005 SOL + max_claims: new anchor.BN(3), + proof: [ + Buffer.from([ + 64, 131, 242, 169, 206, 112, 155, 119, 81, 214, 17, 137, 174, 140, 208, 220, 141, 177, 213, 131, 127, 104, 181, 15, 121, 228, 87, 25, 232, 172, + 235, 168, + ]), + ], + }, + { + address: minter1.publicKey, + price: new anchor.BN(500000), // 0.005 SOL + max_claims: new anchor.BN(3), + proof: [ + Buffer.from([ + 86, 37, 15, 136, 192, 159, 125, 244, 163, 213, 251, 242, 217, 215, 159, 249, 93, 166, 82, 38, 187, 58, 199, 64, 161, 50, 122, 122, 17, 125, 63, + 188, + ]), + ], + }, + ], + }; + }); + + // Perform needed airdrops to minter0, treasury and platformFeeRecipient + before(async () => { + // Airdrop SOL to minter0 + const minter0AirdropSignature = await provider.connection.requestAirdrop(minter0.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(minter0AirdropSignature); + + // Airdrop SOL to minter1 + const minter1AirdropSignature = await provider.connection.requestAirdrop(minter1.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(minter1AirdropSignature); + + // Airdrop SOL to minter2 + const minter2AirdropSignature = await provider.connection.requestAirdrop(minter2.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(minter2AirdropSignature); + + // Airdrop SOL to treasury + const treasuryAirdropSignature = await provider.connection.requestAirdrop(collectionConfig.treasury, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(treasuryAirdropSignature); + + // Airdrop SOL to platformFeeRecipient + const platformFeeRecipientAirdropSignature = await provider.connection.requestAirdrop(platformFeeAdmin.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(platformFeeRecipientAirdropSignature); + }); + + describe('Deploying', () => { + it('Should deploy a collection', async () => { + // Modify compute units for the transaction + const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({ + units: 800000, + }); + + try { + const initialiseIx = await editionsControlsProgram.methods + .initialiseEditionsControls({ + maxMintsPerWallet: collectionConfig.maxMintsPerWallet, + treasury: collectionConfig.treasury, + maxNumberOfTokens: collectionConfig.maxNumberOfTokens, + symbol: collectionConfig.symbol, + collectionName: collectionConfig.collectionName, + collectionUri: collectionConfig.collectionUri, + cosignerProgramId: collectionConfig.cosignerProgramId, + royalties: collectionConfig.royalties, + platformFee: collectionConfig.platformFee, + extraMeta: collectionConfig.extraMeta, + itemBaseUri: collectionConfig.itemBaseUri, + itemBaseName: collectionConfig.itemBaseName, + }) + .accountsStrict({ + editionsControls: editionsControlsPda, + editionsDeployment: editionsPda, + hashlist: hashlistPda, + payer: payer.publicKey, + creator: payer.publicKey, + groupMint: groupMint.publicKey, + group: group.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + }) + .instruction(); + + const transaction = new Transaction().add(modifyComputeUnits).add(initialiseIx); + + await provider.sendAndConfirm(transaction, [groupMint, group, payer]); + + // Fetch updated state + const editionsDecoded = await getEditions(provider.connection, editionsPda, editionsProgram); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const metadata = await getTokenMetadata(provider.connection, groupMint.publicKey); + if (VERBOSE_LOGGING) { + logEditions(editionsDecoded); + logEditionsControls(editionsControlsDecoded); + logTokenMetadata(metadata); + } + + // Verify Editions deployment + expect(editionsDecoded.data.symbol).to.equal(collectionConfig.symbol); + expect(editionsDecoded.data.creator.toBase58()).to.equal(editionsControlsPda.toBase58()); + expect(editionsDecoded.data.maxNumberOfTokens.toString()).to.equal(collectionConfig.maxNumberOfTokens.toString()); + expect(editionsDecoded.data.itemBaseName).to.equal(collectionConfig.itemBaseName); + expect(editionsDecoded.data.itemBaseUri).to.equal(collectionConfig.itemBaseUri); + + // Verify EditionsControls deployment + expect(editionsControlsDecoded.data.editionsDeployment.toBase58()).to.equal(editionsPda.toBase58()); + expect(editionsControlsDecoded.data.creator.toBase58()).to.equal(payer.publicKey.toBase58()); + expect(editionsControlsDecoded.data.treasury.toBase58()).to.equal(collectionConfig.treasury.toBase58()); + expect(Number(editionsControlsDecoded.data.maxMintsPerWallet)).to.equal(Number(collectionConfig.maxMintsPerWallet)); + expect(editionsControlsDecoded.data.phases.length).to.equal(0); + + // Verify metadata + expect(metadata.name).to.equal(collectionConfig.collectionName); + expect(metadata.uri).to.equal(collectionConfig.collectionUri); + expect(metadata.mint.toBase58()).to.equal(groupMint.publicKey.toBase58()); + // Verify that every key in extraMeta is present in metadata.additionalMetadata + collectionConfig.extraMeta.forEach((meta) => { + expect(metadata.additionalMetadata).to.have.property(meta.field); + expect(metadata.additionalMetadata[meta.field]).to.equal(meta.value); + }); + + // Add more assertions as needed + } catch (error) { + console.error('Error in initialiseEditionsControls:', error); + throw error; + } + }); + }); + + describe('Adding phases', () => { + it('Should add a private phase with allowlist. [Phase Index 0]: Open: Not Available, Allowlist: 0.05 SOL', async () => { + phase0Config = { + maxMintsPerWallet: new anchor.BN(100), + maxMintsTotal: new anchor.BN(1000), + priceAmount: new anchor.BN(0), // Not openly buyable, only available to allowlist + startTime: new anchor.BN(new Date().getTime() / 1000), + endTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24), // 1 day from now + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: true, + merkleRoot: allowListConfig.merkleRoot, + }; + const phaseIx = await editionsControlsProgram.methods + .addPhase(phase0Config) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + await provider.sendAndConfirm(transaction, [payer]); + + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + if (VERBOSE_LOGGING) { + logEditionsControls(editionsControlsDecoded); + } + + // verify state + expect(editionsControlsDecoded.data.phases.length).to.equal(1); + }); + + it('Should add a public phase with allowlist. [Phase Index 1]: Open: O.1 SOL, Allowlist: 0.05 SOL', async () => { + phase1Config = { + maxMintsPerWallet: new anchor.BN(5), + maxMintsTotal: new anchor.BN(10), + priceAmount: new anchor.BN(1000000), // 0.1 SOL + startTime: new anchor.BN(new Date().getTime() / 1000), + endTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24), // 1 day from now + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: false, + merkleRoot: allowListConfig.merkleRoot, + }; + + const phaseIx = await editionsControlsProgram.methods + .addPhase(phase1Config) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + await provider.sendAndConfirm(transaction, [payer]); + + // get state + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + if (VERBOSE_LOGGING) { + logEditionsControls(editionsControlsDecoded); + } + + // verify state + expect(editionsControlsDecoded.data.phases.length).to.equal(2); + }); + + it('Should add a public phase without allowlist. [Phase Index 2]: Open: 0.05 SOL, Allowlist: Not Available', async () => { + phase2Config = { + maxMintsPerWallet: new anchor.BN(100), + maxMintsTotal: new anchor.BN(1000), + priceAmount: new anchor.BN(500000), // 0.05 SOL + startTime: new anchor.BN(new Date().getTime() / 1000), + endTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24), // 1 day from now + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: false, + merkleRoot: null, + }; + + const phaseIx = await editionsControlsProgram.methods + .addPhase(phase2Config) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + await provider.sendAndConfirm(transaction, [payer]); + + // get state + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + if (VERBOSE_LOGGING) { + logEditionsControls(editionsControlsDecoded); + } + + // verify state + expect(editionsControlsDecoded.data.phases.length).to.equal(3); + }); + + it('Should add a public phase without max supply, up to collection max. [Phase Index 3]', async () => { + phase3Config = { + maxMintsPerWallet: new anchor.BN(100), + maxMintsTotal: new anchor.BN(0), // unlimited supply + priceAmount: new anchor.BN(500000), // 0.05 SOL + startTime: new anchor.BN(new Date().getTime() / 1000), + endTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24), // 1 day from now + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: false, + merkleRoot: null, + }; + + const phaseIx = await editionsControlsProgram.methods + .addPhase(phase3Config) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + await provider.sendAndConfirm(transaction, [payer]); + + // get state + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + if (VERBOSE_LOGGING) { + logEditionsControls(editionsControlsDecoded); + } + + // verify state + expect(editionsControlsDecoded.data.phases.length).to.equal(4); + }); + + it('Should add a phase that starts in the future. [Phase Index 4]', async () => { + phase4Config = { + maxMintsPerWallet: new anchor.BN(100), + maxMintsTotal: new anchor.BN(1000), + priceAmount: new anchor.BN(500000), // 0.05 SOL + startTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24), // 1 day from now + endTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24 * 7), // 1 week from now + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: false, + merkleRoot: null, + }; + + const phaseIx = await editionsControlsProgram.methods + .addPhase(phase4Config) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + await provider.sendAndConfirm(transaction, [payer]); + + // get state + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + if (VERBOSE_LOGGING) { + logEditionsControls(editionsControlsDecoded); + } + + // verify state + expect(editionsControlsDecoded.data.phases.length).to.equal(5); + }); + + it('Should add a phase that has already ended. [Phase Index 5]', async () => { + phase5Config = { + maxMintsPerWallet: new anchor.BN(100), + maxMintsTotal: new anchor.BN(1000), + priceAmount: new anchor.BN(500000), // 0.05 SOL + startTime: new anchor.BN(new Date().getTime() / 1000 - 60 * 60 * 24 * 7), // 1 week ago + endTime: new anchor.BN(new Date().getTime() / 1000 - 60 * 60 * 24), // 1 day associatedTokenProgram + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: false, + merkleRoot: null, + }; + + const phaseIx = await editionsControlsProgram.methods + .addPhase(phase5Config) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + await provider.sendAndConfirm(transaction, [payer]); + + // get state + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + if (VERBOSE_LOGGING) { + logEditionsControls(editionsControlsDecoded); + } + + // verify state + expect(editionsControlsDecoded.data.phases.length).to.equal(6); + }); + + it('Should fail to add a private phase without providing the merkle root', async () => { + const invalidPhaseConfig = { + maxMintsPerWallet: new anchor.BN(100), + maxMintsTotal: new anchor.BN(1000), + priceAmount: new anchor.BN(500000), // 0.05 SOL + startTime: new anchor.BN(new Date().getTime() / 1000), + endTime: new anchor.BN(new Date().getTime() / 1000 + 60 * 60 * 24), // 1 day from now + priceToken: new PublicKey('So11111111111111111111111111111111111111112'), + isPrivate: true, + merkleRoot: null, // Invalid: null merkle root for private phase + }; + + const phaseIx = await editionsControlsProgram.methods + .addPhase(invalidPhaseConfig) + .accountsStrict({ + editionsControls: editionsControlsPda, + creator: payer.publicKey, + payer: payer.publicKey, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_2022_PROGRAM_ID, + raribleEditionsProgram: editionsProgram.programId, + }) + .signers([]) + .instruction(); + + const transaction = new Transaction().add(phaseIx); + + try { + await provider.sendAndConfirm(transaction, [payer]); + // If we reach this point, the test should fail + expect.fail('Transaction should have failed'); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Merkle root must be provided for private phases'); + } + + // Verify state hasn't changed + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + expect(editionsControlsDecoded.data.phases.length).to.equal(6); // Should still be 6 phases + }) + }); + + describe('Minting', () => { + describe('Minting on a private allowlist-only phase [Phase Index 0]', () => { + it('Should be able to mint with valid allowlist proof', async () => { + const mintConfig = { + phaseIndex: 0, + merkleProof: allowListConfig.list[0].proof, + allowListPrice: allowListConfig.list[0].price, + allowListMaxClaims: allowListConfig.list[0].max_claims, + }; + + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter0.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter0.publicKey, 0, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter0.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter0.publicKey, + signer: minter0.publicKey, + minter: minter0.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + + const minter0BalanceBefore = await provider.connection.getBalance(minter0.publicKey); + const treasuryBalanceBefore = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceBefore = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + // Estimate transaction fee + const estimatedFee = await estimateTransactionFee(provider.connection, transaction, [minter0, mint, member]); + if (VERBOSE_LOGGING) { + console.log(`Estimated transaction fee: ${estimatedFee} lamports (${estimatedFee / LAMPORTS_PER_SOL} SOL)`); + } + + try { + await provider.sendAndConfirm(transaction, [minter0, mint, member]); + } catch (error) { + console.error('Error in mintWithControls:', error); + throw error; + } + + // Verify state after minting + const editionsDecoded = await getEditions(provider.connection, editionsPda, editionsProgram); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const minterStatsDecoded = await getMinterStats(provider.connection, minterStatsPda, editionsControlsProgram); + const minterStatsPhaseDecoded = await getMinterStats(provider.connection, minterStatsPhasePda, editionsControlsProgram); + + // Pull new balances + const minter0BalanceAfter = await provider.connection.getBalance(minter0.publicKey); + const treasuryBalanceAfter = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceAfter = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + // Verify that the token was minted + expect(editionsDecoded.data.numberOfTokensIssued.toString()).to.equal('1'); + expect(editionsControlsDecoded.data.phases[0].currentMints.toString()).to.equal('1'); + expect(minterStatsDecoded.data.mintCount.toString()).to.equal('1'); + expect(minterStatsPhaseDecoded.data.mintCount.toString()).to.equal('1'); + + // When the fee is flat, is paid by the minter. + const expectedPlatformFee = collectionConfig.platformFee.platformFeeValue; + const expectedTreasuryIncome = mintConfig.allowListPrice; + + if (VERBOSE_LOGGING) { + console.log('balances before', { + minter0: minter0BalanceBefore / LAMPORTS_PER_SOL, + treasury: treasuryBalanceBefore / LAMPORTS_PER_SOL, + platformFeeRecipient: platformFeeRecipientBalanceBefore / LAMPORTS_PER_SOL, + }); + + console.log('balances after', { + minter0: minter0BalanceAfter / LAMPORTS_PER_SOL, + treasury: treasuryBalanceAfter / LAMPORTS_PER_SOL, + platformFeeRecipient: platformFeeRecipientBalanceAfter / LAMPORTS_PER_SOL, + }); + } + + // Verify that the treasury received the correct amount of SOL (0.05 SOL from allowlist price) + expect(treasuryBalanceAfter - treasuryBalanceBefore).to.equal(expectedTreasuryIncome.toNumber()); + // Verify that the platform fee recipient received the correct amount of royalties (0.05 SOL from collectionConfig platform fee) + expect(platformFeeRecipientBalanceAfter - platformFeeRecipientBalanceBefore).to.equal(expectedPlatformFee.toNumber()); + }); + + it('Should not be able to mint without allowlist proof (private phase)', async () => { + const mintConfig = { + phaseIndex: 0, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter0.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter0.publicKey, 0, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter0.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter0.publicKey, + signer: minter0.publicKey, + minter: minter0.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter0, mint, member]); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Private phase but no merkle proof provided'); + } + }); + + it('Should fail to mint when exceeding allowlist max claims', async () => { + const mintConfig = { + phaseIndex: 0, + merkleProof: allowListConfig.list[0].proof, + allowListPrice: allowListConfig.list[0].price, + allowListMaxClaims: allowListConfig.list[0].max_claims, + }; + + // mint twice, then the third mint should fail because the max claims for the allowlist is 3 + const mintWithControls = async () => { + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter0.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter0.publicKey, 0, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter0.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter0.publicKey, + signer: minter0.publicKey, + minter: minter0.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter0, mint, member]); + } catch (error) { + throw error; + } + }; + + for (let i = 0; i < 2; i++) { + try { + await mintWithControls(); + } catch (error) { + throw error; + } + } + + try { + await mintWithControls(); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('This wallet has exceeded allow list max_claims in the current phase.'); + } + + // expect the user to have minted three total items on the phase + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter0.publicKey, 0, editionsControlsProgram.programId); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const minterStatsPhaseDecoded = await getMinterStats(provider.connection, minterStatsPhasePda, editionsControlsProgram); + + expect(editionsControlsDecoded.data.phases[0].currentMints.toString()).to.equal('3'); + expect(minterStatsPhaseDecoded.data.mintCount.toString()).to.equal('3'); + }); + }); + + describe('Minting on a public phase with optional allowlist [Phase Index 1]', () => { + it('Should be able to mint with allowlist proof at discounted price', async () => { + const mintConfig = { + phaseIndex: 1, + merkleProof: allowListConfig.list[1].proof, + allowListPrice: allowListConfig.list[1].price, + allowListMaxClaims: allowListConfig.list[1].max_claims, + }; + + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter1.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter1.publicKey, 1, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter1.publicKey, false, TOKEN_2022_PROGRAM_ID); + + // pull before balances + const treasuryBalanceBefore = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceBefore = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter1.publicKey, + signer: minter1.publicKey, + minter: minter1.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter1, mint, member]); + } catch (error) { + console.error('Error in mintWithControls:', error); + throw error; + } + + // Verify state after minting + const editionsDecoded = await getEditions(provider.connection, editionsPda, editionsProgram); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const minterStatsDecoded = await getMinterStats(provider.connection, minterStatsPda, editionsControlsProgram); + const minterStatsPhaseDecoded = await getMinterStats(provider.connection, minterStatsPhasePda, editionsControlsProgram); + + // Verify mint + expect(editionsControlsDecoded.data.phases[1].currentMints.toString()).to.equal('1'); + expect(minterStatsDecoded.data.mintCount.toString()).to.equal('1'); // user already minted on phase 0 + expect(minterStatsPhaseDecoded.data.mintCount.toString()).to.equal('1'); + + // Verify protocol fees & treasury income + const expectedPlatformFee = collectionConfig.platformFee.platformFeeValue; + const expectedTreasuryIncome = mintConfig.allowListPrice; + + const treasuryBalanceAfter = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceAfter = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + expect(treasuryBalanceAfter - treasuryBalanceBefore).to.equal(expectedTreasuryIncome.toNumber()); + expect(platformFeeRecipientBalanceAfter - platformFeeRecipientBalanceBefore).to.equal(expectedPlatformFee.toNumber()); + }); + + it('Should be able to mint without allowlist proof at full price', async () => { + const mintConfig = { + phaseIndex: 1, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter1.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter1.publicKey, 1, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter1.publicKey, false, TOKEN_2022_PROGRAM_ID); + + // pull before balances + const treasuryBalanceBefore = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceBefore = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter1.publicKey, + signer: minter1.publicKey, + minter: minter1.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter1, mint, member]); + } catch (error) { + console.error('Error in mintWithControls:', error); + throw error; + } + + // Verify state after minting + const editionsDecoded = await getEditions(provider.connection, editionsPda, editionsProgram); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const minterStatsDecoded = await getMinterStats(provider.connection, minterStatsPda, editionsControlsProgram); + const minterStatsPhaseDecoded = await getMinterStats(provider.connection, minterStatsPhasePda, editionsControlsProgram); + + expect(editionsControlsDecoded.data.phases[1].currentMints.toString()).to.equal('2'); + expect(minterStatsDecoded.data.mintCount.toString()).to.equal('2'); + expect(minterStatsPhaseDecoded.data.mintCount.toString()).to.equal('2'); + + // Verify protocol fees & treasury income + const expectedPlatformFee = collectionConfig.platformFee.platformFeeValue; + const expectedTreasuryIncome = phase1Config.priceAmount; + + const treasuryBalanceAfter = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceAfter = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + expect(treasuryBalanceAfter - treasuryBalanceBefore).to.equal(expectedTreasuryIncome.toNumber()); + expect(platformFeeRecipientBalanceAfter - platformFeeRecipientBalanceBefore).to.equal(expectedPlatformFee.toNumber()); + }); + + // Max wallet mints on Phase 1 is 5 + it('Should fail to mint when exceeding phase max per wallet', async () => { + const mintConfig = { + phaseIndex: 1, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const mintWithControls = async () => { + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter1.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter1.publicKey, 1, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter1.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter1.publicKey, + signer: minter1.publicKey, + minter: minter1.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter1, mint, member]); + } catch (error) { + throw error; + } + }; + + for (let i = 0; i < 3; i++) { + try { + await mintWithControls(); + } catch (error) { + throw error; + } + } + + // 5'th mint should fail + try { + await mintWithControls(); + throw new Error('Mint should fail'); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Exceeded wallet max mints for this phase.'); + } + }); + + // Max total mints on Phase 1 is 10 + it('Should fail to mint when exceeding phase max mints', async () => { + // phase mint count is 5, perform 5 mints more with random wallets that should succeed, then the 11th mint should fail + const mintWithControls = async (minter: Keypair, mint: Keypair, member: Keypair) => { + const mintConfig = { + phaseIndex: 1, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter.publicKey, 1, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter.publicKey, + signer: minter.publicKey, + minter: minter.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter, mint, member]); + } catch (error) { + throw error; + } + }; + if (VERBOSE_LOGGING) { + console.log('Performing 5 mints with random wallets, takes a while..'); + } + const mintPromises = []; + for (let i = 0; i < 5; i++) { + const minter = Keypair.generate(); + const mint = Keypair.generate(); + const member = Keypair.generate(); + + // airdrop minter + const airdropTx = await provider.connection.requestAirdrop(minter.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(airdropTx, 'confirmed'); + + mintPromises.push(mintWithControls(minter, mint, member)); + } + + try { + await Promise.all(mintPromises); + } catch (error) { + console.error('Error in parallel minting:', error); + throw error; + } + + // 11st mint should fail + try { + const minter = Keypair.generate(); + const mint = Keypair.generate(); + const member = Keypair.generate(); + + // airdrop minter + const airdropTx = await provider.connection.requestAirdrop(minter.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(airdropTx, 'confirmed'); + + await mintWithControls(minter, mint, member); + throw new Error('Mint should fail'); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Exceeded max mints for this phase.'); + } + }); + + describe('Minting on a public phase without allowlist [Phase Index 2]', () => { + it('Should be able to mint without any allowlist data (open mint)', async () => { + const mintConfig = { + phaseIndex: 2, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter2.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter2.publicKey, 2, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter2.publicKey, false, TOKEN_2022_PROGRAM_ID); + + // pull before balances + const treasuryBalanceBefore = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceBefore = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter2.publicKey, + signer: minter2.publicKey, + minter: minter2.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter2, mint, member]); + } catch (error) { + console.error('Error in mintWithControls:', error); + throw error; + } + + // Verify state after minting + const editionsDecoded = await getEditions(provider.connection, editionsPda, editionsProgram); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const minterStatsDecoded = await getMinterStats(provider.connection, minterStatsPda, editionsControlsProgram); + const minterStatsPhaseDecoded = await getMinterStats(provider.connection, minterStatsPhasePda, editionsControlsProgram); + + expect(editionsControlsDecoded.data.phases[2].currentMints.toString()).to.equal('1'); + expect(minterStatsDecoded.data.mintCount.toString()).to.equal('1'); + expect(minterStatsPhaseDecoded.data.mintCount.toString()).to.equal('1'); + + // Verify protocol fees & treasury income + const expectedPlatformFee = collectionConfig.platformFee.platformFeeValue; + const expectedTreasuryIncome = phase3Config.priceAmount; + + const treasuryBalanceAfter = await provider.connection.getBalance(treasury.publicKey); + const platformFeeRecipientBalanceAfter = await provider.connection.getBalance(platformFeeAdmin.publicKey); + + expect(treasuryBalanceAfter - treasuryBalanceBefore).to.equal(expectedTreasuryIncome.toNumber()); + expect(platformFeeRecipientBalanceAfter - platformFeeRecipientBalanceBefore).to.equal(expectedPlatformFee.toNumber()); + }); + + it('Should not be able to mint with allowlist (phase does not have allowlist)', async () => { + const mintConfig = { + phaseIndex: 2, + merkleProof: allowListConfig.list[0].proof, + allowListPrice: allowListConfig.list[0].price, + allowListMaxClaims: allowListConfig.list[0].max_claims, + }; + + const mint = Keypair.generate(); + const member = Keypair.generate(); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter2.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter2.publicKey, 2, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter2.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter2.publicKey, + signer: minter2.publicKey, + minter: minter2.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter2, mint, member]); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Merkle root not set for allow list mint'); + } + // get state + const editionsDecoded = await getEditions(provider.connection, editionsPda, editionsProgram); + const editionsControlsDecoded = await getEditionsControls(provider.connection, editionsControlsPda, editionsControlsProgram); + const minterStatsDecoded = await getMinterStats(provider.connection, minterStatsPda, editionsControlsProgram); + const minterStatsPhaseDecoded = await getMinterStats(provider.connection, minterStatsPhasePda, editionsControlsProgram); + + expect(editionsControlsDecoded.data.phases[2].currentMints.toString()).to.equal('1'); + expect(minterStatsDecoded.data.mintCount.toString()).to.equal('1'); + expect(minterStatsPhaseDecoded.data.mintCount.toString()).to.equal('1'); + + // log final state + if (VERBOSE_LOGGING) { + logEditions(editionsDecoded); + logEditionsControls(editionsControlsDecoded); + logMinterStats(minterStatsDecoded); + logMinterStatsPhase(minterStatsPhaseDecoded); + } + }); + }); + + describe('Minting on a public phase without allowlist and unlimited supply up to collection max [Phase Index 3]', () => { + // should fail to mint if it exceeds the max mints for the entire collection, max mints for the collection is 20. + it('Should fail to mint when exceeding collection max mints', async () => { + if (VERBOSE_LOGGING) { + const decodedEditions = await getEditions(provider.connection, editionsPda, editionsProgram); + logEditions(decodedEditions); + } + + // current mint count is 14, perform 6 mints with random wallets, then the 21st mint should fail + const mintWithControls = async (minter: Keypair, mint: Keypair, member: Keypair) => { + const mintConfig = { + phaseIndex: 3, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter.publicKey, 3, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter.publicKey, + signer: minter.publicKey, + minter: minter.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter, mint, member]); + } catch (error) { + throw error; + } + }; + if (VERBOSE_LOGGING) { + console.log('Performing 6 mints with random wallets, takes a while..'); + } + const mintPromises = []; + for (let i = 0; i < 6; i++) { + const minter = Keypair.generate(); + const mint = Keypair.generate(); + const member = Keypair.generate(); + + // airdrop minter + const airdropTx = await provider.connection.requestAirdrop(minter.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(airdropTx, 'confirmed'); + + mintPromises.push(mintWithControls(minter, mint, member)); + } + + try { + await Promise.all(mintPromises); + } catch (error) { + console.error('Error in parallel minting:', error); + throw error; + } + if (VERBOSE_LOGGING) { + console.log('Performing 21th mint with random wallet..'); + } + try { + const minter = Keypair.generate(); + const mint = Keypair.generate(); + const member = Keypair.generate(); + + // airdrop minter + const airdropTx = await provider.connection.requestAirdrop(minter.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(airdropTx, 'confirmed'); + + await mintWithControls(minter, mint, member); + throw new Error('Mint should fail'); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Minted out.'); + } + }); + }); + + describe('Attempting to mint on invalid phases', () => { + it('Should fail to mint on a phase that has not started yet', async () => { + const mintConfig = { + phaseIndex: 4, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const minter = Keypair.generate(); + const mint = Keypair.generate(); + const member = Keypair.generate(); + + // airdrop minter + const airdropTx = await provider.connection.requestAirdrop(minter.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(airdropTx, 'confirmed'); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter.publicKey, 4, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter.publicKey, + signer: minter.publicKey, + minter: minter.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter, mint, member]); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Phase not yet started'); + } + }); + + it('Should fail to mint on a phase that has already ended', async () => { + const mintConfig = { + phaseIndex: 5, + merkleProof: null, + allowListPrice: null, + allowListMaxClaims: null, + }; + + const minter = Keypair.generate(); + const mint = Keypair.generate(); + const member = Keypair.generate(); + + // airdrop minter + const airdropTx = await provider.connection.requestAirdrop(minter.publicKey, 1 * LAMPORTS_PER_SOL); + await provider.connection.confirmTransaction(airdropTx, 'confirmed'); + + const hashlistMarkerPda = getHashlistMarkerPda(editionsPda, mint.publicKey, editionsProgram.programId); + const minterStatsPda = getMinterStatsPda(editionsPda, minter.publicKey, editionsControlsProgram.programId); + const minterStatsPhasePda = getMinterStatsPhasePda(editionsPda, minter.publicKey, 5, editionsControlsProgram.programId); + const associatedTokenAddressSync = getAssociatedTokenAddressSync(mint.publicKey, minter.publicKey, false, TOKEN_2022_PROGRAM_ID); + + const mintIx = await editionsControlsProgram.methods + .mintWithControls(mintConfig) + .accountsStrict({ + editionsDeployment: editionsPda, + editionsControls: editionsControlsPda, + hashlist: hashlistPda, + hashlistMarker: hashlistMarkerPda, + payer: minter.publicKey, + signer: minter.publicKey, + minter: minter.publicKey, + minterStats: minterStatsPda, + minterStatsPhase: minterStatsPhasePda, + mint: mint.publicKey, + member: member.publicKey, + group: group.publicKey, + groupMint: groupMint.publicKey, + platformFeeRecipient1: platformFeeAdmin.publicKey, + tokenAccount: associatedTokenAddressSync, + treasury: treasury.publicKey, + tokenProgram: TOKEN_2022_PROGRAM_ID, + associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, + groupExtensionProgram: TOKEN_GROUP_EXTENSION_PROGRAM_ID, + systemProgram: SystemProgram.programId, + raribleEditionsProgram: editionsProgram.programId, + }) + .instruction(); + + const transaction = new Transaction().add(modifiedComputeUnits).add(mintIx); + try { + await provider.sendAndConfirm(transaction, [minter, mint, member]); + } catch (error) { + const errorString = JSON.stringify(error); + expect(errorString).to.include('Phase already finished'); + } + }); + }); + }); + }); +}); diff --git a/tests/utils/getters.ts b/tests/utils/getters.ts new file mode 100644 index 00000000..dfd193f9 --- /dev/null +++ b/tests/utils/getters.ts @@ -0,0 +1,228 @@ +import { BorshCoder, Program } from '@coral-xyz/anchor'; +import { Connection, PublicKey } from '@solana/web3.js'; +import { RaribleEditionsControls } from '../../target/types/rarible_editions_controls'; +import { RaribleEditions } from '../../target/types/rarible_editions'; +import { IdlAccounts } from '@coral-xyz/anchor'; +import { getTokenMetadata as getSplTokenMetadata } from '@solana/spl-token'; + +export type EditionsDeployment = + IdlAccounts['editionsDeployment']; + +export type EditionsControls = + IdlAccounts['editionsControls']; + +export type MinterStats = IdlAccounts['minterStats']; + +export const decodeEditions = + (program: Program) => + (buffer: Buffer | undefined, pubkey: PublicKey) => { + const coder = new BorshCoder(program.idl); + const data = buffer + ? coder.accounts.decode('editionsDeployment', buffer) + : null; + + return { + data, + pubkey, + }; + }; + +export const getEditions = async ( + connection: Connection, + editionsPda: PublicKey, + editionsProgram: Program +) => { + const editionsAccountInfo = await connection.getAccountInfo(editionsPda); + if (!editionsAccountInfo) { + throw new Error('Editions account not found'); + } + const editionsDecoded = decodeEditions(editionsProgram)( + editionsAccountInfo.data, + editionsPda + ); + return editionsDecoded; +}; + +export const logEditions = (editionsDecoded: { + data: EditionsDeployment; + pubkey: PublicKey; +}) => { + console.log({ + Editions: { + symbol: editionsDecoded.data.symbol, + creator: editionsDecoded.data.creator.toBase58(), + groupMint: editionsDecoded.data.groupMint.toBase58(), + maxNumberOfTokens: editionsDecoded.data.maxNumberOfTokens.toString(), + cosignerProgramId: editionsDecoded.data.cosignerProgramId + ? editionsDecoded.data.cosignerProgramId.toBase58() + : null, + tokensMinted: editionsDecoded.data.numberOfTokensIssued.toString(), + itemBaseName: editionsDecoded.data.itemBaseName, + itemBaseUri: editionsDecoded.data.itemBaseUri, + itemNameIsTemplate: editionsDecoded.data.itemNameIsTemplate, + itemUriIsTemplate: editionsDecoded.data.itemUriIsTemplate, + }, + }); +}; + +export const decodeEditionsControls = + (program: Program) => + (buffer: Buffer | undefined, pubkey: PublicKey) => { + const coder = new BorshCoder(program.idl); + const data = buffer + ? coder.accounts.decode('editionsControls', buffer) + : null; + + return { + data, + pubkey, + }; + }; + +export const getEditionsControls = async ( + connection: Connection, + editionsControlsPda: PublicKey, + editionsControlsProgram: Program +) => { + const editionsControlsAccountInfo = await connection.getAccountInfo( + editionsControlsPda + ); + if (!editionsControlsAccountInfo) { + throw new Error( + 'EditionsControls account not found. The collection was not initialized with controls.' + ); + } + const editionsControlsDecoded = decodeEditionsControls( + editionsControlsProgram + )(editionsControlsAccountInfo.data, editionsControlsPda); + return editionsControlsDecoded; +}; + +export const logEditionsControls = (editionsControlsDecoded: { + data: EditionsControls; + pubkey: PublicKey; +}) => { + console.log({ + EditionsControls: { + address: editionsControlsDecoded.pubkey.toBase58(), + coreDeployment: + editionsControlsDecoded.data.editionsDeployment.toBase58(), + creator: editionsControlsDecoded.data.creator.toBase58(), + treasury: editionsControlsDecoded.data.treasury.toBase58(), + maxMintsPerWallet: Number(editionsControlsDecoded.data.maxMintsPerWallet), + }, + phases: editionsControlsDecoded.data.phases.map((item, idx) => ({ + phaseIndex: idx, + currentMints: Number(item.currentMints), + maxMintsPerWallet: Number(item.maxMintsPerWallet), + maxMintsTotal: Number(item.maxMintsTotal), + startTime: Number(item.startTime), + endTime: Number(item.endTime), + priceAmount: Number(item.priceAmount), + priceToken: item.priceToken ? item.priceToken.toBase58() : null, + isPrivate: item.isPrivate, + merkleRoot: item.merkleRoot ? JSON.stringify(item.merkleRoot) : null, + })), + }); +}; + +export const parseMetadata = ( + rawMetadata: (readonly [string, string])[] +): Record => { + const metadata: Record = {}; + for (const [key, value] of rawMetadata) { + metadata[key] = value; + } + return metadata; +}; + +export const getTokenMetadata = async ( + connection: Connection, + mint: PublicKey +) => { + const rawMetadata = await getSplTokenMetadata(connection, mint); + const additionalMetadata = rawMetadata.additionalMetadata; + const parsedMetadata = parseMetadata(additionalMetadata); + return { + ...rawMetadata, + additionalMetadata: parsedMetadata, + }; +}; + +export const logTokenMetadata = (metadata: { + name: string; + symbol: string; + uri: string; + updateAuthority?: PublicKey; + mint: PublicKey; + additionalMetadata: Record; +}) => { + console.log({ + TokenMetadata: { + name: metadata.name, + symbol: metadata.symbol, + uri: metadata.uri, + updateAuthority: metadata.updateAuthority.toBase58(), + mint: metadata.mint.toBase58(), + additionalMetadata: metadata.additionalMetadata, + }, + }); +}; + +export const decodeMinterStats = + (program: Program) => + (buffer: Buffer | undefined, pubkey: PublicKey) => { + const coder = new BorshCoder(program.idl); + const data = buffer + ? coder.accounts.decode('minterStats', buffer) + : null; + + return { + data, + pubkey, + }; + }; + +export const getMinterStats = async ( + connection: Connection, + minterStatsPda: PublicKey, + editionsControlsProgram: Program +) => { + const minterStatsAccountInfo = await connection.getAccountInfo( + minterStatsPda + ); + if (!minterStatsAccountInfo) { + throw new Error('MinterStats account not found'); + } + const minterStatsDecoded = decodeMinterStats(editionsControlsProgram)( + minterStatsAccountInfo.data, + minterStatsPda + ); + return minterStatsDecoded; +}; + +export const logMinterStats = (minterStatsDecoded: { + data: MinterStats; + pubkey: PublicKey; +}) => { + console.log({ + MinterStats: { + address: minterStatsDecoded.pubkey.toBase58(), + wallet: minterStatsDecoded.data.wallet.toBase58(), + mintCount: minterStatsDecoded.data.mintCount.toString(), + }, + }); +}; + +export const logMinterStatsPhase = (minterStatsDecoded: { + data: MinterStats; + pubkey: PublicKey; +}) => { + console.log({ + MinterStatsPhase: { + address: minterStatsDecoded.pubkey.toBase58(), + wallet: minterStatsDecoded.data.wallet.toBase58(), + mintCount: minterStatsDecoded.data.mintCount.toString(), + }, + }); +}; diff --git a/tests/utils/pdas.ts b/tests/utils/pdas.ts new file mode 100644 index 00000000..0af25bdc --- /dev/null +++ b/tests/utils/pdas.ts @@ -0,0 +1,75 @@ +import { PublicKey } from '@solana/web3.js'; +import { toBufferLE } from 'bigint-buffer'; + +export const getEditionsPda = ( + symbol: string, + editionsProgramId: PublicKey +) => { + return PublicKey.findProgramAddressSync( + [Buffer.from('editions_deployment'), Buffer.from(symbol)], + editionsProgramId + )[0]; +}; + +export const getEditionsControlsPda = ( + editionsDeployment: PublicKey, + editionsControlsProgramId: PublicKey +) => { + return PublicKey.findProgramAddressSync( + [Buffer.from('editions_controls'), editionsDeployment.toBuffer()], + editionsControlsProgramId + )[0]; +}; + +export const getHashlistPda = ( + deployment: PublicKey, + editionsProgramId: PublicKey +) => { + return PublicKey.findProgramAddressSync( + [Buffer.from('hashlist'), deployment.toBuffer()], + editionsProgramId + )[0]; +}; + +export const getHashlistMarkerPda = ( + editionsDeployment: PublicKey, + mint: PublicKey, + editionsProgramId: PublicKey +) => { + return PublicKey.findProgramAddressSync( + [ + Buffer.from('hashlist_marker'), + editionsDeployment.toBuffer(), + mint.toBuffer(), + ], + editionsProgramId + )[0]; +}; + +export const getMinterStatsPda = ( + deployment: PublicKey, + minter: PublicKey, + editionsControlsProgramId: PublicKey +) => { + return PublicKey.findProgramAddressSync( + [Buffer.from('minter_stats'), deployment.toBuffer(), minter.toBuffer()], + editionsControlsProgramId + )[0]; +}; + +export const getMinterStatsPhasePda = ( + deployment: PublicKey, + minter: PublicKey, + phaseIndex: number, + editionsControlsProgramId: PublicKey +) => { + return PublicKey.findProgramAddressSync( + [ + Buffer.from('minter_stats_phase'), + deployment.toBuffer(), + minter.toBuffer(), + toBufferLE(BigInt(phaseIndex), 4), + ], + editionsControlsProgramId + )[0]; +}; diff --git a/tests/utils/types.ts b/tests/utils/types.ts new file mode 100644 index 00000000..4b0c2d8f --- /dev/null +++ b/tests/utils/types.ts @@ -0,0 +1,45 @@ +import * as anchor from '@coral-xyz/anchor'; +import { PublicKey } from '@solana/web3.js'; + +export interface CollectionConfig { + symbol: string; + maxMintsPerWallet: anchor.BN; + maxNumberOfTokens: anchor.BN; + collectionName: string; + collectionUri: string; + royalties: { + royaltyBasisPoints: anchor.BN; + creators: { address: PublicKey; share: number }[]; + }; + platformFee: { + platformFeeValue: anchor.BN; + recipients: { address: PublicKey; share: number }[]; + isFeeFlat: boolean; + }; + extraMeta: { field: string; value: string }[]; + itemBaseUri: string; + itemBaseName: string; + treasury: PublicKey; + cosignerProgramId: PublicKey | null; +} + +export interface AllowListConfig { + merkleRoot: Buffer; + list: { + address: PublicKey; + price: anchor.BN; + max_claims: anchor.BN; + proof: Buffer[]; + }[]; +} + +export interface PhaseConfig { + maxMintsPerWallet: anchor.BN; + maxMintsTotal: anchor.BN; + priceAmount: anchor.BN; + startTime: anchor.BN; + endTime: anchor.BN; + priceToken: PublicKey; + isPrivate: boolean; + merkleRoot: Buffer | null; +} diff --git a/tests/utils/utils.ts b/tests/utils/utils.ts new file mode 100644 index 00000000..b34f0570 --- /dev/null +++ b/tests/utils/utils.ts @@ -0,0 +1,35 @@ +import { Connection, Keypair, Transaction } from '@solana/web3.js'; + +export async function getCluster(connection: Connection): Promise { + // Get the genesis hash + const genesisHash = await connection.getGenesisHash(); + + // Compare the genesis hash with known cluster genesis hashes + switch (genesisHash) { + case '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d': + return 'mainnet-beta'; + case 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG': + return 'testnet'; + case '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY': + return 'devnet'; + default: + // If it doesn't match any known cluster, it's likely localhost + return 'localhost'; + } +} + + +export async function estimateTransactionFee(connection: Connection, transaction: Transaction, signers: Keypair[]): Promise { + const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash(); + transaction.recentBlockhash = blockhash; + transaction.sign(...signers); + + const message = transaction.compileMessage(); + const fees = await connection.getFeeForMessage(message); + + if (fees === null) { + throw new Error('Failed to estimate fee'); + } + + return fees.value; +} \ No newline at end of file diff --git a/tests/wen_royalty_distribution.test.ts b/tests/wen_royalty_distribution.test.ts deleted file mode 100644 index e37b991f..00000000 --- a/tests/wen_royalty_distribution.test.ts +++ /dev/null @@ -1,1205 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { faker } from "@faker-js/faker"; -import { WenNewStandard } from "../target/types/wen_new_standard"; -import { WenWnsMarketplace } from "./../target/types/wen_wns_marketplace"; -import { WenRoyaltyDistribution } from "./../target/types/wen_royalty_distribution"; -import { - Keypair, - LAMPORTS_PER_SOL, - PublicKey, - SystemProgram, - AccountInfo, - ComputeBudgetProgram, - Commitment, -} from "@solana/web3.js"; - -import { - airdrop, - createMintTokenKegIx, - getApproveAccountPda, - getDistributionAccountPda, - getExtraMetasAccountPda, - getGroupAccountPda, - getListingAccountPda, - getManagerAccountPda, - getMemberAccountPda, - mintToBuyerSellerIx, - sendAndConfirmWNSTransaction, -} from "./utils"; -import { - ASSOCIATED_TOKEN_PROGRAM_ID, - Account, - TOKEN_2022_PROGRAM_ID, - TOKEN_PROGRAM_ID, - createAssociatedTokenAccountInstruction, - getAccount, - getAssociatedTokenAddressSync, -} from "@solana/spl-token"; -import { expect } from "chai"; - -describe("wen_royalty_distribution", () => { - const provider = anchor.AnchorProvider.env(); - anchor.setProvider(provider); - const { connection, wallet } = provider; - - const wnsProgram = anchor.workspace - .WenNewStandard as anchor.Program; - const wenDistributionProgram = anchor.workspace - .WenRoyaltyDistribution as anchor.Program; - const wenWnsMarketplace = anchor.workspace - .WenWnsMarketplace as anchor.Program; - - const wnsProgramId = wnsProgram.programId; - const wenDistributionProgramId = wenDistributionProgram.programId; - const wenWnsMarketplaceId = wenWnsMarketplace.programId; - - const manager = getManagerAccountPda(wnsProgramId); - const preflightConfig: { - skipPreflight: boolean; - preflightCommitment: Commitment; - commitment: Commitment; - } = { - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }; - - before(async () => { - if (!(await connection.getAccountInfo(manager))) { - await wnsProgram.methods - .initManagerAccount() - .accountsStrict({ - payer: wallet.publicKey, - manager, - systemProgram: SystemProgram.programId, - }) - .rpc(preflightConfig); - } - }); - - describe("a sale", () => { - const seller = Keypair.generate(); - const buyer = Keypair.generate(); - - const creator1 = Keypair.generate(); - const creator2 = Keypair.generate(); - - before(async () => { - await airdrop(connection, seller.publicKey, 10 * LAMPORTS_PER_SOL); - await airdrop(connection, buyer.publicKey, 10 * LAMPORTS_PER_SOL); - await airdrop(connection, creator1.publicKey, 1 * LAMPORTS_PER_SOL); - await airdrop(connection, creator2.publicKey, 1 * LAMPORTS_PER_SOL); - }); - - describe("using SOL as payment", () => { - const name = faker.lorem.words({ max: 3, min: 2 }); - const symbol = faker.lorem.word(); - const uri = faker.internet.url(); - - const groupMintKeypair = Keypair.generate(); - const memberMintKeypair = Keypair.generate(); - const groupMintPublicKey = groupMintKeypair.publicKey; - const memberMintPublickey = memberMintKeypair.publicKey; - - const groupMintAuthPublicKey = wallet.publicKey; - const memberMintAuthPublicKey = seller.publicKey; - - const groupMintTokenAccount = getAssociatedTokenAddressSync( - groupMintPublicKey, - groupMintAuthPublicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - - const sellerMemberMintTokenAccount = getAssociatedTokenAddressSync( - memberMintPublickey, - memberMintAuthPublicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - - const buyerMemberMintTokenAccount = getAssociatedTokenAddressSync( - memberMintPublickey, - buyer.publicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - - const group = getGroupAccountPda(groupMintPublicKey, wnsProgramId); - const distribution = getDistributionAccountPda( - groupMintPublicKey, - PublicKey.default, - wenDistributionProgramId, - ); - - const member = getMemberAccountPda(memberMintPublickey, wnsProgramId); - const extraMetasAccount = getExtraMetasAccountPda( - memberMintPublickey, - wnsProgramId, - ); - const approveAccount = getApproveAccountPda( - memberMintPublickey, - wnsProgramId, - ); - - const listingAmount = new anchor.BN(2 * LAMPORTS_PER_SOL); - const royaltyBasisPoints = 1000; - const royalty = listingAmount - .mul(new anchor.BN(royaltyBasisPoints)) - .div(new anchor.BN(10_000)); - const creator1SharePct = 60; - const creator2SharePct = 40; - - let distributionAccountInfo: AccountInfo; - let distributionAccountData; - - before(async () => { - // CREATE GROUP ACCOUNT - await wnsProgram.methods - .createGroupAccount({ - maxSize: 1, - name, - symbol, - uri, - }) - .accountsStrict({ - authority: groupMintAuthPublicKey, - group, - manager, - mint: groupMintPublicKey, - mintTokenAccount: groupMintTokenAccount, - payer: groupMintAuthPublicKey, - receiver: groupMintAuthPublicKey, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .signers([groupMintKeypair]) - .rpc(preflightConfig); - - // CREATE DISTRIBUTION ACCOUNT - await wenDistributionProgram.methods - .initializeDistribution(PublicKey.default) - .accountsStrict({ - payer: groupMintAuthPublicKey, - groupMint: groupMintPublicKey, - distributionAccount: distribution, - systemProgram: SystemProgram.programId, - }) - .rpc(preflightConfig); - - distributionAccountInfo = await connection.getAccountInfo( - distribution, - "confirmed", - ); - distributionAccountData = wenDistributionProgram.coder.accounts.decode( - "distributionAccount", - distributionAccountInfo.data, - ); - }); - - before(async () => { - const name = faker.lorem.words({ max: 3, min: 2 }); - const symbol = faker.lorem.word(); - const uri = faker.internet.url(); - - // CREATE MINT ACCOUNT, ADD MINT TO GROUP, ADD ROYALTIES - const ixs = await Promise.all([ - wnsProgram.methods - .addMintToGroup() - .accountsStrict({ - authority: groupMintAuthPublicKey, - mint: memberMintPublickey, - payer: groupMintAuthPublicKey, - group, - manager, - member, - systemProgram: SystemProgram.programId, - tokenProgram: TOKEN_2022_PROGRAM_ID, - }) - .instruction(), - wnsProgram.methods - .addRoyalties({ - creators: [ - { - address: creator1.publicKey, - share: creator1SharePct, - }, - { address: creator2.publicKey, share: creator2SharePct }, - ], - royaltyBasisPoints, - }) - .accountsStrict({ - extraMetasAccount, - authority: memberMintAuthPublicKey, - mint: memberMintPublickey, - payer: groupMintAuthPublicKey, - systemProgram: SystemProgram.programId, - tokenProgram: TOKEN_2022_PROGRAM_ID, - }) - .instruction(), - ]); - - await wnsProgram.methods - .createMintAccount({ name, symbol, permanentDelegate: null, uri }) - .accountsStrict({ - payer: groupMintAuthPublicKey, - manager, - mintTokenAccount: sellerMemberMintTokenAccount, - authority: memberMintAuthPublicKey, - mint: memberMintPublickey, - receiver: memberMintAuthPublicKey, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .preInstructions([ - ComputeBudgetProgram.setComputeUnitLimit({ units: 300_000 }), - ]) - .postInstructions(ixs) - .signers([memberMintKeypair, seller]) - .rpc(preflightConfig); - }); - - describe("after initializing distribution", () => { - it("should have a distribution account", () => { - expect(distributionAccountInfo).to.not.be.undefined; - }); - - it("should be owned by the distribution program", () => { - expect(distributionAccountInfo.owner.toBase58()).to.eql( - wenDistributionProgramId.toBase58(), - ); - }); - - it("should point the correct group mint account address", () => { - expect( - (distributionAccountData.groupMint as PublicKey).toBase58(), - ).to.eql(groupMintPublicKey.toBase58()); - }); - - it("should point the correct payment mint account address", () => { - expect( - (distributionAccountData.paymentMint as PublicKey).toBase58(), - ).to.eql(PublicKey.default.toBase58()); - }); - }); - - describe("after listing for sale", () => { - const listing = getListingAccountPda( - seller.publicKey, - memberMintPublickey, - wenWnsMarketplaceId, - ); - - let listingAccountInfo: AccountInfo; - let sellerTokenAccountData: Account; - let listingAccountData; - - before(async () => { - await wenWnsMarketplace.methods - .list({ - listingAmount, - paymentMint: PublicKey.default, - }) - .accountsStrict({ - listing, - manager, - payer: wallet.publicKey, - seller: seller.publicKey, - mint: memberMintPublickey, - sellerTokenAccount: sellerMemberMintTokenAccount, - systemProgram: SystemProgram.programId, - wnsProgram: wnsProgramId, - tokenProgram: TOKEN_2022_PROGRAM_ID, - }) - .signers([seller]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - listingAccountInfo = await connection.getAccountInfo( - listing, - "confirmed", - ); - listingAccountData = wenWnsMarketplace.coder.accounts.decode( - "listing", - listingAccountInfo.data, - ); - sellerTokenAccountData = await getAccount( - connection, - sellerMemberMintTokenAccount, - "confirmed", - TOKEN_2022_PROGRAM_ID, - ); - }); - - it("should have a listing account", () => { - expect(listingAccountData).to.not.be.undefined; - }); - - it("should be owned by sale program", () => { - expect(listingAccountInfo.owner.toBase58()).to.eql( - wenWnsMarketplaceId.toBase58(), - ); - }); - - it("should point the listing account as delegate of NFT", () => { - expect(sellerTokenAccountData.delegate.toBase58()).to.eql( - listing.toBase58(), - ); - }); - - it("should freeze the NFT", () => { - expect(sellerTokenAccountData.isFrozen).to.be.true; - }); - }); - - describe("after a sale", () => { - const listing = getListingAccountPda( - seller.publicKey, - memberMintPublickey, - wenWnsMarketplaceId, - ); - - const royalty = listingAmount - .mul(new anchor.BN(royaltyBasisPoints)) - .div(new anchor.BN(10_000)); - - let distributionPreBalance: number; - let sellerPreBalance: number; - let buyerPreBalance: number; - let distributionPostBalance: number; - let sellerPostBalance: number; - let buyerPostBalance: number; - - let sellerTokenAccountData: Account; - let buyerTokenAccountData: Account; - - before(async () => { - distributionPreBalance = await connection.getBalance( - distribution, - "confirmed", - ); - buyerPreBalance = await connection.getBalance( - buyer.publicKey, - "confirmed", - ); - sellerPreBalance = await connection.getBalance( - seller.publicKey, - "confirmed", - ); - - await wenWnsMarketplace.methods - .buy({ - buyAmount: listingAmount, - }) - .accountsStrict({ - approveAccount, - extraMetasAccount, - distribution, - manager, - listing, - payer: wallet.publicKey, - buyer: buyer.publicKey, - seller: seller.publicKey, - buyerPaymentTokenAccount: null, - sellerPaymentTokenAccount: null, - distributionPaymentTokenAccount: null, - mint: memberMintPublickey, - paymentMint: PublicKey.default, - buyerTokenAccount: buyerMemberMintTokenAccount, - sellerTokenAccount: sellerMemberMintTokenAccount, - wnsProgram: wnsProgramId, - distributionProgram: wenDistributionProgramId, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - paymentTokenProgram: null, - systemProgram: SystemProgram.programId, - }) - .preInstructions([ - ComputeBudgetProgram.setComputeUnitLimit({ units: 300_000 }), - ]) - .signers([buyer]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - distributionPostBalance = - (await connection.getBalance(distribution, "confirmed")) - - distributionPreBalance; - buyerPostBalance = await connection.getBalance( - buyer.publicKey, - "confirmed", - ); - sellerPostBalance = - (await connection.getBalance(seller.publicKey, "confirmed")) - - sellerPreBalance; - - sellerTokenAccountData = await getAccount( - connection, - sellerMemberMintTokenAccount, - "confirmed", - TOKEN_2022_PROGRAM_ID, - ); - buyerTokenAccountData = await getAccount( - connection, - buyerMemberMintTokenAccount, - "confirmed", - TOKEN_2022_PROGRAM_ID, - ); - }); - - describe("royalties", () => { - it("should be sent to the distribution vault", () => { - expect(distributionPostBalance).to.eql( - royalty.toNumber(), - ); // extra for rent - }); - }); - - describe("the seller", () => { - it("receive the payment minus royalties", () => { - expect(sellerPostBalance).to.eql( - listingAmount.sub(royalty).toNumber(), - ); - }); - it("should not be the owner anymore", () => { - expect(sellerTokenAccountData.amount.toString()).to.eql("0"); - }); - }); - - describe("the buyer", () => { - it("sent the payment", () => { - expect(buyerPostBalance).to.eql( - buyerPreBalance - listingAmount.toNumber(), - ); - }); - it("should be the owner", () => { - expect(buyerTokenAccountData.amount.toString()).to.eql("1"); - }); - }); - }); - - describe("after claiming", () => { - describe("creator 1", () => { - let creator1PreBalance: number; - let creator1PostBalance: number; - const expectedCreatorShare = royalty - .mul(new anchor.BN(creator1SharePct)) - .div(new anchor.BN(100)); - - before(async () => { - creator1PreBalance = await connection.getBalance( - creator1.publicKey, - "confirmed", - ); - - await wenWnsMarketplace.methods - .claimRoyalty() - .accountsStrict({ - payer: wallet.publicKey, - creator: creator1.publicKey, - distribution, - paymentMint: PublicKey.default, - creatorPaymentTokenAccount: null, - distributionPaymentTokenAccount: null, - wenDistributionProgram: wenDistributionProgramId, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .signers([creator1]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - creator1PostBalance = - (await connection.getBalance(creator1.publicKey, "confirmed")) - - creator1PreBalance; - }); - - it("should receive correct royalty funds", () => { - expect(creator1PostBalance).to.eql(expectedCreatorShare.toNumber()); - }); - }); - - describe("creator 2", () => { - let creator2PreBalance: number; - let creator2PostBalance: number; - const expectedCreatorShare = royalty - .mul(new anchor.BN(creator2SharePct)) - .div(new anchor.BN(100)); - - before(async () => { - creator2PreBalance = await connection.getBalance( - creator2.publicKey, - "confirmed", - ); - - await wenWnsMarketplace.methods - .claimRoyalty() - .accountsStrict({ - payer: wallet.publicKey, - creator: creator2.publicKey, - distribution, - paymentMint: PublicKey.default, - creatorPaymentTokenAccount: null, - distributionPaymentTokenAccount: null, - wenDistributionProgram: wenDistributionProgramId, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .signers([creator2]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - creator2PostBalance = - (await connection.getBalance(creator2.publicKey, "confirmed")) - - creator2PreBalance; - }); - - it("should receive correct royalty funds", () => { - expect(creator2PostBalance).to.eql(expectedCreatorShare.toNumber() - 278400); - }); - }); - }); - }); - - describe("using SPL token as payment", () => { - const name = faker.lorem.words({ max: 3, min: 2 }); - const symbol = faker.lorem.word(); - const uri = faker.internet.url(); - - const groupMintKeypair = Keypair.generate(); - const memberMintKeypair = Keypair.generate(); - const paymentMintKeypair = Keypair.generate(); - - const groupMintPublicKey = groupMintKeypair.publicKey; - const memberMintPublickey = memberMintKeypair.publicKey; - const paymentMintPublickey = paymentMintKeypair.publicKey; - - const groupMintAuthPublicKey = wallet.publicKey; - const memberMintAuthPublicKey = seller.publicKey; - const paymentMintAuthPublicKey = wallet.publicKey; - - const groupMintTokenAccount = getAssociatedTokenAddressSync( - groupMintPublicKey, - groupMintAuthPublicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - - const sellerMemberMintTokenAccount = getAssociatedTokenAddressSync( - memberMintPublickey, - memberMintAuthPublicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - - const sellerPaymentMintTokenAccount = getAssociatedTokenAddressSync( - paymentMintPublickey, - seller.publicKey, - false, - TOKEN_PROGRAM_ID, - ); - - const buyerMemberMintTokenAccount = getAssociatedTokenAddressSync( - memberMintPublickey, - buyer.publicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - - const buyerPaymentMintTokenAccount = getAssociatedTokenAddressSync( - paymentMintPublickey, - buyer.publicKey, - false, - TOKEN_PROGRAM_ID, - ); - - const group = getGroupAccountPda(groupMintPublicKey, wnsProgramId); - const distribution = getDistributionAccountPda( - groupMintPublicKey, - paymentMintPublickey, - wenDistributionProgramId, - ); - - const listing = getListingAccountPda( - seller.publicKey, - memberMintPublickey, - wenWnsMarketplaceId, - ); - const member = getMemberAccountPda(memberMintPublickey, wnsProgramId); - const extraMetasAccount = getExtraMetasAccountPda( - memberMintPublickey, - wnsProgramId, - ); - const approveAccount = getApproveAccountPda( - memberMintPublickey, - wnsProgramId, - ); - - const listingAmount = new anchor.BN(500 * 10 ** 6); - const royaltyBasisPoints = 1000; - const royalty = listingAmount - .mul(new anchor.BN(royaltyBasisPoints)) - .div(new anchor.BN(10_000)); - const creator1SharePct = 60; - const creator2SharePct = 40; - - let distributionAccountInfo: AccountInfo; - let distributionAccountData; - - before(async () => { - const { ixs: createMintIxs } = await createMintTokenKegIx( - connection, - paymentMintPublickey, - paymentMintAuthPublicKey, - paymentMintAuthPublicKey, - ); - - await sendAndConfirmWNSTransaction( - connection, - createMintIxs, - provider, - true, - [paymentMintKeypair], - ); - - const { ixs: mintToIxs } = mintToBuyerSellerIx( - paymentMintPublickey, - paymentMintAuthPublicKey, - paymentMintAuthPublicKey, - buyer.publicKey, - buyerPaymentMintTokenAccount, - seller.publicKey, - sellerPaymentMintTokenAccount, - ); - - await sendAndConfirmWNSTransaction( - connection, - mintToIxs, - provider, - true, - [], - ); - }); - - before(async () => { - // CREATE GROUP ACCOUNT - await wnsProgram.methods - .createGroupAccount({ - maxSize: 1, - name, - symbol, - uri, - }) - .accountsStrict({ - authority: groupMintAuthPublicKey, - group, - manager, - mint: groupMintPublicKey, - mintTokenAccount: groupMintTokenAccount, - payer: groupMintAuthPublicKey, - receiver: groupMintAuthPublicKey, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .signers([groupMintKeypair]) - .rpc(preflightConfig); - - // CREATE DISTRIBUTION ACCOUNT - await wenDistributionProgram.methods - .initializeDistribution(paymentMintPublickey) - .accountsStrict({ - payer: groupMintAuthPublicKey, - groupMint: groupMintPublicKey, - distributionAccount: distribution, - systemProgram: SystemProgram.programId, - }) - .rpc(preflightConfig); - - distributionAccountInfo = await connection.getAccountInfo( - distribution, - "confirmed", - ); - distributionAccountData = wenDistributionProgram.coder.accounts.decode( - "distributionAccount", - distributionAccountInfo.data, - ); - }); - - before(async () => { - const name = faker.lorem.words({ max: 3, min: 2 }); - const symbol = faker.lorem.word(); - const uri = faker.internet.url(); - - // CREATE MINT ACCOUNT, ADD MINT TO GROUP, ADD ROYALTIES - const ixs = await Promise.all([ - wnsProgram.methods - .addMintToGroup() - .accountsStrict({ - authority: groupMintAuthPublicKey, - mint: memberMintPublickey, - payer: groupMintAuthPublicKey, - group, - manager, - member, - systemProgram: SystemProgram.programId, - tokenProgram: TOKEN_2022_PROGRAM_ID, - }) - .instruction(), - wnsProgram.methods - .addRoyalties({ - creators: [ - { - address: creator1.publicKey, - share: creator1SharePct, - }, - { address: creator2.publicKey, share: creator2SharePct }, - ], - royaltyBasisPoints, - }) - .accountsStrict({ - extraMetasAccount, - authority: memberMintAuthPublicKey, - mint: memberMintPublickey, - payer: groupMintAuthPublicKey, - systemProgram: SystemProgram.programId, - tokenProgram: TOKEN_2022_PROGRAM_ID, - }) - .instruction(), - ]); - - await wnsProgram.methods - .createMintAccount({ name, symbol, permanentDelegate: null, uri }) - .accountsStrict({ - payer: groupMintAuthPublicKey, - manager, - mintTokenAccount: sellerMemberMintTokenAccount, - authority: memberMintAuthPublicKey, - mint: memberMintPublickey, - receiver: memberMintAuthPublicKey, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .preInstructions([ - ComputeBudgetProgram.setComputeUnitLimit({ units: 300_000 }), - ]) - .postInstructions(ixs) - .signers([memberMintKeypair, seller]) - .rpc(preflightConfig); - }); - - describe("after initializing distribution", () => { - it("should have a distribution account", () => { - expect(distributionAccountInfo).to.not.be.undefined; - }); - - it("should be owned by the distribution program", () => { - expect(distributionAccountInfo.owner.toBase58()).to.eql( - wenDistributionProgramId.toBase58(), - ); - }); - - it("should point the correct group mint account address", () => { - expect( - (distributionAccountData.groupMint as PublicKey).toBase58(), - ).to.eql(groupMintPublicKey.toBase58()); - }); - - it("should point the correct payment mint account address", () => { - expect( - (distributionAccountData.paymentMint as PublicKey).toBase58(), - ).to.eql(paymentMintPublickey.toBase58()); - }); - }); - - describe("after listing for sale", () => { - let listingAccountInfo: AccountInfo; - let sellerTokenAccountData: Account; - let listingAccountData; - - before(async () => { - await wenWnsMarketplace.methods - .list({ - listingAmount, - paymentMint: paymentMintPublickey, - }) - .accountsStrict({ - listing, - manager, - payer: wallet.publicKey, - seller: seller.publicKey, - mint: memberMintPublickey, - sellerTokenAccount: sellerMemberMintTokenAccount, - systemProgram: SystemProgram.programId, - wnsProgram: wnsProgramId, - tokenProgram: TOKEN_2022_PROGRAM_ID, - }) - .signers([seller]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - listingAccountInfo = await connection.getAccountInfo( - listing, - "confirmed", - ); - listingAccountData = wenWnsMarketplace.coder.accounts.decode( - "listing", - listingAccountInfo.data, - ); - sellerTokenAccountData = await getAccount( - connection, - sellerMemberMintTokenAccount, - "confirmed", - TOKEN_2022_PROGRAM_ID, - ); - }); - - it("should have a listing account", () => { - expect(listingAccountData).to.not.be.undefined; - }); - - it("should be owned by sale program", () => { - expect(listingAccountInfo.owner).to.eql(wenWnsMarketplaceId); - }); - - it("should point the listing account as delegate of NFT", () => { - expect(sellerTokenAccountData.delegate.toBase58()).to.eql( - listing.toBase58(), - ); - }); - - it("should freeze the NFT", () => { - expect(sellerTokenAccountData.isFrozen).to.be.true; - }); - }); - - describe("after a sale", () => { - const buyerPaymentMintTokenAccount = getAssociatedTokenAddressSync( - paymentMintPublickey, - buyer.publicKey, - false, - TOKEN_PROGRAM_ID, - ); - - const sellerPaymentMintTokenAccount = getAssociatedTokenAddressSync( - paymentMintPublickey, - seller.publicKey, - false, - TOKEN_PROGRAM_ID, - ); - - const distributionPaymentMintTokenAccount = - getAssociatedTokenAddressSync( - paymentMintPublickey, - distribution, - true, - TOKEN_PROGRAM_ID, - ); - - let sellerPreBalance: number; - let buyerPreBalance: number; - let distributionPostBalance: number; - let sellerPostBalance: number; - let buyerPostBalance: number; - - let sellerTokenAccountData: Account; - let buyerTokenAccountData: Account; - - before(async () => { - buyerPreBalance = parseInt( - ( - await getAccount( - connection, - buyerPaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ); - sellerPreBalance = parseInt( - ( - await getAccount( - connection, - sellerPaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ); - - await wenWnsMarketplace.methods - .buy({ - buyAmount: listingAmount, - }) - .accountsStrict({ - approveAccount, - extraMetasAccount, - distribution, - manager, - listing, - payer: wallet.publicKey, - buyer: buyer.publicKey, - seller: seller.publicKey, - buyerPaymentTokenAccount: buyerPaymentMintTokenAccount, - sellerPaymentTokenAccount: sellerPaymentMintTokenAccount, - distributionPaymentTokenAccount: - distributionPaymentMintTokenAccount, - mint: memberMintPublickey, - paymentMint: paymentMintPublickey, - buyerTokenAccount: buyerMemberMintTokenAccount, - sellerTokenAccount: sellerMemberMintTokenAccount, - wnsProgram: wnsProgramId, - distributionProgram: wenDistributionProgramId, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_2022_PROGRAM_ID, - paymentTokenProgram: TOKEN_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .preInstructions([ - ComputeBudgetProgram.setComputeUnitLimit({ units: 300_000 }), - createAssociatedTokenAccountInstruction( - wallet.publicKey, - distributionPaymentMintTokenAccount, - distribution, - paymentMintPublickey, - TOKEN_PROGRAM_ID, - ), - ]) - .signers([buyer]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - distributionPostBalance = parseInt( - ( - await getAccount( - connection, - distributionPaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ); - buyerPostBalance = parseInt( - ( - await getAccount( - connection, - buyerPaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ); - sellerPostBalance = - parseInt( - ( - await getAccount( - connection, - sellerPaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ) - sellerPreBalance; - - sellerTokenAccountData = await getAccount( - connection, - sellerMemberMintTokenAccount, - "confirmed", - TOKEN_2022_PROGRAM_ID, - ); - buyerTokenAccountData = await getAccount( - connection, - buyerMemberMintTokenAccount, - "confirmed", - TOKEN_2022_PROGRAM_ID, - ); - }); - - describe("royalties", () => { - it("should be sent to the distribution vault", () => { - expect(distributionPostBalance).to.eql(royalty.toNumber()); - }); - }); - - describe("the seller", () => { - it("receive the payment minus royalties", () => { - expect(sellerPostBalance).to.eql( - listingAmount.sub(royalty).toNumber(), - ); - }); - it("should not be the owner anymore", () => { - expect(sellerTokenAccountData.amount.toString()).to.eql("0"); - }); - }); - - describe("the buyer", () => { - it("sent the payment", () => { - console.log; - expect(buyerPostBalance).to.eql( - buyerPreBalance - listingAmount.toNumber(), - ); - }); - it("should be the owner", () => { - expect(buyerTokenAccountData.amount.toString()).to.eql("1"); - }); - }); - }); - - describe("after claiming", () => { - const distributionPaymentMintTokenAccount = - getAssociatedTokenAddressSync( - paymentMintPublickey, - distribution, - true, - TOKEN_PROGRAM_ID, - ); - - describe("creator 1", () => { - const creator1PaymentMintTokenAccount = getAssociatedTokenAddressSync( - paymentMintPublickey, - creator1.publicKey, - true, - TOKEN_PROGRAM_ID, - ); - - let creator1PostBalance: number; - const expectedCreatorShare = royalty - .mul(new anchor.BN(creator1SharePct)) - .div(new anchor.BN(100)); - - before(async () => { - await wenWnsMarketplace.methods - .claimRoyalty() - .accountsStrict({ - payer: wallet.publicKey, - creator: creator1.publicKey, - distribution, - paymentMint: paymentMintPublickey, - creatorPaymentTokenAccount: creator1PaymentMintTokenAccount, - distributionPaymentTokenAccount: - distributionPaymentMintTokenAccount, - wenDistributionProgram: wenDistributionProgramId, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .preInstructions([ - createAssociatedTokenAccountInstruction( - wallet.publicKey, - creator1PaymentMintTokenAccount, - creator1.publicKey, - paymentMintPublickey, - TOKEN_PROGRAM_ID, - ), - ]) - .signers([creator1]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - creator1PostBalance = parseInt( - ( - await getAccount( - connection, - creator1PaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ); - }); - - it("should receive correct royalty funds", () => { - expect(creator1PostBalance).to.eql(expectedCreatorShare.toNumber()); - }); - }); - - describe("creator 2", () => { - const creator2PaymentMintTokenAccount = getAssociatedTokenAddressSync( - paymentMintPublickey, - creator2.publicKey, - true, - TOKEN_PROGRAM_ID, - ); - - let creator2PostBalance: number; - const expectedCreatorShare = royalty - .mul(new anchor.BN(creator2SharePct)) - .div(new anchor.BN(100)); - - before(async () => { - await wenWnsMarketplace.methods - .claimRoyalty() - .accountsStrict({ - payer: wallet.publicKey, - creator: creator2.publicKey, - distribution, - paymentMint: paymentMintPublickey, - creatorPaymentTokenAccount: creator2PaymentMintTokenAccount, - distributionPaymentTokenAccount: - distributionPaymentMintTokenAccount, - wenDistributionProgram: wenDistributionProgramId, - associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, - tokenProgram: TOKEN_PROGRAM_ID, - systemProgram: SystemProgram.programId, - }) - .preInstructions([ - createAssociatedTokenAccountInstruction( - wallet.publicKey, - creator2PaymentMintTokenAccount, - creator2.publicKey, - paymentMintPublickey, - TOKEN_PROGRAM_ID, - ), - ]) - .signers([creator2]) - .rpc({ - skipPreflight: true, - preflightCommitment: "confirmed", - commitment: "confirmed", - }); - - creator2PostBalance = parseInt( - ( - await getAccount( - connection, - creator2PaymentMintTokenAccount, - "confirmed", - TOKEN_PROGRAM_ID, - ) - ).amount.toString(), - ); - }); - - it("should receive correct royalty funds", () => { - expect(creator2PostBalance).to.eql(expectedCreatorShare.toNumber()); - }); - }); - }); - }); - }); -}); diff --git a/tests/wen_transfer_guard.test.ts b/tests/wen_transfer_guard.test.ts deleted file mode 100644 index 7af163c2..00000000 --- a/tests/wen_transfer_guard.test.ts +++ /dev/null @@ -1,467 +0,0 @@ -import * as anchor from "@coral-xyz/anchor"; -import { BankrunProvider } from "anchor-bankrun"; -import { Program, web3 } from "@coral-xyz/anchor"; - -import { WenTransferGuard } from "../target/types/wen_transfer_guard"; -import { - ASSOCIATED_TOKEN_PROGRAM_ID, - ExtensionType, - TOKEN_2022_PROGRAM_ID, - createAssociatedTokenAccountInstruction, - createInitializeMintInstruction, - createInitializeTransferHookInstruction, - createMintToInstruction, - createTransferCheckedWithTransferHookInstruction, - getAssociatedTokenAddressSync, - getExtraAccountMetaAddress, - getMintLen, -} from "@solana/spl-token"; -import { ProgramTestContext, startAnchor } from "solana-bankrun"; -import { expect } from "chai"; - -const sendSignedVtx = async ( - provider: BankrunProvider, - payer: web3.PublicKey, - signers: web3.Signer[], - ...ixs: web3.TransactionInstruction[] -) => - provider.sendAndConfirm( - new web3.VersionedTransaction( - new web3.TransactionMessage({ - payerKey: payer, - instructions: ixs, - recentBlockhash: provider.context.lastBlockhash, - }).compileToV0Message(), - ), - signers, - ); - -const kMint = { - keypair: web3.Keypair.generate(), - decimals: 9, - mintAmount: 1e9, - mintAuthority: web3.Keypair.generate(), - transferHookAuthority: web3.Keypair.generate(), -}; -const kSourceAuthority = web3.Keypair.generate(); -const kDestinationAuthority = web3.Keypair.generate(); - -const createMint = async ( - programId: web3.PublicKey, - payer: web3.Signer, - provider: BankrunProvider, - mint = kMint, - sourceAuthority = kSourceAuthority, - destinationAuthority = kDestinationAuthority, -) => { - const extensions = [ExtensionType.TransferHook]; - const mintLen = getMintLen(extensions); - const lamports = ( - await provider.context.banksClient.getRent() - ).minimumBalance(BigInt(mintLen)); - - const sourceAta = getAssociatedTokenAddressSync( - mint.keypair.publicKey, - sourceAuthority.publicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - const destinationAta = getAssociatedTokenAddressSync( - mint.keypair.publicKey, - destinationAuthority.publicKey, - false, - TOKEN_2022_PROGRAM_ID, - ); - const ixs = [ - // TX: Allocate mint account - web3.SystemProgram.createAccount({ - fromPubkey: payer.publicKey, - newAccountPubkey: mint.keypair.publicKey, - space: mintLen, - lamports: Number(lamports), - programId: TOKEN_2022_PROGRAM_ID, - }), - // TX: Init transfer hook on mint - createInitializeTransferHookInstruction( - mint.keypair.publicKey, - mint.transferHookAuthority.publicKey, - programId, - TOKEN_2022_PROGRAM_ID, - ), - // TX: Init mint - createInitializeMintInstruction( - mint.keypair.publicKey, - mint.decimals, - mint.mintAuthority.publicKey, - mint.mintAuthority.publicKey, - TOKEN_2022_PROGRAM_ID, - ), - // TX: Create Source ATA - createAssociatedTokenAccountInstruction( - payer.publicKey, - sourceAta, - sourceAuthority.publicKey, - mint.keypair.publicKey, - TOKEN_2022_PROGRAM_ID, - ASSOCIATED_TOKEN_PROGRAM_ID, - ), - // TX: Create Destination ATA - createAssociatedTokenAccountInstruction( - payer.publicKey, - destinationAta, - destinationAuthority.publicKey, - mint.keypair.publicKey, - TOKEN_2022_PROGRAM_ID, - ASSOCIATED_TOKEN_PROGRAM_ID, - ), - // TX: Mint to Source ATA some tokens - createMintToInstruction( - mint.keypair.publicKey, - sourceAta, - mint.mintAuthority.publicKey, - mint.mintAmount, - undefined, - TOKEN_2022_PROGRAM_ID, - ), - ]; - - const txId = await sendSignedVtx( - provider, - payer.publicKey, - [payer, mint.keypair, mint.mintAuthority], - ...ixs, - ); - - return { - sourceAta, - destinationAta, - txId, - }; -}; - -describe("[wen_transfer_guard] - Solana Bankrun test suite", () => { - // Anchor + Bankrun Tooling - let context: ProgramTestContext; - let provider: BankrunProvider; - let program: anchor.Program; - - let kSourceAta: web3.PublicKey | null = null; - let kDestinationAta: web3.PublicKey | null = null; - let kExtraMetasAddress: web3.PublicKey | null = null; - - let kGuard: web3.PublicKey | null = null; - let kGuardOwner = web3.Keypair.generate(); - let kGuardMint = web3.Keypair.generate(); - - let kGuardMetadata = { - name: "Test Guard", - symbol: "TG", - uri: "https://bafkreiewmldtian6gxfyn354xlpuvj5zkcpvwasjzexirgdtpj44l32z44.ipfs.nftstorage.link/", - }; - let kGuardOriginalCpiRule: { deny: { 0: anchor.web3.PublicKey[] } }; - let kGuardUpdatedCpiRule: { deny: { 0: anchor.web3.PublicKey[] } }; - const kGuardDenyNonCpiTransfersRule = { - deny: { 0: [TOKEN_2022_PROGRAM_ID] }, - }; - - before(async () => { - context = await startAnchor( - "./", - [], - [ - { - // Guard owner starts with 1 sol for gas. - address: kGuardOwner.publicKey, - info: { - lamports: 1e9, - data: Buffer.alloc(0), - executable: false, - owner: web3.SystemProgram.programId, - }, - }, - // Mint authority starts with 1 sol for gas. - { - address: kMint.mintAuthority.publicKey, - info: { - lamports: 1e9, - data: Buffer.alloc(0), - executable: false, - owner: web3.SystemProgram.programId, - }, - }, - ], - ); - provider = new BankrunProvider(context); - program = new Program( - require("../target/idl/wen_transfer_guard.json"), - provider, - ); - - const extraMetasAddress = getExtraAccountMetaAddress( - kMint.keypair.publicKey, - program.programId, - ); - - // Create a mint - const { sourceAta, destinationAta } = await createMint( - program.programId, - context.payer, - provider, - ); - - kSourceAta = sourceAta; - kDestinationAta = destinationAta; - kExtraMetasAddress = extraMetasAddress; - - const [guardAddress] = web3.PublicKey.findProgramAddressSync( - [ - Buffer.from("wen_token_transfer_guard"), - Buffer.from("guard_v1"), - kGuardMint.publicKey.toBuffer(), - ], - program.programId, - ); - - kGuard = guardAddress; - kGuardOriginalCpiRule = { - deny: { 0: [program.programId, web3.PublicKey.default] }, - }; - kGuardUpdatedCpiRule = { deny: { 0: [program.programId] } }; - }); - - it("[Transfer Guards] - Initializes a transfer guard.", async () => { - const ix = await program.methods - .createGuard({ - ...kGuardMetadata, - additionalFieldsRule: [], - transferAmountRule: null, - cpiRule: kGuardOriginalCpiRule, - }) - .accounts({ - mint: kGuardMint.publicKey, - guardAuthority: kGuardOwner.publicKey, - payer: context.payer.publicKey, - }) - .instruction(); - - await sendSignedVtx( - provider, - context.payer.publicKey, - [context.payer, kGuardOwner, kGuardMint], - ix, - ); - - const guard = await program.account.guardV1.fetch(kGuard); - expect(guard.mint.toString()).to.be.eq(kGuardMint.publicKey.toString()); - - const denyRules = guard.cpiRule.deny[0]; - - expect(denyRules[0].toString()).to.be.eq(program.programId.toString()); - expect(denyRules[1].toString()).to.be.eq(web3.PublicKey.default.toString()); - }); - - it("[Transfer Guards] - Updates a transfer guard.", async () => { - const ix = await program.methods - .updateGuard({ - additionalFieldsRule: [], - transferAmountRule: null, - cpiRule: kGuardUpdatedCpiRule, - }) - .accounts({ - mint: kGuardMint.publicKey, - guardAuthority: kGuardOwner.publicKey, - }) - .instruction(); - - await sendSignedVtx(provider, context.payer.publicKey, [kGuardOwner], ix); - - const guard = await program.account.guardV1.fetch(kGuard); - const denyRules = guard.cpiRule.deny[0]; - - expect(denyRules.length).to.be.eq(1); - expect(denyRules[0].toString()).to.be.eq(program.programId.toString()); - }); - - it("[Transfer Hook] - Assigns guard to mint via init.", async () => { - const ix = await program.methods - .initialize() - .accountsStrict({ - guard: kGuard, - mint: kMint.keypair.publicKey, - transferHookAuthority: kMint.transferHookAuthority.publicKey, - payer: context.payer.publicKey, - extraMetasAccount: kExtraMetasAddress, - systemProgram: web3.SystemProgram.programId, - }) - .instruction(); - - await sendSignedVtx( - provider, - context.payer.publicKey, - [context.payer, kMint.transferHookAuthority], - ix, - ); - }); - - it("[Transfer Hook] - Executes correctly during transfer.", async () => { - let ix = await createTransferCheckedWithTransferHookInstruction( - provider.connection, - kSourceAta, - kMint.keypair.publicKey, - kDestinationAta, - kSourceAuthority.publicKey, - BigInt(1e8), - kMint.decimals, - undefined, - undefined, - TOKEN_2022_PROGRAM_ID, - ); - - await sendSignedVtx( - provider, - context.payer.publicKey, - [kSourceAuthority, context.payer], - ix, - ); - }); - - it("[Transfer Guards] - Adds TOKEN_2022_PROGRAM_ID to deny list, non-cpi calls should fail.", async () => { - await sendSignedVtx( - provider, - context.payer.publicKey, - [kGuardOwner], - await program.methods - .updateGuard({ - additionalFieldsRule: [], - transferAmountRule: null, - cpiRule: kGuardDenyNonCpiTransfersRule, - }) - .accounts({ - mint: kGuardMint.publicKey, - guardAuthority: kGuardOwner.publicKey, - }) - .instruction(), - ); - const guard = await program.account.guardV1.fetch(kGuard); - const denyRules = guard.cpiRule.deny[0]; - expect(denyRules.length).to.be.eq(1); - expect(denyRules[0].toString()).to.be.eq(TOKEN_2022_PROGRAM_ID.toString()); - - let ix = await createTransferCheckedWithTransferHookInstruction( - provider.connection, - kSourceAta, - kMint.keypair.publicKey, - kDestinationAta, - kSourceAuthority.publicKey, - BigInt(2e8), - kMint.decimals, - undefined, - undefined, - TOKEN_2022_PROGRAM_ID, - ); - - try { - await sendSignedVtx( - provider, - context.payer.publicKey, - [kSourceAuthority, context.payer], - ix, - ); - } catch (error) { - expect(error.message).to.include("undefined"); - } - }); - - it("[Transfer Guards] - Shouldn't initialize with a mint using a wrong transfer guard program id.", async () => { - const wrongProgramId = web3.Keypair.generate(); - const wrongProgramMint = { - keypair: web3.Keypair.generate(), - decimals: 9, - mintAmount: 1e9, - mintAuthority: web3.Keypair.generate(), - transferHookAuthority: web3.Keypair.generate(), - }; - const extraMetasAddress = getExtraAccountMetaAddress( - wrongProgramMint.keypair.publicKey, - program.programId, // Purposefully using right program id here to simulate wrong sdk usage. - ); - - await createMint( - wrongProgramId.publicKey, - context.payer, - provider, - wrongProgramMint, - ); - - const ix = await program.methods - .initialize() - .accountsStrict({ - guard: kGuard, // Reuse the same guard. - mint: wrongProgramMint.keypair.publicKey, - transferHookAuthority: wrongProgramMint.transferHookAuthority.publicKey, - payer: context.payer.publicKey, - extraMetasAccount: extraMetasAddress, - systemProgram: web3.SystemProgram.programId, - }) - .instruction(); - - try { - await sendSignedVtx( - provider, - context.payer.publicKey, - [context.payer, wrongProgramMint.transferHookAuthority], - ix, - ); - } catch (error) { - console.log({ error }); - expect(error.message).to.include("undefined"); - } - }); - - it("[Transfer Guards] - Shouldn't initialize with a mint using a wrong transfer guard program id.", async () => { - const wrongProgramId = web3.Keypair.generate(); - const wrongProgramMint = { - keypair: web3.Keypair.generate(), - decimals: 9, - mintAmount: 1e9, - mintAuthority: web3.Keypair.generate(), - transferHookAuthority: web3.Keypair.generate(), - }; - const extraMetasAddress = getExtraAccountMetaAddress( - wrongProgramMint.keypair.publicKey, - program.programId, // Purposefully using right program id here to simulate wrong sdk usage. - ); - - await createMint( - wrongProgramId.publicKey, - context.payer, - provider, - wrongProgramMint, - ); - - const ix = await program.methods - .initialize() - .accountsStrict({ - guard: kGuard, // Reuse the same guard. - mint: wrongProgramMint.keypair.publicKey, - transferHookAuthority: wrongProgramMint.transferHookAuthority.publicKey, - payer: context.payer.publicKey, - extraMetasAccount: extraMetasAddress, - systemProgram: web3.SystemProgram.programId, - }) - .instruction(); - - try { - await sendSignedVtx( - provider, - context.payer.publicKey, - [context.payer, wrongProgramMint.transferHookAuthority], - ix, - ); - } catch (error) { - expect(error.message).to.include("undefined"); - } - }); - - // TODO: Add additional tests for the rest of the guard rules. -}); diff --git a/tsconfig.json b/tsconfig.json index cd5d2e3d..e44c5656 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,9 +2,24 @@ "compilerOptions": { "types": ["mocha", "chai"], "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], "module": "commonjs", "target": "es6", - "esModuleInterop": true + "lib": ["es6", "dom"], + "incremental": true, + "skipLibCheck": true, + "importHelpers": true, + "strict": false, + "declaration": true, + "noImplicitReturns": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "resolveJsonModule": true, + "baseUrl": ".", + }, + "parserOptions": { + "ecmaVersion": 2020 } -} +} \ No newline at end of file diff --git a/wpl_cli/Cargo.lock b/wpl_cli/Cargo.lock deleted file mode 100644 index 034a9e9c..00000000 --- a/wpl_cli/Cargo.lock +++ /dev/null @@ -1,5443 +0,0 @@ -# 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 = "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.15", - "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.15", - "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 = "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 = "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" - -[[package]] -name = "anstyle-parse" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - -[[package]] -name = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[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.5", - "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.5", - "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.5", -] - -[[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.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c90a406b4495d129f00461241616194cb8a032c8d1c53c657f0961d5f8e0498" -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.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[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.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[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 = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" -dependencies = [ - "borsh-derive 1.5.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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.66", - "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 = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" -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.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" -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.66", -] - -[[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.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" -dependencies = [ - "jobserver", - "libc", - "once_cell", -] - -[[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.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.5", -] - -[[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", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" - -[[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.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[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 = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[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 = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -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.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[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.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.66", -] - -[[package]] -name = "darling_macro" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.66", -] - -[[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.5", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[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.5", - "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", - "serde", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "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 = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[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.66", -] - -[[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.66", -] - -[[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.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -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.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "env_filter" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" -dependencies = [ - "log", - "regex", -] - -[[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 = "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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -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.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[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.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -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 = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[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.66", -] - -[[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-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.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[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 = "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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[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 = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[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 = "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", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", - "serde", -] - -[[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.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[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" -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.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -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 = "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.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.5.0", - "libc", -] - -[[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-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.5", - "thiserror", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.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.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.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" -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 = "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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" -dependencies = [ - "num-integer", - "num-traits", -] - -[[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.66", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint 0.2.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_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.66", -] - -[[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.66", -] - -[[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-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.5", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[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 = "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", -] - -[[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.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" -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.66", -] - -[[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.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "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.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", -] - -[[package]] -name = "redox_users" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror", -] - -[[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 = "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", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "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.15", - "libc", - "spin 0.9.8", - "untrusted 0.9.0", - "windows-sys 0.52.0", -] - -[[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 = "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 = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -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.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[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.66", -] - -[[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.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "serde" -version = "1.0.203" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" -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.203" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "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 2.3.3", -] - -[[package]] -name = "serde_with" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.2.6", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.8.1", - "time", -] - -[[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.66", -] - -[[package]] -name = "serde_with_macros" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.2.6", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -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.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solana-account-decoder" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1387123a0daab82dbd205c543f8bba0ed5345fc6b8eaa910ecd9dcb7469fc78" -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 1.0.0", - "spl-token-group-interface 0.1.0", - "spl-token-metadata-interface 0.2.0", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-clap-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1bf62a854e86674baafa1db95de3574e134140ad694d79812699d0ff7dba98" -dependencies = [ - "chrono", - "clap 2.34.0", - "rpassword", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", -] - -[[package]] -name = "solana-cli-config" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48509262dc51b117560c2620063790047ce520422e31809fb91f04a541d85fa5" -dependencies = [ - "dirs-next", - "lazy_static", - "serde", - "serde_derive", - "serde_yaml", - "solana-clap-utils", - "solana-sdk", - "url", -] - -[[package]] -name = "solana-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0b54e872d5d1de9e983d684f843ea622ba4b4432602a3aafd897626b25c339" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0756e2a78554efdcb997a00a652b20291a823f2415c752adaa0dad7320460c9" -dependencies = [ - "bincode", - "chrono", - "serde", - "serde_derive", - "solana-program-runtime", - "solana-sdk", -] - -[[package]] -name = "solana-connection-cache" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14821e889f3f010265d61814b5971e24837677fa51e2c4be2674aa4bcc8c77e5" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d353eac7a178cd8a2ceaf5d304719d4a30c1d3f24f303145d5b029b8cc7c35f0" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc87189dcb2d2da407831fc983e4f05e70c58be12b5c713e9a05f873edb42637" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.66", -] - -[[package]] -name = "solana-logger" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d857a115710eeb1c5ac98a340141f0c49cc31854168767d0c5b855e212632a5" -dependencies = [ - "env_logger 0.9.3", - "lazy_static", - "log", -] - -[[package]] -name = "solana-measure" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a32fb164205ddff073863f17a45e66fe44f88fa0fee2fa9790aa5cd730b616" -dependencies = [ - "log", - "solana-sdk", -] - -[[package]] -name = "solana-metrics" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374bb8daec434f2c867091ff7c1c494eb358c5c23a583cc44a5a6134609271c2" -dependencies = [ - "crossbeam-channel", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-net-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09abc9f1df58d9990cb085d1e8a489f682828fc78e1933856fd63cbb231748" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7d00801b85338f0ecf3fbb4c1d14dfccca4c1adc162f7fe28c5ee9ea7acc9f" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad73ff4d5c8d4943988ef18924f5fbd96881410ab20d5a0bfa32bb44d7d4cfce" -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.5.0", - "bs58 0.4.0", - "bv", - "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", - "itertools", - "js-sys", - "lazy_static", - "libc", - "libsecp256k1", - "light-poseidon", - "log", - "memoffset 0.9.1", - "num-bigint 0.4.5", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83375b909adeefd5ab9dc1473456df2b46f9377c8fa0d2447cc5a15a94ca407" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4425ce6449feac0d49b5ef9645d898c29d298ab93fa4851fe495223b1d2f4a11" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917e7772597c3e0ee2a9c39c846e1932e013abfaf43dd3bf86d8d29d57e66d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f16819b18fc045e4cbe9b1602931776c55eef9051bd88d109c9a2050cef31" -dependencies = [ - "lazy_static", - "num_cpus", -] - -[[package]] -name = "solana-remote-wallet" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62a3cb947b3bf30eb65d92f96be1539ebc21ab3bc12a4b6bbecffd7b0d922772" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f631266453395a9e0b614ca222747000ea186507e187ccf5f5d5498a98b0806" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668173de3d2a6629c6508c508c1a87a46e51dea305241816a71e68525edc1022" -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 1.0.0", - "thiserror", -] - -[[package]] -name = "solana-rpc-client-nonce-utils" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b409bc942263f987bb25ab56f0a3e601344fdcfb9b277a494dd142f81c34a23" -dependencies = [ - "clap 2.34.0", - "solana-clap-utils", - "solana-rpc-client", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "solana-sdk" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f518a377209223b09a0fb62abd53add4a11313a1e85f535f559fbcc0227117a" -dependencies = [ - "assert_matches", - "base64 0.21.7", - "bincode", - "bitflags 2.5.0", - "borsh 1.5.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 2.3.3", - "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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2975b2c2ed6f06d2ffbb2e6b3e7fdd9ca6b2570a76d49a2173f393e6e84c9c71" -dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.66", -] - -[[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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3986d3106ccbfe6bb1eb647918d2af82621db8d5d797a7f6a7b8d6b6b582064" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7283a5597db9dd9a7b9515d4b95fe4964881c67ee2d51658d5e5b73d83fba10" -dependencies = [ - "bincode", - "log", - "rayon", - "solana-connection-cache", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", -] - -[[package]] -name = "solana-tpu-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2a073779fcae0ac8ce7251a0a12f7ed275e4ea26f9621f873e4a2e3dca21d9" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9672c191c1a7a82d1472ff15ad2a0812e28a27858814ead611a1374b11a70d7" -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 2.3.0", - "spl-memo", - "spl-token", - "spl-token-2022 1.0.0", - "thiserror", -] - -[[package]] -name = "solana-udp-client" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b87180d368c00ecd82a56df7498953730136848699433d5571dacd7fd9c186" -dependencies = [ - "async-trait", - "solana-connection-cache", - "solana-net-utils", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-version" -version = "1.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf94f6a9ed0e1df165569f0353e286a4e219b72d4a5200f0c8b9cd55d90f474" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5d7a037bc2264af884564ea33f545817411897d2634ea2b83c4bc033896a0f" -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.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cefc9878a202bf9606745e56712f7d56878ea31b29f2f89785b4b801b264322" -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 1.0.0", - "thiserror", -] - -[[package]] -name = "spl-associated-token-account" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" -dependencies = [ - "assert_matches", - "borsh 1.5.0", - "num-derive 0.4.2", - "num-traits", - "solana-program", - "spl-token", - "spl-token-2022 3.0.2", - "thiserror", -] - -[[package]] -name = "spl-discriminator" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.1.2", -] - -[[package]] -name = "spl-discriminator" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.2.0", -] - -[[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 0.1.2", - "syn 2.0.66", -] - -[[package]] -name = "spl-discriminator-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" -dependencies = [ - "quote", - "spl-discriminator-syn 0.2.0", - "syn 2.0.66", -] - -[[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.66", - "thiserror", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.66", - "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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" -dependencies = [ - "borsh 0.10.3", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-pod" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" -dependencies = [ - "borsh 1.5.0", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.4.1", -] - -[[package]] -name = "spl-program-error" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" -dependencies = [ - "num-derive 0.4.2", - "num-traits", - "solana-program", - "spl-program-error-derive 0.3.2", - "thiserror", -] - -[[package]] -name = "spl-program-error" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49065093ea91f57b9b2bd81493ff705e2ad4e64507a07dbc02b085778e02770e" -dependencies = [ - "num-derive 0.4.2", - "num-traits", - "solana-program", - "spl-program-error-derive 0.4.1", - "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.66", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.66", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-type-length-value 0.4.3", -] - -[[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 0.1.1", - "spl-token", - "spl-token-group-interface 0.1.0", - "spl-token-metadata-interface 0.2.0", - "spl-transfer-hook-interface 0.4.1", - "spl-type-length-value 0.3.1", - "thiserror", -] - -[[package]] -name = "spl-token-2022" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" -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 0.2.2", - "spl-token", - "spl-token-group-interface 0.2.3", - "spl-token-metadata-interface 0.3.3", - "spl-transfer-hook-interface 0.6.3", - "spl-type-length-value 0.4.3", - "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 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-token-group-interface" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", -] - -[[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 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" -dependencies = [ - "borsh 1.5.0", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-type-length-value 0.4.3", -] - -[[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 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-tlv-account-resolution 0.5.2", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-tlv-account-resolution 0.6.3", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-type-length-value" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-type-length-value" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", -] - -[[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.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" -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.66", -] - -[[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.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "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 = "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.66", -] - -[[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.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" - -[[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", -] - -[[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", -] - -[[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.66", -] - -[[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 = "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-width" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" - -[[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 = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - -[[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 = "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.66", - "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.66", - "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 = "wen_new_standard" -version = "0.4.1-alpha" -dependencies = [ - "borsh 0.10.3", - "num-derive 0.3.3", - "num-traits", - "serde", - "serde_with 3.8.1", - "solana-program", - "thiserror", -] - -[[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.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.5", -] - -[[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.5", -] - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "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]] -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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[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.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 = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[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.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[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.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 = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -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 = "wpl" -version = "0.4.1-alpha" -dependencies = [ - "anyhow", - "bs58 0.5.1", - "clap 4.5.4", - "env_logger 0.11.3", - "log", - "serde_json", - "solana-cli-config", - "solana-client", - "solana-program", - "solana-sdk", - "spl-associated-token-account 3.0.2", - "spl-token-2022 3.0.2", - "spl-token-metadata-interface 0.3.3", - "tokio", - "wen_new_standard", -] - -[[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 = "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.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[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.66", -] - -[[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/wpl_cli/Cargo.toml b/wpl_cli/Cargo.toml deleted file mode 100644 index 0ab9ef83..00000000 --- a/wpl_cli/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "wpl" -version = "0.4.1-alpha" -edition = "2021" - - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[workspace] - -[dependencies] -anyhow = "1.0.86" -bs58 = "0.5.1" -clap = { version = "4.5.4", features = ["derive", "cargo", "env"] } -env_logger = "0.11.3" -log = "0.4.21" -serde_json = "1.0.117" -solana-cli-config = "1.18.14" -solana-client = "1.18.14" -solana-program = "1.18.14" -solana-sdk = "1.18.14" -spl-associated-token-account = "3.0.2" -spl-token-2022 = "3.0.2" -spl-token-metadata-interface = "0.3.3" -tokio = { version = "1.37.0", features = ["full"] } -wen_new_standard = { path = "../clients/rust/wen_new_standard", features = [ - "serde", -] } diff --git a/wpl_cli/README.md b/wpl_cli/README.md deleted file mode 100644 index 0e73f73b..00000000 --- a/wpl_cli/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# Wen Program Library CLI - -A command line interface for WEN New Standard program. - ---- - -## Table of Contents - -- [Installation](#installation) -- [Use case examples](#use-case-examples) - ---- - -## Installation - -One can build directly from source using `cargo`. Prerequisites for the binary to work is installing Rust on one's machine. - -Install Rust via the command - -```sh -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -``` - -Users can fetch the required arguments for a command through the `--help` option. Example command listed below. - -```sh -wpl asset --help -``` - -Should showcase the following help text - -```sh -Asset related instructions - -Usage: wpl asset [OPTIONS] - -Commands: - create Create a new asset - get Fetch an asset - freeze Freeze an asset - thaw Thaw an asset - burn Burn an asset - royalty Royalty based instructions for an asset - metadata Metadata based instructions for an asset - help Print this message or the help of the given subcommand(s) - -Options: - -r, --rpc RPC endpoint url to override using the Solana config - -T, --timeout Timeout to override default value of 90 seconds [default: 90] - -l, --log-level Log level [default: off] - -k, --keypair Path to the owner keypair file - -h, --help Print help -``` - ---- - -## Use case examples - -The following use cases will focus only the arguments required and skipping the optional arguments (for example rpc, timeout, keypair etc). - ---- - -### Creating a collection - -```sh -wpl collection create [OPTIONS] --name --symbol --uri --size -``` - ---- - -### Creating an asset - -```sh -wpl asset create [OPTIONS] --name --symbol --uri -``` - -#### Adding royalties to asset (Optional) - -```sh -wpl asset royalty add [OPTIONS] --mint --config-path - --m, --mint Asset address --c, --config-path Config file for royalties -``` - -### Appending additional metadata (Optional) - -```sh -wpl asset metadata add [OPTIONS] --mint --metadata-path - --m, --mint Asset address --M, --metadata-path Config file for metadata -``` - ---- - -### Including assets into a collection - -```sh -wpl collection asset add [OPTIONS] --mint --asset-mint - --m, --mint Collection mint --a, --asset-mint Asset mint -``` diff --git a/wpl_cli/src/args.rs b/wpl_cli/src/args.rs deleted file mode 100644 index b5ad1866..00000000 --- a/wpl_cli/src/args.rs +++ /dev/null @@ -1,53 +0,0 @@ -use crate::asset::*; -use crate::group::*; -use crate::manager::*; - -use clap::{Parser, Subcommand}; -use solana_client::nonblocking::rpc_client::RpcClient; -use solana_sdk::signature::Keypair; - -#[derive(Debug, Parser)] -#[command( - author, - version, - name = "Wen New Standard", - about = "An open and composable NFT standard on Solana." -)] -pub struct Args { - /// RPC endpoint url to override using the Solana config - #[arg(short, long, global = true)] - pub rpc: Option, - - /// Timeout to override default value of 90 seconds - #[arg(short = 'T', long, global = true, default_value_t = 90)] - pub timeout: u64, - - /// Log level - #[arg(short, long, global = true, default_value = "off")] - pub log_level: String, - - /// Path to the owner keypair file - #[arg(short, long, global = true)] - pub keypair: Option, - - #[command(subcommand)] - pub command: Command, -} - -#[derive(Debug, Subcommand)] -pub enum Command { - /// Manager related instructions - #[clap(name = "manager")] - Manager(ManagerSubCommand), - /// Collection related instructions - #[clap(name = "collection")] - Group(GroupSubCommand), - /// Asset related instructions - #[clap(name = "asset")] - Asset(AssetSubcommand), -} - -pub struct Context { - pub client: RpcClient, - pub keypair: Keypair, -} diff --git a/wpl_cli/src/asset/cmd.rs b/wpl_cli/src/asset/cmd.rs deleted file mode 100644 index db22ec73..00000000 --- a/wpl_cli/src/asset/cmd.rs +++ /dev/null @@ -1,71 +0,0 @@ -use crate::Context; - -use super::burn::{run as burn_mint_account, BurnArgs}; -use super::create::{run as create_mint_account, CreateArgs}; -use super::freeze::{run as freeze_mint_account, FreezeArgs}; -use super::get::{run as get_mint_account, GetArgs}; -use super::metadata::{metadata_subcommand, MetadataSubCommand}; -use super::royalty::{royalty_subcommand, RoyaltySubCommand}; -use super::thaw::{run as thaw_mint_account, ThawArgs}; - -use anyhow::Result; -use clap::{Args, Subcommand}; - -#[derive(Debug, Clone, Args)] -pub struct AssetSubcommand { - #[clap(subcommand)] - pub action: Commands, -} - -#[derive(Debug, Clone, Subcommand)] -pub enum Commands { - #[clap(name = "create")] - /// Create a new asset - Create(CreateArgs), - #[clap(name = "get")] - /// Fetch an asset - Get(GetArgs), - #[clap(name = "freeze")] - /// Freeze an asset - Freeze(FreezeArgs), - #[clap(name = "thaw")] - /// Thaw an asset - Thaw(ThawArgs), - #[clap(name = "burn")] - /// Burn an asset - Burn(BurnArgs), - #[clap(name = "royalty")] - /// Royalty based instructions for an asset - Royalty(RoyaltySubCommand), - #[clap(name = "metadata")] - /// Metadata based instructions for an asset - Metadata(MetadataSubCommand), -} - -pub async fn subcommand(context: Context, subcommand: AssetSubcommand) -> Result<()> { - match subcommand.action { - Commands::Create(args) => { - create_mint_account(context, args).await?; - } - Commands::Get(args) => { - get_mint_account(context, args).await?; - } - Commands::Freeze(args) => { - freeze_mint_account(context, args).await?; - } - Commands::Thaw(args) => { - thaw_mint_account(context, args).await?; - } - Commands::Burn(args) => { - burn_mint_account(context, args).await?; - } - Commands::Royalty(subcommand) => { - royalty_subcommand(context, subcommand).await?; - } - Commands::Metadata(subcommand) => { - metadata_subcommand(context, subcommand).await?; - } - } - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/burn.rs b/wpl_cli/src/asset/instructions/burn.rs deleted file mode 100644 index d9cfabdd..00000000 --- a/wpl_cli/src/asset/instructions/burn.rs +++ /dev/null @@ -1,63 +0,0 @@ -use anyhow::Result; - -use clap::Parser; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - pubkey::Pubkey, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_associated_token_account::get_associated_token_address_with_program_id; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::BurnMintAccount; - -use crate::{utils::derive_manager_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct BurnArgs { - /// Asset address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, -} - -pub async fn run(context: Context, args: BurnArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let mint_token_account = get_associated_token_address_with_program_id( - &keypair_pubkey, - &mint_pubkey, - &TOKEN_2022_PROGRAM_ID, - ); - let manager = derive_manager_account(); - - let burn_mint_account = BurnMintAccount { - user: keypair_pubkey, - payer: keypair_pubkey, - manager, - mint: mint_pubkey, - mint_token_account, - token_program: TOKEN_2022_PROGRAM_ID, - }; - - let burn_mint_account_ix = burn_mint_account.instruction(); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[burn_mint_account_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!("Asset burnt successfully! Signature: {:?}", signature); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/create.rs b/wpl_cli/src/asset/instructions/create.rs deleted file mode 100644 index f6d20316..00000000 --- a/wpl_cli/src/asset/instructions/create.rs +++ /dev/null @@ -1,100 +0,0 @@ -use anyhow::Result; - -use clap::Parser; -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_associated_token_account::{ - get_associated_token_address_with_program_id, ID as ASSOCIATED_TOKEN_2022_PROGRAM_ID, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{CreateMintAccount, CreateMintAccountInstructionArgs}; - -use crate::{utils::derive_manager_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct CreateArgs { - /// Name of the asset - #[arg(short, long)] - pub name: String, - /// Symbol of the asset - #[arg(short, long)] - pub symbol: String, - /// URI of the asset - #[arg(short, long)] - pub uri: String, - /// Receiver address of the asset - #[arg(short = 'R', long, value_parser = clap::value_parser!(Pubkey))] - pub receiver: Option, - /// Optional permanent delegate - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub permanent_delegate: Option, -} - -pub async fn run(context: Context, args: CreateArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_keypair = Keypair::new(); - let mint_pubkey = mint_keypair.pubkey(); - let keypair_pubkey = keypair.pubkey(); - - let receiver = if let Some(receiver) = args.receiver { - receiver - } else { - keypair_pubkey - }; - - let mint_token_account = get_associated_token_address_with_program_id( - &receiver, - &mint_pubkey, - &TOKEN_2022_PROGRAM_ID, - ); - let manager = derive_manager_account(); - - let create_mint_account = CreateMintAccount { - payer: keypair_pubkey, - authority: keypair_pubkey, - manager, - mint: mint_pubkey, - receiver, - mint_token_account, - associated_token_program: ASSOCIATED_TOKEN_2022_PROGRAM_ID, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let create_mint_account_ix = - create_mint_account.instruction(CreateMintAccountInstructionArgs { - name: args.name, - symbol: args.symbol, - uri: args.uri, - permanent_delegate: args.permanent_delegate, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[create_mint_account_ix], - &[], - recent_blockhash, - )?); - - let transaction = - VersionedTransaction::try_new(transaction_message, &[&keypair, &mint_keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Asset created successfully! Asset mint: {:?}\nSignature: {:?}", - mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/freeze.rs b/wpl_cli/src/asset/instructions/freeze.rs deleted file mode 100644 index 58e30dc3..00000000 --- a/wpl_cli/src/asset/instructions/freeze.rs +++ /dev/null @@ -1,82 +0,0 @@ -use anyhow::Result; - -use clap::Parser; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - pubkey::Pubkey, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_associated_token_account::get_associated_token_address_with_program_id; -use spl_token_2022::{instruction::approve_checked, ID as TOKEN_2022_PROGRAM_ID}; -use wen_new_standard::instructions::FreezeMintAccount; - -use crate::{utils::derive_manager_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct FreezeArgs { - /// Asset address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, - /// Is signing authority delegate? - #[arg(short = 'd', long, default_value_t = false)] - pub is_delegate: bool, -} - -pub async fn run(context: Context, args: FreezeArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let mint_token_account = get_associated_token_address_with_program_id( - &keypair_pubkey, - &mint_pubkey, - &TOKEN_2022_PROGRAM_ID, - ); - let manager = derive_manager_account(); - - let mut instructions = vec![]; - - if !args.is_delegate { - instructions.push(approve_checked( - &TOKEN_2022_PROGRAM_ID, - &mint_token_account, - &mint_pubkey, - &keypair_pubkey, - &keypair_pubkey, - &[], - 1, - 0, - )?); - } - - let freeze_mint_account = FreezeMintAccount { - user: keypair_pubkey, - delegate_authority: keypair_pubkey, - manager, - mint: mint_pubkey, - mint_token_account, - token_program: TOKEN_2022_PROGRAM_ID, - }; - - let freeze_mint_account_ix = freeze_mint_account.instruction(); - instructions.push(freeze_mint_account_ix); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &instructions, - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!("Asset frozen successfully! Signature: {:?}", signature); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/get.rs b/wpl_cli/src/asset/instructions/get.rs deleted file mode 100644 index 8d98a562..00000000 --- a/wpl_cli/src/asset/instructions/get.rs +++ /dev/null @@ -1,55 +0,0 @@ -use anyhow::{anyhow, Result}; - -use clap::Parser; -use solana_sdk::pubkey::Pubkey; -use spl_token_2022::{ - extension::{BaseStateWithExtensions, StateWithExtensions}, - state::Mint, -}; -use spl_token_metadata_interface::state::TokenMetadata; -use wen_new_standard::accounts::TokenGroupMember; - -use crate::{utils::derive_member_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct GetArgs { - /// Asset address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, -} - -pub async fn run(context: Context, args: GetArgs) -> Result<()> { - let Context { client, .. } = context; - - let mint_data = match client.get_account_data(&args.mint).await { - Ok(mint_data) => mint_data, - Err(_) => return Err(anyhow!("Unable to fetch asset mint data")), - }; - - let member_pubkey = derive_member_account(&args.mint); - let member_data = client - .get_account_data(&member_pubkey) - .await - .unwrap_or(vec![]); - - let mint = StateWithExtensions::::unpack(&mint_data)?; - let metadata = mint.get_variable_len_extension::()?; - - log::info!("Asset mint: {:?}", args.mint.to_string()); - if member_data.len() > 0 { - let member = TokenGroupMember::from_bytes(&member_data)?; - log::info!("Asset under collection PDA: {:?}", member.group.to_string()); - log::info!("Asset member count: {:?}", member.member_number); - } - log::info!("Asset name: {:?}", metadata.name); - log::info!("Asset symbol: {:?}", metadata.symbol); - log::info!("Asset URI: {:?}", metadata.uri); - if metadata.additional_metadata.len() > 0 { - log::info!("Asset Additional metadata ------"); - for (key, value) in metadata.additional_metadata { - log::info!("(Key) {:?} -- (Value) {:?}", key, value); - } - } - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/metadata/cmd.rs b/wpl_cli/src/asset/instructions/metadata/cmd.rs deleted file mode 100644 index aa5e6081..00000000 --- a/wpl_cli/src/asset/instructions/metadata/cmd.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::Context; - -use super::{add::run as add_metadata, remove::run as remove_metadata, MetadataArgs}; - -use anyhow::Result; -use clap::{Args, Subcommand}; - -#[derive(Debug, Clone, Args)] -pub struct MetadataSubCommand { - #[clap(subcommand)] - pub action: Commands, -} - -#[derive(Debug, Clone, Subcommand)] -pub enum Commands { - #[clap(name = "add")] - /// Add metadata for an asset - Add(MetadataArgs), - #[clap(name = "remove")] - /// Remove metadata for an asset - Remove(MetadataArgs), -} - -pub async fn subcommand(context: Context, subcommand: MetadataSubCommand) -> Result<()> { - match subcommand.action { - Commands::Add(args) => { - add_metadata(context, args).await?; - } - Commands::Remove(args) => { - remove_metadata(context, args).await?; - } - } - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/metadata/data.rs b/wpl_cli/src/asset/instructions/metadata/data.rs deleted file mode 100644 index 29a1582f..00000000 --- a/wpl_cli/src/asset/instructions/metadata/data.rs +++ /dev/null @@ -1,42 +0,0 @@ -use std::{ - fs::File, - path::{Path, PathBuf}, -}; - -use anyhow::Result; -use clap::Parser; -use log::warn; -use solana_sdk::pubkey::Pubkey; -use wen_new_standard::types::{AddMetadataArgs, RemoveMetadataArgs}; - -#[derive(Debug, Parser, Clone)] -pub struct MetadataArgs { - /// Asset address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, - /// Config file for metadata - #[arg(short = 'M', long)] - pub metadata_path: PathBuf, -} - -pub fn parse_add_metadata_pairs(metadata_path: PathBuf) -> Result> { - if Path::new(&metadata_path).exists() { - let metadata_config = File::open(metadata_path)?; - let add_metadata_args = serde_json::from_reader(metadata_config)?; - Ok(add_metadata_args) - } else { - warn!("Metadata config doesn't exist"); - Ok(vec![]) - } -} - -pub fn parse_remove_metadata_pairs(metadata_path: PathBuf) -> Result> { - if Path::new(&metadata_path).exists() { - let metadata_config = File::open(metadata_path)?; - let remove_metadata_args = serde_json::from_reader(metadata_config)?; - Ok(remove_metadata_args) - } else { - warn!("Metadata config doesn't exist"); - Ok(vec![]) - } -} diff --git a/wpl_cli/src/asset/instructions/metadata/instructions/add.rs b/wpl_cli/src/asset/instructions/metadata/instructions/add.rs deleted file mode 100644 index 192299e2..00000000 --- a/wpl_cli/src/asset/instructions/metadata/instructions/add.rs +++ /dev/null @@ -1,57 +0,0 @@ -use anyhow::Result; - -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{AddMetadata, AddMetadataInstructionArgs}; - -use crate::{ - asset::{parse_add_metadata_pairs, MetadataArgs}, - Context, -}; - -pub async fn run(context: Context, args: MetadataArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let add_metadata = AddMetadata { - payer: keypair_pubkey, - authority: keypair_pubkey, - mint: mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let add_metadata_args = parse_add_metadata_pairs(args.metadata_path)?; - - let add_metadata_ix = add_metadata.instruction(AddMetadataInstructionArgs { - args: add_metadata_args, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[add_metadata_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Added metadata for asset {:?} successfully! Signature: {:?}", - mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/metadata/instructions/mod.rs b/wpl_cli/src/asset/instructions/metadata/instructions/mod.rs deleted file mode 100644 index 6d1eb978..00000000 --- a/wpl_cli/src/asset/instructions/metadata/instructions/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod add; -pub mod remove; diff --git a/wpl_cli/src/asset/instructions/metadata/instructions/remove.rs b/wpl_cli/src/asset/instructions/metadata/instructions/remove.rs deleted file mode 100644 index d6284490..00000000 --- a/wpl_cli/src/asset/instructions/metadata/instructions/remove.rs +++ /dev/null @@ -1,57 +0,0 @@ -use anyhow::Result; - -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{RemoveMetadata, RemoveMetadataInstructionArgs}; - -use crate::{ - asset::{parse_remove_metadata_pairs, MetadataArgs}, - Context, -}; - -pub async fn run(context: Context, args: MetadataArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let remove_metadata = RemoveMetadata { - payer: keypair_pubkey, - authority: keypair_pubkey, - mint: mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let remove_metadata_args = parse_remove_metadata_pairs(args.metadata_path)?; - - let remove_metadata_ix = remove_metadata.instruction(RemoveMetadataInstructionArgs { - args: remove_metadata_args, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[remove_metadata_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Removed metadata for asset {:?} successfully! Signature: {:?}", - mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/metadata/mod.rs b/wpl_cli/src/asset/instructions/metadata/mod.rs deleted file mode 100644 index 1e54b818..00000000 --- a/wpl_cli/src/asset/instructions/metadata/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod cmd; -pub mod data; -pub mod instructions; - -pub use cmd::{subcommand as metadata_subcommand, MetadataSubCommand}; -pub use data::*; -pub use instructions::*; diff --git a/wpl_cli/src/asset/instructions/mod.rs b/wpl_cli/src/asset/instructions/mod.rs deleted file mode 100644 index ceaf7b36..00000000 --- a/wpl_cli/src/asset/instructions/mod.rs +++ /dev/null @@ -1,15 +0,0 @@ -pub mod burn; -pub mod create; -pub mod freeze; -pub mod get; -pub mod metadata; -pub mod royalty; -pub mod thaw; - -pub use burn::*; -pub use create::*; -pub use freeze::*; -pub use get::*; -pub use metadata::*; -pub use royalty::*; -pub use thaw::*; diff --git a/wpl_cli/src/asset/instructions/royalty/cmd.rs b/wpl_cli/src/asset/instructions/royalty/cmd.rs deleted file mode 100644 index c3a3aa9b..00000000 --- a/wpl_cli/src/asset/instructions/royalty/cmd.rs +++ /dev/null @@ -1,37 +0,0 @@ -use crate::Context; - -use super::add::run as add_royalties; -use super::modify::run as modify_royalties; - -use anyhow::Result; -use clap::{Args, Subcommand}; - -use super::data::RoyaltyArgs; - -#[derive(Debug, Clone, Args)] -pub struct RoyaltySubCommand { - #[clap(subcommand)] - pub action: Commands, -} - -#[derive(Debug, Clone, Subcommand)] -pub enum Commands { - #[clap(name = "add")] - /// Add royalties for an asset - Add(RoyaltyArgs), - /// Modify royalties for an asset - Modify(RoyaltyArgs), -} - -pub async fn subcommand(context: Context, subcommand: RoyaltySubCommand) -> Result<()> { - match subcommand.action { - Commands::Add(args) => { - add_royalties(context, args).await?; - } - Commands::Modify(args) => { - modify_royalties(context, args).await?; - } - } - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/royalty/data.rs b/wpl_cli/src/asset/instructions/royalty/data.rs deleted file mode 100644 index 1984e3e5..00000000 --- a/wpl_cli/src/asset/instructions/royalty/data.rs +++ /dev/null @@ -1,34 +0,0 @@ -use anyhow::Result; -use log::warn; -use std::{ - fs::File, - path::{Path, PathBuf}, -}; - -use clap::Parser; -use solana_sdk::pubkey::Pubkey; -use wen_new_standard::types::UpdateRoyaltiesArgs; - -#[derive(Debug, Parser, Clone)] -pub struct RoyaltyArgs { - /// Asset address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, - /// Config file for royalties - #[arg(short, long)] - pub config_path: PathBuf, -} - -pub fn parse_update_royalties_args(config_path: PathBuf) -> Result { - if Path::new(&config_path).exists() { - let royalty_config = File::open(config_path)?; - let update_royalties_args = serde_json::from_reader(royalty_config)?; - Ok(update_royalties_args) - } else { - warn!("Royalties config doesn't exist"); - Ok(UpdateRoyaltiesArgs { - creators: vec![], - royalty_basis_points: 0, - }) - } -} diff --git a/wpl_cli/src/asset/instructions/royalty/instructions/add.rs b/wpl_cli/src/asset/instructions/royalty/instructions/add.rs deleted file mode 100644 index f0c0c879..00000000 --- a/wpl_cli/src/asset/instructions/royalty/instructions/add.rs +++ /dev/null @@ -1,56 +0,0 @@ -use anyhow::Result; -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{AddRoyalties, AddRoyaltiesInstructionArgs}; - -use super::super::RoyaltyArgs; -use crate::{asset::parse_update_royalties_args, utils::derive_extra_metas_account, Context}; - -pub async fn run(context: Context, args: RoyaltyArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let extra_metas_account = derive_extra_metas_account(&mint_pubkey); - let add_royalties = AddRoyalties { - payer: keypair_pubkey, - authority: keypair_pubkey, - mint: mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - extra_metas_account, - }; - - let update_royalties_args = parse_update_royalties_args(args.config_path)?; - - let add_royalties_ix = add_royalties.instruction(AddRoyaltiesInstructionArgs { - args: update_royalties_args, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[add_royalties_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Added royalties for asset {:?} successfully! Signature: {:?}", - mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/royalty/instructions/mod.rs b/wpl_cli/src/asset/instructions/royalty/instructions/mod.rs deleted file mode 100644 index c86294e5..00000000 --- a/wpl_cli/src/asset/instructions/royalty/instructions/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod add; -pub mod modify; diff --git a/wpl_cli/src/asset/instructions/royalty/instructions/modify.rs b/wpl_cli/src/asset/instructions/royalty/instructions/modify.rs deleted file mode 100644 index f7ba2977..00000000 --- a/wpl_cli/src/asset/instructions/royalty/instructions/modify.rs +++ /dev/null @@ -1,58 +0,0 @@ -use anyhow::Result; - -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - compute_budget::ComputeBudgetInstruction, - message::{v0::Message as TransactionMessage, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{ModifyRoyalties, ModifyRoyaltiesInstructionArgs}; - -use super::super::RoyaltyArgs; -use crate::{asset::parse_update_royalties_args, Context}; - -pub async fn run(context: Context, args: RoyaltyArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let modify_royalties = ModifyRoyalties { - payer: keypair_pubkey, - authority: keypair_pubkey, - mint: mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let update_royalties_args = parse_update_royalties_args(args.config_path)?; - - let compute_budget_set_units_ix = ComputeBudgetInstruction::set_compute_unit_limit(300_000); - - let modify_royalties_ix = modify_royalties.instruction(ModifyRoyaltiesInstructionArgs { - args: update_royalties_args, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[compute_budget_set_units_ix, modify_royalties_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Modified royalties for asset {:?} successfully! Signature: {:?}", - mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/asset/instructions/royalty/mod.rs b/wpl_cli/src/asset/instructions/royalty/mod.rs deleted file mode 100644 index eff52610..00000000 --- a/wpl_cli/src/asset/instructions/royalty/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod cmd; -pub mod data; -pub mod instructions; - -pub use cmd::{subcommand as royalty_subcommand, RoyaltySubCommand}; -pub use data::*; -pub use instructions::*; diff --git a/wpl_cli/src/asset/instructions/thaw.rs b/wpl_cli/src/asset/instructions/thaw.rs deleted file mode 100644 index 421c1c73..00000000 --- a/wpl_cli/src/asset/instructions/thaw.rs +++ /dev/null @@ -1,77 +0,0 @@ -use anyhow::Result; - -use clap::Parser; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - pubkey::Pubkey, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_associated_token_account::get_associated_token_address_with_program_id; -use spl_token_2022::{instruction::revoke, ID as TOKEN_2022_PROGRAM_ID}; -use wen_new_standard::instructions::ThawMintAccount; - -use crate::{utils::derive_manager_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct ThawArgs { - /// Asset address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, - /// Is signing authority delegate? - #[arg(short = 'd', long, default_value_t = false)] - pub is_delegate: bool, -} - -pub async fn run(context: Context, args: ThawArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let mint_token_account = get_associated_token_address_with_program_id( - &keypair_pubkey, - &mint_pubkey, - &TOKEN_2022_PROGRAM_ID, - ); - let manager = derive_manager_account(); - - let mut instructions = vec![]; - let thaw_mint_account = ThawMintAccount { - user: keypair_pubkey, - delegate_authority: keypair_pubkey, - manager, - mint: mint_pubkey, - mint_token_account, - token_program: TOKEN_2022_PROGRAM_ID, - }; - - let thaw_mint_account_ix = thaw_mint_account.instruction(); - instructions.push(thaw_mint_account_ix); - - if !args.is_delegate { - instructions.push(revoke( - &TOKEN_2022_PROGRAM_ID, - &mint_token_account, - &keypair_pubkey, - &[], - )?); - } - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &instructions, - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!("Asset thawed successfully! Signature: {:?}", signature); - - Ok(()) -} diff --git a/wpl_cli/src/group/cmd.rs b/wpl_cli/src/group/cmd.rs deleted file mode 100644 index 3531f35e..00000000 --- a/wpl_cli/src/group/cmd.rs +++ /dev/null @@ -1,50 +0,0 @@ -use crate::Context; - -use super::asset::{collection_asset_subcommand, CollectionAssetSubCommand}; -use super::create::{run as create_group_account, CreateArgs}; -use super::get::{run as get_group_account, GetArgs}; -use super::update::{run as update_group_account, UpdateArgs}; - -use anyhow::Result; -use clap::{Args, Subcommand}; - -#[derive(Debug, Clone, Args)] -pub struct GroupSubCommand { - #[clap(subcommand)] - pub action: Commands, -} - -#[derive(Debug, Clone, Subcommand)] -pub enum Commands { - /// Create a collection - #[clap(name = "create")] - Create(CreateArgs), - /// Update a collection - #[clap(name = "update")] - Update(UpdateArgs), - /// Fetch a collection - #[clap(name = "get")] - Get(GetArgs), - /// Asset grouping related instructions - #[clap(name = "asset")] - Asset(CollectionAssetSubCommand), -} - -pub async fn subcommand(context: Context, subcommand: GroupSubCommand) -> Result<()> { - match subcommand.action { - Commands::Create(args) => { - create_group_account(context, args).await?; - } - Commands::Update(args) => { - update_group_account(context, args).await?; - } - Commands::Get(args) => { - get_group_account(context, args).await?; - } - Commands::Asset(subcommand) => { - collection_asset_subcommand(context, subcommand).await?; - } - } - - Ok(()) -} diff --git a/wpl_cli/src/group/instructions/asset/cmd.rs b/wpl_cli/src/group/instructions/asset/cmd.rs deleted file mode 100644 index 70191c0c..00000000 --- a/wpl_cli/src/group/instructions/asset/cmd.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::Context; - -use super::{add::run as add_mint, remove::run as remove_mint, AssetArgs}; - -use anyhow::Result; -use clap::{Args, Subcommand}; - -#[derive(Debug, Clone, Args)] -pub struct CollectionAssetSubCommand { - #[clap(subcommand)] - pub action: Commands, -} - -#[derive(Debug, Clone, Subcommand)] -pub enum Commands { - #[clap(name = "add")] - /// Add an asset to a collection - Add(AssetArgs), - #[clap(name = "remove")] - /// Remove an asset from a collection - Remove(AssetArgs), -} - -pub async fn subcommand(context: Context, subcommand: CollectionAssetSubCommand) -> Result<()> { - match subcommand.action { - Commands::Add(args) => { - add_mint(context, args).await?; - } - Commands::Remove(args) => { - remove_mint(context, args).await?; - } - } - - Ok(()) -} diff --git a/wpl_cli/src/group/instructions/asset/data.rs b/wpl_cli/src/group/instructions/asset/data.rs deleted file mode 100644 index dcd51ea5..00000000 --- a/wpl_cli/src/group/instructions/asset/data.rs +++ /dev/null @@ -1,12 +0,0 @@ -use clap::Parser; -use solana_sdk::pubkey::Pubkey; - -#[derive(Debug, Parser, Clone)] -pub struct AssetArgs { - /// Collection mint - #[arg(short = 'm', long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, - /// Asset mint - #[arg(short = 'a', long, value_parser = clap::value_parser!(Pubkey))] - pub asset_mint: Pubkey, -} diff --git a/wpl_cli/src/group/instructions/asset/instructions/add.rs b/wpl_cli/src/group/instructions/asset/instructions/add.rs deleted file mode 100644 index 5707fa48..00000000 --- a/wpl_cli/src/group/instructions/asset/instructions/add.rs +++ /dev/null @@ -1,60 +0,0 @@ -use anyhow::Result; - -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::AddMintToGroup; - -use crate::{group::AssetArgs, utils::*, Context}; - -pub async fn run(context: Context, args: AssetArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let group_mint_pubkey = args.mint; - let member_mint_pubkey = args.asset_mint; - let keypair_pubkey = keypair.pubkey(); - - let group = derive_group_account(&group_mint_pubkey); - let member = derive_member_account(&member_mint_pubkey); - let manager = derive_manager_account(); - - let add_mint_to_group = AddMintToGroup { - payer: keypair_pubkey, - authority: keypair_pubkey, - group, - manager, - member, - mint: member_mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let add_mint_to_group_ix = add_mint_to_group.instruction(); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[add_mint_to_group_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Asset {:?} added to collection {:?} successfully!\nAsset PDA: {:?}\nSignature: {:?}", - member_mint_pubkey.to_string(), - group_mint_pubkey.to_string(), - member.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/group/instructions/asset/instructions/mod.rs b/wpl_cli/src/group/instructions/asset/instructions/mod.rs deleted file mode 100644 index 6d1eb978..00000000 --- a/wpl_cli/src/group/instructions/asset/instructions/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod add; -pub mod remove; diff --git a/wpl_cli/src/group/instructions/asset/instructions/remove.rs b/wpl_cli/src/group/instructions/asset/instructions/remove.rs deleted file mode 100644 index 8f69b3ce..00000000 --- a/wpl_cli/src/group/instructions/asset/instructions/remove.rs +++ /dev/null @@ -1,59 +0,0 @@ -use anyhow::Result; - -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::RemoveMintFromGroup; - -use crate::{group::AssetArgs, utils::*, Context}; - -pub async fn run(context: Context, args: AssetArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let group_mint_pubkey = args.mint; - let member_mint_pubkey = args.asset_mint; - let keypair_pubkey = keypair.pubkey(); - - let group = derive_group_account(&group_mint_pubkey); - let member = derive_member_account(&member_mint_pubkey); - let manager = derive_manager_account(); - - let remove_mint_from_group = RemoveMintFromGroup { - payer: keypair_pubkey, - authority: keypair_pubkey, - group, - manager, - member, - mint: member_mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let remove_mint_from_group_ix = remove_mint_from_group.instruction(); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[remove_mint_from_group_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Asset {:?} removed from collection {:?} successfully! Signature: {:?}", - member_mint_pubkey.to_string(), - group_mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/group/instructions/asset/mod.rs b/wpl_cli/src/group/instructions/asset/mod.rs deleted file mode 100644 index 9a9e4fd6..00000000 --- a/wpl_cli/src/group/instructions/asset/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod cmd; -pub mod data; -pub mod instructions; - -pub use cmd::{subcommand as collection_asset_subcommand, CollectionAssetSubCommand}; -pub use data::*; -pub use instructions::*; diff --git a/wpl_cli/src/group/instructions/create.rs b/wpl_cli/src/group/instructions/create.rs deleted file mode 100644 index 0b2af6fe..00000000 --- a/wpl_cli/src/group/instructions/create.rs +++ /dev/null @@ -1,107 +0,0 @@ -use anyhow::Result; - -use clap::Parser; -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - pubkey::Pubkey, - signature::Keypair, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_associated_token_account::{ - get_associated_token_address_with_program_id, ID as ASSOCIATED_TOKEN_2022_PROGRAM_ID, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{CreateGroupAccount, CreateGroupAccountInstructionArgs}; - -use crate::{ - utils::{derive_group_account, derive_manager_account}, - Context, -}; - -#[derive(Debug, Parser, Clone)] -pub struct CreateArgs { - /// Name of the group mint - #[arg(short, long)] - pub name: String, - /// Symbol of the group mint - #[arg(short, long)] - pub symbol: String, - /// URI of the group mint - #[arg(short, long)] - pub uri: String, - /// Maximum size of the group - #[arg(short = 'S', long)] - pub size: u32, - /// Receiver address of the collection - #[arg(short = 'R', long, value_parser = clap::value_parser!(Pubkey))] - pub receiver: Option, -} - -pub async fn run(context: Context, args: CreateArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_keypair = Keypair::new(); - let mint_pubkey = mint_keypair.pubkey(); - let keypair_pubkey = keypair.pubkey(); - - let receiver = if let Some(receiver) = args.receiver { - receiver - } else { - keypair_pubkey - }; - - let mint_token_account = get_associated_token_address_with_program_id( - &receiver, - &mint_pubkey, - &TOKEN_2022_PROGRAM_ID, - ); - - let group = derive_group_account(&mint_pubkey); - let manager = derive_manager_account(); - - let create_group_account = CreateGroupAccount { - payer: keypair_pubkey, - authority: keypair_pubkey, - group, - manager, - mint: mint_pubkey, - receiver, - mint_token_account, - associated_token_program: ASSOCIATED_TOKEN_2022_PROGRAM_ID, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let create_group_account_ix = - create_group_account.instruction(CreateGroupAccountInstructionArgs { - name: args.name, - max_size: args.size, - symbol: args.symbol, - uri: args.uri, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[create_group_account_ix], - &[], - recent_blockhash, - )?); - - let transaction = - VersionedTransaction::try_new(transaction_message, &[&keypair, &mint_keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Collection created successfully! Collection PDA: {:?}\nCollection Mint: {:?}\nSignature: {:?}", - group.to_string(), - mint_pubkey.to_string(), - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/group/instructions/get.rs b/wpl_cli/src/group/instructions/get.rs deleted file mode 100644 index 14d6581a..00000000 --- a/wpl_cli/src/group/instructions/get.rs +++ /dev/null @@ -1,59 +0,0 @@ -use anyhow::{anyhow, Result}; - -use clap::Parser; -use solana_sdk::pubkey::Pubkey; -use spl_token_2022::{ - extension::{BaseStateWithExtensions, StateWithExtensions}, - state::Mint, -}; -use spl_token_metadata_interface::state::TokenMetadata; -use wen_new_standard::accounts::TokenGroup; - -use crate::{utils::derive_group_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct GetArgs { - /// Collection address - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, -} - -pub async fn run(context: Context, args: GetArgs) -> Result<()> { - let Context { client, .. } = context; - - let mint_data = match client.get_account_data(&args.mint).await { - Ok(mint_data) => mint_data, - Err(_) => return Err(anyhow!("Unable to fetch collection mint data")), - }; - - let group_pubkey = derive_group_account(&args.mint); - let group_data = client - .get_account_data(&group_pubkey) - .await - .unwrap_or(vec![]); - - let mint = StateWithExtensions::::unpack(&mint_data)?; - let metadata = mint.get_variable_len_extension::()?; - - log::info!("Collection mint: {:?}", args.mint.to_string()); - log::info!("Collection name: {:?}", metadata.name); - log::info!("Collection symbol: {:?}", metadata.symbol); - log::info!("Collection URI: {:?}", metadata.uri); - if metadata.additional_metadata.len() > 0 { - log::info!("Collection Additional metadata ------"); - for (key, value) in metadata.additional_metadata { - log::info!("(Key) {:?}: (Value) {:?}", key, value); - } - } - if group_data.len() > 0 { - let group = TokenGroup::from_bytes(&group_data)?; - log::info!( - "Collection update authority: {:?}", - group.update_authority.to_string() - ); - log::info!("Collection current size: {:?}", group.size); - log::info!("Collection maximum size: {:?}", group.max_size); - } - - Ok(()) -} diff --git a/wpl_cli/src/group/instructions/mod.rs b/wpl_cli/src/group/instructions/mod.rs deleted file mode 100644 index 656b184d..00000000 --- a/wpl_cli/src/group/instructions/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -pub mod asset; -pub mod create; -pub mod get; -pub mod update; - -pub use asset::*; -pub use create::*; -pub use get::*; -pub use update::*; diff --git a/wpl_cli/src/group/instructions/update.rs b/wpl_cli/src/group/instructions/update.rs deleted file mode 100644 index 1adc9266..00000000 --- a/wpl_cli/src/group/instructions/update.rs +++ /dev/null @@ -1,79 +0,0 @@ -use anyhow::Result; - -use clap::Parser; -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0::Message as TransactionMessage, VersionedMessage}, - pubkey::Pubkey, - signer::Signer, - transaction::VersionedTransaction, -}; -use spl_token_2022::ID as TOKEN_2022_PROGRAM_ID; -use wen_new_standard::instructions::{UpdateGroupAccount, UpdateGroupAccountInstructionArgs}; - -use crate::{utils::derive_group_account, Context}; - -#[derive(Debug, Parser, Clone)] -pub struct UpdateArgs { - /// Name of the group mint - #[arg(short, long)] - pub name: String, - /// Symbol of the group mint - #[arg(short, long)] - pub symbol: String, - /// URI of the group mint - #[arg(short, long)] - pub uri: String, - /// Maximum size of the group - #[arg(short = 'S', long)] - pub size: u32, - /// Group account (collection) mint to be updated - #[arg(short, long, value_parser = clap::value_parser!(Pubkey))] - pub mint: Pubkey, -} - -pub async fn run(context: Context, args: UpdateArgs) -> Result<()> { - let Context { client, keypair } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let mint_pubkey = args.mint; - let keypair_pubkey = keypair.pubkey(); - - let group = derive_group_account(&mint_pubkey); - - let update_group_account = UpdateGroupAccount { - payer: keypair_pubkey, - authority: keypair_pubkey, - group, - mint: mint_pubkey, - token_program: TOKEN_2022_PROGRAM_ID, - system_program: SYSTEM_PROGRAM_ID, - }; - - let update_group_account_ix = - update_group_account.instruction(UpdateGroupAccountInstructionArgs { - name: args.name, - max_size: args.size, - symbol: args.symbol, - uri: args.uri, - }); - - let transaction_message = VersionedMessage::V0(TransactionMessage::try_compile( - &payer, - &[update_group_account_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Collection updated successfully! Signature: {:?}", - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/group/mod.rs b/wpl_cli/src/group/mod.rs deleted file mode 100644 index 96a8eea2..00000000 --- a/wpl_cli/src/group/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod cmd; -pub mod instructions; - -pub use cmd::*; -pub use instructions::*; diff --git a/wpl_cli/src/main.rs b/wpl_cli/src/main.rs deleted file mode 100644 index 4481951d..00000000 --- a/wpl_cli/src/main.rs +++ /dev/null @@ -1,66 +0,0 @@ -#![allow(ambiguous_glob_reexports)] - -pub mod args; -pub mod asset; -pub mod group; -pub mod manager; -pub mod utils; - -use std::{str::FromStr, time::Duration}; - -use anyhow::{anyhow, Result}; -use args::*; -use clap::Parser; -use solana_cli_config::{Config, CONFIG_FILE}; -use solana_client::nonblocking::rpc_client::RpcClient; -use solana_sdk::commitment_config::CommitmentConfig; - -use asset::subcommand as asset_subcommand; -use group::subcommand as group_subcommand; -use manager::subcommand as manager_subcommand; -use utils::parse_keypair; - -#[tokio::main] -async fn main() -> Result<()> { - let args = Args::parse(); - env_logger::builder() - .filter_level(log::LevelFilter::Info) - .parse_default_env() - .init(); - - let config_file = CONFIG_FILE - .as_ref() - .ok_or_else(|| anyhow!("unable to get config file path"))?; - - let mut cli_config = Config::load(config_file)?; - - cli_config.json_rpc_url = if let Some(custom_json_rpc_url) = args.rpc { - custom_json_rpc_url - } else { - cli_config.json_rpc_url - }; - - cli_config.keypair_path = if let Some(custom_keypair_path) = args.keypair { - custom_keypair_path - } else { - cli_config.keypair_path - }; - - cli_config.save(config_file)?; - - let client = RpcClient::new_with_timeout_and_commitment( - cli_config.json_rpc_url.clone(), - Duration::from_secs(args.timeout), - CommitmentConfig::from_str(&cli_config.commitment)?, - ); - let keypair = parse_keypair(&cli_config.keypair_path)?; - let context = Context { keypair, client }; - - match args.command { - Command::Manager(subcommand) => manager_subcommand(context, subcommand).await?, - Command::Group(subcommand) => group_subcommand(context, subcommand).await?, - Command::Asset(subcommand) => asset_subcommand(context, subcommand).await?, - } - - Ok(()) -} diff --git a/wpl_cli/src/manager/cmd.rs b/wpl_cli/src/manager/cmd.rs deleted file mode 100644 index 23b73914..00000000 --- a/wpl_cli/src/manager/cmd.rs +++ /dev/null @@ -1,27 +0,0 @@ -use super::init::run as init_manager_account; -use crate::Context; - -use anyhow::Result; -use clap::{Args, Subcommand}; - -#[derive(Debug, Clone, Args)] -pub struct ManagerSubCommand { - #[clap(subcommand)] - pub action: Commands, -} - -#[derive(Debug, Clone, Subcommand)] -pub enum Commands { - #[clap(name = "init")] - Init, -} - -pub async fn subcommand(context: Context, subcommand: ManagerSubCommand) -> Result<()> { - match subcommand.action { - Commands::Init => { - init_manager_account(context).await?; - } - } - - Ok(()) -} diff --git a/wpl_cli/src/manager/init.rs b/wpl_cli/src/manager/init.rs deleted file mode 100644 index 1ddbd359..00000000 --- a/wpl_cli/src/manager/init.rs +++ /dev/null @@ -1,44 +0,0 @@ -use anyhow::Result; -use solana_program::system_program::ID as SYSTEM_PROGRAM_ID; -use solana_sdk::{ - message::{v0, VersionedMessage}, - signer::Signer, - transaction::VersionedTransaction, -}; -use wen_new_standard::instructions::InitManagerAccount; - -use crate::{utils::derive_manager_account, Context}; - -pub async fn run(context: Context) -> Result<()> { - let Context { keypair, client } = context; - let payer = keypair.pubkey(); - let recent_blockhash = client.get_latest_blockhash().await?; - - let manager = derive_manager_account(); - - let init_manager_account = InitManagerAccount { - payer, - manager, - system_program: SYSTEM_PROGRAM_ID, - }; - - let init_manager_account_ix = init_manager_account.instruction(); - - let transaction_message = VersionedMessage::V0(v0::Message::try_compile( - &payer, - &[init_manager_account_ix], - &[], - recent_blockhash, - )?); - - let transaction = VersionedTransaction::try_new(transaction_message, &[&keypair])?; - - let signature = client.send_and_confirm_transaction(&transaction).await?; - - log::info!( - "Manager initialized successfully! Signature: {:?}", - signature - ); - - Ok(()) -} diff --git a/wpl_cli/src/manager/mod.rs b/wpl_cli/src/manager/mod.rs deleted file mode 100644 index 648ee37d..00000000 --- a/wpl_cli/src/manager/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -mod cmd; -mod init; - -pub use cmd::*; diff --git a/wpl_cli/src/utils.rs b/wpl_cli/src/utils.rs deleted file mode 100644 index aa6bfbb2..00000000 --- a/wpl_cli/src/utils.rs +++ /dev/null @@ -1,56 +0,0 @@ -use std::fs; - -use anyhow::{anyhow, Context, Result}; -use bs58::decode; -use fs::read_to_string as read_path; -use serde_json::from_str as parse_json_str; -use solana_sdk::{pubkey::Pubkey, signature::Keypair}; -use wen_new_standard::ID as WEN_NEW_STANDARD_PROGRAM_ID; - -pub const MANAGER_SEED: &[u8] = b"manager"; -pub const GROUP_ACCOUNT_SEED: &[u8] = b"group"; -pub const MEMBER_ACCOUNT_SEED: &[u8] = b"member"; -pub const META_LIST_ACCOUNT_SEED: &[u8] = b"extra-account-metas"; -pub const APPROVE_ACCOUNT_SEED: &[u8] = b"approve-account"; - -pub fn parse_keypair(keypair_path: &String) -> Result { - let secret_string: String = read_path(keypair_path).context("Can't find key file")?; - let secret_bytes: Vec = match parse_json_str(&secret_string) { - Ok(bytes) => bytes, - Err(_) => match decode(&secret_string.trim()).into_vec() { - Ok(bytes) => bytes, - Err(_) => return Err(anyhow!("Unsupported key type!")), - }, - }; - - let keypair = Keypair::from_bytes(&secret_bytes)?; - Ok(keypair) -} - -pub fn derive_group_account(mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[GROUP_ACCOUNT_SEED, mint.as_ref()], - &WEN_NEW_STANDARD_PROGRAM_ID, - ) - .0 -} - -pub fn derive_member_account(mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[MEMBER_ACCOUNT_SEED, mint.as_ref()], - &WEN_NEW_STANDARD_PROGRAM_ID, - ) - .0 -} - -pub fn derive_manager_account() -> Pubkey { - Pubkey::find_program_address(&[MANAGER_SEED], &WEN_NEW_STANDARD_PROGRAM_ID).0 -} - -pub fn derive_extra_metas_account(mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[META_LIST_ACCOUNT_SEED, mint.as_ref()], - &WEN_NEW_STANDARD_PROGRAM_ID, - ) - .0 -} diff --git a/yarn-error.log b/yarn-error.log deleted file mode 100644 index 07b8d204..00000000 --- a/yarn-error.log +++ /dev/null @@ -1,2685 +0,0 @@ -Arguments: - /Users/truitt/.nvm/versions/node/v18.19.1/bin/node /usr/local/Cellar/yarn/1.22.19/libexec/bin/yarn.js add @kinobi-so@latest - -PATH: - /opt/homebrew/opt/jpeg/bin:/usr/local/opt/mysql-client/bin:/Users/truitt/.nvm/versions/node/v18.19.1/bin:/Users/truitt/Downloads/google-cloud-sdk/bin:/Users/truitt/.local/share/solana/install/active_release/bin/solana:/Users/truitt/Downloads/ENTEER/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/truitt/.local/share/solana/install/active_release/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/truitt/Downloads/flutter/bin:/Users/truitt/Downloads/solana/scripts/bin:/Users/truitt/.bridgesplit/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/truitt/.cargo/bin - -Yarn version: - 1.22.19 - -Node version: - 18.19.1 - -Platform: - darwin arm64 - -Trace: - Error: https://registry.yarnpkg.com/@kinobi-so: Request "https://registry.yarnpkg.com/@kinobi-so" returned a 405 - at params.callback [as _callback] (/usr/local/Cellar/yarn/1.22.19/libexec/lib/cli.js:66154:18) - at self.callback (/usr/local/Cellar/yarn/1.22.19/libexec/lib/cli.js:140890:22) - at Request.emit (node:events:517:28) - at Request. (/usr/local/Cellar/yarn/1.22.19/libexec/lib/cli.js:141862:10) - at Request.emit (node:events:517:28) - at IncomingMessage. (/usr/local/Cellar/yarn/1.22.19/libexec/lib/cli.js:141784:12) - at Object.onceWrapper (node:events:631:28) - at IncomingMessage.emit (node:events:529:35) - at endReadableNT (node:internal/streams/readable:1400:12) - at process.processTicksAndRejections (node:internal/process/task_queues:82:21) - -npm manifest: - { - "name": "wen-program-library", - "version": "0.4.0", - "description": "A library of programs maintained by the WEN community", - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check", - "clients": "node ./kinobi.mjs", - "version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", - "prepare": "husky" - }, - "repository": { - "type": "git", - "url": "https://github.com/wen-community/wen-program-library.git" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.30.0", - "@solana/spl-token": "^0.4.6", - "@solana/spl-token-metadata": "^0.1.4" - }, - "devDependencies": { - "@commitlint/cli": "^19.3.0", - "@commitlint/config-conventional": "^19.2.2", - "@faker-js/faker": "^8.4.1", - "@kinobi-so/nodes": "^0.20.4", - "@kinobi-so/nodes-from-anchor": "^0.20.6", - "@kinobi-so/renderers": "^0.20.9", - "@kinobi-so/renderers-core": "^0.20.4", - "@kinobi-so/visitors": "^0.20.4", - "@kinobi-so/visitors-core": "^0.20.4", - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/mocha": "^9.0.0", - "chai": "^4.3.4", - "conventional-changelog-cli": "^5.0.0", - "husky": "^9.0.11", - "mocha": "^9.0.3", - "prettier": "^2.6.2", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5", - "solana-bankrun": "^0.3.0", - "anchor-bankrun": "^0.3.0" - } - } - -yarn manifest: - No manifest - -Lockfile: - # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. - # yarn lockfile v1 - - - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - - "@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - - "@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - - "@babel/runtime@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" - integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== - dependencies: - regenerator-runtime "^0.14.0" - - "@commitlint/cli@^19.3.0": - version "19.3.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.3.0.tgz#44e6da9823a01f0cdcc43054bbefdd2c6c5ddf39" - integrity sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g== - dependencies: - "@commitlint/format" "^19.3.0" - "@commitlint/lint" "^19.2.2" - "@commitlint/load" "^19.2.0" - "@commitlint/read" "^19.2.1" - "@commitlint/types" "^19.0.3" - execa "^8.0.1" - yargs "^17.0.0" - - "@commitlint/config-conventional@^19.2.2": - version "19.2.2" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-19.2.2.tgz#1f4e6975d428985deacf2b3ff6547e02c9302054" - integrity sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw== - dependencies: - "@commitlint/types" "^19.0.3" - conventional-changelog-conventionalcommits "^7.0.2" - - "@commitlint/config-validator@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-19.0.3.tgz#052b181a30da6b4fc16dc5230f4589ac95e0bc81" - integrity sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q== - dependencies: - "@commitlint/types" "^19.0.3" - ajv "^8.11.0" - - "@commitlint/ensure@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-19.0.3.tgz#d172b1b72ca88cbd317ea1ee79f3a03dbaccc76e" - integrity sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ== - dependencies: - "@commitlint/types" "^19.0.3" - lodash.camelcase "^4.3.0" - lodash.kebabcase "^4.1.1" - lodash.snakecase "^4.1.1" - lodash.startcase "^4.4.0" - lodash.upperfirst "^4.3.1" - - "@commitlint/execute-rule@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz#928fb239ae8deec82a6e3b05ec9cfe20afa83856" - integrity sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw== - - "@commitlint/format@^19.3.0": - version "19.3.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-19.3.0.tgz#48dd9e6930d41eb0ca19f36159ee940c5b25d857" - integrity sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg== - dependencies: - "@commitlint/types" "^19.0.3" - chalk "^5.3.0" - - "@commitlint/is-ignored@^19.2.2": - version "19.2.2" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-19.2.2.tgz#503ddcf908ac6b2bc4586a49cb53893a1856f5b2" - integrity sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g== - dependencies: - "@commitlint/types" "^19.0.3" - semver "^7.6.0" - - "@commitlint/lint@^19.2.2": - version "19.2.2" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-19.2.2.tgz#57f69e24bd832a7dcce8ebf82d11e3bf03ccc2a9" - integrity sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA== - dependencies: - "@commitlint/is-ignored" "^19.2.2" - "@commitlint/parse" "^19.0.3" - "@commitlint/rules" "^19.0.3" - "@commitlint/types" "^19.0.3" - - "@commitlint/load@^19.2.0": - version "19.2.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-19.2.0.tgz#3ca51fdead4f1e1e09c9c7df343306412b1ef295" - integrity sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ== - dependencies: - "@commitlint/config-validator" "^19.0.3" - "@commitlint/execute-rule" "^19.0.0" - "@commitlint/resolve-extends" "^19.1.0" - "@commitlint/types" "^19.0.3" - chalk "^5.3.0" - cosmiconfig "^9.0.0" - cosmiconfig-typescript-loader "^5.0.0" - lodash.isplainobject "^4.0.6" - lodash.merge "^4.6.2" - lodash.uniq "^4.5.0" - - "@commitlint/message@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-19.0.0.tgz#f789dd1b7a1f9c784578e0111f46cc3fecf5a531" - integrity sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw== - - "@commitlint/parse@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-19.0.3.tgz#a2d09876d458e17ad0e1695b04f41af8b50a41c2" - integrity sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA== - dependencies: - "@commitlint/types" "^19.0.3" - conventional-changelog-angular "^7.0.0" - conventional-commits-parser "^5.0.0" - - "@commitlint/read@^19.2.1": - version "19.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-19.2.1.tgz#7296b99c9a989e60e5927fff8388a1dd44299c2f" - integrity sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw== - dependencies: - "@commitlint/top-level" "^19.0.0" - "@commitlint/types" "^19.0.3" - execa "^8.0.1" - git-raw-commits "^4.0.0" - minimist "^1.2.8" - - "@commitlint/resolve-extends@^19.1.0": - version "19.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz#fa5b8f921e9c8d76f53624c35bf25b9676bd73fa" - integrity sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg== - dependencies: - "@commitlint/config-validator" "^19.0.3" - "@commitlint/types" "^19.0.3" - global-directory "^4.0.1" - import-meta-resolve "^4.0.0" - lodash.mergewith "^4.6.2" - resolve-from "^5.0.0" - - "@commitlint/rules@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-19.0.3.tgz#de647a9055847cae4f3ae32b4798096b604584f3" - integrity sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw== - dependencies: - "@commitlint/ensure" "^19.0.3" - "@commitlint/message" "^19.0.0" - "@commitlint/to-lines" "^19.0.0" - "@commitlint/types" "^19.0.3" - execa "^8.0.1" - - "@commitlint/to-lines@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-19.0.0.tgz#aa6618eb371bafbc0cd3b48f0db565c4a40462c6" - integrity sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw== - - "@commitlint/top-level@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-19.0.0.tgz#9c44d7cec533bb9598bfae9658737e2d6a903605" - integrity sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ== - dependencies: - find-up "^7.0.0" - - "@commitlint/types@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-19.0.3.tgz#feff4ecac2b5c359f2a57f9ab094b2ac80ef0266" - integrity sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA== - dependencies: - "@types/conventional-commits-parser" "^5.0.0" - chalk "^5.3.0" - - "@conventional-changelog/git-client@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@conventional-changelog/git-client/-/git-client-1.0.1.tgz#143be2777ba389c3c14f83fa19b7cab6a49a503b" - integrity sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw== - dependencies: - "@types/semver" "^7.5.5" - semver "^7.5.2" - - "@coral-xyz/anchor@^0.30.0": - version "0.30.0" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.0.tgz#52acdba504b0008f1026d3a4bbbcb2d4feb5c69e" - integrity sha512-qreDh5ztiRHVnCbJ+RS70NJ6aSTPBYDAgFeQ7Z5QvaT5DcDIhNyt4onOciVz2ieIE1XWePOJDDu9SbNvPGBkvQ== - dependencies: - "@coral-xyz/borsh" "^0.30.0" - "@noble/hashes" "^1.3.1" - "@solana/web3.js" "^1.68.0" - bn.js "^5.1.2" - bs58 "^4.0.1" - buffer-layout "^1.2.2" - camelcase "^6.3.0" - cross-fetch "^3.1.5" - crypto-hash "^1.3.0" - eventemitter3 "^4.0.7" - pako "^2.0.3" - snake-case "^3.0.4" - superstruct "^0.15.4" - toml "^3.0.0" - - "@coral-xyz/borsh@^0.30.0": - version "0.30.0" - resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.0.tgz#3e6f23e944ef6c89f2c9cbead383358752ac5e73" - integrity sha512-OrcV+7N10cChhgDRUxM4iEIuwxUHHs52XD85R8cFCUqE0vbLYrcoPPPs+VF6kZ9DhdJGVW2I6DHJOp5TykyZog== - dependencies: - bn.js "^5.1.2" - buffer-layout "^1.2.0" - - "@faker-js/faker@^8.4.1": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" - integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== - - "@hutson/parse-repository-url@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz#bf344cc75136039bc41bcf5d1ddbcb40405fca3b" - integrity sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg== - - "@kinobi-so/errors@0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/errors/-/errors-0.20.4.tgz#d15c65c0eb9f8d70dbc67648dd4403056d608ef3" - integrity sha512-5GWQPiqLOngZFxMCTnF0rGsCc9LXUHXX+zBzbXBjhsdyQm8OSFpVFZtwiBkF+jsOBQPrLv26dFlkWJgBiq2jXQ== - dependencies: - "@kinobi-so/node-types" "0.20.4" - chalk "^5.3.0" - commander "^12.0.0" - - "@kinobi-so/node-types@0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/node-types/-/node-types-0.20.4.tgz#0cfeafedebd3343df20ff6098a4f8e457df31737" - integrity sha512-kFFXMC9nSemDj2itNeSj4VR9R6QTz0z7v3niwxHHq9IJ4TFPwpcZAt7aH++SGlCUeHG3iOHC2ZngFMhv+Ks/Fw== - - "@kinobi-so/nodes-from-anchor@^0.20.6": - version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/nodes-from-anchor/-/nodes-from-anchor-0.20.6.tgz#725429c2f7c1acb2048cc41a99b458ac842d99b9" - integrity sha512-2ad1ILvnul1PqqlCkQ2uii9KCgcR9ne5jxXsxiTKUHhab6LmI6sCTR15FO4T+ZzgMVsvAe3ySrOmgDICUHr4eA== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/visitors" "0.20.4" - "@noble/hashes" "^1.4.0" - - "@kinobi-so/nodes@0.20.4", "@kinobi-so/nodes@^0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/nodes/-/nodes-0.20.4.tgz#79d3413434acf00dfee9dd0809fe13199018d789" - integrity sha512-zeGOOdOaKbMxqiZWNJx/JVGVWp4mzCkwDp3bG4J+x9+mQ1nQcyuPvHXeHmtBXa9IWp7AScXlyn5HddVzK/8ZRQ== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/node-types" "0.20.4" - - "@kinobi-so/renderers-core@0.20.4", "@kinobi-so/renderers-core@^0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-core/-/renderers-core-0.20.4.tgz#be21b77669b677aa5bd7a00454d633121aeae3bb" - integrity sha512-feb0Fsw7UIj14JZ2LmHYyosT07K/Jrs7CvNYD2YF4g6WQz9mmy1l8Fa+gpVtoDdSHvfXrgzv8193p0QkRRBWmA== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/visitors-core" "0.20.4" - - "@kinobi-so/renderers-js-umi@0.20.5": - version "0.20.5" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-js-umi/-/renderers-js-umi-0.20.5.tgz#a271018e7df5496afbffd8d18ed498ba89e5cbfe" - integrity sha512-3rP7q8kATrVOZAHvJra6ES9jB7QmDkrMyMFMaD4PBhL+GkIiRDbcL09xvVFAStTTuaeGNTjoVfa31Wd6TPnJVw== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/renderers-core" "0.20.4" - "@kinobi-so/validators" "0.20.4" - "@kinobi-so/visitors-core" "0.20.4" - "@solana/codecs-strings" tp2 - nunjucks "^3.2.4" - prettier "^3.2.5" - - "@kinobi-so/renderers-js@0.20.8": - version "0.20.8" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-js/-/renderers-js-0.20.8.tgz#6984d4633f31887da72f5e574038c49e3cb00cbf" - integrity sha512-U7mcnYXcZRPbONAI8bXPAedp4J2/X3/b63PkR9Cc/NLBQNqtz4cde/u0vB2JD12bHLlcgwahFKOcbSinx4aO7A== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/renderers-core" "0.20.4" - "@kinobi-so/visitors-core" "0.20.4" - "@solana/codecs-strings" tp2 - nunjucks "^3.2.4" - prettier "^3.3.0" - - "@kinobi-so/renderers-rust@0.20.8": - version "0.20.8" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-rust/-/renderers-rust-0.20.8.tgz#a35952a01bdf8ab3bd38909f12b927f5aa5cdf09" - integrity sha512-9lM5rfYgYJAoYhEYdPUpGkxGLx9r6QRkXI9S/+6/Q15HCSHlarMkX1LTGNsHxh+zyaVleedAewJuSM3Z3bjG9w== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/renderers-core" "0.20.4" - "@kinobi-so/visitors-core" "0.20.4" - "@solana/codecs-strings" tp2 - nunjucks "^3.2.4" - - "@kinobi-so/renderers@^0.20.9": - version "0.20.9" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers/-/renderers-0.20.9.tgz#8d5fe68b2b639fd20bb3decb8292db58b3e48d44" - integrity sha512-UpSov5LCR54AkNhAHjrkrD/l3fd7yG650jIu0hPUVUI+IaxcQ8dpnXwTpUlg1MK616eDYSJLYlwrUkiujQ4y6w== - dependencies: - "@kinobi-so/renderers-js" "0.20.8" - "@kinobi-so/renderers-js-umi" "0.20.5" - "@kinobi-so/renderers-rust" "0.20.8" - - "@kinobi-so/validators@0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/validators/-/validators-0.20.4.tgz#ddb0c29dce84328b25821e5b8809cc6221b2f05b" - integrity sha512-PyhfM1fgsAPrDgMOB1VjvW+CytPTtLMLB0bSCU+0GRm8IoZ8pj74cIcB5XPjai3N5dU7kDMYz1nZLnCFsoXfLg== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/visitors-core" "0.20.4" - - "@kinobi-so/visitors-core@0.20.4", "@kinobi-so/visitors-core@^0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/visitors-core/-/visitors-core-0.20.4.tgz#386c0ad0305e8c6c21ad2167bd3101dfbb31cd0d" - integrity sha512-l4LCAOKL35tXn4jDZ4/gNdBeJYB5ACE4lgKQxL6oyII36hPe8pwCihIpjzHKDm9S93o9pKFN76ay5S3NnWANRw== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - json-stable-stringify "^1.1.1" - - "@kinobi-so/visitors@0.20.4", "@kinobi-so/visitors@^0.20.4": - version "0.20.4" - resolved "https://registry.yarnpkg.com/@kinobi-so/visitors/-/visitors-0.20.4.tgz#41610829e5c88a7e233fc4d1b6e104f178a2a93e" - integrity sha512-sr+1qiU4sN5OfrVI//RqqHMKl5VapugkO3f/MHXGmFBDWANXJCIMmAXMMARzk/h6v76zswJ+NOHe0C3FLYb1xg== - dependencies: - "@kinobi-so/errors" "0.20.4" - "@kinobi-so/nodes" "0.20.4" - "@kinobi-so/visitors-core" "0.20.4" - - "@noble/curves@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== - dependencies: - "@noble/hashes" "1.4.0" - - "@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - - "@solana/buffer-layout-utils@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" - integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/web3.js" "^1.32.0" - bigint-buffer "^1.1.5" - bignumber.js "^9.0.1" - - "@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" - integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== - dependencies: - buffer "~6.0.3" - - "@solana/codecs-core@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" - integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== - dependencies: - "@solana/errors" "2.0.0-preview.2" - - "@solana/codecs-data-structures@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" - integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - - "@solana/codecs-numbers@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" - integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - - "@solana/codecs-strings@2.0.0-preview.2", "@solana/codecs-strings@tp2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" - integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - - "@solana/codecs@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" - integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-data-structures" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/codecs-strings" "2.0.0-preview.2" - "@solana/options" "2.0.0-preview.2" - - "@solana/errors@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" - integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== - dependencies: - chalk "^5.3.0" - commander "^12.0.0" - - "@solana/options@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" - integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - - "@solana/spl-token-group@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz#4f45d9526c96a33b9a1929a264d0aa21c7e38a2d" - integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== - dependencies: - "@solana/codecs" "2.0.0-preview.2" - "@solana/spl-type-length-value" "0.1.0" - - "@solana/spl-token-metadata@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz#5cdc3b857a8c4a6877df24e24a8648c4132d22ba" - integrity sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ== - dependencies: - "@solana/codecs" "2.0.0-preview.2" - "@solana/spl-type-length-value" "0.1.0" - - "@solana/spl-token@^0.4.6": - version "0.4.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.6.tgz#eb44e5080ea7b6fc976abcb39457223211bd9076" - integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.4" - "@solana/spl-token-metadata" "^0.1.4" - buffer "^6.0.3" - - "@solana/spl-type-length-value@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" - integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== - dependencies: - buffer "^6.0.3" - - "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.68.0": - version "1.93.0" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.93.0.tgz#4b6975020993cec2f6626e4f2bf559ca042df8db" - integrity sha512-suf4VYwWxERz4tKoPpXCRHFRNst7jmcFUaD65kII+zg9urpy5PeeqgLV6G5eWGzcVzA9tZeXOju1A1Y+0ojEVw== - dependencies: - "@babel/runtime" "^7.24.7" - "@noble/curves" "^1.4.0" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.0" - bigint-buffer "^1.1.5" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.0" - node-fetch "^2.7.0" - rpc-websockets "^9.0.0" - superstruct "^1.0.4" - - "@swc/helpers@^0.5.11": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" - integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== - dependencies: - tslib "^2.4.0" - - "@types/bn.js@^5.1.0": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" - integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== - dependencies: - "@types/node" "*" - - "@types/chai@^4.3.0": - version "4.3.16" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" - integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== - - "@types/connect@^3.4.33": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - - "@types/conventional-commits-parser@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#8c9d23e0b415b24b91626d07017303755d542dc8" - integrity sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ== - dependencies: - "@types/node" "*" - - "@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - - "@types/mocha@^9.0.0": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" - integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== - - "@types/node@*": - version "20.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" - integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== - dependencies: - undici-types "~5.26.4" - - "@types/node@^12.12.54": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - - "@types/normalize-package-data@^2.4.3": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - - "@types/semver@^7.5.5": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - - "@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - - "@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - - "@types/ws@^8.2.2": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - - "@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - - JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - - a-sync-waterfall@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" - integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== - - add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== - - agentkeepalive@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" - integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== - dependencies: - humanize-ms "^1.2.1" - - ajv@^8.11.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - - anchor-bankrun@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/anchor-bankrun/-/anchor-bankrun-0.3.0.tgz#3789fcecbc201a2334cff228b99cc0da8ef0167e" - integrity sha512-PYBW5fWX+iGicIS5MIM/omhk1tQPUc0ELAnI/IkLKQJ6d75De/CQRh8MF2bU/TgGyFi6zEel80wUe3uRol9RrQ== - - ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - - ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - - ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - - ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - - anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - - argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - - array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - - arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - - asap@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - - assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - - balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - - base-x@^3.0.2: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - - base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - - bigint-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" - integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== - dependencies: - bindings "^1.3.0" - - bignumber.js@^9.0.1: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - - binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - - bindings@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - - bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - - borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== - dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - - brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - - braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - - browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - - bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - - buffer-from@^1.0.0, buffer-from@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - - buffer-layout@^1.2.0, buffer-layout@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" - integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== - - buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - - bufferutil@^4.0.1: - version "4.0.8" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" - integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== - dependencies: - node-gyp-build "^4.3.0" - - call-bind@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - - callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - - camelcase@^6.0.0, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - - chai@^4.3.4: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" - - chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - - chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - - chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - - check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - - chokidar@3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - - cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - - cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - - color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - - color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - - color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - - color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - - commander@^12.0.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - - commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - - commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - - compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - - concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - - conventional-changelog-angular@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" - integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== - dependencies: - compare-func "^2.0.0" - - conventional-changelog-angular@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz#5701386850f0e0c2e630b43ee7821d322d87e7a6" - integrity sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA== - dependencies: - compare-func "^2.0.0" - - conventional-changelog-atom@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz#f3e06e06244bd0aef2e5f09ed590933d948e809c" - integrity sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g== - - conventional-changelog-cli@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-5.0.0.tgz#feda8f20873347f73042a810db1c03377c39068d" - integrity sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ== - dependencies: - add-stream "^1.0.0" - conventional-changelog "^6.0.0" - meow "^13.0.0" - tempfile "^5.0.0" - - conventional-changelog-codemirror@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz#994ced326cf358c5e549f5ac59bf3f8cdc09f783" - integrity sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ== - - conventional-changelog-conventionalcommits@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" - integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== - dependencies: - compare-func "^2.0.0" - - conventional-changelog-conventionalcommits@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz#3fa2857c878701e7f0329db5a1257cb218f166fe" - integrity sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA== - dependencies: - compare-func "^2.0.0" - - conventional-changelog-core@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz#5166eea9ef58a659fc97b065525f4499a0d3f311" - integrity sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw== - dependencies: - "@hutson/parse-repository-url" "^5.0.0" - add-stream "^1.0.0" - conventional-changelog-writer "^8.0.0" - conventional-commits-parser "^6.0.0" - git-raw-commits "^5.0.0" - git-semver-tags "^8.0.0" - hosted-git-info "^7.0.0" - normalize-package-data "^6.0.0" - read-package-up "^11.0.0" - read-pkg "^9.0.0" - - conventional-changelog-ember@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz#cca926a68aa9bc2a6370b211906b1dea82564567" - integrity sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg== - - conventional-changelog-eslint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz#9d37abcf6ade84031ce01093be7447f2cd73098b" - integrity sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw== - - conventional-changelog-express@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz#e08fb0f2c27bc5319ce7d8e78c9e9fb99ae1feb5" - integrity sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ== - - conventional-changelog-jquery@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz#5b6bd8b4a720363dc6c2162a3f751961c55256b0" - integrity sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA== - - conventional-changelog-jshint@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz#42bcc629b9c75bb118364754d120ae49fd742b85" - integrity sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g== - dependencies: - compare-func "^2.0.0" - - conventional-changelog-preset-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz#922ad617c13ad3243bef967cfc0f8373893c216d" - integrity sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA== - - conventional-changelog-writer@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz#81522ed40400a4ca8ab78a42794aae9667c745ae" - integrity sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA== - dependencies: - "@types/semver" "^7.5.5" - conventional-commits-filter "^5.0.0" - handlebars "^4.7.7" - meow "^13.0.0" - semver "^7.5.2" - - conventional-changelog@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-6.0.0.tgz#ef941d2fde727be20e0f3a342e4e3b235d6e8663" - integrity sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w== - dependencies: - conventional-changelog-angular "^8.0.0" - conventional-changelog-atom "^5.0.0" - conventional-changelog-codemirror "^5.0.0" - conventional-changelog-conventionalcommits "^8.0.0" - conventional-changelog-core "^8.0.0" - conventional-changelog-ember "^5.0.0" - conventional-changelog-eslint "^6.0.0" - conventional-changelog-express "^5.0.0" - conventional-changelog-jquery "^6.0.0" - conventional-changelog-jshint "^5.0.0" - conventional-changelog-preset-loader "^5.0.0" - - conventional-commits-filter@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz#72811f95d379e79d2d39d5c0c53c9351ef284e86" - integrity sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q== - - conventional-commits-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" - integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== - dependencies: - JSONStream "^1.3.5" - is-text-path "^2.0.0" - meow "^12.0.1" - split2 "^4.0.0" - - conventional-commits-parser@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz#74e3be5344d8cd99f7c3353da2efa1d1dd618061" - integrity sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA== - dependencies: - meow "^13.0.0" - - cosmiconfig-typescript-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz#0d3becfe022a871f7275ceb2397d692e06045dc8" - integrity sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA== - dependencies: - jiti "^1.19.1" - - cosmiconfig@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - - cross-fetch@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - - cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - - crypto-hash@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" - integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== - - dargs@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" - integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== - - debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - - decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - - deep-eql@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" - integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== - dependencies: - type-detect "^4.0.0" - - define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - - delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - - diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - - diff@^3.1.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - - dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - - dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - - emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - - env-paths@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - - error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - - es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - - es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - - es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - - es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - - escalade@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - - escape-string-regexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - - escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - - eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - - execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - - eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== - - fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - - fast-stable-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" - integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== - - file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - - fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - - find-up-simple@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.0.tgz#21d035fde9fdbd56c8f4d2f63f32fd93a1cfc368" - integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw== - - find-up@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - - find-up@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb" - integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== - dependencies: - locate-path "^7.2.0" - path-exists "^5.0.0" - unicorn-magic "^0.1.0" - - flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - - fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - - fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - - function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - - get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - - get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - - get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - - get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - - git-raw-commits@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285" - integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== - dependencies: - dargs "^8.0.0" - meow "^12.0.1" - split2 "^4.0.0" - - git-raw-commits@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-5.0.0.tgz#38af4301e70c17be03fec01a37a6cd90ce0db04e" - integrity sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg== - dependencies: - "@conventional-changelog/git-client" "^1.0.0" - meow "^13.0.0" - - git-semver-tags@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-8.0.0.tgz#745ee2d934f74c70014d0ed617e18f4712950e32" - integrity sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg== - dependencies: - "@conventional-changelog/git-client" "^1.0.0" - meow "^13.0.0" - - glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - - glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - - global-directory@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" - integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== - dependencies: - ini "4.1.1" - - gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - - growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - - handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - - has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - - has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - - has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - - has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - - has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - - hasown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - - he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - - hosted-git-info@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - - human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - - humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - - husky@^9.0.11: - version "9.0.11" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" - integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== - - ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - - import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - - import-meta-resolve@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706" - integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw== - - index-to-position@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-0.1.2.tgz#e11bfe995ca4d8eddb1ec43274488f3c201a7f09" - integrity sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g== - - inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - - inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - - ini@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" - integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== - - is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - - is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - - is-core-module@^2.8.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - - is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - - is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - - is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - - is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - - is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - - is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - - is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - - is-text-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" - integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== - dependencies: - text-extensions "^2.0.0" - - is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - - isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - - isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - - isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - - jayson@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.0.tgz#60dc946a85197317f2b1439d672a8b0a99cea2f9" - integrity sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A== - dependencies: - "@types/connect" "^3.4.33" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - JSONStream "^1.3.5" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - uuid "^8.3.2" - ws "^7.4.5" - - jiti@^1.19.1: - version "1.21.6" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" - integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== - - js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - - js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - - json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - - json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - - json-stable-stringify@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" - integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== - dependencies: - call-bind "^1.0.5" - isarray "^2.0.5" - jsonify "^0.0.1" - object-keys "^1.1.1" - - json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - - json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - - jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== - - jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - - lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - - locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - - locate-path@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - - lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - - lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - - lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== - - lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - - lodash.mergewith@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" - integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== - - lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== - - lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== - - lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - - lodash.upperfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== - - log-symbols@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - - loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - - lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - - lru-cache@^10.0.1: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== - - make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - - meow@^12.0.1: - version "12.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" - integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== - - meow@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f" - integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== - - merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - - mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - - minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - - minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - - minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - - mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - - mocha@^9.0.3: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - - ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - - ms@2.1.3, ms@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - - nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== - - neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - - no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - - node-fetch@^2.6.12, node-fetch@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - - node-gyp-build@^4.3.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - - normalize-package-data@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88" - integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ== - dependencies: - hosted-git-info "^7.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - - normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - - npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - - nunjucks@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.4.tgz#f0878eef528ce7b0aa35d67cc6898635fd74649e" - integrity sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ== - dependencies: - a-sync-waterfall "^1.0.0" - asap "^2.0.3" - commander "^5.1.0" - - object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - - once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - - onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - - p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - - p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - - p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - - p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - - pako@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - - parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - - parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - - parse-json@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-8.1.0.tgz#91cdc7728004e955af9cb734de5684733b24a717" - integrity sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA== - dependencies: - "@babel/code-frame" "^7.22.13" - index-to-position "^0.1.2" - type-fest "^4.7.1" - - path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - - path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - - path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - - path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - - path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - - pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - - picocolors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - - picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - - prettier@^2.6.2: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - - prettier@^3.2.5, prettier@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== - - punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - - randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - - read-package-up@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/read-package-up/-/read-package-up-11.0.0.tgz#71fb879fdaac0e16891e6e666df22de24a48d5ba" - integrity sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ== - dependencies: - find-up-simple "^1.0.0" - read-pkg "^9.0.0" - type-fest "^4.6.0" - - read-pkg@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-9.0.1.tgz#b1b81fb15104f5dbb121b6bbdee9bbc9739f569b" - integrity sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA== - dependencies: - "@types/normalize-package-data" "^2.4.3" - normalize-package-data "^6.0.0" - parse-json "^8.0.0" - type-fest "^4.6.0" - unicorn-magic "^0.1.0" - - readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - - regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - - require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - - require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - - resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - - resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - - rpc-websockets@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.0.tgz#e31fc38c2b1fdcf65132d90201bacf288b9c0748" - integrity sha512-1yf8FM6PY6Uhip2Fe+UrgPq9EhUu0qxr5mcVSEGOTWhpzffTh5IBKy5S+C68zJv0Gg0k9ey0pw7K06+EfbnN3g== - dependencies: - "@swc/helpers" "^0.5.11" - "@types/uuid" "^8.3.4" - "@types/ws" "^8.2.2" - buffer "^6.0.3" - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - - safe-buffer@^5.0.1, safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - - semver@^7.3.5, semver@^7.5.2, semver@^7.6.0: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - - serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - - set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - - shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - - shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - - signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - - snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - - solana-bankrun-darwin-arm64@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-arm64/-/solana-bankrun-darwin-arm64-0.3.0.tgz#749ce9858bf61c4244a06c4e6d99338daa154909" - integrity sha512-+NbDncf0U6l3knuacRBiqpjZ2DSp+5lZaAU518gH7/x6qubbui/d000STaIBK+uNTPBS/AL/bCN+7PkXqmA3lA== - - solana-bankrun-darwin-universal@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-universal/-/solana-bankrun-darwin-universal-0.3.0.tgz#2d2932282bb1fe719430f2f53060cad3104ebb26" - integrity sha512-1/F0xdMa4qvc5o6z16FCCbZ5jbdvKvxpx5kyPcMWRiRPwyvi+zltMxciPAYMlg3wslQqGz88uFhrBEzq2eTumQ== - - solana-bankrun-darwin-x64@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-x64/-/solana-bankrun-darwin-x64-0.3.0.tgz#c814a13702a12ba085c32b20a66a063cffbe74a1" - integrity sha512-U6CANjkmMl+lgNA7UH0GKs5V7LtVIUDzJBZefGGqLfqUNv3EjA/PrrToM0hAOWJgkxSwdz6zW+p5sw5FmnbXtg== - - solana-bankrun-linux-x64-gnu@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-gnu/-/solana-bankrun-linux-x64-gnu-0.3.0.tgz#5c5dec2d4e01f755c9cf8fe9f791a8085bf94f51" - integrity sha512-qJSkCFs0k2n4XtTnyxGMiZsuqO2TiqTYgWjQ+3mZhGNUAMys/Vq8bd7/SyBm6RR7EfVuRXRxZvh+F8oKZ77V4w== - - solana-bankrun-linux-x64-musl@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-musl/-/solana-bankrun-linux-x64-musl-0.3.0.tgz#0df9434f03d1aa704b085f82e40cc6129b8eea09" - integrity sha512-xsS2CS2xb1Sw4ivNXM0gPz/qpW9BX0neSvt/pnok5L330Nu9xlTnKAY8FhzzqOP9P9sJlGRM787Y6d0yYwt6xQ== - - solana-bankrun@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun/-/solana-bankrun-0.3.0.tgz#1183af008e00c565d6708f0c051588589e315d1c" - integrity sha512-YkH7sa8TB/AoRPzG17CXJtYsRIQHEkEqGLz1Vwc13taXhDBkjO7z6NI5JYw7n0ybRymDHwMYTc7sd+5J40TyVQ== - dependencies: - "@solana/web3.js" "^1.68.0" - bs58 "^4.0.1" - optionalDependencies: - solana-bankrun-darwin-arm64 "0.3.0" - solana-bankrun-darwin-universal "0.3.0" - solana-bankrun-darwin-x64 "0.3.0" - solana-bankrun-linux-x64-gnu "0.3.0" - solana-bankrun-linux-x64-musl "0.3.0" - - source-map-support@^0.5.6: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - - source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - - spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - - spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - - spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - - spdx-license-ids@^3.0.0: - version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== - - split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - - string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - - strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - - strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - - strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - - strip-json-comments@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - - superstruct@^0.15.4: - version "0.15.5" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" - integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== - - superstruct@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" - integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== - - supports-color@8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - - supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - - supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - - temp-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-3.0.0.tgz#7f147b42ee41234cc6ba3138cd8e8aa2302acffa" - integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw== - - tempfile@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-5.0.0.tgz#40c141e441709fe2d9c17c138e81d4c33fbc9e03" - integrity sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q== - dependencies: - temp-dir "^3.0.0" - - text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - - text-extensions@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" - integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== - - "through@>=2.2.7 <3": - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - - to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - - toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - - tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - - ts-mocha@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" - integrity sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw== - dependencies: - ts-node "7.0.1" - optionalDependencies: - tsconfig-paths "^3.5.0" - - ts-node@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" - integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== - dependencies: - arrify "^1.0.0" - buffer-from "^1.1.0" - diff "^3.1.0" - make-error "^1.1.1" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map-support "^0.5.6" - yn "^2.0.0" - - tsconfig-paths@^3.5.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - - tslib@^2.0.3, tslib@^2.4.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - - type-detect@^4.0.0, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - - type-fest@^4.6.0, type-fest@^4.7.1: - version "4.20.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.20.0.tgz#019becf5a97cd58eee93f592f0961859a74482a7" - integrity sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw== - - typescript@^4.3.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - - uglify-js@^3.1.4: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - - undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - - unicorn-magic@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" - integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== - - uri-js@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - - utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - - uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - - validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - - webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - - whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - - which@2.0.2, which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - - wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - - workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== - - wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - - wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - - ws@^7.4.5: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - - ws@^8.5.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== - - y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - - yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - - yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - - yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - - yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - - yargs@16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - - yargs@^17.0.0: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - - yn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" - integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== - - yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - - yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== diff --git a/yarn.lock b/yarn.lock index c9d38658..12393dcb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,22 +2,636 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13": +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@assemblyscript/loader@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" + integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== + +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/client-s3@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.478.0.tgz#072a3dbdc94d3d20db0f2e4cb641567949c46e54" + integrity sha512-OUpbCCnK71lQQ07BohJOx9ZER0rPqRAGOVIIVhNEkeN0uYFLzB7/o5a7+FEPUQXEd5rZRZgbxN5xEmnNW/0Waw== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.478.0" + "@aws-sdk/core" "3.477.0" + "@aws-sdk/credential-provider-node" "3.478.0" + "@aws-sdk/middleware-bucket-endpoint" "3.470.0" + "@aws-sdk/middleware-expect-continue" "3.468.0" + "@aws-sdk/middleware-flexible-checksums" "3.468.0" + "@aws-sdk/middleware-host-header" "3.468.0" + "@aws-sdk/middleware-location-constraint" "3.468.0" + "@aws-sdk/middleware-logger" "3.468.0" + "@aws-sdk/middleware-recursion-detection" "3.468.0" + "@aws-sdk/middleware-sdk-s3" "3.474.0" + "@aws-sdk/middleware-signing" "3.468.0" + "@aws-sdk/middleware-ssec" "3.468.0" + "@aws-sdk/middleware-user-agent" "3.478.0" + "@aws-sdk/region-config-resolver" "3.470.0" + "@aws-sdk/signature-v4-multi-region" "3.474.0" + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-endpoints" "3.478.0" + "@aws-sdk/util-user-agent-browser" "3.468.0" + "@aws-sdk/util-user-agent-node" "3.470.0" + "@aws-sdk/xml-builder" "3.472.0" + "@smithy/config-resolver" "^2.0.21" + "@smithy/core" "^1.2.0" + "@smithy/eventstream-serde-browser" "^2.0.15" + "@smithy/eventstream-serde-config-resolver" "^2.0.15" + "@smithy/eventstream-serde-node" "^2.0.15" + "@smithy/fetch-http-handler" "^2.3.1" + "@smithy/hash-blob-browser" "^2.0.16" + "@smithy/hash-node" "^2.0.17" + "@smithy/hash-stream-node" "^2.0.17" + "@smithy/invalid-dependency" "^2.0.15" + "@smithy/md5-js" "^2.0.17" + "@smithy/middleware-content-length" "^2.0.17" + "@smithy/middleware-endpoint" "^2.2.3" + "@smithy/middleware-retry" "^2.0.24" + "@smithy/middleware-serde" "^2.0.15" + "@smithy/middleware-stack" "^2.0.9" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/node-http-handler" "^2.2.1" + "@smithy/protocol-http" "^3.0.11" + "@smithy/smithy-client" "^2.1.18" + "@smithy/types" "^2.7.0" + "@smithy/url-parser" "^2.0.15" + "@smithy/util-base64" "^2.0.1" + "@smithy/util-body-length-browser" "^2.0.1" + "@smithy/util-body-length-node" "^2.1.0" + "@smithy/util-defaults-mode-browser" "^2.0.22" + "@smithy/util-defaults-mode-node" "^2.0.29" + "@smithy/util-endpoints" "^1.0.7" + "@smithy/util-retry" "^2.0.8" + "@smithy/util-stream" "^2.0.23" + "@smithy/util-utf8" "^2.0.2" + "@smithy/util-waiter" "^2.0.15" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.478.0.tgz#6e9bf99898b4601c792c5b66e4871c6b69f20652" + integrity sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/core" "3.477.0" + "@aws-sdk/middleware-host-header" "3.468.0" + "@aws-sdk/middleware-logger" "3.468.0" + "@aws-sdk/middleware-recursion-detection" "3.468.0" + "@aws-sdk/middleware-user-agent" "3.478.0" + "@aws-sdk/region-config-resolver" "3.470.0" + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-endpoints" "3.478.0" + "@aws-sdk/util-user-agent-browser" "3.468.0" + "@aws-sdk/util-user-agent-node" "3.470.0" + "@smithy/config-resolver" "^2.0.21" + "@smithy/core" "^1.2.0" + "@smithy/fetch-http-handler" "^2.3.1" + "@smithy/hash-node" "^2.0.17" + "@smithy/invalid-dependency" "^2.0.15" + "@smithy/middleware-content-length" "^2.0.17" + "@smithy/middleware-endpoint" "^2.2.3" + "@smithy/middleware-retry" "^2.0.24" + "@smithy/middleware-serde" "^2.0.15" + "@smithy/middleware-stack" "^2.0.9" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/node-http-handler" "^2.2.1" + "@smithy/protocol-http" "^3.0.11" + "@smithy/smithy-client" "^2.1.18" + "@smithy/types" "^2.7.0" + "@smithy/url-parser" "^2.0.15" + "@smithy/util-base64" "^2.0.1" + "@smithy/util-body-length-browser" "^2.0.1" + "@smithy/util-body-length-node" "^2.1.0" + "@smithy/util-defaults-mode-browser" "^2.0.22" + "@smithy/util-defaults-mode-node" "^2.0.29" + "@smithy/util-endpoints" "^1.0.7" + "@smithy/util-retry" "^2.0.8" + "@smithy/util-utf8" "^2.0.2" + tslib "^2.5.0" + +"@aws-sdk/client-sts@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.478.0.tgz#8d7425803a3d7b8af3eba37f56e14a0259eb0557" + integrity sha512-D+QID0dYzmn9dcxgKP3/nMndUqiQbDLsqI0Zf2pG4MW5gPhVNKlDGIV3Ztz8SkMjzGJExNOLW2L569o8jshJVw== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/core" "3.477.0" + "@aws-sdk/credential-provider-node" "3.478.0" + "@aws-sdk/middleware-host-header" "3.468.0" + "@aws-sdk/middleware-logger" "3.468.0" + "@aws-sdk/middleware-recursion-detection" "3.468.0" + "@aws-sdk/middleware-user-agent" "3.478.0" + "@aws-sdk/region-config-resolver" "3.470.0" + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-endpoints" "3.478.0" + "@aws-sdk/util-user-agent-browser" "3.468.0" + "@aws-sdk/util-user-agent-node" "3.470.0" + "@smithy/config-resolver" "^2.0.21" + "@smithy/core" "^1.2.0" + "@smithy/fetch-http-handler" "^2.3.1" + "@smithy/hash-node" "^2.0.17" + "@smithy/invalid-dependency" "^2.0.15" + "@smithy/middleware-content-length" "^2.0.17" + "@smithy/middleware-endpoint" "^2.2.3" + "@smithy/middleware-retry" "^2.0.24" + "@smithy/middleware-serde" "^2.0.15" + "@smithy/middleware-stack" "^2.0.9" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/node-http-handler" "^2.2.1" + "@smithy/protocol-http" "^3.0.11" + "@smithy/smithy-client" "^2.1.18" + "@smithy/types" "^2.7.0" + "@smithy/url-parser" "^2.0.15" + "@smithy/util-base64" "^2.0.1" + "@smithy/util-body-length-browser" "^2.0.1" + "@smithy/util-body-length-node" "^2.1.0" + "@smithy/util-defaults-mode-browser" "^2.0.22" + "@smithy/util-defaults-mode-node" "^2.0.29" + "@smithy/util-endpoints" "^1.0.7" + "@smithy/util-middleware" "^2.0.8" + "@smithy/util-retry" "^2.0.8" + "@smithy/util-utf8" "^2.0.2" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/core@3.477.0": + version "3.477.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.477.0.tgz#2fa8ae4e19b8082b019a56efbce859c93df4e205" + integrity sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg== + dependencies: + "@smithy/core" "^1.2.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/signature-v4" "^2.0.0" + "@smithy/smithy-client" "^2.1.18" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-env@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz#4196d717d3f5485af863bd1fd84374ea3dcd6210" + integrity sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.478.0.tgz#452195c28b7138e26b5220ce9dfcc8cf9e9cca7d" + integrity sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw== + dependencies: + "@aws-sdk/credential-provider-env" "3.468.0" + "@aws-sdk/credential-provider-process" "3.468.0" + "@aws-sdk/credential-provider-sso" "3.478.0" + "@aws-sdk/credential-provider-web-identity" "3.468.0" + "@aws-sdk/types" "3.468.0" + "@smithy/credential-provider-imds" "^2.0.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/shared-ini-file-loader" "^2.0.6" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-node@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.478.0.tgz#43e8c7bfeb32c561c642bb2f4bffcbe0f483bc29" + integrity sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA== + dependencies: + "@aws-sdk/credential-provider-env" "3.468.0" + "@aws-sdk/credential-provider-ini" "3.478.0" + "@aws-sdk/credential-provider-process" "3.468.0" + "@aws-sdk/credential-provider-sso" "3.478.0" + "@aws-sdk/credential-provider-web-identity" "3.468.0" + "@aws-sdk/types" "3.468.0" + "@smithy/credential-provider-imds" "^2.0.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/shared-ini-file-loader" "^2.0.6" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-process@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz#770ed72db036c5d011445e5abf4a4bcc4424c486" + integrity sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/shared-ini-file-loader" "^2.0.6" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-sso@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.478.0.tgz#90e6aa0db7e4d20a42fc0d842cfae8f2f10b9483" + integrity sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg== + dependencies: + "@aws-sdk/client-sso" "3.478.0" + "@aws-sdk/token-providers" "3.478.0" + "@aws-sdk/types" "3.468.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/shared-ini-file-loader" "^2.0.6" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-web-identity@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz#5befcb593d99a84e16af9e9f285f0d59ed42771f" + integrity sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/lib-storage@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.478.0.tgz#68a8e2b61e900ef0289fa0b14d1ea6ee8b9e6f29" + integrity sha512-R1D+hX8Lea9mBZqj2A4hWkSNGCTv5pCsX/+fmfnFtmKL4gPn2MZ1GtnI6Rnk0zyTrQL94SpVc6CcEvhWsm5oiQ== + dependencies: + "@smithy/abort-controller" "^2.0.1" + "@smithy/middleware-endpoint" "^2.2.3" + "@smithy/smithy-client" "^2.1.18" + buffer "5.6.0" + events "3.3.0" + stream-browserify "3.0.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-bucket-endpoint@3.470.0": + version "3.470.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.470.0.tgz#76a6dde27e791ec8fad798dd5d53789b876498c3" + integrity sha512-vLXXNWtsRmEIwzJ9HUQfIuTNAsEzvCv0Icsnkvt2BiBZXnmHdp2vIC3e3+kfy1D7dVQloXqMmnfcLu/BUMu2Jw== + dependencies: + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-arn-parser" "3.465.0" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/protocol-http" "^3.0.11" + "@smithy/types" "^2.7.0" + "@smithy/util-config-provider" "^2.0.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-expect-continue@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.468.0.tgz#664f7f1238e7bfb633cd44753f8cfb1a62ac624a" + integrity sha512-/wmLjmfgeulxhhmnxX3X3N933TvGsYckVIFjAtDSpLjqkbwzEcNiLq7AdmNJ4BfxG0MCMgcht561DCCD19x8Bg== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-flexible-checksums@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.468.0.tgz#96e26042e61724a4981edb3ba3fd2af280df57b6" + integrity sha512-LQwL/N5MCj3Y5keLLewHTqeAXUIMsHFZyxDXRm/uxrOon9ufLKDvGvzAmfwn1/CuSUo66ZfT8VPSA4BsC90RtA== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/types" "3.468.0" + "@smithy/is-array-buffer" "^2.0.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/types" "^2.7.0" + "@smithy/util-utf8" "^2.0.2" + tslib "^2.5.0" + +"@aws-sdk/middleware-host-header@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz#6da7b19032e9afccea54fbf8aa10cccd2f817bcf" + integrity sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-location-constraint@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.468.0.tgz#cc9ebcdabed96414fc91f4a39b3b7c08e6374187" + integrity sha512-0gBX/lDynQr4YIhM9h1dVnkVWqrg+34iOCVIUq8jHxzUzgZWglGkG9lHGGg0r1xkLTmegeoo1OKH8wrQ6n33Cg== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-logger@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz#a1883fb7ad8e156444d30689de4ab897357ef1d8" + integrity sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-recursion-detection@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz#85b05636a5c2638bf9e15c8b6be17654757e1bf4" + integrity sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-s3@3.474.0": + version "3.474.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.474.0.tgz#7af224ba8c85f0190a153f4c4e2b48e549f1f34e" + integrity sha512-62aAo/8u5daIabeJ+gseYeHeShe9eYH6mH+kfWmLsHybXCCv1EaD/ZkdXWNhL0HZ3bUI1z1SF1p8jjTAWALnwA== + dependencies: + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-arn-parser" "3.465.0" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/protocol-http" "^3.0.11" + "@smithy/signature-v4" "^2.0.0" + "@smithy/smithy-client" "^2.1.18" + "@smithy/types" "^2.7.0" + "@smithy/util-config-provider" "^2.0.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-signing@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz#d1b5a92c395f55063cfa72ee95e4921b16f4c515" + integrity sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/property-provider" "^2.0.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/signature-v4" "^2.0.0" + "@smithy/types" "^2.7.0" + "@smithy/util-middleware" "^2.0.8" + tslib "^2.5.0" + +"@aws-sdk/middleware-ssec@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.468.0.tgz#8fe4ccfd6f0689b77b230ce17e44438d1ce1b419" + integrity sha512-y1qLW24wRkOGBTK5d6eJXf6d8HYo4rzT4a1mNDN1rd18NSffwQ6Yke5qeUiIaxa0y/l+FvvNYErbhYtij2rJoQ== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-user-agent@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz#5b98d02ccaa8db880fb59096e5389960c4262fbe" + integrity sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw== + dependencies: + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-endpoints" "3.478.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/region-config-resolver@3.470.0": + version "3.470.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.470.0.tgz#74e5c5f7a5633ad8c482503bf940a9330bd1cd09" + integrity sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ== + dependencies: + "@smithy/node-config-provider" "^2.1.8" + "@smithy/types" "^2.7.0" + "@smithy/util-config-provider" "^2.0.0" + "@smithy/util-middleware" "^2.0.8" + tslib "^2.5.0" + +"@aws-sdk/signature-v4-multi-region@3.474.0": + version "3.474.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.474.0.tgz#192f10924899c2ccf181932b4b5f59d6b01d79d3" + integrity sha512-93OWRQgTJZASXLrlUNX7mmXknNkYxFYldRLARmYQccONmnIqgYQW0lQj8BFwqkHJTzSMik3/UsU0SHKwZ9ynYA== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.474.0" + "@aws-sdk/types" "3.468.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/signature-v4" "^2.0.0" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/token-providers@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.478.0.tgz#145a35a82940190ff7a3db2fbc6b374258d0739f" + integrity sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/middleware-host-header" "3.468.0" + "@aws-sdk/middleware-logger" "3.468.0" + "@aws-sdk/middleware-recursion-detection" "3.468.0" + "@aws-sdk/middleware-user-agent" "3.478.0" + "@aws-sdk/region-config-resolver" "3.470.0" + "@aws-sdk/types" "3.468.0" + "@aws-sdk/util-endpoints" "3.478.0" + "@aws-sdk/util-user-agent-browser" "3.468.0" + "@aws-sdk/util-user-agent-node" "3.470.0" + "@smithy/config-resolver" "^2.0.21" + "@smithy/fetch-http-handler" "^2.3.1" + "@smithy/hash-node" "^2.0.17" + "@smithy/invalid-dependency" "^2.0.15" + "@smithy/middleware-content-length" "^2.0.17" + "@smithy/middleware-endpoint" "^2.2.3" + "@smithy/middleware-retry" "^2.0.24" + "@smithy/middleware-serde" "^2.0.15" + "@smithy/middleware-stack" "^2.0.9" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/node-http-handler" "^2.2.1" + "@smithy/property-provider" "^2.0.0" + "@smithy/protocol-http" "^3.0.11" + "@smithy/shared-ini-file-loader" "^2.0.6" + "@smithy/smithy-client" "^2.1.18" + "@smithy/types" "^2.7.0" + "@smithy/url-parser" "^2.0.15" + "@smithy/util-base64" "^2.0.1" + "@smithy/util-body-length-browser" "^2.0.1" + "@smithy/util-body-length-node" "^2.1.0" + "@smithy/util-defaults-mode-browser" "^2.0.22" + "@smithy/util-defaults-mode-node" "^2.0.29" + "@smithy/util-endpoints" "^1.0.7" + "@smithy/util-retry" "^2.0.8" + "@smithy/util-utf8" "^2.0.2" + tslib "^2.5.0" + +"@aws-sdk/types@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.468.0.tgz#f97b34fc92a800d1d8b866f47693ae8f3d46517b" + integrity sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA== + dependencies: + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/types@^3.222.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.679.0.tgz#3737bb0f190add9e788b838a24cd5d8106dbed4f" + integrity sha512-NwVq8YvInxQdJ47+zz4fH3BRRLC6lL+WLkvr242PVBbUOLRyK/lkwHlfiKUoeVIMyK5NF+up6TRg71t/8Bny6Q== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.465.0": + version "3.465.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.465.0.tgz#2896f6b06f69770378586853c97a0f283cbb2e20" + integrity sha512-zOJ82vzDJFqBX9yZBlNeHHrul/kpx/DCoxzW5UBbZeb26kfV53QhMSoEmY8/lEbBqlqargJ/sgRC845GFhHNQw== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-endpoints@3.478.0": + version "3.478.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz#d39c5667f22a7cbd2af93cdd6d883d25ef84e374" + integrity sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/util-endpoints" "^1.0.7" + tslib "^2.5.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.679.0.tgz#8d5898624691e12ccbad839e103562002bbec85e" + integrity sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.468.0": + version "3.468.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz#095caecb3fd75104ee38ae81ed78821de0f58e28" + integrity sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/types" "^2.7.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-node@3.470.0": + version "3.470.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz#b78605f336859d6c3b5f573cff931ce41f83a27d" + integrity sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ== + dependencies: + "@aws-sdk/types" "3.468.0" + "@smithy/node-config-provider" "^2.1.8" + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.472.0": + version "3.472.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.472.0.tgz#fe804e26517779868f7093e361dce4816be546d6" + integrity sha512-PwjVxz1hr9up8QkddabuScPZ/d5aDHgvHYgK4acHYzltXL4wngfvimi5ZqXTzVWF2QANxHmWnHUr45QJX71oJQ== + dependencies: + "@smithy/types" "^2.7.0" + tslib "^2.5.0" + +"@babel/code-frame@^7.0.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.0.tgz#9374b5cd068d128dac0b94ff482594273b1c2815" + integrity sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/code-frame@^7.22.13": version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-validator-identifier@^7.24.7", "@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== "@babel/highlight@^7.24.7": version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== dependencies: "@babel/helper-validator-identifier" "^7.24.7" @@ -25,94 +639,118 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/runtime@^7.21.0", "@babel/runtime@^7.25.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.24.7": version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@commitlint/cli@^19.3.0": - version "19.3.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.3.0.tgz#44e6da9823a01f0cdcc43054bbefdd2c6c5ddf39" - integrity sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g== - dependencies: - "@commitlint/format" "^19.3.0" - "@commitlint/lint" "^19.2.2" - "@commitlint/load" "^19.2.0" - "@commitlint/read" "^19.2.1" - "@commitlint/types" "^19.0.3" - execa "^8.0.1" +"@chainsafe/is-ip@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6" + integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== + +"@chainsafe/netmask@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@chainsafe/netmask/-/netmask-2.0.0.tgz#0d4a75f47919f65011da4327a3845c9661f1038a" + integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@commitlint/cli@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.5.0.tgz#a6e2f7f8397ddf9abd5ee5870e30a1bf51b7be2b" + integrity sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ== + dependencies: + "@commitlint/format" "^19.5.0" + "@commitlint/lint" "^19.5.0" + "@commitlint/load" "^19.5.0" + "@commitlint/read" "^19.5.0" + "@commitlint/types" "^19.5.0" + tinyexec "^0.3.0" yargs "^17.0.0" -"@commitlint/config-conventional@^19.2.2": - version "19.2.2" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-19.2.2.tgz#1f4e6975d428985deacf2b3ff6547e02c9302054" - integrity sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw== +"@commitlint/config-conventional@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-19.5.0.tgz#f838cdaed0e0e223cdc2e865f055d474a49fe18c" + integrity sha512-OBhdtJyHNPryZKg0fFpZNOBM1ZDbntMvqMuSmpfyP86XSfwzGw4CaoYRG4RutUPg0BTK07VMRIkNJT6wi2zthg== dependencies: - "@commitlint/types" "^19.0.3" + "@commitlint/types" "^19.5.0" conventional-changelog-conventionalcommits "^7.0.2" -"@commitlint/config-validator@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-19.0.3.tgz#052b181a30da6b4fc16dc5230f4589ac95e0bc81" - integrity sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q== +"@commitlint/config-validator@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-19.5.0.tgz#f0a4eda2109fc716ef01bb8831af9b02e3a1e568" + integrity sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw== dependencies: - "@commitlint/types" "^19.0.3" + "@commitlint/types" "^19.5.0" ajv "^8.11.0" -"@commitlint/ensure@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-19.0.3.tgz#d172b1b72ca88cbd317ea1ee79f3a03dbaccc76e" - integrity sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ== +"@commitlint/ensure@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-19.5.0.tgz#b087374a6a0a0140e5925a82901d234885d9f6dd" + integrity sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg== dependencies: - "@commitlint/types" "^19.0.3" + "@commitlint/types" "^19.5.0" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.snakecase "^4.1.1" lodash.startcase "^4.4.0" lodash.upperfirst "^4.3.1" -"@commitlint/execute-rule@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz#928fb239ae8deec82a6e3b05ec9cfe20afa83856" - integrity sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw== +"@commitlint/execute-rule@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz#c13da8c03ea0379f30856111e27d57518e25b8a2" + integrity sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg== -"@commitlint/format@^19.3.0": - version "19.3.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-19.3.0.tgz#48dd9e6930d41eb0ca19f36159ee940c5b25d857" - integrity sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg== +"@commitlint/format@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-19.5.0.tgz#d879db2d97d70ae622397839fb8603d56e85a250" + integrity sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A== dependencies: - "@commitlint/types" "^19.0.3" + "@commitlint/types" "^19.5.0" chalk "^5.3.0" -"@commitlint/is-ignored@^19.2.2": - version "19.2.2" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-19.2.2.tgz#503ddcf908ac6b2bc4586a49cb53893a1856f5b2" - integrity sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g== +"@commitlint/is-ignored@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-19.5.0.tgz#f8b7f365887acc1e3bdb31b17117bb435585dddf" + integrity sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w== dependencies: - "@commitlint/types" "^19.0.3" + "@commitlint/types" "^19.5.0" semver "^7.6.0" -"@commitlint/lint@^19.2.2": - version "19.2.2" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-19.2.2.tgz#57f69e24bd832a7dcce8ebf82d11e3bf03ccc2a9" - integrity sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA== - dependencies: - "@commitlint/is-ignored" "^19.2.2" - "@commitlint/parse" "^19.0.3" - "@commitlint/rules" "^19.0.3" - "@commitlint/types" "^19.0.3" - -"@commitlint/load@^19.2.0": - version "19.2.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-19.2.0.tgz#3ca51fdead4f1e1e09c9c7df343306412b1ef295" - integrity sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ== - dependencies: - "@commitlint/config-validator" "^19.0.3" - "@commitlint/execute-rule" "^19.0.0" - "@commitlint/resolve-extends" "^19.1.0" - "@commitlint/types" "^19.0.3" +"@commitlint/lint@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-19.5.0.tgz#f4e162e7857a1c0694b20b92527704897558ff70" + integrity sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg== + dependencies: + "@commitlint/is-ignored" "^19.5.0" + "@commitlint/parse" "^19.5.0" + "@commitlint/rules" "^19.5.0" + "@commitlint/types" "^19.5.0" + +"@commitlint/load@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-19.5.0.tgz#67f90a294894d1f99b930b6152bed2df44a81794" + integrity sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA== + dependencies: + "@commitlint/config-validator" "^19.5.0" + "@commitlint/execute-rule" "^19.5.0" + "@commitlint/resolve-extends" "^19.5.0" + "@commitlint/types" "^19.5.0" chalk "^5.3.0" cosmiconfig "^9.0.0" cosmiconfig-typescript-loader "^5.0.0" @@ -120,77 +758,76 @@ lodash.merge "^4.6.2" lodash.uniq "^4.5.0" -"@commitlint/message@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-19.0.0.tgz#f789dd1b7a1f9c784578e0111f46cc3fecf5a531" - integrity sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw== +"@commitlint/message@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-19.5.0.tgz#c062d9a1d2b3302c3a8cac25d6d1125ea9c019b2" + integrity sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ== -"@commitlint/parse@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-19.0.3.tgz#a2d09876d458e17ad0e1695b04f41af8b50a41c2" - integrity sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA== +"@commitlint/parse@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-19.5.0.tgz#b450dad9b5a95ac5ba472d6d0fdab822dce946fc" + integrity sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw== dependencies: - "@commitlint/types" "^19.0.3" + "@commitlint/types" "^19.5.0" conventional-changelog-angular "^7.0.0" conventional-commits-parser "^5.0.0" -"@commitlint/read@^19.2.1": - version "19.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-19.2.1.tgz#7296b99c9a989e60e5927fff8388a1dd44299c2f" - integrity sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw== +"@commitlint/read@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-19.5.0.tgz#601f9f1afe69852b0f28aa81cd455b40979fad6b" + integrity sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ== dependencies: - "@commitlint/top-level" "^19.0.0" - "@commitlint/types" "^19.0.3" - execa "^8.0.1" + "@commitlint/top-level" "^19.5.0" + "@commitlint/types" "^19.5.0" git-raw-commits "^4.0.0" minimist "^1.2.8" + tinyexec "^0.3.0" -"@commitlint/resolve-extends@^19.1.0": - version "19.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz#fa5b8f921e9c8d76f53624c35bf25b9676bd73fa" - integrity sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg== +"@commitlint/resolve-extends@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz#f3ec33e12d10df90cae0bfad8e593431fb61b18e" + integrity sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA== dependencies: - "@commitlint/config-validator" "^19.0.3" - "@commitlint/types" "^19.0.3" + "@commitlint/config-validator" "^19.5.0" + "@commitlint/types" "^19.5.0" global-directory "^4.0.1" import-meta-resolve "^4.0.0" lodash.mergewith "^4.6.2" resolve-from "^5.0.0" -"@commitlint/rules@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-19.0.3.tgz#de647a9055847cae4f3ae32b4798096b604584f3" - integrity sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw== +"@commitlint/rules@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-19.5.0.tgz#2a72ab506d49d7f33eda56f0ae072a3479429e74" + integrity sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw== dependencies: - "@commitlint/ensure" "^19.0.3" - "@commitlint/message" "^19.0.0" - "@commitlint/to-lines" "^19.0.0" - "@commitlint/types" "^19.0.3" - execa "^8.0.1" + "@commitlint/ensure" "^19.5.0" + "@commitlint/message" "^19.5.0" + "@commitlint/to-lines" "^19.5.0" + "@commitlint/types" "^19.5.0" -"@commitlint/to-lines@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-19.0.0.tgz#aa6618eb371bafbc0cd3b48f0db565c4a40462c6" - integrity sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw== +"@commitlint/to-lines@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-19.5.0.tgz#e4b7f34f09064568c96a74de4f1fc9f466c4d472" + integrity sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ== -"@commitlint/top-level@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-19.0.0.tgz#9c44d7cec533bb9598bfae9658737e2d6a903605" - integrity sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ== +"@commitlint/top-level@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-19.5.0.tgz#0017ffe39b5ba3611a1debd62efe28803601a14f" + integrity sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng== dependencies: find-up "^7.0.0" -"@commitlint/types@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-19.0.3.tgz#feff4ecac2b5c359f2a57f9ab094b2ac80ef0266" - integrity sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA== +"@commitlint/types@^19.5.0": + version "19.5.0" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-19.5.0.tgz#c5084d1231d4dd50e40bdb656ee7601f691400b3" + integrity sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg== dependencies: "@types/conventional-commits-parser" "^5.0.0" chalk "^5.3.0" "@conventional-changelog/git-client@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@conventional-changelog/git-client/-/git-client-1.0.1.tgz#143be2777ba389c3c14f83fa19b7cab6a49a503b" + resolved "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz" integrity sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw== dependencies: "@types/semver" "^7.5.5" @@ -198,12 +835,12 @@ "@coral-xyz/anchor-errors@^0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + resolved "https://registry.npmjs.org/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz" integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== "@coral-xyz/anchor@^0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + resolved "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.30.1.tgz" integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== dependencies: "@coral-xyz/anchor-errors" "^0.30.1" @@ -224,25 +861,437 @@ "@coral-xyz/borsh@^0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + resolved "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.30.1.tgz" integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== dependencies: bn.js "^5.1.2" buffer-layout "^1.2.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@esbuild/aix-ppc64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" + integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== + +"@esbuild/android-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" + integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== + +"@esbuild/android-arm@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" + integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== + +"@esbuild/android-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" + integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== + +"@esbuild/darwin-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" + integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== + +"@esbuild/darwin-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" + integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== + +"@esbuild/freebsd-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" + integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== + +"@esbuild/freebsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" + integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== + +"@esbuild/linux-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" + integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== + +"@esbuild/linux-arm@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" + integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== + +"@esbuild/linux-ia32@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" + integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== + +"@esbuild/linux-loong64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" + integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== + +"@esbuild/linux-mips64el@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" + integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== + +"@esbuild/linux-ppc64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" + integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== + +"@esbuild/linux-riscv64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" + integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== + +"@esbuild/linux-s390x@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" + integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== + +"@esbuild/linux-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" + integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== + +"@esbuild/netbsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" + integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== + +"@esbuild/openbsd-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" + integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== + +"@esbuild/openbsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" + integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== + +"@esbuild/sunos-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" + integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== + +"@esbuild/win32-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" + integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== + +"@esbuild/win32-ia32@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" + integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== + +"@esbuild/win32-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" + integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== + +"@eslint/eslintrc@^1.0.5": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@faker-js/faker@^8.4.1": version "8.4.1" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" + resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz" integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@filebase/sdk@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@filebase/sdk/-/sdk-1.0.6.tgz#f571e038cf2849ecde70f8ca8d060fd22424649c" + integrity sha512-Viv4A7n4ejABFAkDZU+7iRcItnFgX/HUlbTNPQA/E0TcGvoUxh3uT0BTOZP9M/vJ/+Zc1fRevAXbFFWVmYFCtA== + dependencies: + "@aws-sdk/client-s3" "3.478.0" + "@aws-sdk/lib-storage" "3.478.0" + "@helia/car" "1.0.4" + "@helia/mfs" "3.0.1" + "@helia/unixfs" "1.4.3" + "@ipld/car" "5.2.4" + axios "1.6.2" + blockstore-core "4.4.1" + blockstore-fs "1.1.10" + datastore-core "9.2.9" + p-queue "8.0.1" + uuid "9.0.1" + winston "3.12.0" + +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@helia/car@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@helia/car/-/car-1.0.4.tgz#31f881faa0fdd1cf2aba4429bd4c76331dffe4d1" + integrity sha512-HcHMC/eTRCFt3jrLkMvqKD7Og92PpNoBZTMQ9R+dOvtyIlZ2iG4zYRm2DipPdDi+OvXCqaPNg0oJxDx5fBnjRw== + dependencies: + "@helia/interface" "^2.0.0" + "@ipld/car" "^5.1.1" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/interfaces" "^3.3.1" + cborg "^4.0.3" + interface-blockstore "^5.0.0" + it-map "^3.0.3" + multiformats "^12.0.1" + p-defer "^4.0.0" + p-queue "^7.3.4" + progress-events "^1.0.0" + +"@helia/interface@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@helia/interface/-/interface-2.1.0.tgz#ad70cf975971c332751e89fe50818a9d0fb74c79" + integrity sha512-Z7PwuDIR0BODfSMzYcdzgdTYLsshCawAoPvGuuazvBddWSD9y82/QBmsWp6CTkyM/ziEaWbz5wERmRS+wejDLg== + dependencies: + "@libp2p/interface" "^0.1.1" + interface-blockstore "^5.0.0" + interface-datastore "^8.0.0" + interface-store "^5.0.1" + ipfs-bitswap "^19.0.0" + multiformats "^12.0.1" + progress-events "^1.0.0" + +"@helia/interface@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@helia/interface/-/interface-4.3.1.tgz#064ad5a82a3d109c94e16a7a62ccb7faa07ca05b" + integrity sha512-jvuUUAQbLMhvMt+Lon7mJfJt5xJWiwn8aXtI9fHBpMNMsrKJOtefxAzwSr18xe+C9bMdOyRtocj2eFhs74bQ8w== + dependencies: + "@libp2p/interface" "^1.1.4" + "@multiformats/dns" "^1.0.1" + interface-blockstore "^5.2.10" + interface-datastore "^8.2.11" + interface-store "^5.1.8" + multiformats "^13.1.0" + progress-events "^1.0.0" + +"@helia/mfs@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@helia/mfs/-/mfs-3.0.1.tgz#a24b26671d4543997594f93678905a7244c79bf7" + integrity sha512-2/ZlP1jQ787Tb1P86LBBL2UBSxX7sdvD/kAzbWRxFELJquURVgiJd3stFlFsv6PSN/7x0991H8WZAlKZ0oZt3Q== + dependencies: + "@helia/unixfs" "^3.0.1" + "@libp2p/interfaces" "^3.3.2" + "@libp2p/logger" "^4.0.7" + interface-blockstore "^5.2.10" + interface-datastore "^8.2.11" + ipfs-unixfs "^11.1.3" + ipfs-unixfs-exporter "^13.5.0" + ipfs-unixfs-importer "^15.2.4" + multiformats "^13.1.0" + +"@helia/unixfs@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@helia/unixfs/-/unixfs-1.4.3.tgz#5f0d5de880d300eb32d4861ded7567945de1c4ba" + integrity sha512-jS0En8fGhb01XH+nnxo3kQsmc1lwBEdlttAZFvTo7HCjBGPNFuaYdwTqF9S1wMVWV2fWqj7eS2zBZZa0MDsi1Q== + dependencies: + "@helia/interface" "^2.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@multiformats/murmur3" "^2.1.2" + hamt-sharding "^3.0.2" + interface-blockstore "^5.0.0" + ipfs-unixfs "^11.0.0" + ipfs-unixfs-exporter "^13.1.0" + ipfs-unixfs-importer "^15.1.0" + it-glob "^2.0.4" + it-last "^3.0.1" + it-pipe "^3.0.1" + merge-options "^3.0.4" + multiformats "^12.1.1" + progress-events "^1.0.0" + sparse-array "^1.3.2" + +"@helia/unixfs@^3.0.1": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@helia/unixfs/-/unixfs-3.0.7.tgz#11383428499675343c44720301d2841a8668a2e3" + integrity sha512-5fBXYk9t6Iu/DnTQZ//sn0MhM00AnK+VYEkfXdReoBUdzVFrOFW/bihT4sgLfYCq86+TShdrU1aDLkbFiN6FnQ== + dependencies: + "@helia/interface" "^4.3.1" + "@ipld/dag-pb" "^4.1.0" + "@libp2p/interface" "^1.1.4" + "@libp2p/logger" "^4.0.7" + "@multiformats/murmur3" "^2.1.8" + hamt-sharding "^3.0.6" + interface-blockstore "^5.2.10" + ipfs-unixfs "^11.1.3" + ipfs-unixfs-exporter "^13.5.0" + ipfs-unixfs-importer "^15.2.4" + it-all "^3.0.4" + it-glob "^3.0.0" + it-last "^3.0.4" + it-pipe "^3.0.1" + merge-options "^3.0.4" + multiformats "^13.1.0" + progress-events "^1.0.0" + sparse-array "^1.3.2" + uint8arrays "^5.0.2" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + "@hutson/parse-repository-url@^5.0.0": version "5.0.0" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz#bf344cc75136039bc41bcf5d1ddbcb40405fca3b" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz" integrity sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg== +"@ipld/car@5.2.4": + version "5.2.4" + resolved "https://registry.yarnpkg.com/@ipld/car/-/car-5.2.4.tgz#5770ad01075162e10cfc646142806758befbf3f5" + integrity sha512-YoVXE/o5HLXKi/Oqh9Nhcn423sdn9brRFKnbUid68/1D332/XINcoyCTvBluFcCw/9IeiTx+sEAV+onXZ/A4eA== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + cborg "^4.0.0" + multiformats "^12.1.0" + varint "^6.0.0" + +"@ipld/car@^5.1.0", "@ipld/car@^5.1.1", "@ipld/car@^5.2.2": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@ipld/car/-/car-5.3.3.tgz#8e37ccd40af4cc9070399f5874920a0d57985497" + integrity sha512-4vgV5Ml4HCJ2iTx7vYhu0ui+Xxo1HQTtVeYgD+JKd5Wij8TlOFZnxOSickqpLcuf1fdGEStgqVItx15UWfzDYA== + dependencies: + "@ipld/dag-cbor" "^9.0.7" + cborg "^4.0.5" + multiformats "^13.0.0" + varint "^6.0.0" + +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.3", "@ipld/dag-cbor@^9.0.6", "@ipld/dag-cbor@^9.0.7", "@ipld/dag-cbor@^9.2.1": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.2.2.tgz#e6f5f5bd1e4f290f2285b51fc969ef806484603a" + integrity sha512-uIEOuruCqKTP50OBWwgz4Js2+LhiBQaxc57cnP71f45b1mHEAo1OCR1Zn/TbvSW/mV1x+JqhacIktkKyaYqhCw== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-json@^10.0.0", "@ipld/dag-json@^10.2.2": + version "10.2.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-10.2.3.tgz#bb9de2e869f1c523104c52adc89e1e8bb0db7253" + integrity sha512-itacv1j1hvYgLox2B42Msn70QLzcr0MEo5yGIENuw2SM/lQzq9bmBiMky+kDsIrsqqblKTXcHBZnnmK7D4a6ZQ== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-pb@^4.0.0", "@ipld/dag-pb@^4.1.0", "@ipld/dag-pb@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.3.tgz#b572d7978fa548a3a9219f566a80884189261858" + integrity sha512-ueULCaaSCcD+dQga6nKiRr+RSeVgdiYiEPKVUu5iQMNYDN+9osd0KpR3UDd9uQQ+6RWuv9L34SchfEwj7YIbOA== + dependencies: + multiformats "^13.1.0" + +"@ipld/dag-ucan@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ipld/dag-ucan/-/dag-ucan-3.4.0.tgz#bc955fb6506cff6a0d876476d06ca98ec8b15b4d" + integrity sha512-sW4R43w3DbEdoGWWJZCwsblwXa600HCanG9p2w1MJPVBNTNjhvqc3XI0uEqKhT2oqKWrND7uInVtcPmZme7hhA== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + multiformats "^11.0.0" + +"@ipld/unixfs@^2.1.1": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ipld/unixfs/-/unixfs-2.2.0.tgz#977ba394c5051cf0f0d85ebd0797ca1ac04dfb8b" + integrity sha512-lDQ2eRhJlbFaBoO3bhOmDVCLmpOnhwtwbilqUgAAhbhoPSmLrnv7gsBuToZjXOdPaEGSL7apkmm6nFrcU6zh4Q== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@multiformats/murmur3" "^2.1.3" + "@perma/map" "^1.0.2" + actor "^2.3.1" + multiformats "^11.0.1" + protobufjs "^7.1.2" + rabin-rs "^2.1.0" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + +"@jest/schemas@^29.4.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@kinobi-so/errors@0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/errors/-/errors-0.20.6.tgz#1b66534e2d25004f20e267f3a89d44a49a4462e1" + resolved "https://registry.npmjs.org/@kinobi-so/errors/-/errors-0.20.6.tgz" integrity sha512-bxMfPbTU1JjhQzd1KzBzF9aKGpMwTxqkNA4ALdu0HLbNe6gTpZ+XF//a/Sdhcn6MZ48KAQX9siKfqVutgKjdzg== dependencies: "@kinobi-so/node-types" "0.20.6" @@ -251,12 +1300,12 @@ "@kinobi-so/node-types@0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/node-types/-/node-types-0.20.6.tgz#011db6f1ccdc0b3fbbd3cea33e4297275941e63f" + resolved "https://registry.npmjs.org/@kinobi-so/node-types/-/node-types-0.20.6.tgz" integrity sha512-gStEfb52LAuK/RnfJGn426iECgobAhPAxlbcHIxx9BfuauF8Q57DfFFYUhCBS94/Se/KCtC4W+5dQjkTI8WViw== "@kinobi-so/nodes-from-anchor@0.20.8", "@kinobi-so/nodes-from-anchor@^0.20.8": version "0.20.8" - resolved "https://registry.yarnpkg.com/@kinobi-so/nodes-from-anchor/-/nodes-from-anchor-0.20.8.tgz#44d399afe24df1c71f3ab67fd894b002983d86c7" + resolved "https://registry.npmjs.org/@kinobi-so/nodes-from-anchor/-/nodes-from-anchor-0.20.8.tgz" integrity sha512-TJtHixtIA6uVk2/syPHTwzlEyRMZYH1GeCv9D3uhDo17SxUl2gYTnG+Q5FXDuzNWtUFOYYvW8l0t9p7MzVbfmQ== dependencies: "@kinobi-so/errors" "0.20.6" @@ -266,7 +1315,7 @@ "@kinobi-so/nodes@0.20.6", "@kinobi-so/nodes@^0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/nodes/-/nodes-0.20.6.tgz#ae0922661beb6556d7455af226e7b8a3b3e96e8c" + resolved "https://registry.npmjs.org/@kinobi-so/nodes/-/nodes-0.20.6.tgz" integrity sha512-lKP+fj/6wvJp3dkwkhQRhFEgM6IlAufqOAU1A/sSi2Ciou7OxdqFJ98c14AFOMYBKpWqNOh5zUTtxBUyGDe9Sg== dependencies: "@kinobi-so/errors" "0.20.6" @@ -274,7 +1323,7 @@ "@kinobi-so/renderers-core@0.20.6", "@kinobi-so/renderers-core@^0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-core/-/renderers-core-0.20.6.tgz#eb8eaeba75a0a85bb13c5a9d4a8124878090c8de" + resolved "https://registry.npmjs.org/@kinobi-so/renderers-core/-/renderers-core-0.20.6.tgz" integrity sha512-GdgkwbipQK/Vb4z+08eB3j81oZHWcD8jKHRZzOuMBSpT8aVZIes1Nxy8FfoJYFppmjWvRaGg/X4YKAsLXZV56Q== dependencies: "@kinobi-so/errors" "0.20.6" @@ -283,7 +1332,7 @@ "@kinobi-so/renderers-js-umi@0.20.8": version "0.20.8" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-js-umi/-/renderers-js-umi-0.20.8.tgz#10aefd2dca406dfa4007a85800746c19a8862168" + resolved "https://registry.npmjs.org/@kinobi-so/renderers-js-umi/-/renderers-js-umi-0.20.8.tgz" integrity sha512-R/ilKcAPAZtmJlOHMY7egh61LOVkphAIeOvSiofV7OFqQgpF8Sp/fAep60F7uOOOwl+yCUHEprrITs7cgRel9A== dependencies: "@kinobi-so/errors" "0.20.6" @@ -297,7 +1346,7 @@ "@kinobi-so/renderers-js@0.20.11": version "0.20.11" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-js/-/renderers-js-0.20.11.tgz#76184b1c027feefda538b1930a24a31637b4eb38" + resolved "https://registry.npmjs.org/@kinobi-so/renderers-js/-/renderers-js-0.20.11.tgz" integrity sha512-4MxpJ3gTQKvzIaeefHwo1bkWoopJJAvjVjwJCag7s2lxBWJ+NC1Dgo4z5BnTyDBoP5jJbXixRDKRc1p+/BW5jQ== dependencies: "@kinobi-so/errors" "0.20.6" @@ -311,7 +1360,7 @@ "@kinobi-so/renderers-rust@0.20.12": version "0.20.12" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers-rust/-/renderers-rust-0.20.12.tgz#19c9491ab1523075db411a92779aee645b5ff41f" + resolved "https://registry.npmjs.org/@kinobi-so/renderers-rust/-/renderers-rust-0.20.12.tgz" integrity sha512-R47AkigrmRxsB1rCO88J27jxjwqBKj9YnEtk16h9tK4pEN7iz3CyD1vGU9hoDKxa+kLLnhkL66bEVKwKWQCa7A== dependencies: "@kinobi-so/errors" "0.20.6" @@ -323,7 +1372,7 @@ "@kinobi-so/renderers@^0.20.14": version "0.20.14" - resolved "https://registry.yarnpkg.com/@kinobi-so/renderers/-/renderers-0.20.14.tgz#f0fa59f5e729e8e391c487d4569c9135302c7bd4" + resolved "https://registry.npmjs.org/@kinobi-so/renderers/-/renderers-0.20.14.tgz" integrity sha512-144dvDWspQs9RZmEdfSgUjkjZ1l9Y+jH4yhw9OnzLMuhAzxTS/0od7ILGmCF2wY2L5RRp4xBfMkqadmI1w814Q== dependencies: "@kinobi-so/renderers-js" "0.20.11" @@ -332,7 +1381,7 @@ "@kinobi-so/validators@0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/validators/-/validators-0.20.6.tgz#5c97e2891faba6e6eda8b2b94d5c86e13f5a4638" + resolved "https://registry.npmjs.org/@kinobi-so/validators/-/validators-0.20.6.tgz" integrity sha512-KSJ3sJU83n60KlTvL5UGE1p1PMAgvCz4A0N6XbX0RT1Rcm9LZoqIpdebDzkQ2wJTLznjwP2CuCtpHcNfejbwWg== dependencies: "@kinobi-so/errors" "0.20.6" @@ -341,7 +1390,7 @@ "@kinobi-so/visitors-core@0.20.6", "@kinobi-so/visitors-core@^0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/visitors-core/-/visitors-core-0.20.6.tgz#1bfd75412cb8df68b5812a6494884152fe96047e" + resolved "https://registry.npmjs.org/@kinobi-so/visitors-core/-/visitors-core-0.20.6.tgz" integrity sha512-V8Zosr40x38LMiMzGmJLvsglhlHJ7GPvLgAfGU4+7D8EhsFI5BXLIdQd55cbQE64Y1/2iG7jKDoEak0U+sy8Tw== dependencies: "@kinobi-so/errors" "0.20.6" @@ -350,249 +1399,2041 @@ "@kinobi-so/visitors@0.20.6", "@kinobi-so/visitors@^0.20.6": version "0.20.6" - resolved "https://registry.yarnpkg.com/@kinobi-so/visitors/-/visitors-0.20.6.tgz#0e39b3b241257afda7423e3428ff9618a8a95bf6" + resolved "https://registry.npmjs.org/@kinobi-so/visitors/-/visitors-0.20.6.tgz" integrity sha512-EZOp83sWEZoS+J+fb5ipHQXagUovGVCdaJrMIlYZEMe9tAa5oZF8d0skWg6T2AeP8SHCNnwW0nRA2/K90ltjWA== dependencies: "@kinobi-so/errors" "0.20.6" "@kinobi-so/nodes" "0.20.6" "@kinobi-so/visitors-core" "0.20.6" +"@ledgerhq/devices@^8.4.4": + version "8.4.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.4.tgz#0d195c1650fe57da2fad7f0d9074a0190947cd6f" + integrity sha512-sz/ryhe/R687RHtevIE9RlKaV8kkKykUV4k29e7GAVwzHX1gqG+O75cu1NCJUHLbp3eABV5FdvZejqRUlLis9A== + dependencies: + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/logs" "^6.12.0" + rxjs "^7.8.1" + semver "^7.3.5" + +"@ledgerhq/errors@^6.19.1": + version "6.19.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.19.1.tgz#d9ac45ad4ff839e468b8f63766e665537aaede58" + integrity sha512-75yK7Nnit/Gp7gdrJAz0ipp31CCgncRp+evWt6QawQEtQKYEDfGo10QywgrrBBixeRxwnMy1DP6g2oCWRf1bjw== + +"@ledgerhq/hw-app-solana@^7.2.4": + version "7.2.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-solana/-/hw-app-solana-7.2.4.tgz#616cee8439d150e845ac99a654976ffdca921cf4" + integrity sha512-1k6XdTFNUJyk9GpXtymPRYq+OdMPIkPZ681ZkrMdSquTJV7W0LgK2oq1BacOVaVe6yDZKEqdR10RUTalhX1Mjg== + dependencies: + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/hw-transport" "^6.31.4" + bip32-path "^0.4.2" + +"@ledgerhq/hw-transport-node-hid-noevents@^6.30.5": + version "6.30.5" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.30.5.tgz#87feed538aa373a61e21e0c2849a5e4c9a07528b" + integrity sha512-nOPbhFU87LgLERVAQ+HhxV8E8c+7d8ptllkgiJUc4QwL2z9zkIOAEtgdvCaZ066Oi9XGnln/GF1oAgByYnYDPw== + dependencies: + "@ledgerhq/devices" "^8.4.4" + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/hw-transport" "^6.31.4" + "@ledgerhq/logs" "^6.12.0" + node-hid "2.1.2" + +"@ledgerhq/hw-transport-node-hid@^6.29.5": + version "6.29.5" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.29.5.tgz#4e140ba3fc152277ae8af2b133287fa803093fc9" + integrity sha512-2bAp4K50V1kdCufU9JdQPcw4aLyvA+yQRJU/X39B+PC+rnis40gEbqNh0henhzv876sXdbNk6G/MkDWXpwDIow== + dependencies: + "@ledgerhq/devices" "^8.4.4" + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/hw-transport" "^6.31.4" + "@ledgerhq/hw-transport-node-hid-noevents" "^6.30.5" + "@ledgerhq/logs" "^6.12.0" + lodash "^4.17.21" + node-hid "2.1.2" + usb "2.9.0" + +"@ledgerhq/hw-transport@^6.31.4": + version "6.31.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.4.tgz#9b23a6de4a4caaa5c24b149c2dea8adde46f0eb1" + integrity sha512-6c1ir/cXWJm5dCWdq55NPgCJ3UuKuuxRvf//Xs36Bq9BwkV2YaRQhZITAkads83l07NAdR16hkTWqqpwFMaI6A== + dependencies: + "@ledgerhq/devices" "^8.4.4" + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/logs" "^6.12.0" + events "^3.3.0" + +"@ledgerhq/logs@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.12.0.tgz#ad903528bf3687a44da435d7b2479d724d374f5d" + integrity sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA== + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@lerna/child-process@6.6.2": + version "6.6.2" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.6.2.tgz#5d803c8dee81a4e013dc428292e77b365cba876c" + integrity sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag== + dependencies: + chalk "^4.1.0" + execa "^5.0.0" + strong-log-transformer "^2.1.0" + +"@lerna/create@6.6.2": + version "6.6.2" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.6.2.tgz#39a36d80cddb355340c297ed785aa76f4498177f" + integrity sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ== + dependencies: + "@lerna/child-process" "6.6.2" + dedent "^0.7.0" + fs-extra "^9.1.0" + init-package-json "^3.0.2" + npm-package-arg "8.1.1" + p-reduce "^2.1.0" + pacote "15.1.1" + pify "^5.0.0" + semver "^7.3.4" + slash "^3.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + yargs-parser "20.2.4" + +"@lerna/legacy-package-management@6.6.2": + version "6.6.2" + resolved "https://registry.yarnpkg.com/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz#411c395e72e563ab98f255df77e4068627a85bb0" + integrity sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg== + dependencies: + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + execa "5.0.0" + file-url "3.0.0" + find-up "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + inquirer "8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + libnpmpublish "7.1.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "14.0.3" + npmlog "6.0.2" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-waterfall "2.1.1" + pacote "15.1.1" + pify "5.0.0" + pretty-format "29.4.3" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + semver "7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + tempy "1.0.0" + upath "2.0.1" + uuid "8.3.2" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + +"@libp2p/crypto@^1.0.11": + version "1.0.17" + resolved "https://registry.yarnpkg.com/@libp2p/crypto/-/crypto-1.0.17.tgz#e64043328c0c866bf7f4cc8560b4f483e9c745dc" + integrity sha512-Oeg0Eb/EvAho0gVkOgemXEgrVxWaT3x/DpFgkBdZ9qGxwq75w/E/oPc7souqBz+l1swfz37GWnwV7bIb4Xv5Ag== + dependencies: + "@libp2p/interface-keys" "^1.0.2" + "@libp2p/interfaces" "^3.2.0" + "@noble/ed25519" "^1.6.0" + "@noble/secp256k1" "^1.5.4" + multiformats "^11.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.2" + +"@libp2p/interface-connection@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-4.0.0.tgz#fcc830ca891820fac89a4c6bd4fcc2df4874f49b" + integrity sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + it-stream-types "^1.0.4" + uint8arraylist "^2.1.2" + +"@libp2p/interface-keychain@^2.0.0": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@libp2p/interface-keychain/-/interface-keychain-2.0.5.tgz#6ce104f38cf07ad72c9dfbe471a689f4ea4b4687" + integrity sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + multiformats "^11.0.0" + +"@libp2p/interface-keys@^1.0.2": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@libp2p/interface-keys/-/interface-keys-1.0.8.tgz#2c6b55136113ae7cf78133d3c459cdf0455b29ae" + integrity sha512-CJ1SlrwuoHMquhEEWS77E+4vv7hwB7XORkqzGQrPQmA9MRdIEZRS64bA4JqCLUDa4ltH0l+U1vp0oZHLT67NEA== + +"@libp2p/interface-peer-id@^2.0.0", "@libp2p/interface-peer-id@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-id/-/interface-peer-id-2.0.2.tgz#6302e70b6fc17c451bc3daa11447d059357bcc32" + integrity sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg== + dependencies: + multiformats "^11.0.0" + +"@libp2p/interface-peer-info@^1.0.2": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-info/-/interface-peer-info-1.0.10.tgz#566026de95a0817b9e853c982b313541b7960c0b" + integrity sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-pubsub@^3.0.0": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@libp2p/interface-pubsub/-/interface-pubsub-3.0.7.tgz#cc1c7c47c883daddd2b84d83d719b3826943be3b" + integrity sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + it-pushable "^3.0.0" + uint8arraylist "^2.1.2" + +"@libp2p/interface@^0.1.1", "@libp2p/interface@^0.1.2", "@libp2p/interface@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-0.1.6.tgz#1328cf6086f02c499183489ccb143fe9c159e871" + integrity sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag== + dependencies: + "@multiformats/multiaddr" "^12.1.5" + abortable-iterator "^5.0.1" + it-pushable "^3.2.0" + it-stream-types "^2.0.1" + multiformats "^12.0.1" + p-defer "^4.0.0" + race-signal "^1.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interface@^1.1.4", "@libp2p/interface@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-1.7.0.tgz#b75b6032a6b0d0d5a13e551dcf4d481a8ca9a88f" + integrity sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA== + dependencies: + "@multiformats/multiaddr" "^12.2.3" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.1.0" + progress-events "^1.0.0" + uint8arraylist "^2.4.8" + +"@libp2p/interfaces@^3.0.0", "@libp2p/interfaces@^3.2.0", "@libp2p/interfaces@^3.3.1", "@libp2p/interfaces@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@libp2p/interfaces/-/interfaces-3.3.2.tgz#5d8079be845b0960939b5b18880e785a4714465a" + integrity sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g== + +"@libp2p/logger@^2.0.5": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-2.1.1.tgz#e12e6c320ea64252af954bcec996895098d1cd36" + integrity sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA== + dependencies: + "@libp2p/interface-peer-id" "^2.0.2" + "@multiformats/multiaddr" "^12.1.3" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^11.0.2" + +"@libp2p/logger@^3.0.1", "@libp2p/logger@^3.0.2": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-3.1.0.tgz#ac9adb08f344934e191d7049ce876ac0111449ce" + integrity sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ== + dependencies: + "@libp2p/interface" "^0.1.6" + "@multiformats/multiaddr" "^12.1.5" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^12.0.1" + +"@libp2p/logger@^4.0.6", "@libp2p/logger@^4.0.7": + version "4.0.20" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-4.0.20.tgz#bcb7fa83f3803d8ec37926747a18108728589c13" + integrity sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw== + dependencies: + "@libp2p/interface" "^1.7.0" + "@multiformats/multiaddr" "^12.2.3" + interface-datastore "^8.2.11" + multiformats "^13.1.0" + weald "^1.0.2" + +"@libp2p/peer-id@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-2.0.4.tgz#d50d2ae4663ef79f6e31ce4eaf25e1f44e1667ab" + integrity sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.2.0" + multiformats "^11.0.0" + uint8arrays "^4.0.2" + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@multiformats/dns@^1.0.1", "@multiformats/dns@^1.0.3": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.6.tgz#b8c7de11459a02a5f4e609d35d3cdb95cb6ad152" + integrity sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw== + dependencies: + "@types/dns-packet" "^5.6.5" + buffer "^6.0.3" + dns-packet "^5.6.1" + hashlru "^2.3.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + uint8arrays "^5.0.2" + +"@multiformats/multiaddr-to-uri@^9.0.1": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.8.tgz#c0b1491b26a4d52273ddc16024c59ba47ef8583f" + integrity sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr@^11.1.5": + version "11.6.1" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-11.6.1.tgz#ec46984a298e715e27a398434c087856db5f3185" + integrity sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + dns-over-http-resolver "^2.1.0" + err-code "^3.0.1" + multiformats "^11.0.0" + uint8arrays "^4.0.2" + varint "^6.0.0" + +"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.0", "@multiformats/multiaddr@^12.1.10", "@multiformats/multiaddr@^12.1.3", "@multiformats/multiaddr@^12.1.5", "@multiformats/multiaddr@^12.2.3": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.3.1.tgz#953ceb4ae3b39125b7b2c721230ea7b398cf49fe" + integrity sha512-yoGODQY4nIj41ENJClucS8FtBoe8w682bzbKldEQr9lSlfdHqAsRC+vpJAOBpiMwPps1tHua4kxrDmvprdhoDQ== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@multiformats/dns" "^1.0.3" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + +"@multiformats/murmur3@^2.1.0", "@multiformats/murmur3@^2.1.2", "@multiformats/murmur3@^2.1.3", "@multiformats/murmur3@^2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" + integrity sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA== + dependencies: + multiformats "^13.0.0" + murmurhash3js-revisited "^3.0.0" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@^1.2.0", "@noble/curves@^1.4.2": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" + integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== + dependencies: + "@noble/hashes" "1.5.0" + "@noble/curves@^1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz" integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== dependencies: "@noble/hashes" "1.4.0" +"@noble/ed25519@^1.6.0", "@noble/ed25519@^1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + "@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== -"@solana/buffer-layout-utils@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" - integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/web3.js" "^1.32.0" - bigint-buffer "^1.1.5" - bignumber.js "^9.0.1" +"@noble/hashes@1.5.0", "@noble/hashes@^1.3.2", "@noble/hashes@~1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== -"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" - integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== +"@noble/secp256k1@^1.5.4": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - buffer "~6.0.3" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@solana/codecs-core@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" - integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/arborist@6.2.3": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.2.3.tgz#31f8aed2588341864d3811151d929c01308f8e71" + integrity sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.0" + "@npmcli/installed-package-contents" "^2.0.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^5.0.0" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^3.0.0" + "@npmcli/query" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + bin-links "^4.0.1" + cacache "^17.0.4" + common-ancestor-path "^1.0.1" + hosted-git-info "^6.1.1" + json-parse-even-better-errors "^3.0.0" + json-stringify-nice "^1.1.4" + minimatch "^6.1.6" + nopt "^7.0.0" + npm-install-checks "^6.0.0" + npm-package-arg "^10.1.0" + npm-pick-manifest "^8.0.1" + npm-registry-fetch "^14.0.3" + npmlog "^7.0.1" + pacote "^15.0.8" + parse-conflict-json "^3.0.0" + proc-log "^3.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^1.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.1" + treeverse "^3.0.0" + walk-up-path "^1.0.0" + +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: - "@solana/errors" "2.0.0-preview.2" + "@gar/promisify" "^1.1.3" + semver "^7.3.5" -"@solana/codecs-data-structures@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" - integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== +"@npmcli/fs@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" + semver "^7.3.5" -"@solana/codecs-numbers@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" - integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== +"@npmcli/git@^4.0.0", "@npmcli/git@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" + integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== + dependencies: + "@npmcli/promise-spawn" "^6.0.0" + lru-cache "^7.4.4" + npm-pick-manifest "^8.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^3.0.0" + +"@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" -"@solana/codecs-strings@2.0.0-preview.2", "@solana/codecs-strings@tp2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" - integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== +"@npmcli/map-workspaces@^3.0.2": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" -"@solana/codecs@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" - integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== +"@npmcli/metavuln-calculator@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz#426b3e524c2008bcc82dbc2ef390aefedd643d76" + integrity sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q== dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-data-structures" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/codecs-strings" "2.0.0-preview.2" - "@solana/options" "2.0.0-preview.2" + cacache "^17.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^15.0.0" + semver "^7.3.5" -"@solana/errors@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" - integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: - chalk "^5.3.0" - commander "^12.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" -"@solana/options@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" - integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + +"@npmcli/node-gyp@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== + +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-3.1.1.tgz#5628332aac90fa1b4d6f98e03988c5958b35e0c5" + integrity sha512-+UW0UWOYFKCkvszLoTwrYGrjNrT8tI5Ckeb/h+Z1y1fsNJEctl7HmerA5j2FgmoqFaLI2gsA1X9KgMFqx/bRmA== dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" + "@npmcli/git" "^4.1.0" + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.1" + proc-log "^3.0.0" -"@solana/spl-token-group@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz#4f45d9526c96a33b9a1929a264d0aa21c7e38a2d" - integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== +"@npmcli/promise-spawn@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== dependencies: - "@solana/codecs" "2.0.0-preview.2" - "@solana/spl-type-length-value" "0.1.0" + infer-owner "^1.0.4" -"@solana/spl-token-metadata@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz#5cdc3b857a8c4a6877df24e24a8648c4132d22ba" - integrity sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ== +"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" + integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== dependencies: - "@solana/codecs" "2.0.0-preview.2" - "@solana/spl-type-length-value" "0.1.0" + which "^3.0.0" -"@solana/spl-token@^0.4.6": - version "0.4.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.6.tgz#eb44e5080ea7b6fc976abcb39457223211bd9076" - integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== +"@npmcli/query@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/run-script@4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" + integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + +"@npmcli/run-script@^6.0.0": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" + integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^3.0.0" + +"@nrwl/cli@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.9.7.tgz#1db113f5cb1cfe63213097be1ece041eef33da1f" + integrity sha512-1jtHBDuJzA57My5nLzYiM372mJW0NY6rFKxlWt5a0RLsAZdPTHsd8lE3Gs9XinGC1jhXbruWmhhnKyYtZvX/zA== + dependencies: + nx "15.9.7" + +"@nrwl/devkit@>=15.5.2 < 16": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.9.7.tgz#14d19ec82ff4209c12147a97f1cdea05d8f6c087" + integrity sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg== + dependencies: + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.5.4" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nrwl/nx-darwin-arm64@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.7.tgz#a2cb7390c782b8acf3bb8806a3002620226a933d" + integrity sha512-aBUgnhlkrgC0vu0fK6eb9Vob7eFnkuknrK+YzTjmLrrZwj7FGNAeyGXSlyo1dVokIzjVKjJg2saZZ0WQbfuCJw== + +"@nrwl/nx-darwin-x64@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.7.tgz#af0437e726aeb97eb660646bfd9a7da5ba7a0a6f" + integrity sha512-L+elVa34jhGf1cmn38Z0sotQatmLovxoASCIw5r1CBZZeJ5Tg7Y9nOwjRiDixZxNN56hPKXm6xl9EKlVHVeKlg== + +"@nrwl/nx-linux-arm-gnueabihf@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.7.tgz#e29f4d31afa903bfb4d0fd7421e19be1086eae87" + integrity sha512-pqmfqqEUGFu6PmmHKyXyUw1Al0Ki8PSaR0+ndgCAb1qrekVDGDfznJfaqxN0JSLeolPD6+PFtLyXNr9ZyPFlFg== + +"@nrwl/nx-linux-arm64-gnu@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.7.tgz#eb2880a24d3268dd93583d21a6a0b9ff96bb23b4" + integrity sha512-NYOa/eRrqmM+In5g3M0rrPVIS9Z+q6fvwXJYf/KrjOHqqan/KL+2TOfroA30UhcBrwghZvib7O++7gZ2hzwOnA== + +"@nrwl/nx-linux-arm64-musl@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.7.tgz#5d04913c4672a96cefa78491824620d8a8bcfd7f" + integrity sha512-zyStqjEcmbvLbejdTOrLUSEdhnxNtdQXlmOuymznCzYUEGRv+4f7OAepD3yRoR0a/57SSORZmmGQB7XHZoYZJA== + +"@nrwl/nx-linux-x64-gnu@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.7.tgz#cf7f61fd87f35a793e6824952a6eb12242fe43fd" + integrity sha512-saNK5i2A8pKO3Il+Ejk/KStTApUpWgCxjeUz9G+T8A+QHeDloZYH2c7pU/P3jA9QoNeKwjVO9wYQllPL9loeVg== + +"@nrwl/nx-linux-x64-musl@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.7.tgz#2bec23c3696780540eb47fa1358dda780c84697f" + integrity sha512-extIUThYN94m4Vj4iZggt6hhMZWQSukBCo8pp91JHnDcryBg7SnYmnikwtY1ZAFyyRiNFBLCKNIDFGkKkSrZ9Q== + +"@nrwl/nx-win32-arm64-msvc@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.7.tgz#21b56ef3ab4190370effea71bd83fdc3e47ec69c" + integrity sha512-GSQ54hJ5AAnKZb4KP4cmBnJ1oC4ILxnrG1mekxeM65c1RtWg9NpBwZ8E0gU3xNrTv8ZNsBeKi/9UhXBxhsIh8A== + +"@nrwl/nx-win32-x64-msvc@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.7.tgz#1677ab1dcce921706b5677dc2844e3e0027f8bd5" + integrity sha512-x6URof79RPd8AlapVbPefUD3ynJZpmah3tYaYZ9xZRMXojVtEHV8Qh5vysKXQ1rNYJiiB8Ah6evSKWLbAH60tw== + +"@nrwl/tao@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.9.7.tgz#c0e78c99caa6742762f7558f20d8524bc9015e97" + integrity sha512-OBnHNvQf3vBH0qh9YnvBQQWyyFZ+PWguF6dJ8+1vyQYlrLVk/XZ8nJ4ukWFb+QfPv/O8VBmqaofaOI9aFC4yTw== + dependencies: + nx "15.9.7" + +"@octokit/auth-token@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" + integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== + +"@octokit/core@^4.0.0": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" + integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^7.0.0": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" + integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== + dependencies: + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^5.0.0": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== + dependencies: + "@octokit/request" "^6.0.0" + "@octokit/types" "^9.0.0" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + +"@octokit/openapi-types@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" + integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== + +"@octokit/openapi-types@^18.0.0": + version "18.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" + integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== + +"@octokit/plugin-enterprise-rest@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + +"@octokit/plugin-paginate-rest@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" + integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.4" - "@solana/spl-token-metadata" "^0.1.4" - buffer "^6.0.3" + "@octokit/types" "^6.41.0" -"@solana/spl-type-length-value@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" - integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-rest-endpoint-methods@^6.0.0": + version "6.8.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1" + integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg== dependencies: - buffer "^6.0.3" + "@octokit/types" "^8.1.1" + deprecation "^2.3.1" -"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.68.0": - version "1.93.0" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.93.0.tgz#4b6975020993cec2f6626e4f2bf559ca042df8db" - integrity sha512-suf4VYwWxERz4tKoPpXCRHFRNst7jmcFUaD65kII+zg9urpy5PeeqgLV6G5eWGzcVzA9tZeXOju1A1Y+0ojEVw== +"@octokit/request-error@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== + dependencies: + "@octokit/types" "^9.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^6.0.0": + version "6.2.8" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" + integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== + dependencies: + "@octokit/endpoint" "^7.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + +"@octokit/rest@19.0.3": + version "19.0.3" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" + integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== dependencies: - "@babel/runtime" "^7.24.7" - "@noble/curves" "^1.4.0" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.0" - bigint-buffer "^1.1.5" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.0" - node-fetch "^2.7.0" - rpc-websockets "^9.0.0" - superstruct "^1.0.4" + "@octokit/core" "^4.0.0" + "@octokit/plugin-paginate-rest" "^3.0.0" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^6.0.0" -"@swc/helpers@^0.5.11": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" - integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== +"@octokit/types@^6.41.0": + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: - tslib "^2.4.0" + "@octokit/openapi-types" "^12.11.0" -"@types/bn.js@^5.1.0": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" - integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== +"@octokit/types@^8.1.1": + version "8.2.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" + integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw== dependencies: - "@types/node" "*" + "@octokit/openapi-types" "^14.0.0" -"@types/chai@^4.3.0": - version "4.3.16" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" - integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== +"@octokit/types@^9.0.0": + version "9.3.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" + integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== + dependencies: + "@octokit/openapi-types" "^18.0.0" -"@types/connect@^3.4.33": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== +"@parcel/watcher@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== dependencies: - "@types/node" "*" + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" -"@types/conventional-commits-parser@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#8c9d23e0b415b24b91626d07017303755d542dc8" - integrity sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ== +"@perma/map@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@perma/map/-/map-1.0.3.tgz#c80021c9626276298c69a44dec6a4e041bbd47f3" + integrity sha512-Bf5njk0fnJGTFE2ETntq0N1oJ6YdCPIpTDn3R3KYZJQdeYSOCNL7mBrFlGnbqav8YQhJA/p81pvHINX9vAtHkQ== dependencies: - "@types/node" "*" + "@multiformats/murmur3" "^2.1.0" + murmurhash3js-revisited "^3.0.0" -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@scure/base@~1.1.8": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + +"@scure/bip39@^1.2.1": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6" + integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw== + dependencies: + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.8" + +"@sigstore/bundle@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" + integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + +"@sigstore/protobuf-specs@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== + +"@sigstore/sign@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" + integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + make-fetch-happen "^11.0.1" + +"@sigstore/tuf@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" + integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + tuf-js "^1.1.7" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@smithy/abort-controller@^2.0.1", "@smithy/abort-controller@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-2.2.0.tgz#18983401a5e2154b5c94057730024a7d14cbcd35" + integrity sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader-native@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.2.0.tgz#aff8bddf9fdc1052f885e1b15aa81e4d274e541e" + integrity sha512-VNB5+1oCgX3Fzs072yuRsUoC2N4Zg/LJ11DTxX3+Qu+Paa6AmbIF0E9sc2wthz9Psrk/zcOlTCyuposlIhPjZQ== + dependencies: + "@smithy/util-base64" "^2.3.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.2.0.tgz#192c1787bf3f4f87e2763803425f418e6e613e09" + integrity sha512-3GJNvRwXBGdkDZZOGiziVYzDpn4j6zfyULHMDKAGIUo72yHALpE9CbhfQp/XcLNVoc1byfMpn6uW5H2BqPjgaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^2.0.21", "@smithy/config-resolver@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-2.2.0.tgz#54f40478bb61709b396960a3535866dba5422757" + integrity sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA== + dependencies: + "@smithy/node-config-provider" "^2.3.0" + "@smithy/types" "^2.12.0" + "@smithy/util-config-provider" "^2.3.0" + "@smithy/util-middleware" "^2.2.0" + tslib "^2.6.2" + +"@smithy/core@^1.2.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-1.4.2.tgz#1c3ed886d403041ce5bd2d816448420c57baa19c" + integrity sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA== + dependencies: + "@smithy/middleware-endpoint" "^2.5.1" + "@smithy/middleware-retry" "^2.3.1" + "@smithy/middleware-serde" "^2.3.0" + "@smithy/protocol-http" "^3.3.0" + "@smithy/smithy-client" "^2.5.1" + "@smithy/types" "^2.12.0" + "@smithy/util-middleware" "^2.2.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^2.0.0", "@smithy/credential-provider-imds@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz#326ce401b82e53f3c7ee4862a066136959a06166" + integrity sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w== + dependencies: + "@smithy/node-config-provider" "^2.3.0" + "@smithy/property-provider" "^2.2.0" + "@smithy/types" "^2.12.0" + "@smithy/url-parser" "^2.2.0" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz#63d74fa817188995eb55e792a38060b0ede98dc4" + integrity sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^2.12.0" + "@smithy/util-hex-encoding" "^2.2.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^2.0.15": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.2.0.tgz#69c93cc0210f04caeb0770856ef88c9a82564e11" + integrity sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw== + dependencies: + "@smithy/eventstream-serde-universal" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^2.0.15": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.2.0.tgz#23c8698ce594a128bcc556153efb7fecf6d04f87" + integrity sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-node@^2.0.15": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.2.0.tgz#b82870a838b1bd32ad6e0cf33a520191a325508e" + integrity sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA== + dependencies: + "@smithy/eventstream-serde-universal" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.2.0.tgz#a75e330040d5e2ca2ac0d8bccde3e390ac5afd38" + integrity sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA== + dependencies: + "@smithy/eventstream-codec" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^2.3.1", "@smithy/fetch-http-handler@^2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz#0b8e1562807fdf91fe7dd5cde620d7a03ddc10ac" + integrity sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw== + dependencies: + "@smithy/protocol-http" "^3.3.0" + "@smithy/querystring-builder" "^2.2.0" + "@smithy/types" "^2.12.0" + "@smithy/util-base64" "^2.3.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^2.0.16": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-2.2.0.tgz#d26db0e88b8fc4b59ee487bd026363ea9b48cf3a" + integrity sha512-SGPoVH8mdXBqrkVCJ1Hd1X7vh1zDXojNN1yZyZTZsCno99hVue9+IYzWDjq/EQDDXxmITB0gBmuyPh8oAZSTcg== + dependencies: + "@smithy/chunked-blob-reader" "^2.2.0" + "@smithy/chunked-blob-reader-native" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/hash-node@^2.0.17": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-2.2.0.tgz#df29e1e64811be905cb3577703b0e2d0b07fc5cc" + integrity sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g== + dependencies: + "@smithy/types" "^2.12.0" + "@smithy/util-buffer-from" "^2.2.0" + "@smithy/util-utf8" "^2.3.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^2.0.17": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-2.2.0.tgz#7b341fdc89851af6b98d8c01e47185caf0a4b2d9" + integrity sha512-aT+HCATOSRMGpPI7bi7NSsTNVZE/La9IaxLXWoVAYMxHT5hGO3ZOGEMZQg8A6nNL+pdFGtZQtND1eoY084HgHQ== + dependencies: + "@smithy/types" "^2.12.0" + "@smithy/util-utf8" "^2.3.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^2.0.15": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz#ee3d8980022cb5edb514ac187d159b3e773640f0" + integrity sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.0.0", "@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@^2.0.17": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-2.2.0.tgz#033c4c89fe0cbb3f7e99cca3b7b63a2824c98c6d" + integrity sha512-M26XTtt9IIusVMOWEAhIvFIr9jYj4ISPPGJROqw6vXngO3IYJCnVVSMFn4Tx1rUTG5BiKJNg9u2nxmBiZC5IlQ== + dependencies: + "@smithy/types" "^2.12.0" + "@smithy/util-utf8" "^2.3.0" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^2.0.17": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz#a82e97bd83d8deab69e07fea4512563bedb9461a" + integrity sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ== + dependencies: + "@smithy/protocol-http" "^3.3.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^2.2.3", "@smithy/middleware-endpoint@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz#1333c58304aff4d843e8ef4b85c8cb88975dd5ad" + integrity sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ== + dependencies: + "@smithy/middleware-serde" "^2.3.0" + "@smithy/node-config-provider" "^2.3.0" + "@smithy/shared-ini-file-loader" "^2.4.0" + "@smithy/types" "^2.12.0" + "@smithy/url-parser" "^2.2.0" + "@smithy/util-middleware" "^2.2.0" + tslib "^2.6.2" + +"@smithy/middleware-retry@^2.0.24", "@smithy/middleware-retry@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz#d6fdce94f2f826642c01b4448e97a509c4556ede" + integrity sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA== + dependencies: + "@smithy/node-config-provider" "^2.3.0" + "@smithy/protocol-http" "^3.3.0" + "@smithy/service-error-classification" "^2.1.5" + "@smithy/smithy-client" "^2.5.1" + "@smithy/types" "^2.12.0" + "@smithy/util-middleware" "^2.2.0" + "@smithy/util-retry" "^2.2.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@smithy/middleware-serde@^2.0.15", "@smithy/middleware-serde@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz#a7615ba646a88b6f695f2d55de13d8158181dd13" + integrity sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/middleware-stack@^2.0.9", "@smithy/middleware-stack@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz#3fb49eae6313f16f6f30fdaf28e11a7321f34d9f" + integrity sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/node-config-provider@^2.1.8", "@smithy/node-config-provider@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz#9fac0c94a14c5b5b8b8fa37f20c310a844ab9922" + integrity sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg== + dependencies: + "@smithy/property-provider" "^2.2.0" + "@smithy/shared-ini-file-loader" "^2.4.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/node-http-handler@^2.2.1", "@smithy/node-http-handler@^2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz#7b5e0565dd23d340380489bd5fe4316d2bed32de" + integrity sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA== + dependencies: + "@smithy/abort-controller" "^2.2.0" + "@smithy/protocol-http" "^3.3.0" + "@smithy/querystring-builder" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/property-provider@^2.0.0", "@smithy/property-provider@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-2.2.0.tgz#37e3525a3fa3e11749f86a4f89f0fd7765a6edb0" + integrity sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/protocol-http@^3.0.11", "@smithy/protocol-http@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-3.3.0.tgz#a37df7b4bb4960cdda560ce49acfd64c455e4090" + integrity sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/querystring-builder@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz#22937e19fcd0aaa1a3e614ef8cb6f8e86756a4ef" + integrity sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A== + dependencies: + "@smithy/types" "^2.12.0" + "@smithy/util-uri-escape" "^2.2.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz#24a5633f4b3806ff2888d4c2f4169e105fdffd79" + integrity sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/service-error-classification@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz#0568a977cc0db36299d8703a5d8609c1f600c005" + integrity sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ== + dependencies: + "@smithy/types" "^2.12.0" + +"@smithy/shared-ini-file-loader@^2.0.6", "@smithy/shared-ini-file-loader@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz#1636d6eb9bff41e36ac9c60364a37fd2ffcb9947" + integrity sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/signature-v4@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-2.3.0.tgz#c30dd4028ae50c607db99459981cce8cdab7a3fd" + integrity sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + "@smithy/types" "^2.12.0" + "@smithy/util-hex-encoding" "^2.2.0" + "@smithy/util-middleware" "^2.2.0" + "@smithy/util-uri-escape" "^2.2.0" + "@smithy/util-utf8" "^2.3.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^2.1.18", "@smithy/smithy-client@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-2.5.1.tgz#0fd2efff09dc65500d260e590f7541f8a387eae3" + integrity sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ== + dependencies: + "@smithy/middleware-endpoint" "^2.5.1" + "@smithy/middleware-stack" "^2.2.0" + "@smithy/protocol-http" "^3.3.0" + "@smithy/types" "^2.12.0" + "@smithy/util-stream" "^2.2.0" + tslib "^2.6.2" + +"@smithy/types@^2.12.0", "@smithy/types@^2.7.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.12.0.tgz#c44845f8ba07e5e8c88eda5aed7e6a0c462da041" + integrity sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw== + dependencies: + tslib "^2.6.2" + +"@smithy/types@^3.5.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.6.0.tgz#03a52bfd62ee4b7b2a1842c8ae3ada7a0a5ff3a4" + integrity sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^2.0.15", "@smithy/url-parser@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-2.2.0.tgz#6fcda6116391a4f61fef5580eb540e128359b3c0" + integrity sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ== + dependencies: + "@smithy/querystring-parser" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/util-base64@^2.0.1", "@smithy/util-base64@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-2.3.0.tgz#312dbb4d73fb94249c7261aee52de4195c2dd8e2" + integrity sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + "@smithy/util-utf8" "^2.3.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^2.0.1": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz#25620645c6b62b42594ef4a93b66e6ab70e27d2c" + integrity sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz#d065a9b5e305ff899536777bbfe075cdc980136f" + integrity sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^2.0.0", "@smithy/util-config-provider@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz#bc79f99562d12a1f8423100ca662a6fb07cde943" + integrity sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^2.0.22": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz#9db31416daf575d2963c502e0528cfe8055f0c4e" + integrity sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw== + dependencies: + "@smithy/property-provider" "^2.2.0" + "@smithy/smithy-client" "^2.5.1" + "@smithy/types" "^2.12.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^2.0.29": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz#4613210a3d107aadb3f85bd80cb71c796dd8bf0a" + integrity sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA== + dependencies: + "@smithy/config-resolver" "^2.2.0" + "@smithy/credential-provider-imds" "^2.3.0" + "@smithy/node-config-provider" "^2.3.0" + "@smithy/property-provider" "^2.2.0" + "@smithy/smithy-client" "^2.5.1" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/util-endpoints@^1.0.7": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz#b8b805f47e8044c158372f69b88337703117665d" + integrity sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ== + dependencies: + "@smithy/node-config-provider" "^2.3.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz#87edb7c88c2f422cfca4bb21f1394ae9602c5085" + integrity sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^2.0.8", "@smithy/util-middleware@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-2.2.0.tgz#80cfad40f6cca9ffe42a5899b5cb6abd53a50006" + integrity sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw== + dependencies: + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/util-retry@^2.0.8", "@smithy/util-retry@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-2.2.0.tgz#e8e019537ab47ba6b2e87e723ec51ee223422d85" + integrity sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g== + dependencies: + "@smithy/service-error-classification" "^2.1.5" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@smithy/util-stream@^2.0.23", "@smithy/util-stream@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-2.2.0.tgz#b1279e417992a0f74afa78d7501658f174ed7370" + integrity sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA== + dependencies: + "@smithy/fetch-http-handler" "^2.5.0" + "@smithy/node-http-handler" "^2.5.0" + "@smithy/types" "^2.12.0" + "@smithy/util-base64" "^2.3.0" + "@smithy/util-buffer-from" "^2.2.0" + "@smithy/util-hex-encoding" "^2.2.0" + "@smithy/util-utf8" "^2.3.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz#56f5764051a33b67bc93fdd2a869f971b0635406" + integrity sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^2.0.2", "@smithy/util-utf8@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^2.0.15": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-2.2.0.tgz#d11baf50637bfaadb9641d6ca1619da413dd2612" + integrity sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA== + dependencies: + "@smithy/abort-controller" "^2.2.0" + "@smithy/types" "^2.12.0" + tslib "^2.6.2" + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz" + integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== + dependencies: + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-core@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" + integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== + dependencies: + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-data-structures@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz" + integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-data-structures@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz#d47b2363d99fb3d643f5677c97d64a812982b888" + integrity sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-numbers@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz" + integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-numbers@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" + integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-strings@2.0.0-preview.2", "@solana/codecs-strings@tp2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz" + integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-strings@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" + integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz" + integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-data-structures" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/codecs-strings" "2.0.0-preview.2" + "@solana/options" "2.0.0-preview.2" + +"@solana/codecs@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" + integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/options" "2.0.0-rc.1" + +"@solana/errors@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz" + integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== + dependencies: + chalk "^5.3.0" + commander "^12.0.0" + +"@solana/errors@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-rc.1.tgz#3882120886eab98a37a595b85f81558861b29d62" + integrity sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/options@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz" + integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + +"@solana/options@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" + integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/spl-token-group@^0.0.4": + version "0.0.4" + resolved "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz" + integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== + dependencies: + "@solana/codecs" "2.0.0-preview.2" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token-metadata@^0.1.2": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" + integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token-metadata@^0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz" + integrity sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ== + dependencies: + "@solana/codecs" "2.0.0-preview.2" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token@^0.4.6": + version "0.4.6" + resolved "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz" + integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.4" + "@solana/spl-token-metadata" "^0.1.4" + buffer "^6.0.3" + +"@solana/spl-type-length-value@0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz" + integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== + dependencies: + buffer "^6.0.3" + +"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.68.0": + version "1.93.0" + resolved "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.93.0.tgz" + integrity sha512-suf4VYwWxERz4tKoPpXCRHFRNst7jmcFUaD65kII+zg9urpy5PeeqgLV6G5eWGzcVzA9tZeXOju1A1Y+0ojEVw== + dependencies: + "@babel/runtime" "^7.24.7" + "@noble/curves" "^1.4.0" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.0" + node-fetch "^2.7.0" + rpc-websockets "^9.0.0" + superstruct "^1.0.4" + +"@solana/web3.js@^1.95.3": + version "1.95.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.4.tgz#771603f60d75cf7556ad867e1fd2efae32f9ad09" + integrity sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@storacha/one-webcrypto@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@storacha/one-webcrypto/-/one-webcrypto-1.0.1.tgz#4465090c2cf27e110d6490c84e52c298a3057e6f" + integrity sha512-bD+vWmcgsEBqU0Dz04BR43SA03bBoLTAY29vaKasY9Oe8cb6XIP0/vkm0OS2UwKC13c8uRgFW4rjJUgDCNLejQ== + +"@swc/helpers@^0.5.11": + version "0.5.11" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz" + integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== + dependencies: + tslib "^2.4.0" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@tufjs/canonical-json@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" + integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== + +"@tufjs/models@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" + integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== + dependencies: + "@tufjs/canonical-json" "1.0.0" + minimatch "^9.0.0" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.5": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== + dependencies: + "@types/node" "*" + +"@types/chai@^4.3.0": + version "4.3.16" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz" + integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/conventional-commits-parser@^5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" + integrity sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ== + dependencies: + "@types/node" "*" + +"@types/dns-packet@^5.6.5": + version "5.6.5" + resolved "https://registry.yarnpkg.com/@types/dns-packet/-/dns-packet-5.6.5.tgz#49fc29a40f5d30227ed028fa1ee82601d3745e15" + integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== + dependencies: + "@types/node" "*" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + "@types/mocha@^9.0.0": version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== -"@types/node@*": +"@types/node@*", "@types/node@^20.14.2": version "20.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + resolved "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz" integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== dependencies: undici-types "~5.26.4" +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/node@>=13.7.0": + version "22.8.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.8.4.tgz#ab754f7ac52e1fe74174f761c5b03acaf06da0dc" + integrity sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw== + dependencies: + undici-types "~6.19.8" + +"@types/node@>=8.0.0 <15": + version "14.18.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" + integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== + "@types/node@^12.12.54": version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/normalize-package-data@^2.4.3": +"@types/node@^18.0.0": + version "18.19.61" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.61.tgz#f31be6f643e2e628fffcca359fe59f214bb77923" + integrity sha512-z8fH66NcVkDzBItOao+Nyh0fiy7CYdxIyxnNCcZ60aY0I+EA/y4TSi/S/W9i8DIQvwVo7a0pgzAxmDeNnqrpkw== + dependencies: + undici-types "~5.26.4" + +"@types/node@^22.9.0": + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== + dependencies: + undici-types "~6.19.8" + +"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.3": version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/retry@0.12.1": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + "@types/semver@^7.5.5": version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + "@types/uuid@^8.3.4": version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== +"@types/w3c-web-usb@^1.0.6": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz#cf89cccd2d93b6245e784c19afe0a9f5038d4528" + integrity sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ== + "@types/ws@^7.4.4": version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + resolved "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz" integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== dependencies: "@types/node" "*" "@types/ws@^8.2.2": version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" +"@ucanto/client@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@ucanto/client/-/client-9.0.1.tgz#ecff79d4f1f56915db11cb6be083764b612afe2b" + integrity sha512-cV8w3AnaZaYCdUmyFFICj8YhFckDoy2DvWgAzGDMkPz0WbUW4lw9Tjm4hEE8x5kiP47wYej/pHKWCcoELiU0qw== + dependencies: + "@ucanto/core" "^10.0.0" + "@ucanto/interface" "^10.0.0" + +"@ucanto/core@^10.0.0", "@ucanto/core@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@ucanto/core/-/core-10.0.1.tgz#3df9c875742e8c38461d628878a94b4a1c8a3b4f" + integrity sha512-1BfUaJu0/c9Rl/WdZSDbScJJLsPsPe1g4ynl5kubUj3xDD/lyp/Q12PQVQ2X7hDiWwkpwmxCkRMkOxwc70iNKQ== + dependencies: + "@ipld/car" "^5.1.0" + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-ucan" "^3.4.0" + "@ucanto/interface" "^10.0.1" + multiformats "^11.0.2" + +"@ucanto/interface@^10.0.0", "@ucanto/interface@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@ucanto/interface/-/interface-10.0.1.tgz#939f62237e8b0c1cf0e7f7f2c4753fe3bbfc505b" + integrity sha512-+Vr/N4mLsdynV9/bqtdFiq7WsUf3265/Qx2aHJmPtXo9/QvWKthJtpe0g8U4NWkWpVfqIFvyAO2db6D9zWQfQw== + dependencies: + "@ipld/dag-ucan" "^3.4.0" + multiformats "^11.0.2" + +"@ucanto/principal@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@ucanto/principal/-/principal-9.0.1.tgz#2f05b70ed16ec7fe2d45b463b6bd53b7a18ba28e" + integrity sha512-8eAvaZHW1vyET4X90rkJv6pmW1IOdEYlZYwO3wDgTkC5m9VytBEywCvpzP57cavdYIbbPse5QS9nMEGvk87zhw== + dependencies: + "@ipld/dag-ucan" "^3.4.0" + "@noble/curves" "^1.2.0" + "@noble/ed25519" "^1.7.3" + "@noble/hashes" "^1.3.2" + "@ucanto/interface" "^10.0.0" + multiformats "^11.0.2" + one-webcrypto "^1.0.3" + +"@ucanto/transport@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@ucanto/transport/-/transport-9.1.1.tgz#05f1246982a46365d051242d750948e07be29376" + integrity sha512-3CR17nEemOVaTuMZa6waWgVL4sLxSPcxYvpaNeJ6NZo1rfsqdyRXOtbVV/RcI2BtUL0Cao6JM6P9+gdghfc5ng== + dependencies: + "@ucanto/core" "^10.0.0" + "@ucanto/interface" "^10.0.0" + +"@ucanto/validator@^9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@ucanto/validator/-/validator-9.0.2.tgz#38cf0bf16ecf6aefd7c745d7a313c70c408e9c03" + integrity sha512-LxhRbDMIoLt9LYHq/Rz1WCEH8AtmdsBTS/it28Ij/A3W0zyoSwUpAUxBtXaKRh/gpbxdWmjxX+nVfFJYL//b4g== + dependencies: + "@ipld/car" "^5.1.0" + "@ipld/dag-cbor" "^9.0.0" + "@ucanto/core" "^10.0.0" + "@ucanto/interface" "^10.0.0" + multiformats "^11.0.2" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -JSONStream@^1.3.5: +"@vascosantos/moving-average@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@vascosantos/moving-average/-/moving-average-1.1.0.tgz#8d5793b09b2d6021ba5e620c6a0f876c20db7eaa" + integrity sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w== + +"@web3-storage/access@^20.1.0": + version "20.1.0" + resolved "https://registry.yarnpkg.com/@web3-storage/access/-/access-20.1.0.tgz#15886a8cc27638523683c542c49dbe8baa24bfef" + integrity sha512-IY6ICPRWE8++2jxvy+LzAiFvwAOIHR8cu9eNt+VT5sAFE796o4ma7GSU0eXRCiShmV2n6iSWAwWRT6XD5zIqPA== + dependencies: + "@ipld/car" "^5.1.1" + "@ipld/dag-ucan" "^3.4.0" + "@scure/bip39" "^1.2.1" + "@storacha/one-webcrypto" "^1.0.1" + "@ucanto/client" "^9.0.1" + "@ucanto/core" "^10.0.1" + "@ucanto/interface" "^10.0.1" + "@ucanto/principal" "^9.0.1" + "@ucanto/transport" "^9.1.1" + "@ucanto/validator" "^9.0.2" + "@web3-storage/capabilities" "^17.3.0" + "@web3-storage/did-mailto" "^2.1.0" + bigint-mod-arith "^3.1.2" + conf "11.0.2" + multiformats "^12.1.2" + p-defer "^4.0.0" + type-fest "^4.9.0" + uint8arrays "^4.0.6" + +"@web3-storage/blob-index@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@web3-storage/blob-index/-/blob-index-1.0.4.tgz#ac967d255eafcc032d0b0002598ee1d1e54afefc" + integrity sha512-04+PrmVHFT+xzRhyIPdcvGc8Y2NDffUe8R1gJOyErVzEVz5N1I9Q/BrlFHYt/A4HrjM5JBsxqSrZgTIkjfPmLA== + dependencies: + "@ipld/dag-cbor" "^9.0.6" + "@storacha/one-webcrypto" "^1.0.1" + "@ucanto/core" "^10.0.1" + "@ucanto/interface" "^10.0.1" + "@web3-storage/capabilities" "^17.2.0" + carstream "^2.1.0" + multiformats "^13.0.1" + uint8arrays "^5.0.3" + +"@web3-storage/capabilities@^17.2.0", "@web3-storage/capabilities@^17.3.0", "@web3-storage/capabilities@^17.4.0": + version "17.4.1" + resolved "https://registry.yarnpkg.com/@web3-storage/capabilities/-/capabilities-17.4.1.tgz#df1294bb3adfeb2c3b8e146bb6641af69e7403d9" + integrity sha512-GogLfON8PZabi03CUyncBvMcCi36yQ/0iR5P8kr4pxdnZm7OuAn4sEwbEB8rTKbah5V10Vwgb3O5dh0FBgyjHg== + dependencies: + "@ucanto/core" "^10.0.1" + "@ucanto/interface" "^10.0.1" + "@ucanto/principal" "^9.0.1" + "@ucanto/transport" "^9.1.1" + "@ucanto/validator" "^9.0.2" + "@web3-storage/data-segment" "^5.2.0" + uint8arrays "^5.0.3" + +"@web3-storage/data-segment@^5.1.0", "@web3-storage/data-segment@^5.2.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@web3-storage/data-segment/-/data-segment-5.3.0.tgz#d0ca9ff39c913d4cd30eb1bcf08ecec791059caf" + integrity sha512-zFJ4m+pEKqtKatJNsFrk/2lHeFSbkXZ6KKXjBe7/2ayA9wAar7T/unewnOcZrrZTnCWmaxKsXWqdMFy9bXK9dw== + dependencies: + "@ipld/dag-cbor" "^9.2.1" + multiformats "^13.3.0" + sync-multihash-sha2 "^1.0.0" + +"@web3-storage/did-mailto@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@web3-storage/did-mailto/-/did-mailto-2.1.0.tgz#4ba7bd52772e48181d78ece0bdc27728857e919e" + integrity sha512-TRmfSXj1IhtX3ESurSNOylZSBKi0z/VJNoMLpof+AVRdovgZjjocpiePQTs2pfHKqHTHfJXc9AboWyK4IKTWMw== + +"@web3-storage/filecoin-client@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@web3-storage/filecoin-client/-/filecoin-client-3.3.4.tgz#f91b70bc17f5434b6fc828f1f26d9ee3d7bb2d3e" + integrity sha512-T2xur1NPvuH09yajyjCWEl7MBH712nqHERj51w4nDp6f8libMCKY6lca0frCrm4OC5s8oy0ZtoRFhsRYxgTzSg== + dependencies: + "@ipld/dag-ucan" "^3.4.0" + "@ucanto/client" "^9.0.1" + "@ucanto/core" "^10.0.1" + "@ucanto/interface" "^10.0.1" + "@ucanto/transport" "^9.1.1" + "@web3-storage/capabilities" "^17.3.0" + +"@web3-storage/upload-client@^17.1.0": + version "17.1.0" + resolved "https://registry.yarnpkg.com/@web3-storage/upload-client/-/upload-client-17.1.0.tgz#6a46255da49203a5dd8527c451878628b9d4c671" + integrity sha512-0tUMe4Ez9gmUZjgn1Nrl6HYdGEsYyeLa6JrpoXcCGTQDBW2FehALc+GZZeoIjYQexRpw+qt9JstuJNN9dUNETw== + dependencies: + "@ipld/car" "^5.2.2" + "@ipld/dag-cbor" "^9.0.6" + "@ipld/dag-ucan" "^3.4.0" + "@ipld/unixfs" "^2.1.1" + "@ucanto/client" "^9.0.1" + "@ucanto/core" "^10.0.1" + "@ucanto/interface" "^10.0.1" + "@ucanto/transport" "^9.1.1" + "@web3-storage/blob-index" "^1.0.4" + "@web3-storage/capabilities" "^17.4.0" + "@web3-storage/data-segment" "^5.1.0" + "@web3-storage/filecoin-client" "^3.3.4" + ipfs-utils "^9.0.14" + multiformats "^12.1.2" + p-retry "^5.1.2" + varint "^6.0.0" + +"@web3-storage/w3up-client@^16.4.1": + version "16.4.1" + resolved "https://registry.yarnpkg.com/@web3-storage/w3up-client/-/w3up-client-16.4.1.tgz#0f7515abc05a25328d99d53ff1c1cf8228749657" + integrity sha512-SWdGeQqfdBwFeSNQ7wWNt5xpQ4/hxR4ZwhZqGgfWj6+s2u0eLK3muKdVT6uAg7Q8Rs5PdHmyIgDC6KLbZeJ9mw== + dependencies: + "@ipld/dag-ucan" "^3.4.0" + "@ucanto/client" "^9.0.1" + "@ucanto/core" "^10.0.1" + "@ucanto/interface" "^10.0.1" + "@ucanto/principal" "^9.0.1" + "@ucanto/transport" "^9.1.1" + "@web3-storage/access" "^20.1.0" + "@web3-storage/blob-index" "^1.0.4" + "@web3-storage/capabilities" "^17.4.0" + "@web3-storage/did-mailto" "^2.1.0" + "@web3-storage/filecoin-client" "^3.3.4" + "@web3-storage/upload-client" "^17.1.0" + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@3.0.0-rc.46": + version "3.0.0-rc.46" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz#03f8363111efc0ea670e53b0282cd3ef62de4e01" + integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + +JSONStream@^1.0.4, JSONStream@^1.3.5: version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -600,24 +3441,134 @@ JSONStream@^1.3.5: a-sync-waterfall@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" + resolved "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortable-iterator@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/abortable-iterator/-/abortable-iterator-5.1.0.tgz#2bdd7e3a1b3fe2e6893f1b60502b0e6a3028a792" + integrity sha512-a3nRG0GOGw3IPFA2hdhrZU+QuD3mA6i+5f4YM/Obe+D5lYccxScI32rAIHAW5ttFV7+beiof09gHav4qUEZDwg== + dependencies: + get-iterator "^2.0.0" + it-stream-types "^2.0.1" + +abortcontroller-polyfill@^1.4.0: + version "1.7.6" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.6.tgz#7be8d35b5ed7dfa1a51b36f221720b23deb13f36" + integrity sha512-Zypm+LjYdWAzvuypZvDN0smUJrhOurcuBWhhMRBExqVLRvdjp3Z9mASxKyq19K+meZMshwjjy5S0lkm388zE4Q== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +actor@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/actor/-/actor-2.3.1.tgz#80ce158bb41338a0c38863bddf0947c1850b6e20" + integrity sha512-ST/3wnvcP2tKDXnum7nLCLXm+/rsf8vPocXH2Fre6D8FQwNkGDd4JEitBlXj007VQJfiGYRQvXqwOBZVi+JtRg== + add-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== -agentkeepalive@^4.5.0: +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: humanize-ms "^1.2.1" +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +airtable@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/airtable/-/airtable-0.12.2.tgz#e53e66db86744f9bc684faa58881d6c9c12f0e6f" + integrity sha512-HS3VytUBTKj8A0vPl7DDr5p/w3IOGv6RXL0fv7eczOWAtj9Xe8ri4TAiZRXoOyo+Z/COADCj+oARFenbxhmkIg== + dependencies: + "@types/node" ">=8.0.0 <15" + abort-controller "^3.0.0" + abortcontroller-polyfill "^1.4.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.12.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ajv@^8.11.0: version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== dependencies: fast-deep-equal "^3.1.3" @@ -627,176 +3578,521 @@ ajv@^8.11.0: anchor-bankrun@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/anchor-bankrun/-/anchor-bankrun-0.3.0.tgz#3789fcecbc201a2334cff228b99cc0da8ef0167e" + resolved "https://registry.npmjs.org/anchor-bankrun/-/anchor-bankrun-0.3.0.tgz" integrity sha512-PYBW5fWX+iGicIS5MIM/omhk1tQPUc0ELAnI/IkLKQJ6d75De/CQRh8MF2bU/TgGyFi6zEel80wUe3uRol9RrQ== ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-signal@^3.0.0, any-signal@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== + +any-signal@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-4.1.1.tgz#928416c355c66899e6b2a91cad4488f0324bae03" + integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== + anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" +"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz#aed25dd0eae514660d49ac2b2366b175c614785a" + integrity sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -arrify@^1.0.0: +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +async@^3.2.3, async@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atomically@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/atomically/-/atomically-2.0.3.tgz#27e47bbe39994d324918491ba7c0edb7783e56cb" + integrity sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw== + dependencies: + stubborn-fs "^1.2.5" + when-exit "^2.1.1" + +autoprefixer@^10.4.2: + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + +axios@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" + integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axios@^1.0.0, axios@^1.6.5: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^3.0.2: version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" -base64-js@^1.3.1: +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + +base32@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/base32/-/base32-0.0.7.tgz#9d3c21de7efde73086fa0164d57ffcb1120c68ea" + integrity sha512-ire9Jmh+BsUk4Idu0wu6aKeJJr/2j28Mlu0qqJBd1SyOGxW/VRotkfwAv3/KE/entVlNwCefs9bxi7kBeCIxTQ== + dependencies: + minimist "^1.2.6" + +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== + bigint-buffer@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + resolved "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz" integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== dependencies: bindings "^1.3.0" +bigint-mod-arith@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/bigint-mod-arith/-/bigint-mod-arith-3.3.1.tgz#8ed33dc9f7886e552a7d47c239e051836e74cfa8" + integrity sha512-pX/cYW3dCa87Jrzv6DAr8ivbbJRzEX5yGhdt8IutnX/PCIXfpx+mabWNK/M8qqh+zQ0J3thftUBHW0ByuUlG0w== + bignumber.js@^9.0.1: version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +bin-links@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + binary-extensions@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bindings@^1.3.0: +bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" +bip32-path@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/bip32-path/-/bip32-path-0.4.2.tgz#5db0416ad6822712f077836e2557b8697c0c7c99" + integrity sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ== + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blob-to-it@^2.0.0: + version "2.0.7" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.7.tgz#637b8bb14963a7fce658ee758d9251dd1ee9fd3c" + integrity sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ== + dependencies: + browser-readablestream-to-it "^2.0.0" + +blockstore-core@4.4.1, blockstore-core@^4.0.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-4.4.1.tgz#0804c8a00f096c43e1b679b1711a66157a421c5e" + integrity sha512-peXfL9ZLx1cb84QALocMjhT8CsQ4JsreI/AitlN1inipSdC/G+jcYVJCqeCD5ecSTv/0LMpg8NlAPH/eBYZLjA== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-merge "^3.0.3" + it-pushable "^3.2.3" + multiformats "^13.0.1" + +blockstore-fs@1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/blockstore-fs/-/blockstore-fs-1.1.10.tgz#0dc8119b0bc293e6df4e056356e33e85528c7a05" + integrity sha512-Dg0mbdma0OY4NEk78efcAAiG5ZrMcIVrM7s+0e2p4uavnvrcBT6vDj5ITfnRfid3idKHOoCYShGEi9ENNgJg1A== + dependencies: + blockstore-core "^4.0.0" + fast-write-atomic "^0.2.1" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + it-glob "^2.0.6" + it-map "^3.0.5" + it-parallel-batch "^3.0.4" + multiformats "^13.0.1" + bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== borsh@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + resolved "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz" integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== dependencies: bn.js "^5.2.0" bs58 "^4.0.0" text-encoding-utf-8 "^1.0.2" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@~3.0.2: +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" +browser-readablestream-to-it@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + +browser-readablestream-to-it@^2.0.0: + version "2.0.7" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.7.tgz#ddcc4b34a4b08ef415f89eb215297acea3e05fd0" + integrity sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg== + browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserslist@^4.23.3: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" +bs58@^5.0.0cp: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-layout@^1.2.0, buffer-layout@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + resolved "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz" integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== -buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: +buffer@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3, buffer@~6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" ieee754 "^1.2.1" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + bufferutil@^4.0.1: version "4.0.8" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== dependencies: node-gyp-build "^4.3.0" +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +builtins@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" + integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== + dependencies: + semver "^7.0.0" + +byte-size@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== + +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + +cacache@^17.0.0, cacache@^17.0.4: + version "17.1.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + call-bind@^1.0.5: version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: es-define-property "^1.0.0" @@ -807,17 +4103,50 @@ call-bind@^1.0.5: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + camelcase@^6.0.0, camelcase@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669: + version "1.0.30001675" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001675.tgz#0c1f01fc9cc543b61839753a4c234f995588d1b9" + integrity sha512-/wV1bQwPrkLiQMjaJF5yUMVM/VdRPOCU8QZ+PmG6uW6DvYSrNY1bpwHI/3mOcUosLaJCzYDi5o91IQB51ft6cg== + +carstream@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/carstream/-/carstream-2.2.0.tgz#fc1daa96343db29a10dfc365487a6dd7e2f347c7" + integrity sha512-/gHkK0lQjmGM45fhdx8JD+x7a1XS1qUk3T9xWWSt3oZiWPLq4u/lnDstp+N55K7hqTKKlb0CCr43EHTrlbmJSQ== + dependencies: + "@ipld/dag-cbor" "^9.0.3" + multiformats "^13.0.1" + uint8arraylist "^2.4.3" + +cborg@^4.0.0, cborg@^4.0.3, cborg@^4.0.5: + version "4.2.6" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.2.6.tgz#7491c29986a87c647d6e2c232e64c82214ca660e" + integrity sha512-77vo4KlSwfjCIXcyZUVei4l2gdjesSCeYSx4U/Upwix7pcWZq8uw21sVRpjwn7mjEi//ieJPTj1MRWDHmud1Rg== + chai@^4.3.4: version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz" integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== dependencies: assertion-error "^1.1.0" @@ -828,18 +4157,26 @@ chai@^4.3.4: pathval "^1.1.1" type-detect "^4.0.8" +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -847,19 +4184,24 @@ chalk@^4.1.0: chalk@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + check-error@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: get-func-name "^2.0.2" chokidar@3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -872,9 +4214,66 @@ chokidar@3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.6.1, ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cids@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" + integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^3.0.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@3.1.0, cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -883,14 +4282,40 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -color-convert@^1.9.0: +clone-deep@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +cmd-shim@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== + dependencies: + mkdirp-infer-owner "^2.0.0" + +cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== + +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -899,39 +4324,88 @@ color-convert@^1.9.0: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^12.0.0: +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + +columnify@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^12.0.0, commander@^12.1.0: version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + resolved "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== commander@^2.20.3: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + compare-func@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: array-ify "^1.0.0" @@ -939,31 +4413,76 @@ compare-func@^2.0.0: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +conf@11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/conf/-/conf-11.0.2.tgz#b48d526f1795b0cf40d332905a38bdf8a1558f76" + integrity sha512-jjyhlQ0ew/iwmtwsS2RaB6s8DBifcE2GYBEaw2SJDUY/slJJbNfY4GlDVzOs/ff8cM/Wua5CikqXgbFl5eu85A== + dependencies: + ajv "^8.12.0" + ajv-formats "^2.1.1" + atomically "^2.0.0" + debounce-fn "^5.1.2" + dot-prop "^7.2.0" + env-paths "^3.0.0" + json-schema-typed "^8.0.1" + semver "^7.3.8" + +config-chain@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +conventional-changelog-angular@5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + conventional-changelog-angular@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz" integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== dependencies: compare-func "^2.0.0" conventional-changelog-angular@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz#5701386850f0e0c2e630b43ee7821d322d87e7a6" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz" integrity sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA== dependencies: compare-func "^2.0.0" conventional-changelog-atom@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz#f3e06e06244bd0aef2e5f09ed590933d948e809c" + resolved "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz" integrity sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g== conventional-changelog-cli@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-5.0.0.tgz#feda8f20873347f73042a810db1c03377c39068d" + resolved "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-5.0.0.tgz" integrity sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ== dependencies: add-stream "^1.0.0" @@ -973,26 +4492,46 @@ conventional-changelog-cli@^5.0.0: conventional-changelog-codemirror@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz#994ced326cf358c5e549f5ac59bf3f8cdc09f783" + resolved "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz" integrity sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ== conventional-changelog-conventionalcommits@^7.0.2: version "7.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz" integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== dependencies: compare-func "^2.0.0" conventional-changelog-conventionalcommits@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz#3fa2857c878701e7f0329db5a1257cb218f166fe" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz" integrity sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA== dependencies: compare-func "^2.0.0" +conventional-changelog-core@4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + conventional-changelog-core@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz#5166eea9ef58a659fc97b065525f4499a0d3f311" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz" integrity sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw== dependencies: "@hutson/parse-repository-url" "^5.0.0" @@ -1008,39 +4547,59 @@ conventional-changelog-core@^8.0.0: conventional-changelog-ember@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz#cca926a68aa9bc2a6370b211906b1dea82564567" + resolved "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz" integrity sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg== conventional-changelog-eslint@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz#9d37abcf6ade84031ce01093be7447f2cd73098b" + resolved "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz" integrity sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw== conventional-changelog-express@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz#e08fb0f2c27bc5319ce7d8e78c9e9fb99ae1feb5" + resolved "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz" integrity sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ== conventional-changelog-jquery@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz#5b6bd8b4a720363dc6c2162a3f751961c55256b0" + resolved "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz" integrity sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA== conventional-changelog-jshint@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz#42bcc629b9c75bb118364754d120ae49fd742b85" + resolved "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz" integrity sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g== dependencies: compare-func "^2.0.0" +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + conventional-changelog-preset-loader@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz#922ad617c13ad3243bef967cfc0f8373893c216d" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz" integrity sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA== +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + conventional-changelog-writer@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz#81522ed40400a4ca8ab78a42794aae9667c745ae" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz" integrity sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA== dependencies: "@types/semver" "^7.5.5" @@ -1051,7 +4610,7 @@ conventional-changelog-writer@^8.0.0: conventional-changelog@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-6.0.0.tgz#ef941d2fde727be20e0f3a342e4e3b235d6e8663" + resolved "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz" integrity sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w== dependencies: conventional-changelog-angular "^8.0.0" @@ -1066,14 +4625,34 @@ conventional-changelog@^6.0.0: conventional-changelog-jshint "^5.0.0" conventional-changelog-preset-loader "^5.0.0" +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + conventional-commits-filter@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz#72811f95d379e79d2d39d5c0c53c9351ef284e86" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz" integrity sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q== +conventional-commits-parser@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + conventional-commits-parser@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== dependencies: JSONStream "^1.3.5" @@ -1083,21 +4662,59 @@ conventional-commits-parser@^5.0.0: conventional-commits-parser@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz#74e3be5344d8cd99f7c3353da2efa1d1dd618061" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz" integrity sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA== dependencies: meow "^13.0.0" +conventional-recommended-bump@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + +cookies@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cosmiconfig-typescript-loader@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz#0d3becfe022a871f7275ceb2397d692e06045dc8" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz" integrity sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA== dependencies: jiti "^1.19.1" +cosmiconfig@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cosmiconfig@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== dependencies: env-paths "^2.2.1" @@ -1105,16 +4722,21 @@ cosmiconfig@^9.0.0: js-yaml "^4.1.0" parse-json "^5.2.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-fetch@^3.1.5: version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== dependencies: node-fetch "^2.6.12" -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -1123,230 +4745,1004 @@ cross-spawn@^7.0.3: crypto-hash@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + resolved "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz" integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csv-parse@^5.5.6: + version "5.5.6" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.5.6.tgz#0d726d58a60416361358eec291a9f93abe0b6b1a" + integrity sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A== + +csv-writer@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/csv-writer/-/csv-writer-1.6.0.tgz#d0cea44b6b4d7d3baa2ecc6f3f7209233514bcf9" + integrity sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g== + +dag-jose@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-4.0.0.tgz#4e65f62af58dd5203b2b094eb52142ffe0cdec1d" + integrity sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + multiformats "^11.0.0" + +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + dargs@^8.0.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" + resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz" integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== +datastore-core@9.2.9: + version "9.2.9" + resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-9.2.9.tgz#74b4dd53d4597b59038488ba5f92a7f81769f8df" + integrity sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-datastore "^8.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-sort "^3.0.4" + it-take "^3.0.4" + +date-fns@^2.29.3: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debounce-fn@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-5.1.2.tgz#c77bc447ef36828ecdd066df7de23f475e0a6281" + integrity sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A== + dependencies: + mimic-fn "^4.0.0" + +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + debug@4.3.3: version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +dedent@0.7.0, dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + deep-eql@^4.1.3: version "4.1.4" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== dependencies: type-detect "^4.0.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" es-errors "^1.3.0" gopd "^1.0.1" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + delay@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diff@^3.1.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-over-http-resolver@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz#bb7f2e10cc18d960339a6e30e21b8c1d99be7b38" + integrity sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA== + dependencies: + debug "^4.3.1" + native-fetch "^4.0.2" + receptacle "^1.3.2" + undici "^5.12.0" + +dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dot-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: - no-case "^3.0.4" - tslib "^2.0.3" + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dot-prop@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-7.2.0.tgz#468172a3529779814d21a779c1ba2f6d76609809" + integrity sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA== + dependencies: + type-fest "^2.11.2" + +dotenv-cli@^7.3.0: + version "7.4.2" + resolved "https://registry.yarnpkg.com/dotenv-cli/-/dotenv-cli-7.4.2.tgz#c158a818de08e1fbc51d310f628cbace9075b734" + integrity sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA== + dependencies: + cross-spawn "^7.0.3" + dotenv "^16.3.0" + dotenv-expand "^10.0.0" + minimist "^1.2.6" + +dotenv-expand@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + +dotenv@^16.3.0, dotenv@^16.4.1, dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ejs@^3.1.7: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== dependencies: - is-obj "^2.0.0" + encoding "^0.1.13" + +electron-to-chromium@^1.5.41: + version "1.5.49" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.49.tgz#9358f514ab6eeed809a8689f4b39ea5114ae729c" + integrity sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -env-paths@^2.2.1: +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +env-paths@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-3.0.0.tgz#2f1e89c2f6dbd3408e1b1711dd82d62e317f58da" + integrity sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A== + +envinfo@^7.7.4: + version "7.14.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" + integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: get-intrinsic "^1.2.4" es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es6-promise@^4.0.3: version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== dependencies: es6-promise "^4.0.3" +esbuild@~0.23.0: + version "0.23.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" + integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.23.1" + "@esbuild/android-arm" "0.23.1" + "@esbuild/android-arm64" "0.23.1" + "@esbuild/android-x64" "0.23.1" + "@esbuild/darwin-arm64" "0.23.1" + "@esbuild/darwin-x64" "0.23.1" + "@esbuild/freebsd-arm64" "0.23.1" + "@esbuild/freebsd-x64" "0.23.1" + "@esbuild/linux-arm" "0.23.1" + "@esbuild/linux-arm64" "0.23.1" + "@esbuild/linux-ia32" "0.23.1" + "@esbuild/linux-loong64" "0.23.1" + "@esbuild/linux-mips64el" "0.23.1" + "@esbuild/linux-ppc64" "0.23.1" + "@esbuild/linux-riscv64" "0.23.1" + "@esbuild/linux-s390x" "0.23.1" + "@esbuild/linux-x64" "0.23.1" + "@esbuild/netbsd-x64" "0.23.1" + "@esbuild/openbsd-arm64" "0.23.1" + "@esbuild/openbsd-x64" "0.23.1" + "@esbuild/sunos-x64" "0.23.1" + "@esbuild/win32-arm64" "0.23.1" + "@esbuild/win32-ia32" "0.23.1" + "@esbuild/win32-x64" "0.23.1" + escalade@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -escape-string-regexp@4.0.0: +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eventemitter3@^4.0.7: +eslint-scope@^7.1.0: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.2.0, eslint-visitor-keys@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" + integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== + dependencies: + "@eslint/eslintrc" "^1.0.5" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.0" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.2.0" + espree "^9.3.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.3.0, espree@^9.4.0: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethers@^6.13.4: + version "6.13.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.4.tgz#bd3e1c3dc1e7dc8ce10f9ffb4ee40967a651b53c" + integrity sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^4.0.4, eventemitter3@^4.0.7: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@3.3.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" eyes@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== -fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-fifo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + +fast-glob@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.2.9, fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + fast-stable-stringify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + resolved "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz" integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== +fast-uri@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== + +fast-write-atomic@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz#7ee8ef0ce3c1f531043c09ae8e5143361ab17ede" + integrity sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw== + +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +fetch-retry@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" + integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== + +figures@3.2.0, figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-uri-to-path@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +file-url@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" + integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +files-from-path@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/files-from-path/-/files-from-path-1.0.4.tgz#5652b6226a8080f76edbd3977f9e8df356a6d088" + integrity sha512-sMNIVdpRh1uCSIaat3qnM3E6aA1C5FVn5/B16z8sN3gIMjZPkxtVCorkEL07xTcCIxVwTXzjU1Ota7Wif6RfQQ== + dependencies: + graceful-fs "^4.2.10" + fill-range@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" find-up-simple@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.0.tgz#21d035fde9fdbd56c8f4d2f63f32fd93a1cfc368" + resolved "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz" integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw== find-up@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + find-up@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb" + resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== dependencies: locate-path "^7.2.0" path-exists "^5.0.0" unicorn-magic "^0.1.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + +follow-redirects@^1.15.0, follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +gauge@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.2.tgz#7ab44c11181da9766333f10db8cd1e4b17fd6c46" + integrity sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^4.0.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: es-errors "^1.3.0" @@ -1355,14 +5751,62 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: has-symbols "^1.0.3" hasown "^2.0.0" -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-iterator@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-2.0.1.tgz#a904829f61bace789e0d64bd1a504c511a015c3f" + integrity sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg== + +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + +get-port@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-tsconfig@^4.7.5: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== + dependencies: + resolve-pkg-maps "^1.0.0" + +git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" git-raw-commits@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz" integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== dependencies: dargs "^8.0.0" @@ -1371,30 +5815,92 @@ git-raw-commits@^4.0.0: git-raw-commits@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-5.0.0.tgz#38af4301e70c17be03fec01a37a6cd90ce0db04e" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz" integrity sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg== dependencies: "@conventional-changelog/git-client" "^1.0.0" meow "^13.0.0" +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + git-semver-tags@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-8.0.0.tgz#745ee2d934f74c70014d0ed617e18f4712950e32" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz" integrity sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg== dependencies: "@conventional-changelog/git-client" "^1.0.0" meow "^13.0.0" -glob-parent@~5.1.2: +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + dependencies: + is-ssh "^1.4.0" + parse-url "^8.1.0" + +git-url-parse@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== + dependencies: + git-up "^7.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -1404,28 +5910,110 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.2.2: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + global-directory@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" + resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz" integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== dependencies: ini "4.1.1" +globals@^13.19.0, globals@^13.6.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@11.1.0, globby@^11.0.1: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + growl@1.10.5: version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +hamt-sharding@^3.0.2, hamt-sharding@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.6.tgz#3643107a3021af66ac95684aec87b196add5ba57" + integrity sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^5.0.1" + handlebars@^4.7.7: version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" @@ -1435,196 +6023,901 @@ handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -hasown@^2.0.0: +has-unicode@2.0.1, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + +hasown@^2.0.0, hasown@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== + dependencies: + lru-cache "^7.5.1" + hosted-git-info@^7.0.0: version "7.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz" integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== dependencies: lru-cache "^10.0.1" -human-signals@^5.0.0: +http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" husky@^9.0.11: version "9.0.11" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" + resolved "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz" integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== -ieee754@^1.2.1: +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -import-fresh@^3.3.0: +ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + +ignore-walk@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + +ignore@^5.0.4, ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + import-meta-resolve@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706" + resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz" integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw== +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + index-to-position@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-0.1.2.tgz#e11bfe995ca4d8eddb1ec43274488f3c201a7f09" + resolved "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz" integrity sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g== +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" + resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +init-package-json@3.0.2, init-package-json@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== + dependencies: + npm-package-arg "^9.0.1" + promzard "^0.3.0" + read "^1.0.7" + read-package-json "^5.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + +inquirer@8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + +inquirer@^8.2.4: + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +interface-blockstore@^5.0.0, interface-blockstore@^5.2.10, interface-blockstore@^5.3.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-5.3.1.tgz#03f511431be2b8b04a536eaae8effe4565ea6536" + integrity sha512-nhgrQnz6yUQEqxTFLhlOBurQOy5lWlwCpgFmZ3GTObTVTQS9RZjK/JTozY6ty9uz2lZs7VFJSqwjWAltorJ4Vw== + dependencies: + interface-store "^6.0.0" + multiformats "^13.2.3" + +interface-datastore@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-7.0.4.tgz#f09ae4e2896f57f876d5d742a59e982fb3f42891" + integrity sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw== + dependencies: + interface-store "^3.0.0" + nanoid "^4.0.0" + uint8arrays "^4.0.2" + +interface-datastore@^8.0.0, interface-datastore@^8.2.0, interface-datastore@^8.2.11: + version "8.3.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.3.1.tgz#c793f990c5cf078a24a8a2ded13f7e2099a2a282" + integrity sha512-3r0ETmHIi6HmvM5sc09QQiCD3gUfwtEM/AAChOyAd/UAKT69uk8LXfTSUBufbUIO/dU65Vj8nb9O6QjwW8vDSQ== + dependencies: + interface-store "^6.0.0" + uint8arrays "^5.1.0" + +interface-store@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" + integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== + +interface-store@^5.0.0, interface-store@^5.0.1, interface-store@^5.1.0, interface-store@^5.1.8: + version "5.1.8" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.8.tgz#94bf867d165b5c904cccf09adeba215a5b0f459e" + integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== + +interface-store@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-6.0.2.tgz#1746a1ee07634f7678b3aa778738b79e3f75c909" + integrity sha512-KSFCXtBlNoG0hzwNa0RmhHtrdhzexp+S+UY2s0rWTBJyfdEIgn6i6Zl9otVqrcFYbYrneBT7hbmHQ8gE0C3umA== + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ipfs-bitswap@^19.0.0: + version "19.0.2" + resolved "https://registry.yarnpkg.com/ipfs-bitswap/-/ipfs-bitswap-19.0.2.tgz#906bd9056e2483b8ae1a42b21f44ce9f50f3f11b" + integrity sha512-pm0EcnTAwMMkCmdXHw/a7uPXzQ4I/pxVFiQZ6Ebg/R64XxAky/bCOJRzmqsgqH0+prH2bXAOgzS0mOZdL+zFSw== + dependencies: + "@libp2p/interface" "^0.1.1" + "@libp2p/logger" "^3.0.1" + "@multiformats/multiaddr" "^12.1.0" + "@vascosantos/moving-average" "^1.1.0" + any-signal "^4.1.1" + blockstore-core "^4.0.0" + events "^3.3.0" + interface-blockstore "^5.0.0" + interface-store "^5.1.0" + it-foreach "^2.0.2" + it-length-prefixed "^9.0.0" + it-map "^3.0.2" + it-pipe "^3.0.1" + it-take "^3.0.1" + just-debounce-it "^3.0.1" + multiformats "^12.0.1" + progress-events "^1.0.0" + protons-runtime "^5.0.0" + timeout-abort-controller "^3.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.2" + varint "^6.0.0" + varint-decoder "^1.0.0" + +ipfs-core-types@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.14.1.tgz#c69f4dd873324e975ef43c391c0692b96863b13c" + integrity sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@libp2p/interface-keychain" "^2.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.2" + "@libp2p/interface-pubsub" "^3.0.0" + "@multiformats/multiaddr" "^11.1.5" + "@types/node" "^18.0.0" + interface-datastore "^7.0.0" + ipfs-unixfs "^9.0.0" + multiformats "^11.0.0" + +ipfs-core-utils@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.18.1.tgz#d5fae11bfdb511749c6f905b0d0da3174eb50909" + integrity sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q== + dependencies: + "@libp2p/logger" "^2.0.5" + "@multiformats/multiaddr" "^11.1.5" + "@multiformats/multiaddr-to-uri" "^9.0.1" + any-signal "^3.0.0" + blob-to-it "^2.0.0" + browser-readablestream-to-it "^2.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-unixfs "^9.0.0" + ipfs-utils "^9.0.13" + it-all "^2.0.0" + it-map "^2.0.0" + it-peekable "^2.0.0" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + nanoid "^4.0.0" + parse-duration "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arrays "^4.0.2" + +ipfs-unixfs-exporter@^13.1.0, ipfs-unixfs-exporter@^13.5.0: + version "13.6.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.6.1.tgz#0e66908c7dcc80c8b4c0b97fc0432c8ac09bcade" + integrity sha512-pYPI4oBTWao2//sFzAL0pURyojn79q/u5BuK6L5/nVbVUQVw6DcVP5uB1ySdWlTM2H+0Zlhp9+OL9aJBRIICpg== + dependencies: + "@ipld/dag-cbor" "^9.2.1" + "@ipld/dag-json" "^10.2.2" + "@ipld/dag-pb" "^4.1.2" + "@multiformats/murmur3" "^2.1.8" + hamt-sharding "^3.0.6" + interface-blockstore "^5.3.0" + ipfs-unixfs "^11.0.0" + it-filter "^3.1.1" + it-last "^3.0.6" + it-map "^3.1.1" + it-parallel "^3.0.8" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.2.3" + p-queue "^8.0.1" + progress-events "^1.0.1" + +ipfs-unixfs-importer@^15.1.0, ipfs-unixfs-importer@^15.2.4: + version "15.3.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-15.3.1.tgz#93cf3bad77e3fff7ee25b4ba822c1a0d2fd56b6e" + integrity sha512-wHCTBqNsZXLJZ9/GSr7Msb3FDXD5yXF20Y9sKyUbbqNjbvaXs3n3h1+NM/5+WrgESHfwRcJIlJtaOKafL8Ymdg== + dependencies: + "@ipld/dag-pb" "^4.1.2" + "@multiformats/murmur3" "^2.1.8" + hamt-sharding "^3.0.6" + interface-blockstore "^5.3.0" + interface-store "^6.0.0" + ipfs-unixfs "^11.0.0" + it-all "^3.0.6" + it-batch "^3.0.6" + it-first "^3.0.6" + it-parallel-batch "^3.0.6" + multiformats "^13.2.3" + progress-events "^1.0.1" + rabin-wasm "^0.1.5" + uint8arraylist "^2.4.8" + uint8arrays "^5.1.0" + +ipfs-unixfs@^11.0.0, ipfs-unixfs@^11.1.3: + version "11.2.0" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.2.0.tgz#a7f3d1f9bce29033f273bda124a0eb8bc0c752f6" + integrity sha512-J8FN1qM5nfrDo8sQKQwfj0+brTg1uBfZK2vY9hxci33lcl3BFrsELS9+1+4q/8tO1ASKfxZO8W3Pi2O4sVX2Lg== + dependencies: + protons-runtime "^5.5.0" + uint8arraylist "^2.4.8" + +ipfs-unixfs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" + integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== + dependencies: + err-code "^3.0.1" + protobufjs "^7.0.0" + +ipfs-utils@^9.0.13, ipfs-utils@^9.0.14, ipfs-utils@^9.0.7: + version "9.0.14" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" + is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" +is-ci@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.13.0, is-core-module@^2.5.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + is-core-module@^2.8.1: version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== + dependencies: + protocols "^2.0.1" + +is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" is-text-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz" integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== dependencies: text-extensions "^2.0.0" is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + isomorphic-ws@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" + integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== + +it-all@^3.0.0, it-all@^3.0.4, it-all@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.6.tgz#30a4f922ae9ca0945b0f720d3478ae6f5b6707ab" + integrity sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q== + +it-batch@^3.0.0, it-batch@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-3.0.6.tgz#0bcda35bf1c600e821c6d5f4d2446fe85a26ab1d" + integrity sha512-pQAAlSvJ4aV6xM/6LRvkPdKSKXxS4my2fGzNUxJyAQ8ccFdxPmK1bUuF5OoeUDkcdrbs8jtsmc4DypCMrGY6sg== + +it-drain@^3.0.5: + version "3.0.7" + resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-3.0.7.tgz#671a5d0220802c5bce9e68fc2b07088540fbc674" + integrity sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA== + +it-filter@^3.0.4, it-filter@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-3.1.1.tgz#d9f55ecb26200baca41e5e330e5808b3afdfa7b7" + integrity sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg== + dependencies: + it-peekable "^3.0.0" + +it-first@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" + integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== + +it-first@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.6.tgz#f532f0f36fe9bf0c291e0162b9d3375d59fe8f05" + integrity sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ== + +it-foreach@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/it-foreach/-/it-foreach-2.1.1.tgz#93e311a1057dd0ff7631f914dc9c2c963f27a4b8" + integrity sha512-ID4Gxnavk/LVQLQESAQ9hR6dR63Ih6X+8VdxEktX8rpz2dCGAbZpey/eljTNbMfV2UKXHiu6UsneoNBZuac97g== + dependencies: + it-peekable "^3.0.0" + +it-glob@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" + integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-glob@^2.0.4, it-glob@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-2.0.7.tgz#9c65a14dd89d3c19c0eaec50d382ee2b2396caba" + integrity sha512-FjL2rAsGu566sMVKexFG5ciDoKoi1lgwXlSE6DW0yVbGRyvrlzi0OQ3fbfrw89dpIAzJFHnLNQwZS4yRkt3d/Q== + dependencies: + minimatch "^9.0.4" + +it-glob@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-3.0.1.tgz#b30723a365e5564273ded2d030d61e15578ba5e2" + integrity sha512-IUWE9f6XVUJLugK7pQmQPqTWj4BiQJhufnvxfsCmNIGEDQEkKVs3Ld9gFZq/Vude6g/OpndhsiuFrA730Bc59A== + dependencies: + fast-glob "^3.3.2" + +it-last@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-2.0.1.tgz#a6f3253459cb77e917aeada3b2c4ae9f3e66c64b" + integrity sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg== + +it-last@^3.0.1, it-last@^3.0.4, it-last@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-3.0.6.tgz#53b1463e47fcaa950375968002598686101de6ab" + integrity sha512-M4/get95O85u2vWvWQinF8SJUc/RPC5bWTveBTYXvlP2q5TF9Y+QhT3nz+CRCyS2YEc66VJkyl/da6WrJ0wKhw== + +it-length-prefixed@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/it-length-prefixed/-/it-length-prefixed-9.1.0.tgz#19d5d336068fdcbbadfafb1eb33331a9370d4cac" + integrity sha512-kx2UTJuy7/lsT3QUzf50NjfxU1Z4P4wlvYp6YnR5Nc61P8XKfy+QtiJi1VLojA+Kea7vMbB4002rIij1Ol9hcw== + dependencies: + it-reader "^6.0.1" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.0.0" + uint8arrays "^5.0.1" + +it-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-2.0.1.tgz#d5251fd6b222d6ee39293d406a3f8fce54fb9220" + integrity sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ== + +it-map@^3.0.2, it-map@^3.0.3, it-map@^3.0.5, it-map@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-3.1.1.tgz#637877e93be93a7aa7d7fc103b70a5939fc6f7a1" + integrity sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ== + dependencies: + it-peekable "^3.0.0" + +it-merge@^3.0.0, it-merge@^3.0.3: + version "3.0.5" + resolved "https://registry.yarnpkg.com/it-merge/-/it-merge-3.0.5.tgz#2b0d1d07c825b9d20c4c2889aab8e07322fd803e" + integrity sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA== + dependencies: + it-pushable "^3.2.3" + +it-parallel-batch@^3.0.4, it-parallel-batch@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-3.0.6.tgz#61487fdaca03cc34c648b3432f59e82e0c805172" + integrity sha512-3wgiQGvMMHy65OXScrtrtmY+bJSF7P6St1AP+BU+SK83fEr8NNk/MrmJKrtB1+MahYX2a8I+pOGKDj8qVtuV0Q== + dependencies: + it-batch "^3.0.0" + +it-parallel@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/it-parallel/-/it-parallel-3.0.8.tgz#fb4a5344732ddae9eff7c7b21908aa1f223638d4" + integrity sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg== + dependencies: + p-defer "^4.0.1" + +it-peekable@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-2.0.1.tgz#1e118610473aa511efc70f3bb7a7066178728dd3" + integrity sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA== + +it-peekable@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.5.tgz#63b0c750e27e2ba0c1db6d6a3496b7ef51a6547d" + integrity sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ== + +it-pipe@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-3.0.1.tgz#b25720df82f4c558a8532602b5fbc37bbe4e7ba5" + integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA== + dependencies: + it-merge "^3.0.0" + it-pushable "^3.1.2" + it-stream-types "^2.0.1" + +it-pushable@^3.0.0, it-pushable@^3.1.2, it-pushable@^3.2.0, it-pushable@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.2.3.tgz#e2b80aed90cfbcd54b620c0a0785e546d4e5f334" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + +it-reader@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-6.0.4.tgz#439cb88225dcd15116be0ffde9e846a928c3871a" + integrity sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg== + dependencies: + it-stream-types "^2.0.1" + uint8arraylist "^2.0.0" + +it-sort@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-sort/-/it-sort-3.0.6.tgz#58af5dec478c411ae5adf30f90078a6fc286484d" + integrity sha512-aNrlZAXB8vWBd42tCpaXGL6CJVJNDW3OLczmdt6g0k/s9Z6evkTdgU2LjwW5SNNeX41sF+C8MjV+OcVf93PsPw== + dependencies: + it-all "^3.0.0" + +it-stream-types@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-1.0.5.tgz#9c72e6adefdea9dac69d0a28fbea783deebd508d" + integrity sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA== + +it-stream-types@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.2.tgz#60bbace90096796b4e6cc3bfab99cf9f2b86c152" + integrity sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww== + +it-take@^3.0.1, it-take@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-take/-/it-take-3.0.6.tgz#509283b69b88f823350b256392525267609f1925" + integrity sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg== + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + jayson@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.0.tgz#60dc946a85197317f2b1439d672a8b0a99cea2f9" + resolved "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz" integrity sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A== dependencies: "@types/connect" "^3.4.33" @@ -1640,36 +6933,102 @@ jayson@^4.1.0: uuid "^8.3.2" ws "^7.4.5" +jayson@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.2.tgz#443c26a8658703e0b2e881117b09395d88b6982e" + integrity sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + jiti@^1.19.1: version "1.21.6" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +js-sha256@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576" + integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q== + js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -json-parse-even-better-errors@^2.3.0: +js-yaml@^3.10.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-parse-even-better-errors@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-stable-stringify@^1.1.1: +json-schema-typed@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz#826ee39e3b6cef536f85412ff048d3ff6f19dfa0" + integrity sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stable-stringify@^1.0.2, json-stable-stringify@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz" integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== dependencies: call-bind "^1.0.5" @@ -1677,173 +7036,812 @@ json-stable-stringify@^1.1.1: jsonify "^0.0.1" object-keys "^1.1.1" +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@^0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== -jsonparse@^1.2.0: +jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsonwebtoken@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + +just-debounce-it@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/just-debounce-it/-/just-debounce-it-3.2.0.tgz#4352265f4af44188624ce9fdbc6bff4d49c63a80" + integrity sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ== + +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + +kubo-rpc-client@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-3.0.4.tgz#4027b0abeb848d4a5bdb18a7d614af5173966575" + integrity sha512-MV8XFG8ikSPZJkzN/h50SH60kyFz6d3hBcHE/ChhLmbzT3TM8n/I9fq0+5IL5dFSwJo5YrpZqDgsFhNgMSeztg== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/crypto" "^1.0.11" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@multiformats/multiaddr" "^12.1.10" + any-signal "^3.0.1" + dag-jose "^4.0.0" + err-code "^3.0.1" + ipfs-core-utils "^0.18.0" + ipfs-utils "^9.0.7" + it-first "^2.0.0" + it-last "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + parse-duration "^1.0.2" + stream-to-it "^0.2.4" + uint8arrays "^4.0.3" + +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +lerna@^6.0.3: + version "6.6.2" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.6.2.tgz#ad921f913aca4e7307123a598768b6f15ca5804f" + integrity sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg== + dependencies: + "@lerna/child-process" "6.6.2" + "@lerna/create" "6.6.2" + "@lerna/legacy-package-management" "6.6.2" + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-angular "5.0.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + envinfo "^7.7.4" + execa "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + import-local "^3.0.2" + init-package-json "3.0.2" + inquirer "^8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + js-yaml "^4.1.0" + libnpmaccess "^6.0.3" + libnpmpublish "7.1.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.3" + npmlog "^6.0.2" + nx ">=15.5.2 < 16" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "15.1.1" + pify "5.0.0" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + typescript "^3 || ^4" + upath "^2.0.1" + uuid "8.3.2" + validate-npm-package-license "3.0.4" + validate-npm-package-name "4.0.0" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + yargs-parser "20.2.4" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +libnpmaccess@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== + dependencies: + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + +libnpmpublish@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.1.4.tgz#a0d138e00e52a0c71ffc82273acf0082fc2dfb36" + integrity sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg== + dependencies: + ci-info "^3.6.1" + normalize-package-data "^5.0.0" + npm-package-arg "^10.1.0" + npm-registry-fetch "^14.0.3" + proc-log "^3.0.0" + semver "^7.3.7" + sigstore "^1.4.0" + ssri "^10.0.1" + lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lines-and-columns@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" + integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== + +load-json-file@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" locate-path@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== dependencies: p-locate "^6.0.0" lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + lodash.kebabcase@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.mergewith@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + lodash.snakecase@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== lodash.startcase@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== lodash.uniq@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash.upperfirst@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -log-symbols@4.1.0: +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0, log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" is-unicode-supported "^0.1.0" +logform@^2.4.0, logform@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.1.tgz#71403a7d8cae04b2b734147963236205db9b3df0" + integrity sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + loupe@^2.3.6: version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: get-func-name "^2.0.1" lower-case@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lru-cache@^10.0.1: version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz" integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +make-dir@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + +make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + meow@^12.0.1: version "12.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" + resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz" integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== meow@^13.0.0: version "13.2.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f" + resolved "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz" integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-fn@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + minimatch@4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz" integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^6.1.6: + version "6.2.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz#5121616c77a11c406c3ffa77509e0b77bb267ec3" + integrity sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0, minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp-infer-owner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== + dependencies: + chownr "^2.0.0" + infer-owner "^1.0.4" + mkdirp "^1.0.3" + mkdirp@^0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mocha@^9.0.3: version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz" integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" @@ -1871,49 +7869,278 @@ mocha@^9.0.3: yargs-parser "20.2.4" yargs-unparser "2.0.0" +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +ms@^3.0.0-canary.1: + version "3.0.0-canary.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-3.0.0-canary.1.tgz#c7b34fbce381492fd0b345d1cf56e14d67b77b80" + integrity sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g== + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicodec@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" + integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== + dependencies: + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^11.0.0, multiformats@^11.0.1, multiformats@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== + +multiformats@^12.0.1, multiformats@^12.1.0, multiformats@^12.1.1, multiformats@^12.1.2: + version "12.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.0.1, multiformats@^13.1.0, multiformats@^13.2.3, multiformats@^13.3.0: + version "13.3.1" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.3.1.tgz#ea30d134b5697dcf2036ac819a17948f8a1775be" + integrity sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g== + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +multimatch@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + nanoid@3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.1.20: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +nanoid@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + +native-fetch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-4.0.2.tgz#75c8a44c5f3bb021713e5e24f2846750883e49af" + integrity sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@^0.6.3: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== no-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@^2.6.12, node-fetch@^2.7.0: +node-abi@^3.3.0: + version "3.71.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.71.0.tgz#52d84bbcd8575efb71468fbaa1f9a49b2c242038" + integrity sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw== + dependencies: + semver "^7.3.5" + +node-addon-api@^3.0.2, node-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-addon-api@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8, node-fetch@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" +node-forge@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + node-gyp-build@^4.3.0: version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz" integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== +node-gyp-build@^4.5.0: + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + +node-gyp@^9.0.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-hid@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.2.tgz#3145fa86ed4336a402a71e9f372c54213b88797c" + integrity sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg== + dependencies: + bindings "^1.5.0" + node-addon-api "^3.0.2" + prebuild-install "^7.1.1" + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +nopt@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== + dependencies: + hosted-git-info "^5.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-package-data@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz" integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ== dependencies: hosted-git-info "^7.0.0" @@ -1923,87 +8150,569 @@ normalize-package-data@^6.0.0: normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-bundled@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-bundled@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + +npm-install-checks@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-normalize-package-bin@^3.0.0, npm-normalize-package-bin@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +npm-packlist@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" + integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^1.1.2" + npm-normalize-package-bin "^1.0.1" + +npm-packlist@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" + integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== + dependencies: + ignore-walk "^6.0.0" + +npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" + integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" + semver "^7.3.5" + +npm-registry-fetch@14.0.3: + version "14.0.3" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz#8545e321c2b36d2c6fe6e009e77e9f0e527f547b" + integrity sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^4.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-registry-fetch@^13.0.0: + version "13.3.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== + dependencies: + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" + +npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3: + version "14.0.5" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" + integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npmlog@6.0.2, npmlog@^6.0.0, npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== dependencies: - path-key "^4.0.0" + are-we-there-yet "^4.0.0" + console-control-strings "^1.1.0" + gauge "^5.0.0" + set-blocking "^2.0.0" nunjucks@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.4.tgz#f0878eef528ce7b0aa35d67cc6898635fd74649e" + resolved "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz" integrity sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ== dependencies: a-sync-waterfall "^1.0.0" asap "^2.0.3" commander "^5.1.0" +nx@15.9.7, "nx@>=15.5.2 < 16": + version "15.9.7" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.9.7.tgz#f0e713cedb8637a517d9c4795c99afec4959a1b6" + integrity sha512-1qlEeDjX9OKZEryC8i4bA+twNg+lB5RKrozlNwWx/lLJHqWPUfvUTvxh+uxlPYL9KzVReQjUuxMLFMsHNqWUrA== + dependencies: + "@nrwl/cli" "15.9.7" + "@nrwl/tao" "15.9.7" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.0-rc.46" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.5.4" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nrwl/nx-darwin-arm64" "15.9.7" + "@nrwl/nx-darwin-x64" "15.9.7" + "@nrwl/nx-linux-arm-gnueabihf" "15.9.7" + "@nrwl/nx-linux-arm64-gnu" "15.9.7" + "@nrwl/nx-linux-arm64-musl" "15.9.7" + "@nrwl/nx-linux-x64-gnu" "15.9.7" + "@nrwl/nx-linux-x64-musl" "15.9.7" + "@nrwl/nx-win32-arm64-msvc" "15.9.7" + "@nrwl/nx-win32-x64-msvc" "15.9.7" + object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== dependencies: - mimic-fn "^4.0.0" + fn.name "1.x.x" + +one-webcrypto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/one-webcrypto/-/one-webcrypto-1.0.3.tgz#f951243cde29b79b6745ad14966fc598a609997c" + integrity sha512-fu9ywBVBPx0gS9K0etIROTiCkvI5S1TDjFsYFb3rC1ewFxeOqsbzq7aIMBHsYfrTHBcGXJaONXXjTl8B01cW1Q== + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.1: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-defer@^4.0.0, p-defer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.1.tgz#d12c6d41420785ed0d162dbd86b71ba490f7f99e" + integrity sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-limit@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== dependencies: yocto-queue "^1.0.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map-series@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== + +p-map@4.0.0, p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + +p-queue@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-queue@8.0.1, p-queue@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-8.0.1.tgz#718b7f83836922ef213ddec263ff4223ce70bef8" + integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + +p-queue@^7.3.4: + version "7.4.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.4.1.tgz#7f86f853048beca8272abdbb7cec1ed2afc0f265" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + +p-retry@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-5.1.2.tgz#c16eaee4f2016f9161d12da40d3b8b0f2e3c1b76" + integrity sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g== + dependencies: + "@types/retry" "0.12.1" + retry "^0.13.1" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-timeout@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" + integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + +p-timeout@^6.1.2: + version "6.1.3" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.3.tgz#9635160c4e10c7b4c3db45b7d5d26f911d9fd853" + integrity sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +p-waterfall@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== dependencies: - p-limit "^3.0.2" + p-reduce "^2.0.0" -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pacote@15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" + integrity sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^4.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.0.0" + ssri "^10.0.0" + tar "^6.1.11" + +pacote@^15.0.0, pacote@^15.0.8: + version "15.2.0" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" + integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^5.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.3.0" + ssri "^10.0.0" + tar "^6.1.11" pako@^2.0.3: version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + resolved "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parse-json@^5.2.0: +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + +parse-duration@^1.0.0, parse-duration@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -2013,87 +8722,480 @@ parse-json@^5.2.0: parse-json@^8.0.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-8.1.0.tgz#91cdc7728004e955af9cb734de5684733b24a717" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz" integrity sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA== dependencies: "@babel/code-frame" "^7.22.13" index-to-position "^0.1.2" type-fest "^4.7.1" +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== + dependencies: + protocols "^2.0.0" + +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + dependencies: + parse-path "^7.0.0" + +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-exists@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-key@^4.0.0: +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1, path-scurry@^1.6.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pathval@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== picocolors@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== -picomatch@^2.0.4, picomatch@^2.2.1: +picocolors@^1.0.1, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@5.0.0, pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss-selector-parser@^6.0.10: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +prebuild-install@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" + integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prettier@^2.6.2: version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== prettier@^3.2.5, prettier@^3.3.0: version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +pretty-format@29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" + integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +proc-log@^2.0.0, proc-log@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress-events@^1.0.0, progress-events@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.1.tgz#693b6d4153f08c1418ae3cd5fcad8596c91db7e8" + integrity sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" + integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== + dependencies: + read "1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +protobufjs@^7.0.0, protobufjs@^7.1.2: + version "7.4.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" + integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + +protons-runtime@^5.0.0, protons-runtime@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-5.5.0.tgz#ea06d9ef843aad77ea5de3e1ebafa81b58c24570" + integrity sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA== + dependencies: + uint8-varint "^2.0.2" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +rabin-rs@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/rabin-rs/-/rabin-rs-2.1.0.tgz#87b4f2dea7ca69380f1fa6b9e476d99380e7dc96" + integrity sha512-5y72gAXPzIBsAMHcpxZP8eMDuDT98qMP1BqSDHRbHkJJXEgWIN1lA47LxUqzsK6jknOJtgfkQr9v+7qMlFDm6g== + +rabin-wasm@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" + integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== + dependencies: + "@assemblyscript/loader" "^0.9.4" + bl "^5.0.0" + debug "^4.3.1" + minimist "^1.2.5" + node-fetch "^2.6.1" + readable-stream "^3.6.0" + +race-signal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/race-signal/-/race-signal-1.1.0.tgz#8bfc0740e7dedb9488f90f98858135c7cfe51bd4" + integrity sha512-VqsW1uzCXfKBd2DhA3K3NhQlqQr04+5WQ7+kHpf1HzT01Q+ePSFWZdQHXKZPuLmm2eXTZM1XLO76cq15ZRAaEA== + randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== + dependencies: + p-defer "^3.0.0" + +read-cmd-shim@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" + integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== + +read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + +read-package-json-fast@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read-package-json@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.1.tgz#1ed685d95ce258954596b13e2e0e76c7d0ab4c26" + integrity sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" + +read-package-json@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" + integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== + dependencies: + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" + read-package-up@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/read-package-up/-/read-package-up-11.0.0.tgz#71fb879fdaac0e16891e6e666df22de24a48d5ba" + resolved "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz" integrity sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ== dependencies: find-up-simple "^1.0.0" read-pkg "^9.0.0" type-fest "^4.6.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + read-pkg@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-9.0.1.tgz#b1b81fb15104f5dbb121b6bbdee9bbc9739f569b" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz" integrity sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA== dependencies: "@types/normalize-package-data" "^2.4.3" @@ -2102,41 +9204,176 @@ read-pkg@^9.0.0: type-fest "^4.6.0" unicorn-magic "^0.1.0" +read@1, read@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +recursive-fs@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/recursive-fs/-/recursive-fs-2.1.0.tgz#1e20cf7836b292ed81208c4817550a58ad0e15ff" + integrity sha512-oed3YruYsD52Mi16s/07eYblQOLi5dTtxpIJNdfCEJ7S5v8dDgVcycar0pRWf4IBuPMIkoctC8RTqGJzIKMNAQ== + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.10.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" rpc-websockets@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.0.tgz#e31fc38c2b1fdcf65132d90201bacf288b9c0748" + resolved "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.0.tgz" integrity sha512-1yf8FM6PY6Uhip2Fe+UrgPq9EhUu0qxr5mcVSEGOTWhpzffTh5IBKy5S+C68zJv0Gg0k9ey0pw7K06+EfbnN3g== dependencies: "@swc/helpers" "^0.5.11" @@ -2150,26 +9387,110 @@ rpc-websockets@^9.0.0: bufferutil "^4.0.1" utf-8-validate "^5.0.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.0: +rpc-websockets@^9.0.2: + version "9.0.4" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" + integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5, rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -semver@^7.3.5, semver@^7.5.2, semver@^7.6.0: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-stable-stringify@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +"semver@2 || 3 || 4 || 5", semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver@^7.3.5, semver@^7.5.2: version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -2179,39 +9500,115 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^4.1.0: +signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +sigstore@^1.0.0, sigstore@^1.3.0, sigstore@^1.4.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" + integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + "@sigstore/sign" "^1.0.0" + "@sigstore/tuf" "^1.0.3" + make-fetch-happen "^11.0.1" + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +slash@3.0.0, slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snake-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== dependencies: dot-case "^3.0.4" tslib "^2.0.3" +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + solana-bankrun-darwin-arm64@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-arm64/-/solana-bankrun-darwin-arm64-0.3.0.tgz#749ce9858bf61c4244a06c4e6d99338daa154909" + resolved "https://registry.npmjs.org/solana-bankrun-darwin-arm64/-/solana-bankrun-darwin-arm64-0.3.0.tgz" integrity sha512-+NbDncf0U6l3knuacRBiqpjZ2DSp+5lZaAU518gH7/x6qubbui/d000STaIBK+uNTPBS/AL/bCN+7PkXqmA3lA== solana-bankrun-darwin-universal@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-universal/-/solana-bankrun-darwin-universal-0.3.0.tgz#2d2932282bb1fe719430f2f53060cad3104ebb26" + resolved "https://registry.npmjs.org/solana-bankrun-darwin-universal/-/solana-bankrun-darwin-universal-0.3.0.tgz" integrity sha512-1/F0xdMa4qvc5o6z16FCCbZ5jbdvKvxpx5kyPcMWRiRPwyvi+zltMxciPAYMlg3wslQqGz88uFhrBEzq2eTumQ== solana-bankrun-darwin-x64@0.3.0: @@ -2231,7 +9628,7 @@ solana-bankrun-linux-x64-musl@0.3.0: solana-bankrun@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/solana-bankrun/-/solana-bankrun-0.3.0.tgz#1183af008e00c565d6708f0c051588589e315d1c" + resolved "https://registry.npmjs.org/solana-bankrun/-/solana-bankrun-0.3.0.tgz" integrity sha512-YkH7sa8TB/AoRPzG17CXJtYsRIQHEkEqGLz1Vwc13taXhDBkjO7z6NI5JYw7n0ybRymDHwMYTc7sd+5J40TyVQ== dependencies: "@solana/web3.js" "^1.68.0" @@ -2243,9 +9640,16 @@ solana-bankrun@^0.3.0: solana-bankrun-linux-x64-gnu "0.3.0" solana-bankrun-linux-x64-musl "0.3.0" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + source-map-support@^0.5.6: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -2253,12 +9657,17 @@ source-map-support@^0.5.6: source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sparse-array@^1.3.1, sparse-array@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== + spdx-correct@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" @@ -2266,12 +9675,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -2279,15 +9688,83 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz" integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== +"spl-token-4@npm:@solana/spl-token@0.3.11": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" + integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-metadata" "^0.1.2" + buffer "^6.0.3" + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + split2@^4.0.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@9.0.1, ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + +ssri@^10.0.0, ssri@^10.0.1: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stream-browserify@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-to-it@^0.2.2, stream-to-it@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2296,106 +9773,345 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-final-newline@^3.0.0: +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" -strip-json-comments@3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + +stubborn-fs@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/stubborn-fs/-/stubborn-fs-1.2.5.tgz#e5e244223166921ddf66ed5e062b6b3bf285bfd2" + integrity sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g== + superstruct@^0.15.4: version "0.15.5" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + resolved "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz" integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== superstruct@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" + resolved "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz" integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + supports-color@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +sync-multihash-sha2@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sync-multihash-sha2/-/sync-multihash-sha2-1.0.0.tgz#b3004253cd0bde75ec303e4db1524d891fdbaac1" + integrity sha512-A5gVpmtKF0ov+/XID0M0QRJqF2QxAsj3x/LlDC8yivzgoYCoWkV+XaZPfVu7Vj1T/hYzYS1tfjwboSbXjqocug== + dependencies: + "@noble/hashes" "^1.3.1" + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4, tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + temp-dir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-3.0.0.tgz#7f147b42ee41234cc6ba3138cd8e8aa2302acffa" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz" integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw== tempfile@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-5.0.0.tgz#40c141e441709fe2d9c17c138e81d4c33fbc9e03" + resolved "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz" integrity sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q== dependencies: temp-dir "^3.0.0" +tempy@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65" + integrity sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + text-encoding-utf-8@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + resolved "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz" integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + text-extensions@^2.0.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz" integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== -"through@>=2.2.7 <3": +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + +tinyexec@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.1.tgz#0ab0daf93b43e2c211212396bdb836b468c97c98" + integrity sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@~0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toml@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + ts-mocha@^10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" + resolved "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz" integrity sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw== dependencies: ts-node "7.0.1" @@ -2404,7 +10120,7 @@ ts-mocha@^10.0.0: ts-node@7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz" integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== dependencies: arrify "^1.0.0" @@ -2416,9 +10132,28 @@ ts-node@7.0.1: source-map-support "^0.5.6" yn "^2.0.0" +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tsconfig-paths@^3.5.0: version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" @@ -2426,99 +10161,472 @@ tsconfig-paths@^3.5.0: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^2.0.3, tslib@^2.4.0: version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== +tslib@^2.1.0, tslib@^2.3.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" + integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== + +tslib@^2.3.1, tslib@^2.5.0, tslib@^2.6.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + +tsx@^4.19.2: + version "4.19.2" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c" + integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g== + dependencies: + esbuild "~0.23.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + +tuf-js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" + integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== + dependencies: + "@tufjs/models" "1.0.4" + debug "^4.3.4" + make-fetch-happen "^11.1.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-fest@^2.11.2: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-fest@^4.6.0, type-fest@^4.7.1: version "4.20.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.20.0.tgz#019becf5a97cd58eee93f592f0961859a74482a7" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.20.0.tgz" integrity sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw== -typescript@^4.3.5: +type-fest@^4.9.0: + version "4.26.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" + integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +"typescript@^3 || ^4", typescript@^4.3.5: version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uglify-js@^3.1.4: version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz" integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== +uint8-varint@^2.0.1, uint8-varint@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" + integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.1.2, uint8arraylist@^2.4.3, uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^4.0.2, uint8arrays@^4.0.3, uint8arrays@^4.0.6: + version "4.0.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2, uint8arrays@^5.0.3, uint8arrays@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1" + integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww== + dependencies: + multiformats "^13.0.0" + undici-types@~5.26.4: version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2, undici-types@~6.19.8: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici@^5.12.0: + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== + dependencies: + "@fastify/busboy" "^2.0.0" + unicorn-magic@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== -uri-js@^4.4.1: +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universal-user-agent@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" + integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +upath@2.0.1, upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" +usb@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/usb/-/usb-2.9.0.tgz#8ae3b175f93bee559400bff33491eee63406b6a2" + integrity sha512-G0I/fPgfHUzWH8xo2KkDxTTFruUWfppgSFJ+bQxz/kVY2x15EQ/XDB7dqD1G432G4gBG4jYQuF3U7j/orSs5nw== + dependencies: + "@types/w3c-web-usb" "^1.0.6" + node-addon-api "^6.0.0" + node-gyp-build "^4.5.0" + utf-8-validate@^5.0.2: version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz" integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" -uuid@^8.3.2: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@8.3.2, uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -validate-npm-package-license@^3.0.4: +uuid@9.0.1, uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-compile-cache@^2.0.3: + version "2.4.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + +validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@4.0.0, validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +varint-decoder@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/varint-decoder/-/varint-decoder-1.0.0.tgz#289dab7887ee58d0c7be3a3353abeab4ca60aa77" + integrity sha512-JkOvdztASWGUAsXshCFHrB9f6AgR2Q8W08CEyJ+43b1qtFocmI8Sp1R/M0E/hDOY2FzVIqk63tOYLgDYWuJ7IQ== + dependencies: + varint "^5.0.0" + +varint@^5.0.0, varint@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +walk-up-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== + +wcwidth@^1.0.0, wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +weald@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/weald/-/weald-1.0.4.tgz#8858cf9186869deba58357ae10cf26eaada80bb0" + integrity sha512-+kYTuHonJBwmFhP1Z4YQK/dGi3jAnJGCYhyODFpHK73rbxnp9lnZQj7a2m+WVgn8fXr5bJaxUpF6l8qZpPeNWQ== + dependencies: + ms "^3.0.0-canary.1" + supports-color "^9.4.0" + webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@2.0.2, which@^2.0.1: +when-exit@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/when-exit/-/when-exit-2.1.3.tgz#5831cdbed8ad4984645da98c4a00d4ee3a3757e7" + integrity sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw== + +which@2.0.2, which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +which@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" + integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +winston-transport@^4.7.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.8.0.tgz#a15080deaeb80338455ac52c863418c74fcf38ea" + integrity sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA== + dependencies: + logform "^2.6.1" + readable-stream "^4.5.2" + triple-beam "^1.3.0" + +winston@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.12.0.tgz#a5d965a41d3dc31be5408f8c66e927958846c0d0" + integrity sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w== + dependencies: + "@colors/colors" "^1.6.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.7.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== workerpool@6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -2527,44 +10635,147 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-pkg@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== + dependencies: + sort-keys "^2.0.0" + type-fest "^0.4.1" + write-json-file "^3.2.0" + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ws@^7.4.5: version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + ws@^8.5.0: version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz" integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yargs-parser@20.2.4: +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.2.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3" + integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ== + +yargs-parser@20.2.4, yargs-parser@^20.2.2: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^20.2.2: +yargs-parser@21.1.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -2572,9 +10783,9 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: +yargs@16.2.0, yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -2585,9 +10796,9 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.0: +yargs@^17.0.0, yargs@^17.6.2: version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -2598,17 +10809,22 @@ yargs@^17.0.0: y18n "^5.0.5" yargs-parser "^21.1.1" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yn@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + resolved "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz" integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== yocto-queue@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==