From e6a5c30b2928edeff840cd44bc21d9972358081b Mon Sep 17 00:00:00 2001 From: "Stephen.Liu" Date: Sun, 31 May 2026 00:12:54 +0900 Subject: [PATCH] integrate token contract --- .markdownlint.json | 20 +- .pre-commit/.just | 2 +- CHANGELOG.md | 8 +- Cargo.lock | 1831 +++++++++-------- Cargo.toml | 5 +- cli/src/gas/mod.rs | 121 ++ cli/src/gas/priority.rs | 139 ++ cli/src/scheduler/helpers.rs | 10 + .../scheduler/occurrence/occurrence_add.rs | 3 +- cli/src/scheduler/task/mod.rs | 33 + cli/src/sui.rs | 47 +- cli/src/tap/tap_common.rs | 5 +- cli/src/tap/tap_schedule_task.rs | 2 +- cli/src/tool/mod.rs | 4 +- cli/src/tool/tool_inspect.rs | 67 +- cli/src/tool/tool_register_offchain.rs | 12 +- cli/src/tool/tool_register_onchain.rs | 12 +- sdk/.just | 6 +- sdk/Cargo.toml | 6 + sdk/src/bin/regenerate_bindings.rs | 84 +- sdk/src/dag/validator.rs | 2 +- sdk/src/events/parsing.rs | 8 +- .../extensions/leader_registry.rs | 4 +- sdk/src/move_bindings/extensions/mod.rs | 1 + .../move_bindings/extensions/network_auth.rs | 6 +- .../extensions/priority_fee_vault.rs | 128 ++ .../extensions/runtime_vertex.rs | 8 +- sdk/src/move_bindings/extensions/support.rs | 4 +- sdk/src/move_bindings/extensions/tap.rs | 2 +- sdk/src/move_bindings/extensions/workflow.rs | 4 +- sdk/src/move_bindings/ir/interface.json | 15 + sdk/src/move_bindings/ir/registry.json | 790 +++++-- sdk/src/move_bindings/ir/talus.json | 325 +++ sdk/src/move_bindings/ir/workflow.json | 31 - sdk/src/move_bindings/mod.rs | 53 +- sdk/src/move_boundary/mod.rs | 4 +- sdk/src/nexus/gas.rs | 207 ++ sdk/src/nexus/scheduler.rs | 2 +- sdk/src/nexus/workflow.rs | 18 +- sdk/src/test_utils/contracts.rs | 19 +- sdk/src/test_utils/sui_mocks.rs | 4 +- sdk/src/transactions/dag.rs | 17 +- sdk/src/transactions/gas.rs | 215 +- sdk/src/transactions/leader.rs | 83 +- sdk/src/transactions/network_auth.rs | 4 +- sdk/src/transactions/scheduler.rs | 60 +- sdk/src/transactions/tap.rs | 8 +- sdk/src/types/mod.rs | 4 +- sdk/src/types/nexus_objects.rs | 97 +- sdk/src/types/priority_fee.rs | 14 + sdk/tests/tap_contract_test.rs | 3 + 51 files changed, 3313 insertions(+), 1244 deletions(-) create mode 100644 cli/src/gas/priority.rs create mode 100644 sdk/src/move_bindings/extensions/priority_fee_vault.rs create mode 100644 sdk/src/move_bindings/ir/talus.json create mode 100644 sdk/src/types/priority_fee.rs diff --git a/.markdownlint.json b/.markdownlint.json index 3de6d07af..ead787827 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,14 +1,22 @@ { "default": true, - "MD004": {"style": "dash"}, + "MD004": { + "style": "dash" + }, "MD013": false, "MD024": false, "MD025": false, "MD033": false, "MD041": false, - "MD026": { "punctuation": ".,;:!" }, - "MD029": { "style": "one_or_ordered" }, - "MD007": { "indent": 2 }, + "MD026": { + "punctuation": ".,;:!" + }, + "MD029": { + "style": "one_or_ordered" + }, + "MD007": { + "indent": 2 + }, "no-hard-tabs": true, - "no-trailing-spaces": true -} + "no-trailing-spaces": true +} \ No newline at end of file diff --git a/.pre-commit/.just b/.pre-commit/.just index 706af0fa1..b7ef5f535 100644 --- a/.pre-commit/.just +++ b/.pre-commit/.just @@ -106,7 +106,7 @@ md-lint: _check-markdownlint-cli2 # Ensure we are in the root of the repository, makes things easier. cd $(git rev-parse --show-toplevel) - markdownlint-cli2 '**/*.md' '!.git/' --config .markdownlint.json + markdownlint-cli2 '**/*.md' '!.git/' '!sdk/target' --config .markdownlint.json check-shebang: diff --git a/CHANGELOG.md b/CHANGELOG.md index 2db9cdfac..33001baff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,15 +17,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), #### Changed -- Move binding regeneration now preserves the reduced Move standard library and Sui framework IR, - limiting deployment refreshes to Nexus packages. -- Move binding regeneration now commits canonical SDK package identities, preventing package ID - churn when the same Move ABI is rebound from another deployment. +- Move binding regeneration now preserves the reduced Move standard library and Sui framework IR, limiting deployment refreshes to Nexus packages. +- Move binding regeneration now commits canonical SDK package identities, preventing package ID churn when the same Move ABI is rebound from another deployment. +- Migrate to use US token for staking and support vault swap. ### `nexus-cli` #### Added +- `nexus gas priority-fee-vault` commands for configuring the priority-fee vault, swapping `$US` for SUI, draining vault SUI with a strict quote, and withdrawing leader `$US` priority-fee shares. - Added support for new priority fee system in commands. ## [`2.0.0-rc.4`] - 2026-07-09 diff --git a/Cargo.lock b/Cargo.lock index 9921f108b..2ab774b54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,24 +14,15 @@ dependencies = [ [[package]] name = "addchain" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +checksum = "2e33f6a175ec6a9e0aca777567f9ff7c3deefc255660df887e7fa3585e9801d8" dependencies = [ "num-bigint 0.3.3", "num-integer", "num-traits", ] -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -44,7 +35,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "generic-array", ] @@ -153,7 +144,7 @@ checksum = "fe233a377643e0fc1a56421d7c90acdec45c291b30345eb9f08e8d0ddce5a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -183,13 +174,13 @@ dependencies = [ "ed25519", "futures", "hex", - "http 1.4.0", + "http 1.4.1", "matchit 0.5.0", "pin-project-lite", "pkcs8", "quinn", "quinn-proto", - "rand 0.8.5", + "rand 0.8.6", "rcgen", "ring", "rustls", @@ -235,9 +226,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -250,15 +241,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -285,15 +276,15 @@ dependencies = [ [[package]] name = "antithesis_sdk" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dafc0460f582169b1414074fd82bedbda60456fb4df0a78dc7fef1306e732ea3" +checksum = "18dbd97a5b6c21cc9176891cf715f7f0c273caf3959897f43b9bd1231939e675" dependencies = [ "libc", "libloading", "linkme", "once_cell", - "rand 0.8.5", + "rand 0.8.6", "rustc_version_runtime", "serde", "serde_json", @@ -301,12 +292,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -dependencies = [ - "backtrace", -] +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "append-only-vec" @@ -316,11 +304,11 @@ checksum = "2114736faba96bcd79595c700d03183f61357b9fbce14852515e59f3bee4ed4a" [[package]] name = "ar_archive_writer" -version = "0.2.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c269894b6fe5e9d7ada0cf69b5bf847ff35bc25fc271f08e1d080fce80339a" +checksum = "7eb93bbb63b9c227414f6eb3a0adfddca591a8ce1e9b60661bb08969b87e340b" dependencies = [ - "object 0.32.2", + "object", ] [[package]] @@ -515,7 +503,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand 0.8.5", + "rand 0.8.6", ] [[package]] @@ -541,9 +529,9 @@ dependencies = [ [[package]] name = "asn1-rs" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" +checksum = "b7f43a50ac4fdca5df8e885c21b835997f0a1cdee65494a6847694a98652d9d8" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -551,7 +539,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 2.0.17", + "thiserror 2.0.18", "time", ] @@ -563,7 +551,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", "synstructure", ] @@ -575,7 +563,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -596,13 +584,12 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-compression" -version = "0.4.35" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" +checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" dependencies = [ "compression-codecs", "compression-core", - "futures-core", "pin-project-lite", "tokio", ] @@ -626,7 +613,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -637,7 +624,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -654,15 +641,15 @@ checksum = "7460f7dd8e100147b82a63afca1a20eb6c231ee36b90ba7272e14951cb58af59" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "axum" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" dependencies = [ "axum-core", "axum-macros", @@ -670,10 +657,10 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "itoa", "matchit 0.8.4", @@ -688,7 +675,7 @@ dependencies = [ "sha1", "sync_wrapper", "tokio", - "tokio-tungstenite 0.28.0", + "tokio-tungstenite 0.29.0", "tower 0.5.3", "tower-layer", "tower-service", @@ -696,13 +683,13 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", "mime", @@ -714,28 +701,13 @@ dependencies = [ [[package]] name = "axum-macros" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" +checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", -] - -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object 0.37.3", - "rustc-demangle", - "windows-link", + "syn 2.0.117", ] [[package]] @@ -780,9 +752,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.1" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] name = "bcs" @@ -945,9 +917,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" [[package]] name = "bitmaps" @@ -993,9 +965,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" dependencies = [ "arrayref", "arrayvec", @@ -1004,9 +976,9 @@ dependencies = [ [[package]] name = "blake2s_simd" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" +checksum = "ee29928bad1e3f94c9d1528da29e07a1d3d04817ae8332de1e8b846c8439f4b3" dependencies = [ "arrayref", "arrayvec", @@ -1015,15 +987,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.2" +version = "1.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", + "cpufeatures 0.3.0", ] [[package]] @@ -1045,6 +1018,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block-padding" version = "0.2.1" @@ -1107,9 +1089,9 @@ dependencies = [ "futures-util", "hex", "home", - "http 1.4.0", + "http 1.4.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-named-pipe", "hyper-rustls", "hyper-util", @@ -1125,7 +1107,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-util", "tower-service", @@ -1152,9 +1134,9 @@ checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" [[package]] name = "brotli" -version = "8.0.2" +version = "8.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1163,9 +1145,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1201,7 +1183,7 @@ dependencies = [ "digest 0.10.7", "group 0.13.0", "merlin", - "rand 0.8.5", + "rand 0.8.6", "rand_core 0.6.4", "serde", "serde_derive", @@ -1212,9 +1194,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "byte-slice-cast" @@ -1230,9 +1212,9 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" [[package]] name = "byteorder" @@ -1251,9 +1233,9 @@ dependencies = [ [[package]] name = "bytestring" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +checksum = "86566c496f2f47d9b8147a4c8b02ffdb69c919fe0c2b2e7195d22cbba0e635c9" dependencies = [ "bytes", ] @@ -1269,9 +1251,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.49" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ "find-msvc-tools", "jobserver", @@ -1361,15 +1343,15 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", ] [[package]] name = "clap" -version = "4.5.53" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -1388,9 +1370,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.53" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -1401,30 +1383,30 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.61" +version = "4.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992" +checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "clap_lex" -version = "0.7.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "clear_on_drop" @@ -1473,9 +1455,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "colored" @@ -1489,11 +1471,11 @@ dependencies = [ [[package]] name = "colored" -version = "3.0.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1508,9 +1490,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" +checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" dependencies = [ "brotli", "compression-core", @@ -1522,9 +1504,9 @@ dependencies = [ [[package]] name = "compression-core" -version = "0.4.31" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" +checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" [[package]] name = "consensus-config" @@ -1533,7 +1515,7 @@ source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72d dependencies = [ "fastcrypto", "mysten-network", - "rand 0.8.5", + "rand 0.8.6", "serde", "shared-crypto", ] @@ -1562,12 +1544,29 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "console" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" +dependencies = [ + "encode_unicode", + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "const-oid" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "const-str" version = "0.4.3" @@ -1582,9 +1581,9 @@ checksum = "3618cccc083bb987a415d85c02ca6c9994ea5b44731ec28b9ecf09658655fba9" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "convert_case" @@ -1610,6 +1609,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.10.1" @@ -1744,6 +1752,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "csv" version = "1.4.0" @@ -1811,7 +1828,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1839,12 +1856,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] @@ -1863,16 +1880,15 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1888,13 +1904,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.21.3", + "darling_core 0.23.0", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1926,15 +1942,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "data-encoding-macro" -version = "0.1.18" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" +checksum = "3259c913752a86488b501ed8680446a5ed2d5aeac6e596cb23ba3800768ea32c" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -1942,12 +1958,12 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" +checksum = "ccc2776f0c61eca1ca32528f85548abd1a4be8fb53d1b21c013e4f18da1e7090" dependencies = [ "data-encoding", - "syn 2.0.111", + "syn 1.0.109", ] [[package]] @@ -1967,7 +1983,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ - "const-oid", + "const-oid 0.9.6", ] [[package]] @@ -1976,7 +1992,7 @@ version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ - "const-oid", + "const-oid 0.9.6", "pem-rfc7468", "zeroize", ] @@ -1997,9 +2013,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", "serde_core", @@ -2029,13 +2045,13 @@ dependencies = [ [[package]] name = "derive-where" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2048,7 +2064,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2057,7 +2073,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl 2.1.1", ] [[package]] @@ -2069,7 +2094,21 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case 0.10.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", "unicode-xid", ] @@ -2101,11 +2140,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid", - "crypto-common", + "const-oid 0.9.6", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.0", + "const-oid 0.10.2", + "crypto-common 0.2.2", +] + [[package]] name = "dirs" version = "4.0.0" @@ -2159,22 +2209,22 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "docker_credential" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d89dfcba45b4afad7450a99b39e751590463e45c04728cf555d36bb66940de8" +checksum = "29547a1dc60885a552306986316bc9701ba120c1a8db6769fa68691529ad373d" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "serde", "serde_json", ] @@ -2208,7 +2258,7 @@ checksum = "83e195b4945e88836d826124af44fdcb262ec01ef94d44f14f4fb5103f19892a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2285,9 +2335,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -2339,9 +2389,9 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" dependencies = [ "log", ] @@ -2376,7 +2426,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2396,14 +2446,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "env_filter" -version = "0.1.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" dependencies = [ "log", "regex", @@ -2411,9 +2461,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.8" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" dependencies = [ "anstream", "anstyle", @@ -2508,18 +2558,18 @@ checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" dependencies = [ "bit-set 0.8.0", "regex-automata", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", ] [[package]] name = "fastbloom" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c1ddb9231d8554c2d6bdf4cfaabf0c59251658c68b6c95cd52dd0c513a912a" +checksum = "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4" dependencies = [ "getrandom 0.3.4", "libm", - "rand 0.9.2", + "rand 0.9.4", "siphasher", ] @@ -2564,7 +2614,7 @@ dependencies = [ "num-bigint 0.4.6", "once_cell", "p256", - "rand 0.8.5", + "rand 0.8.6", "readonly", "rfc6979 0.4.0", "rsa", @@ -2603,7 +2653,7 @@ dependencies = [ "fastcrypto", "hex", "itertools 0.10.5", - "rand 0.8.5", + "rand 0.8.6", "serde", "serde-big-array", "sha3 0.10.8", @@ -2625,7 +2675,7 @@ dependencies = [ "num-integer", "num-prime", "num-traits", - "rand 0.8.5", + "rand 0.8.6", "rand_chacha 0.3.1", "serde", ] @@ -2663,9 +2713,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fd-lock" @@ -2724,21 +2774,19 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.26" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" dependencies = [ "cfg-if", "libc", - "libredox", - "windows-sys 0.60.2", ] [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed-hash" @@ -2747,7 +2795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand 0.8.5", + "rand 0.8.6", "rustc-hex", "static_assertions", ] @@ -2766,9 +2814,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2833,9 +2881,12 @@ dependencies = [ [[package]] name = "fragile" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" +checksum = "8878864ba14bb86e818a412bfd6f18f9eabd4ec0f008a28e8f7eb61db532fcf9" +dependencies = [ + "futures-core", +] [[package]] name = "fs4" @@ -2870,9 +2921,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -2885,9 +2936,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -2895,15 +2946,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -2912,44 +2963,44 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-timer" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +checksum = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -2959,7 +3010,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -2997,9 +3047,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -3044,12 +3094,6 @@ dependencies = [ "polyval", ] -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - [[package]] name = "git-version" version = "0.3.9" @@ -3067,7 +3111,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3091,7 +3135,7 @@ dependencies = [ "parking_lot 0.12.5", "portable-atomic", "quanta", - "rand 0.8.5", + "rand 0.8.6", "smallvec", "spinning_top", ] @@ -3114,7 +3158,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.1", - "rand 0.8.5", + "rand 0.8.6", "rand_core 0.6.4", "rand_xorshift 0.3.0", "subtle", @@ -3132,7 +3176,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.12.1", + "indexmap 2.14.0", "slab", "tokio", "tokio-util", @@ -3141,17 +3185,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.4.0", - "indexmap 2.12.1", + "http 1.4.1", + "indexmap 2.14.0", "slab", "tokio", "tokio-util", @@ -3216,6 +3260,12 @@ dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "hdrhistogram" version = "7.5.4" @@ -3308,9 +3358,9 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.9.2", + "rand 0.9.4", "ring", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tokio", "tracing", @@ -3330,10 +3380,10 @@ dependencies = [ "moka", "once_cell", "parking_lot 0.12.5", - "rand 0.9.2", + "rand 0.9.4", "resolv-conf", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -3384,9 +3434,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" dependencies = [ "bytes", "itoa", @@ -3410,7 +3460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.4.0", + "http 1.4.1", ] [[package]] @@ -3421,7 +3471,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "pin-project-lite", ] @@ -3450,6 +3500,15 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +[[package]] +name = "hybrid-array" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -3476,22 +3535,21 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", - "h2 0.4.12", - "http 1.4.0", + "h2 0.4.14", + "http 1.4.1", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -3504,7 +3562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "pin-project-lite", "tokio", @@ -3514,17 +3572,16 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.7" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.0", - "hyper 1.8.1", + "http 1.4.1", + "hyper 1.10.1", "hyper-util", "log", "rustls", "rustls-native-certs", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -3537,7 +3594,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "pin-project-lite", "tokio", @@ -3546,18 +3603,17 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", - "futures-core", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", - "hyper 1.8.1", + "hyper 1.10.1", "ipnet", "libc", "percent-encoding", @@ -3576,7 +3632,7 @@ checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "pin-project-lite", "tokio", @@ -3585,9 +3641,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3609,12 +3665,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -3622,9 +3679,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -3635,9 +3692,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -3649,15 +3706,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -3669,15 +3726,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -3707,9 +3764,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -3755,7 +3812,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3777,12 +3834,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -3793,7 +3850,7 @@ version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ - "console", + "console 0.15.11", "number_prefix", "portable-atomic", "unicode-width 0.2.2", @@ -3817,11 +3874,11 @@ checksum = "dc1804bdb6a9784758b200007273a8b84e2b0b0b97a8f1e18e763eceb3e9f98a" [[package]] name = "inotify" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "inotify-sys", "libc", ] @@ -3847,14 +3904,15 @@ dependencies = [ [[package]] name = "insta" -version = "1.44.3" +version = "1.47.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c943d4415edd8153251b6f197de5eb1640e56d84e8d9159bea190421c73698" +checksum = "7b4a6248eb93a4401ed2f37dfe8ea592d3cf05b7cf4f8efa867b6895af7e094e" dependencies = [ - "console", + "console 0.16.3", "once_cell", "serde", "similar", + "tempfile", ] [[package]] @@ -3868,36 +3926,37 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" dependencies = [ "rustversion", ] [[package]] name = "ipconfig" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" dependencies = [ - "socket2 0.5.10", + "socket2 0.6.4", "widestring 1.2.1", - "windows-sys 0.48.0", - "winreg", + "windows-registry", + "windows-result", + "windows-sys 0.61.2", ] [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" dependencies = [ "memchr", "serde", @@ -3958,15 +4017,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" dependencies = [ "jiff-static", "log", @@ -3977,13 +4036,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3995,7 +4054,7 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -4004,9 +4063,31 @@ dependencies = [ [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -4020,10 +4101,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -4051,9 +4134,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e281ae70cc3b98dac15fced3366a880949e65fc66e345ce857a5682d152f3e62" +checksum = "72c4b1f204b655b36b24dc4939af20366c649431d4711863bbbae5c495f3eeb4" dependencies = [ "jsonrpsee-core", "jsonrpsee-http-client", @@ -4067,13 +4150,13 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4280b709ac3bb5e16cf3bad5056a0ec8df55fa89edfe996361219aadc2c7ea" +checksum = "b3e1420b1792cff778e2a1ebaa44115f156ee62a94dd106eaa51163f037d2023" dependencies = [ "base64 0.22.1", "futures-util", - "http 1.4.0", + "http 1.4.1", "jsonrpsee-core", "pin-project", "rustls", @@ -4090,22 +4173,22 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348ee569eaed52926b5e740aae20863762b16596476e943c9e415a6479021622" +checksum = "f49bfa9334963e1c85866b39dff3ffcc81f1c286eb23334267c5cb97677543a4" dependencies = [ "async-trait", "bytes", "futures-timer", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", "jsonrpsee-types", "parking_lot 0.12.5", "pin-project", - "rand 0.8.5", - "rustc-hash 2.1.1", + "rand 0.8.6", + "rustc-hash 2.1.2", "serde", "serde_json", "thiserror 1.0.69", @@ -4116,14 +4199,14 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50c389d6e6a52eb7c3548a6600c90cf74d9b71cb5912209833f00a5479e9a01" +checksum = "c215647e43482d478a6c21f021a013b50d64cf63431c1176eda9ef925dc54ec8" dependencies = [ "async-trait", "base64 0.22.1", "http-body 1.0.1", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-rustls", "hyper-util", "jsonrpsee-core", @@ -4141,28 +4224,28 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7398cddf5013cca4702862a2692b66c48a3bd6cf6ec681a47453c93d63cf8de5" +checksum = "f5248249c016692f1465a753057ae8347681995dd490c2cb65c48b14b46215a8" dependencies = [ "heck 0.5.0", - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "jsonrpsee-server" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21429bcdda37dcf2d43b68621b994adede0e28061f816b038b0f18c70c143d51" +checksum = "c625c78b8d545478370b6e7a2a191b0d921f831a9eef38dc1e7efb57e7a5472f" dependencies = [ "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "jsonrpsee-core", "jsonrpsee-types", @@ -4181,11 +4264,11 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f05e0028e55b15dbd2107163b3c744cd3bb4474f193f95d9708acbf5677e44" +checksum = "41d86fc943f81dab0ecdd6c0240b6e0f55ad57a2ea9ad8ad7efe8456fb9cc7a4" dependencies = [ - "http 1.4.0", + "http 1.4.1", "serde", "serde_json", "thiserror 1.0.69", @@ -4193,11 +4276,11 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.24.10" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78fc744f17e7926d57f478cf9ca6e1ee5d8332bf0514860b1a3cdf1742e614cc" +checksum = "9df5bd5c38c0906a6e8b3a38c8c22cc8525fda25fd1a03a3fe010686aea66b70" dependencies = [ - "http 1.4.0", + "http 1.4.1", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", @@ -4222,7 +4305,7 @@ dependencies = [ "once_cell", "percent-encoding", "referencing", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", "reqwest", "serde", "serde_json", @@ -4256,18 +4339,18 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ "cpufeatures 0.2.17", ] [[package]] name = "kqueue" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5" dependencies = [ "kqueue-sys", "libc", @@ -4275,11 +4358,11 @@ dependencies = [ [[package]] name = "kqueue-sys" -version = "1.0.4" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.12.1", "libc", ] @@ -4337,14 +4420,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.2" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" +checksum = "4de9c1e1439d8b7b3061b2d209809f447ca33241733d9a3c01eabf2dc8d94358" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -4358,18 +4441,18 @@ dependencies = [ [[package]] name = "lcov" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ccfa6d5e585a884db65b37f38184e4364eaf74d884ac35d0a90fe9baf80b723" +checksum = "4dab4f1d99e0dd8008da0d3452bb71ce08e1645465c2accc124bcb599c6b3143" dependencies = [ - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "leb128" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" +checksum = "6cc46bac87ef8093eed6f272babb833b6443374399985ac8ed28471ee0918545" [[package]] name = "libc" @@ -4389,9 +4472,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libp2p-identity" @@ -4403,19 +4486,20 @@ dependencies = [ "hkdf", "multihash", "sha2 0.10.9", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "libc", - "redox_syscall 0.5.18", + "plain", + "redox_syscall 0.8.1", ] [[package]] @@ -4426,35 +4510,35 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linkme" -version = "0.3.35" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3283ed2d0e50c06dd8602e0ab319bb048b6325d0bba739db64ed8205179898" +checksum = "e83272d46373fb8decca684579ac3e7c8f3d71d4cc3aa693df8759e260ae41cf" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.35" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5cec0ec4228b4853bb129c84dbf093a27e6c7a20526da046defc334a1b017f7" +checksum = "32d59e20403c7d08fe62b4376edfe5c7fb2ef1e6b1465379686d0f21c8df444b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "lock_api" @@ -4467,9 +4551,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" dependencies = [ "serde_core", ] @@ -4492,6 +4576,15 @@ dependencies = [ "logos-derive 0.15.1", ] +[[package]] +name = "logos" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2c55a318a87600ea870ff8c2012148b44bf18b74fad48d0f835c38c7d07c5f" +dependencies = [ + "logos-derive 0.16.1", +] + [[package]] name = "logos-codegen" version = "0.15.1" @@ -4503,9 +4596,23 @@ dependencies = [ "lazy_static", "proc-macro2", "quote", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", "rustc_version", - "syn 2.0.111", + "syn 2.0.117", +] + +[[package]] +name = "logos-codegen" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b3ffaa284e1350d017a57d04ada118c4583cf260c8fb01e0fe28a2e9cf8970" +dependencies = [ + "fnv", + "proc-macro2", + "quote", + "regex-automata", + "regex-syntax 0.8.10", + "syn 2.0.117", ] [[package]] @@ -4528,7 +4635,16 @@ version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" dependencies = [ - "logos-codegen", + "logos-codegen 0.15.1", +] + +[[package]] +name = "logos-derive" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d3a9855747c17eaf4383823f135220716ab49bea5fbea7dd42cc9a92f8aa31" +dependencies = [ + "logos-codegen 0.16.1", ] [[package]] @@ -4607,13 +4723,13 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" [[package]] name = "match-lookup" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e" +checksum = "757aee279b8bdbb9f9e676796fd459e4207a1f986e87886700abf589f5abf771" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -4649,9 +4765,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" + +[[package]] +name = "memo-map" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b" [[package]] name = "memoffset" @@ -4693,7 +4815,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -4714,10 +4836,11 @@ dependencies = [ [[package]] name = "minijinja" -version = "2.13.0" +version = "2.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0adbe6e92a6ce0fd6c4aac593fdfd3e3950b0f61b1a63aa9731eb6fd85776fa3" +checksum = "2929e494b2280e1e18959bb2e121da03347ae896896fdfaceaab43c88a02803f" dependencies = [ + "memo-map", "serde", ] @@ -4774,7 +4897,7 @@ dependencies = [ "downcast", "fragile", "mockall_derive 0.14.0", - "predicates 3.1.3", + "predicates 3.1.4", "predicates-tree", ] @@ -4799,27 +4922,27 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "mockito" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0603425789b4a70fcc4ac4f5a46a566c116ee3e2a6b768dc623f7719c611de" +checksum = "90820618712cab19cfc46b274c6c22546a82affcb3c3bdf0f29e3db8e1bb92c0" dependencies = [ "assert-json-diff", "bytes", - "colored 3.0.0", + "colored 3.1.1", "futures-core", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "log", "pin-project-lite", - "rand 0.9.2", + "rand 0.9.4", "regex", "serde_json", "serde_urlencoded", @@ -4829,9 +4952,9 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.11" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" +checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046" dependencies = [ "crossbeam-channel", "crossbeam-epoch", @@ -4839,7 +4962,6 @@ dependencies = [ "equivalent", "parking_lot 0.12.5", "portable-atomic", - "rustc_version", "smallvec", "tagptr", "uuid", @@ -4875,7 +4997,7 @@ source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72d dependencies = [ "anyhow", "enum-compat-util", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-abstract-interpreter", "move-core-types", "move-proc-macros", @@ -4911,7 +5033,7 @@ version = "0.1.0" source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72dc75ac4037b3d4e38e73b133c5ef6" dependencies = [ "anyhow", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-binary-format", "move-core-types", "petgraph 0.8.3", @@ -5038,7 +5160,7 @@ dependencies = [ "codespan-reporting", "dunce", "hex", - "indexmap 2.12.1", + "indexmap 2.14.0", "insta", "lsp-types 0.95.1", "move-abstract-interpreter", @@ -5072,12 +5194,12 @@ dependencies = [ "bcs", "ethnum", "hex", - "indexmap 2.12.1", + "indexmap 2.14.0", "leb128", "move-proc-macros", "num", "primitive-types", - "rand 0.8.5", + "rand 0.8.6", "ref-cast", "serde", "serde_with", @@ -5095,7 +5217,7 @@ dependencies = [ "clap", "codespan", "colored 2.2.0", - "indexmap 2.12.1", + "indexmap 2.14.0", "lcov", "move-abstract-interpreter", "move-binary-format", @@ -5199,7 +5321,7 @@ version = "0.1.0" source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72dc75ac4037b3d4e38e73b133c5ef6" dependencies = [ "anyhow", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-binary-format", "move-bytecode-source-map", "move-compiler", @@ -5261,7 +5383,7 @@ dependencies = [ "fs4", "futures", "heck 0.3.3", - "indexmap 2.12.1", + "indexmap 2.14.0", "indoc", "itertools 0.10.5", "jsonrpc", @@ -5320,7 +5442,7 @@ source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72d dependencies = [ "enum-compat-util", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -5328,7 +5450,7 @@ name = "move-regex-borrow-graph" version = "0.0.1" source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72dc75ac4037b3d4e38e73b133c5ef6" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.14.0", "move-binary-format", "move-command-line-common", "move-core-types", @@ -5448,7 +5570,7 @@ dependencies = [ "dashmap 6.2.1", "fail", "hex", - "indexmap 2.12.1", + "indexmap 2.14.0", "lasso", "lru 0.13.0", "move-abstract-interpreter", @@ -5673,7 +5795,7 @@ dependencies = [ "once_cell", "parking_lot 0.12.5", "prost-types", - "rand 0.8.5", + "rand 0.8.6", "serde_json", "sui-macros", "tempfile", @@ -5716,7 +5838,7 @@ dependencies = [ "dashmap 5.5.3", "eyre", "futures", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "hyper-rustls", "hyper-util", @@ -5726,7 +5848,7 @@ dependencies = [ "pin-project-lite", "prometheus", "quinn-proto", - "rand 0.8.5", + "rand 0.8.6", "rustls", "serde", "snap", @@ -5789,7 +5911,7 @@ dependencies = [ "clap", "clap-verbosity", "clap_complete", - "colored 3.0.0", + "colored 3.1.1", "convert_case 0.7.1", "env_logger", "hex", @@ -5802,16 +5924,16 @@ dependencies = [ "nexus-toolkit", "num-format", "prettytable", - "rand 0.8.5", + "rand 0.8.6", "regex", "reqwest", "rstest", - "schemars 1.1.0", + "schemars 1.2.1", "serde", "serde_json", "serial_test", "tempfile", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "toml 0.8.23", "url", @@ -5822,6 +5944,7 @@ dependencies = [ name = "nexus-sdk" version = "2.0.0-rc.4" dependencies = [ + "allocative", "anyhow", "assert_matches", "base64 0.21.7", @@ -5847,7 +5970,7 @@ dependencies = [ "portpicker", "prometheus", "prost-types", - "rand 0.8.5", + "rand 0.8.6", "rand_core 0.6.4", "regex", "reqwest", @@ -5867,7 +5990,7 @@ dependencies = [ "sui-transaction-builder 0.3.1", "tempfile", "testcontainers-modules", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-retry", "tokio-stream", @@ -5894,7 +6017,7 @@ dependencies = [ "nexus-sdk", "notify", "reqwest", - "schemars 1.1.0", + "schemars 1.2.1", "serde", "serde_json", "serde_path_to_error", @@ -5918,7 +6041,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -5967,7 +6090,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "fsevent-sys", "inotify", "kqueue", @@ -5985,7 +6108,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] @@ -6030,7 +6153,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand 0.8.5", + "rand 0.8.6", "serde", ] @@ -6045,7 +6168,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand 0.8.6", "smallvec", "zeroize", ] @@ -6125,7 +6248,7 @@ dependencies = [ "num-integer", "num-modular", "num-traits", - "rand 0.8.5", + "rand 0.8.6", ] [[package]] @@ -6174,10 +6297,10 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6186,15 +6309,6 @@ 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 = "object" version = "0.37.3" @@ -6206,34 +6320,36 @@ dependencies = [ [[package]] name = "object_store" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2858065e55c148d294a9f3aae3b0fa9458edadb41a108397094566f4e3c0dfb" +checksum = "622acbc9100d3c10e2ee15804b0caa40e55c933d5aa53814cd520805b7958a49" dependencies = [ "async-trait", "base64 0.22.1", "bytes", "chrono", "form_urlencoded", - "futures", - "http 1.4.0", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.1", "http-body-util", "httparse", "humantime", - "hyper 1.8.1", + "hyper 1.10.1", "itertools 0.14.0", "md-5", "parking_lot 0.12.5", "percent-encoding", "quick-xml", - "rand 0.9.2", + "rand 0.10.1", "reqwest", "ring", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "url", @@ -6275,9 +6391,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "ouroboros" @@ -6300,7 +6416,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6395,7 +6511,7 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -6457,7 +6573,7 @@ checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a" dependencies = [ "parse-display-derive", "regex", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", ] [[package]] @@ -6469,9 +6585,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", "structmeta", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6480,14 +6596,14 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77144664f6aac5f629d7efa815f5098a054beeeca6ccafee5ec453fd2b0c53f9" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "ciborium", "coset", "data-encoding", - "getrandom 0.2.16", + "getrandom 0.2.17", "hmac", - "indexmap 2.12.1", - "rand 0.8.5", + "indexmap 2.14.0", + "rand 0.8.6", "serde", "serde_json", "sha2 0.10.9", @@ -6507,7 +6623,7 @@ dependencies = [ "group 0.13.0", "hex", "lazy_static", - "rand 0.8.5", + "rand 0.8.6", "serde", "static_assertions", "subtle", @@ -6566,7 +6682,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.12.1", + "indexmap 2.14.0", ] [[package]] @@ -6576,7 +6692,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.12.1", + "indexmap 2.14.0", ] [[package]] @@ -6587,7 +6703,7 @@ checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset 0.5.7", "hashbrown 0.15.5", - "indexmap 2.12.1", + "indexmap 2.14.0", "serde", ] @@ -6608,7 +6724,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", - "rand 0.8.5", + "rand 0.8.6", ] [[package]] @@ -6621,7 +6737,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6635,35 +6751,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs1" @@ -6688,9 +6798,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "polyval" @@ -6706,15 +6822,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] @@ -6725,14 +6841,14 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" dependencies = [ - "rand 0.8.5", + "rand 0.8.6", ] [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -6774,9 +6890,9 @@ dependencies = [ [[package]] name = "predicates" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +checksum = "ada8f2932f28a27ee7b70dd6c1c39ea0675c55a36879ab92f3a715eaa1e63cfe" dependencies = [ "anstyle", "predicates-core", @@ -6784,15 +6900,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" +checksum = "cad38746f3166b4031b1a0d39ad9f954dd291e7854fcc0eed52ee41a0b50d144" [[package]] name = "predicates-tree" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +checksum = "d0de1b847b39c8131db0467e9df1ff60e6d0562ab8e9a16e568ad0fdb372e2f2" dependencies = [ "predicates-core", "termtree", @@ -6825,7 +6941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6865,21 +6981,21 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.1.3" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "thiserror 1.0.69", - "toml 0.5.11", + "once_cell", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.9", + "toml_edit 0.25.12+spec-1.1.0", ] [[package]] @@ -6908,9 +7024,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -6927,7 +7043,7 @@ dependencies = [ "memchr", "parking_lot 0.12.5", "protobuf", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6941,18 +7057,18 @@ dependencies = [ [[package]] name = "proptest" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.10.0", + "bitflags 2.12.1", "num-traits", - "rand 0.9.2", + "rand 0.9.4", "rand_chacha 0.9.0", "rand_xorshift 0.4.0", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", "rusty-fork", "tempfile", "unarray", @@ -6966,14 +7082,14 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "prost" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", "prost-derive", @@ -6981,46 +7097,45 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" +checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ "heck 0.5.0", "itertools 0.14.0", "log", "multimap", - "once_cell", - "petgraph 0.7.1", + "petgraph 0.8.3", "prettyplease", "prost", "prost-types", "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.111", + "syn 2.0.117", "tempfile", ] [[package]] name = "prost-derive" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "prost-reflect" -version = "0.16.3" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89455ef41ed200cafc47c76c552ee7792370ac420497e551f16123a9135f76e" +checksum = "590aa145fee8f7a26b5a6055365e7c5e89a5c1caae9869de76ec0ee73181a2f9" dependencies = [ - "logos 0.15.1", + "logos 0.16.1", "miette", "prost", "prost-types", @@ -7028,9 +7143,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b4db3d6da204ed77bb26ba83b6122a73aeb2e87e25fbf7ad2e84c4ccbf8f72" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ "prost", ] @@ -7067,7 +7182,7 @@ dependencies = [ "prost-reflect", "prost-types", "protox-parse", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -7079,14 +7194,14 @@ dependencies = [ "logos 0.15.1", "miette", "prost-types", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "psm" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11f2fedc3b7dafdc2851bc52f277377c5473d378859be234bc7ebb593144d01" +checksum = "645dbe486e346d9b5de3ef16ede18c26e6c70ad97418f4874b8b1889d6e761ea" dependencies = [ "ar_archive_writer", "cc", @@ -7094,20 +7209,20 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.13.0" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "memchr", "unicase", ] [[package]] name = "pulldown-cmark-to-cmark" -version = "21.1.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8246feae3db61428fd0bb94285c690b460e4517d83152377543ca802357785f1" +checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" dependencies = [ "pulldown-cmark", ] @@ -7135,9 +7250,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.38.4" +version = "0.39.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" dependencies = [ "memchr", "serde", @@ -7167,10 +7282,10 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustls", "socket2 0.6.4", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -7178,21 +7293,21 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "bytes", "fastbloom", "getrandom 0.3.4", "lru-slab", - "rand 0.9.2", + "rand 0.9.4", "ring", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -7214,9 +7329,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.42" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -7270,9 +7385,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -7281,12 +7396,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -7327,7 +7442,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -7345,14 +7460,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] @@ -7387,7 +7502,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -7405,14 +7520,14 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -7449,7 +7564,7 @@ checksum = "f2a62d85ed81ca5305dc544bd42c8804c5060b78ffa5ad3c64b0fb6a8c13d062" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -7476,7 +7591,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", +] + +[[package]] +name = "redox_syscall" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" +dependencies = [ + "bitflags 2.12.1", ] [[package]] @@ -7485,7 +7609,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "libredox", "thiserror 1.0.69", ] @@ -7507,7 +7631,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -7525,25 +7649,25 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", "regex-automata", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", ] [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.8", + "regex-syntax 0.8.10", ] [[package]] @@ -7554,9 +7678,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "relative-path" @@ -7576,12 +7700,12 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.12", + "h2 0.4.14", "hickory-resolver", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-rustls", "hyper-util", "js-sys", @@ -7602,7 +7726,7 @@ dependencies = [ "tokio-rustls", "tokio-util", "tower 0.5.3", - "tower-http 0.6.8", + "tower-http 0.6.11", "tower-service", "url", "wasm-bindgen", @@ -7647,7 +7771,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -7684,7 +7808,7 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ - "const-oid", + "const-oid 0.9.6", "digest 0.10.7", "num-bigint-dig", "num-integer", @@ -7719,22 +7843,16 @@ checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" dependencies = [ "cfg-if", "glob", - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", "regex", "relative-path", "rustc_version", - "syn 2.0.111", + "syn 2.0.117", "unicode-ident", ] -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustc-hash" version = "1.1.0" @@ -7743,9 +7861,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc-hex" @@ -7783,11 +7901,11 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "errno", "libc", "linux-raw-sys", @@ -7796,9 +7914,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ "log", "once_cell", @@ -7811,9 +7929,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -7832,9 +7950,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.1" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" dependencies = [ "web-time", "zeroize", @@ -7869,9 +7987,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.8" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "ring", "rustls-pki-types", @@ -7902,7 +8020,7 @@ version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7803e8936da37efd9b6d4478277f4b2b9bb5cdb37a113e8d63222e58da647e63" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "cfg-if", "clipboard-win", "fd-lock", @@ -7920,9 +8038,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -7933,20 +8051,11 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scc" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" -dependencies = [ - "sdd", -] - [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -8020,13 +8129,13 @@ dependencies = [ [[package]] name = "schemars" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ "dyn-clone", "ref-cast", - "schemars_derive 1.1.0", + "schemars_derive 1.2.1", "serde", "serde_json", ] @@ -8040,19 +8149,19 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "schemars_derive" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633" +checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8067,12 +8176,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sdd" -version = "3.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" - [[package]] name = "sec1" version = "0.3.0" @@ -8107,7 +8210,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" dependencies = [ "bitcoin_hashes", - "rand 0.8.5", + "rand 0.8.6", "secp256k1-sys", ] @@ -8122,11 +8225,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.5.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "core-foundation", "core-foundation-sys", "libc", @@ -8135,9 +8238,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -8145,9 +8248,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" @@ -8190,9 +8293,9 @@ dependencies = [ [[package]] name = "serde-reflection" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe23e63efbe7af1bc1859ead4a05014bdd5478be550762a40f6fcf91ad5473c" +checksum = "68fb2363ca88876b3e16442b02dde5305646fd50df297c79a4b54fc5f5cf51d4" dependencies = [ "erased-discriminant", "once_cell", @@ -8219,7 +8322,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8230,21 +8333,21 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.14.0", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -8266,7 +8369,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8292,17 +8395,18 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2" dependencies = [ "base64 0.22.1", + "bs58 0.5.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.1", + "indexmap 2.14.0", "schemars 0.9.0", - "schemars 1.1.0", + "schemars 1.2.1", "serde_core", "serde_json", "serde_with_macros", @@ -8311,14 +8415,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8335,27 +8439,27 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.2.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +checksum = "699f4197115b8a7e7ff19c9a315a4bd6fffec26cc4626ef45ecaea389e081c6d" dependencies = [ - "futures", + "futures-executor", + "futures-util", "log", "once_cell", "parking_lot 0.12.5", - "scc", "serial_test_derive", ] [[package]] name = "serial_test_derive" -version = "3.2.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8393,6 +8497,17 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + [[package]] name = "sha3" version = "0.9.1" @@ -8438,16 +8553,17 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -8473,9 +8589,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "similar" @@ -8491,9 +8607,9 @@ checksum = "16e78919e05c9b8e123d435a4ad104b488ad1585631830e413830985c214086e" [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "sized-chunks" @@ -8507,9 +8623,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slip10_ed25519" @@ -8561,10 +8677,10 @@ dependencies = [ "base64 0.22.1", "bytes", "futures", - "http 1.4.0", + "http 1.4.1", "httparse", "log", - "rand 0.8.5", + "rand 0.8.6", "sha1", ] @@ -8601,15 +8717,15 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stacker" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59" +checksum = "640c8cdd92b6b12f5bcb1803ca3bbf5ab96e5e6b6b96b9ab77dabe9e880b3190" dependencies = [ "cc", "cfg-if", "libc", "psm", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -8661,7 +8777,7 @@ dependencies = [ "dupe", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8741,7 +8857,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8752,7 +8868,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8783,7 +8899,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8795,7 +8911,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8818,7 +8934,7 @@ dependencies = [ "anyhow", "bcs", "either", - "indexmap 2.12.1", + "indexmap 2.14.0", "leb128", "move-binary-format", "move-bytecode-utils", @@ -8935,7 +9051,7 @@ dependencies = [ "anyhow", "bcs", "either", - "indexmap 2.12.1", + "indexmap 2.14.0", "leb128", "move-binary-format", "move-bytecode-utils", @@ -8981,7 +9097,7 @@ dependencies = [ "object_store", "once_cell", "prometheus", - "rand 0.8.5", + "rand 0.8.6", "reqwest", "serde", "serde_json", @@ -9048,7 +9164,7 @@ dependencies = [ "chrono", "dashmap 5.5.3", "futures", - "indexmap 2.12.1", + "indexmap 2.14.0", "itertools 0.13.0", "move-core-types", "mysten-common", @@ -9149,10 +9265,10 @@ version = "0.0.0" source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72dc75ac4037b3d4e38e73b133c5ef6" dependencies = [ "bytes", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "pin-project-lite", "socket2 0.5.10", @@ -9265,7 +9381,7 @@ dependencies = [ "jsonrpc", "mockall 0.11.4", "mysten-common", - "rand 0.8.5", + "rand 0.8.6", "regex", "serde", "serde_json", @@ -9352,7 +9468,7 @@ dependencies = [ "serde_json", "sui-rpc 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "sui-sdk-types 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 2.0.111", + "syn 2.0.117", "thiserror 1.0.69", ] @@ -9363,7 +9479,7 @@ source = "git+https://github.com/Talus-Network/move-binding?branch=feat%2Fsource dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -9376,11 +9492,11 @@ dependencies = [ "fastcrypto", "fastcrypto-vdf", "fastcrypto-zkp", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-binary-format", "move-core-types", "move-vm-runtime", - "rand 0.8.5", + "rand 0.8.6", "smallvec", "sui-protocol-config", "sui-types", @@ -9438,7 +9554,7 @@ dependencies = [ "better_any", "fastcrypto", "fastcrypto-zkp", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-binary-format", "move-core-types", "move-stdlib-natives-v2", @@ -9460,13 +9576,13 @@ dependencies = [ "fastcrypto", "fastcrypto-vdf", "fastcrypto-zkp", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-binary-format", "move-core-types", "move-stdlib-natives-v3", "move-vm-runtime-v3", "move-vm-types-v3", - "rand 0.8.5", + "rand 0.8.6", "smallvec", "sui-protocol-config", "sui-types", @@ -9528,7 +9644,7 @@ source = "git+https://github.com/MystenLabs/sui?tag=mainnet-v1.73.2#1f6e1e6dd72d dependencies = [ "anyhow", "async-trait", - "indexmap 2.12.1", + "indexmap 2.14.0", "move-compiler", "move-package-alt", "serde", @@ -9578,7 +9694,7 @@ dependencies = [ "proc-macro2", "quote", "sui-enum-compat-util", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -9592,7 +9708,7 @@ dependencies = [ "move-core-types", "move-vm-config", "mysten-common", - "rand 0.8.5", + "rand 0.8.6", "schemars 0.8.22", "serde", "serde-env", @@ -9622,7 +9738,7 @@ dependencies = [ "bcs", "bytes", "futures", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "prost", "prost-types", @@ -9645,7 +9761,7 @@ dependencies = [ "bcs", "bytes", "futures", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "prost", "prost-types", @@ -9673,7 +9789,7 @@ dependencies = [ "bytes", "fastcrypto", "futures", - "http 1.4.0", + "http 1.4.1", "itertools 0.13.0", "move-binary-format", "move-core-types", @@ -9683,7 +9799,7 @@ dependencies = [ "prost", "prost-types", "protox", - "rand 0.8.5", + "rand 0.8.6", "roaring", "serde", "serde_json", @@ -9770,7 +9886,7 @@ dependencies = [ "serde_derive", "serde_json", "serde_with", - "winnow", + "winnow 0.7.14", ] [[package]] @@ -9791,7 +9907,7 @@ dependencies = [ "serde_derive", "serde_json", "serde_with", - "winnow", + "winnow 0.7.14", ] [[package]] @@ -9822,7 +9938,7 @@ dependencies = [ "serde", "sui-rpc 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "sui-sdk-types 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -9864,7 +9980,7 @@ dependencies = [ "fastcrypto-tbls", "fastcrypto-zkp", "im", - "indexmap 2.12.1", + "indexmap 2.14.0", "itertools 0.13.0", "lru 0.10.1", "move-binary-format", @@ -9888,7 +10004,7 @@ dependencies = [ "proptest-derive", "prost", "prost-types", - "rand 0.8.5", + "rand 0.8.6", "roaring", "rustls-pki-types", "schemars 0.8.22", @@ -10007,9 +10123,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.111" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -10033,7 +10149,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -10074,9 +10190,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", "getrandom 0.3.4", @@ -10107,12 +10223,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" +checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" dependencies = [ "rustix", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -10143,7 +10259,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tokio-tar", @@ -10180,11 +10296,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -10195,18 +10311,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -10268,7 +10384,7 @@ dependencies = [ "hmac", "once_cell", "pbkdf2", - "rand 0.8.5", + "rand 0.8.6", "rustc-hash 1.1.0", "sha2 0.10.9", "thiserror 1.0.69", @@ -10288,9 +10404,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -10298,9 +10414,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -10336,7 +10452,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -10362,9 +10478,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -10401,14 +10517,14 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" dependencies = [ "futures-util", "log", "tokio", - "tungstenite 0.28.0", + "tungstenite 0.29.0", ] [[package]] @@ -10457,46 +10573,57 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.11", + "winnow 0.5.40", +] + [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.14.0", "serde", "serde_spanned", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.14", ] [[package]] name = "toml_edit" -version = "0.23.9" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ - "indexmap 2.12.1", - "toml_datetime 0.7.3", + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] @@ -10515,11 +10642,11 @@ dependencies = [ "axum", "base64 0.22.1", "bytes", - "h2 0.4.12", - "http 1.4.0", + "h2 0.4.14", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-timeout", "hyper-util", "percent-encoding", @@ -10546,7 +10673,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -10584,7 +10711,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.111", + "syn 2.0.117", "tempfile", "tonic-build", ] @@ -10611,7 +10738,7 @@ checksum = "b5e6a1b6319ca4b61a4c0f0c94d439c8f3ed344cca56fe0df40e1fe4be11380b" dependencies = [ "base64 0.22.1", "bytes", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "pin-project", "tokio-stream", @@ -10633,7 +10760,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand 0.8.5", + "rand 0.8.6", "slab", "tokio", "tokio-util", @@ -10651,7 +10778,7 @@ dependencies = [ "futures-core", "futures-util", "hdrhistogram", - "indexmap 2.12.1", + "indexmap 2.14.0", "pin-project-lite", "slab", "sync_wrapper", @@ -10670,11 +10797,11 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "async-compression", "base64 0.21.7", - "bitflags 2.10.0", + "bitflags 2.12.1", "bytes", "futures-core", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -10695,20 +10822,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "bytes", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", - "iri-string", "pin-project-lite", "tower 0.5.3", "tower-layer", "tower-service", + "url", ] [[package]] @@ -10725,9 +10852,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -10743,14 +10870,14 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "tracing-core" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -10769,9 +10896,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -10817,10 +10944,10 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.4.0", + "http 1.4.1", "httparse", "log", - "rand 0.8.5", + "rand 0.8.6", "sha1", "thiserror 1.0.69", "url", @@ -10829,19 +10956,18 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" dependencies = [ "bytes", "data-encoding", - "http 1.4.0", + "http 1.4.1", "httparse", "log", - "rand 0.9.2", + "rand 0.9.4", "sha1", - "thiserror 2.0.17", - "utf-8", + "thiserror 2.0.18", ] [[package]] @@ -10861,15 +10987,15 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "typeshare" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" +checksum = "da1bf9fe204f358ffea7f8f779b53923a20278b3ab8e8d97962c5e1b3a54edb7" dependencies = [ "chrono", "serde", @@ -10879,12 +11005,12 @@ dependencies = [ [[package]] name = "typeshare-annotation" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" +checksum = "621963e302416b389a1ec177397e9e62de849a78bd8205d428608553def75350" dependencies = [ "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -10913,15 +11039,15 @@ checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" [[package]] name = "unicase" -version = "2.8.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-normalization" @@ -10934,9 +11060,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -10962,7 +11088,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "subtle", ] @@ -11011,13 +11137,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.19.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "js-sys", - "rand 0.9.2", + "rand 0.10.1", "wasm-bindgen", ] @@ -11046,7 +11172,7 @@ checksum = "a1935e10c6f04d22688d07c0790f2fc0e1b1c5c2c55bc0cc87ed67656e587dd8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -11148,9 +11274,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" dependencies = [ "wit-bindgen", ] @@ -11163,9 +11289,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" dependencies = [ "cfg-if", "once_cell", @@ -11176,23 +11302,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.64" +version = "0.4.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11200,22 +11322,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" dependencies = [ "unicode-ident", ] @@ -11235,9 +11357,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.91" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" dependencies = [ "js-sys", "wasm-bindgen", @@ -11259,23 +11381,23 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.4", + "webpki-root-certs 1.0.7", ] [[package]] name = "webpki-root-certs" -version = "1.0.4" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "1.0.4" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" dependencies = [ "rustls-pki-types", ] @@ -11355,7 +11477,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -11366,7 +11488,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -11375,6 +11497,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.4.1" @@ -11690,6 +11823,15 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +[[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.7.14" @@ -11700,26 +11842,25 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.50.0" +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "memchr", ] [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "wyz" @@ -11762,7 +11903,7 @@ dependencies = [ "oid-registry", "ring", "rusticata-macros", - "thiserror 2.0.17", + "thiserror 2.0.18", "time", ] @@ -11778,16 +11919,16 @@ dependencies = [ [[package]] name = "xeddsa" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2460c9a9c9d1331ff6801e87badb517faa6b6758e5fb585eb27daf7622c6d5ad" +checksum = "4de76539e20b51353b2653cbf575bf987ab9fcef550fa59a2ff64562ed5b14cb" dependencies = [ "curve25519-dalek", - "derive_more 0.99.20", + "derive_more 2.1.1", "ed25519", "ed25519-dalek", - "rand 0.8.5", - "sha2 0.10.9", + "rand 0.10.1", + "sha2 0.11.0", "x25519-dalek", "zeroize", ] @@ -11818,9 +11959,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -11829,54 +11970,54 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", "synstructure", ] @@ -11891,20 +12032,20 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -11913,9 +12054,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -11924,15 +12065,21 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.117", ] +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + [[package]] name = "zstd" version = "0.13.3" diff --git a/Cargo.toml b/Cargo.toml index fcec42659..20437c33a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,9 @@ categories = [ ] [workspace.dependencies] +# starlark_map 0.13.0 derives Allocative for hashbrown 0.14 raw table types; +# allocative 0.3.6 switched its hashbrown impls to 0.16, which breaks that derive. +allocative = "=0.3.4" anyhow = "1.0.97" argon2 = "0.5" base64 = "0.21" @@ -66,7 +69,7 @@ strum = "0.27" strum_macros = "0.27" tempfile = "3.19.0" thiserror = "2.0.12" -tokio = { version = "1.52", features = ["full"] } +tokio = { version = "1.52.1", features = ["full"] } tokio-stream = "0.1.17" tokio-retry = "0.3.2" tokio-util = "0.7.18" diff --git a/cli/src/gas/mod.rs b/cli/src/gas/mod.rs index 44e9cd557..28488ebbc 100644 --- a/cli/src/gas/mod.rs +++ b/cli/src/gas/mod.rs @@ -1,7 +1,9 @@ +mod priority; mod tickets; use { crate::prelude::*, + priority::*, tickets::{expiry::*, limited_invocations::*}, }; @@ -15,6 +17,69 @@ pub(crate) enum GasCommand { about = "Manage the limited invocations gas ticket extension" )] LimitedInvocations(LimitedInvocationsCommand), + + #[command(about = "Configure the priority fee vault exchange rate")] + ConfigurePriorityFeeVault { + #[arg( + long = "exchange-rate", + help = "$US units per SUI unit", + value_name = "RATE" + )] + exchange_rate: u64, + #[command(flatten)] + gas: GasArgs, + }, + + #[command(about = "Swap an owned `$US` coin for SUI from the priority fee vault")] + SwapUsForSui { + #[arg( + long = "us-coin", + help = "Owned Coin object ID", + value_name = "OBJECT_ID" + )] + us_coin: sui::types::Address, + #[arg( + long = "min-sui-out", + help = "Minimum SUI output accepted", + value_name = "MIST", + default_value_t = 0 + )] + min_sui_out: u64, + #[command(flatten)] + gas: GasArgs, + }, + + #[command( + about = "Drain all currently available SUI from the priority fee vault using an owned `$US` coin" + )] + DrainPriorityFeeVaultSui { + #[arg( + long = "us-coin", + help = "Owned Coin object ID used to buy all currently available vault SUI", + value_name = "OBJECT_ID" + )] + us_coin: sui::types::Address, + #[command(flatten)] + gas: GasArgs, + }, + + #[command(about = "Withdraw a leader's `$US` priority-fee share")] + WithdrawPriorityFee { + #[arg( + long = "leader-cap", + help = "Leader cap object ID", + value_name = "OBJECT_ID" + )] + leader_cap: sui::types::Address, + #[arg( + long = "share-to-withdraw", + help = "SUI-denominated leader share to withdraw; defaults to the leader's full vault share", + value_name = "SHARE" + )] + share_to_withdraw: Option, + #[command(flatten)] + gas: GasArgs, + }, } #[derive(Subcommand)] @@ -289,5 +354,61 @@ pub(crate) async fn handle(command: GasCommand) -> AnyResult<(), NexusCliError> .await } }, + + GasCommand::ConfigurePriorityFeeVault { exchange_rate, gas } => { + configure_priority_fee_vault(exchange_rate, gas.sui_gas_coin, gas.sui_gas_budget).await + } + + GasCommand::SwapUsForSui { + us_coin, + min_sui_out, + gas, + } => swap_us_for_sui(us_coin, min_sui_out, gas.sui_gas_coin, gas.sui_gas_budget).await, + + GasCommand::DrainPriorityFeeVaultSui { us_coin, gas } => { + drain_priority_fee_vault_sui(us_coin, gas.sui_gas_coin, gas.sui_gas_budget).await + } + + GasCommand::WithdrawPriorityFee { + leader_cap, + share_to_withdraw, + gas, + } => { + withdraw_priority_fee( + leader_cap, + share_to_withdraw, + gas.sui_gas_coin, + gas.sui_gas_budget, + ) + .await + } + } +} + +#[cfg(test)] +mod tests { + use {super::*, clap::Parser}; + + #[test] + fn parses_drain_priority_fee_vault_sui_command() { + let cli = crate::Cli::try_parse_from([ + "nexus", + "gas", + "drain-priority-fee-vault-sui", + "--us-coin", + "0x2", + "--sui-gas-budget", + "12345", + ]) + .expect("drain command should parse"); + + let crate::Command::Gas(GasCommand::DrainPriorityFeeVaultSui { us_coin, gas }) = + cli.command + else { + panic!("expected gas drain command"); + }; + + assert_eq!(us_coin, sui::types::Address::from_static("0x2")); + assert_eq!(gas.sui_gas_budget, 12345); } } diff --git a/cli/src/gas/priority.rs b/cli/src/gas/priority.rs new file mode 100644 index 000000000..badbafcec --- /dev/null +++ b/cli/src/gas/priority.rs @@ -0,0 +1,139 @@ +use crate::{command_title, display::json_output, loading, notify_success, prelude::*, sui::*}; + +pub(crate) async fn configure_priority_fee_vault( + exchange_rate: u64, + sui_gas_coin: Option, + sui_gas_budget: u64, +) -> AnyResult<(), NexusCliError> { + command_title!("Configuring priority fee vault"); + let nexus_client = get_nexus_client(sui_gas_coin, sui_gas_budget).await?; + let tx_handle = loading!("Crafting and executing transaction..."); + let response = match nexus_client + .gas() + .configure_priority_fee_vault(exchange_rate) + .await + { + Ok(resp) => resp, + Err(e) => { + tx_handle.error(); + return Err(NexusCliError::Nexus(e)); + } + }; + tx_handle.success(); + notify_success!( + "Transaction digest: {digest}", + digest = response.tx_digest.to_string().truecolor(100, 100, 100) + ); + json_output(&json!({ "digest": response.tx_digest }))?; + Ok(()) +} + +pub(crate) async fn swap_us_for_sui( + us_coin: sui::types::Address, + min_sui_out: u64, + sui_gas_coin: Option, + sui_gas_budget: u64, +) -> AnyResult<(), NexusCliError> { + command_title!("Swapping `$US` for SUI from the priority fee vault"); + let nexus_client = get_nexus_client(sui_gas_coin, sui_gas_budget).await?; + let tx_handle = loading!("Crafting and executing transaction..."); + let response = match nexus_client + .gas() + .swap_us_for_sui(us_coin, min_sui_out) + .await + { + Ok(resp) => resp, + Err(e) => { + tx_handle.error(); + return Err(NexusCliError::Nexus(e)); + } + }; + tx_handle.success(); + notify_success!( + "Transaction digest: {digest}", + digest = response.tx_digest.to_string().truecolor(100, 100, 100) + ); + json_output(&json!({ "digest": response.tx_digest }))?; + Ok(()) +} + +pub(crate) async fn drain_priority_fee_vault_sui( + us_coin: sui::types::Address, + sui_gas_coin: Option, + sui_gas_budget: u64, +) -> AnyResult<(), NexusCliError> { + command_title!("Draining priority fee vault SUI"); + let nexus_client = get_nexus_client(sui_gas_coin, sui_gas_budget).await?; + let tx_handle = loading!("Querying vault state and executing drain swap..."); + let response = match nexus_client + .gas() + .drain_priority_fee_vault_sui(us_coin) + .await + { + Ok(resp) => resp, + Err(e) => { + tx_handle.error(); + return Err(NexusCliError::Nexus(e)); + } + }; + tx_handle.success(); + notify_success!( + "Transaction digest: {digest}", + digest = response.tx_digest.to_string().truecolor(100, 100, 100) + ); + json_output(&json!({ + "digest": response.tx_digest, + "exchange_rate": response.exchange_rate, + "sui_balance_before": response.sui_balance_before, + "min_sui_out": response.min_sui_out, + }))?; + Ok(()) +} + +pub(crate) async fn withdraw_priority_fee( + leader_cap: sui::types::Address, + share_to_withdraw: Option, + sui_gas_coin: Option, + sui_gas_budget: u64, +) -> AnyResult<(), NexusCliError> { + command_title!("Withdrawing `$US` priority fees"); + let nexus_client = get_nexus_client(sui_gas_coin, sui_gas_budget).await?; + let share_to_withdraw = match share_to_withdraw { + Some(share_to_withdraw) => share_to_withdraw, + None => { + let query_handle = loading!("Querying leader vault share..."); + match nexus_client.gas().priority_fee_share(leader_cap).await { + Ok(share_to_withdraw) => { + query_handle.success(); + share_to_withdraw + } + Err(e) => { + query_handle.error(); + return Err(NexusCliError::Nexus(e)); + } + } + } + }; + let tx_handle = loading!("Crafting and executing transaction..."); + let response = match nexus_client + .gas() + .withdraw_priority_fee(leader_cap, share_to_withdraw) + .await + { + Ok(resp) => resp, + Err(e) => { + tx_handle.error(); + return Err(NexusCliError::Nexus(e)); + } + }; + tx_handle.success(); + notify_success!( + "Transaction digest: {digest}", + digest = response.tx_digest.to_string().truecolor(100, 100, 100) + ); + json_output(&json!({ + "digest": response.tx_digest, + "share_to_withdraw": share_to_withdraw, + }))?; + Ok(()) +} diff --git a/cli/src/scheduler/helpers.rs b/cli/src/scheduler/helpers.rs index baf2e68c7..5f693989e 100644 --- a/cli/src/scheduler/helpers.rs +++ b/cli/src/scheduler/helpers.rs @@ -19,6 +19,10 @@ pub(crate) fn parse_metadata(pairs: &[String]) -> AnyResult Option { + (priority_fee_quote != 0).then_some(priority_fee_quote) +} + #[cfg(test)] mod tests { use super::*; @@ -37,4 +41,10 @@ mod tests { let err = parse_metadata(&["invalid".to_string()]).unwrap_err(); assert!(err.to_string().contains("Invalid metadata entry")); } + + #[test] + fn zero_priority_quote_is_treated_as_omitted() { + assert_eq!(optional_priority_fee_quote(0), None); + assert_eq!(optional_priority_fee_quote(10), Some(10)); + } } diff --git a/cli/src/scheduler/occurrence/occurrence_add.rs b/cli/src/scheduler/occurrence/occurrence_add.rs index e91cc0d29..b1cda57b2 100644 --- a/cli/src/scheduler/occurrence/occurrence_add.rs +++ b/cli/src/scheduler/occurrence/occurrence_add.rs @@ -4,6 +4,7 @@ use { display::json_output, notify_success, prelude::*, + scheduler::helpers, sui::get_nexus_client, }, nexus_sdk::nexus::scheduler::OccurrenceRequest, @@ -29,7 +30,7 @@ pub(crate) async fn add_occurrence_to_task( None, start_offset_ms, deadline_offset_ms, - priority_fee_percentage, + priority_fee_percentage.and_then(helpers::optional_priority_fee_quote), true, ) .map_err(NexusCliError::Nexus)?; diff --git a/cli/src/scheduler/task/mod.rs b/cli/src/scheduler/task/mod.rs index 1fb37b0ff..c1bbe2a5b 100644 --- a/cli/src/scheduler/task/mod.rs +++ b/cli/src/scheduler/task/mod.rs @@ -213,3 +213,36 @@ pub(crate) async fn handle(command: TaskCommand) -> AnyResult<(), NexusCliError> } } } + +#[cfg(test)] +mod tests { + use {super::*, clap::Parser}; + + #[test] + fn create_preserves_utf8_metadata_for_sdk_move_string_encoding() { + let cli = crate::Cli::try_parse_from([ + "nexus", + "scheduler", + "task", + "create", + "--dag-id", + "0x42", + "--metadata", + "test", + "--prepay-amount-mist", + "50000000", + "--occurrence-budget-mist", + "50000000", + ]) + .expect("scheduler task create arguments should parse"); + + let crate::Command::Scheduler(crate::scheduler::SchedulerCommand::Task( + TaskCommand::Create { metadata, .. }, + )) = cli.command + else { + panic!("expected scheduler task create command"); + }; + + assert_eq!(metadata, ["test"]); + } +} diff --git a/cli/src/sui.rs b/cli/src/sui.rs index 3667185b8..a38a8fe91 100644 --- a/cli/src/sui.rs +++ b/cli/src/sui.rs @@ -113,13 +113,22 @@ pub(crate) async fn get_signing_key( pub(crate) async fn fetch_coins_for_address( client: Arc>, owner: sui::types::Address, +) -> AnyResult, NexusCliError> { + fetch_coins_for_address_by_type(client, owner, sui::types::StructTag::gas_coin(), "coins").await +} + +pub(crate) async fn fetch_coins_for_address_by_type( + client: Arc>, + owner: sui::types::Address, + object_type: sui::types::StructTag, + _label: &str, ) -> AnyResult, NexusCliError> { let coins_handle = loading!("Fetching coins..."); let request = sui::grpc::ListOwnedObjectsRequest::default() .with_owner(owner) .with_page_size(1000) - .with_object_type(sui::types::StructTag::gas_coin()) + .with_object_type(object_type) .with_read_mask(sui::grpc::FieldMask::from_paths([ "object_id", "version", @@ -290,6 +299,42 @@ pub(crate) async fn fetch_coin_with_balance_excluding( } } +pub(crate) async fn fetch_coin_by_type( + client: Arc>, + owner: sui::types::Address, + by_address: Option, + by_order: usize, + object_type: sui::types::StructTag, + label: &str, +) -> AnyResult { + let mut coins = fetch_coins_for_address_by_type(client, owner, object_type, label).await?; + + if coins.is_empty() { + return Err(NexusCliError::Any(anyhow!( + "The wallet does not have enough {label} objects to submit the transaction" + ))); + } + + match by_address { + Some(id) => coins + .into_iter() + .find(|(coin, _)| *coin.object_id() == id) + .map(|(coin, _)| coin) + .ok_or_else(|| { + NexusCliError::Any(anyhow!("{label} object '{id}' not found in wallet")) + }), + None => { + if by_order >= coins.len() { + return Err(NexusCliError::Any(anyhow!( + "The wallet does not have enough {label} objects to select object #{by_order}" + ))); + } + + Ok(coins.swap_remove(by_order).0) + } + } +} + /// Create a Nexus client from CLI parameters. pub(crate) async fn get_nexus_client( sui_gas_coin: Option, diff --git a/cli/src/tap/tap_common.rs b/cli/src/tap/tap_common.rs index 4b8186803..52deb3ea7 100644 --- a/cli/src/tap/tap_common.rs +++ b/cli/src/tap/tap_common.rs @@ -43,8 +43,7 @@ pub(crate) fn schedule_policy_from_cli( min_interval_ms, max_occurrences: nexus_sdk::move_bindings::move_std::option::Option::from_option( (max_occurrences != 0).then_some(max_occurrences), - ) - .into(), + ), }, other => { return Err(NexusCliError::Any(anyhow!( @@ -169,7 +168,7 @@ mod tests { recurrence: SkillRecurrenceKind::Recursive { min_interval_ms: 50, max_occurrences: - nexus_sdk::move_bindings::move_std::option::Option::from_option(None).into(), + nexus_sdk::move_bindings::move_std::option::Option::from_option(None), }, allow_recursive: true, } diff --git a/cli/src/tap/tap_schedule_task.rs b/cli/src/tap/tap_schedule_task.rs index dfa4c4a1c..eb180682f 100644 --- a/cli/src/tap/tap_schedule_task.rs +++ b/cli/src/tap/tap_schedule_task.rs @@ -92,7 +92,7 @@ pub(crate) async fn schedule_tap_task( let (dag_id, runtime_selected_dag) = resolve_scheduled_tap_dag_selection( agent_id, skill_id, - target.data.skill.dag_binding().clone(), + *target.data.skill.dag_binding(), selected_dag, )?; diff --git a/cli/src/tool/mod.rs b/cli/src/tool/mod.rs index a69d34944..7e2a50264 100644 --- a/cli/src/tool/mod.rs +++ b/cli/src/tool/mod.rs @@ -166,7 +166,7 @@ pub(crate) enum RegisterCommand { #[arg( long = "collateral-coin", short = 'c', - help = "The collateral coin object ID. Second coin object is chosen if not present.", + help = "The US collateral coin object ID. First owned Coin object is chosen if not present.", value_name = "OBJECT_ID" )] collateral_coin: Option, @@ -246,7 +246,7 @@ pub(crate) enum RegisterCommand { #[arg( long = "collateral-coin", short = 'c', - help = "The collateral coin object ID. Second coin object is chosen if not present.", + help = "The US collateral coin object ID. First owned Coin object is chosen if not present.", value_name = "OBJECT_ID" )] collateral_coin: Option, diff --git a/cli/src/tool/tool_inspect.rs b/cli/src/tool/tool_inspect.rs index 040d587b3..ce1d1e367 100644 --- a/cli/src/tool/tool_inspect.rs +++ b/cli/src/tool/tool_inspect.rs @@ -25,7 +25,8 @@ pub(crate) async fn inspect_tool(fqn: ToolFqn) -> AnyResult<(), NexusCliError> { .map_err(NexusCliError::Nexus)?; print_inspection(&inspection)?; - json_output(&inspect_tool_result_json(&inspection)) + let result_json = inspect_tool_result_json(&inspection).map_err(NexusCliError::Any)?; + json_output(&result_json) } /// Stable JSON contract for `nexus tool inspect`. The `tool` field carries @@ -34,13 +35,39 @@ pub(crate) async fn inspect_tool(fqn: ToolFqn) -> AnyResult<(), NexusCliError> { /// without an extra round-trip. `tool_id` and `tool_gas_id` are locally /// derived from the FQN so they're surfaced even when the tool does not /// exist yet (a convenient pre-computation for deployments). -pub(crate) fn inspect_tool_result_json(inspection: &ToolInspection) -> serde_json::Value { - json!({ +pub(crate) fn inspect_tool_result_json( + inspection: &ToolInspection, +) -> anyhow::Result { + let tool = inspection.tool.as_ref().map(stable_tool_json).transpose()?; + + Ok(json!({ "tool_id": inspection.tool_id, "tool_gas_id": inspection.tool_gas_id, "exists": inspection.exists, - "tool": inspection.tool, - }) + "tool": tool, + })) +} + +fn stable_tool_json(tool: &Tool) -> anyhow::Result { + let mut value = serde_json::to_value(tool)?; + if let Some(reference) = stable_sui_tool_reference_json(&tool.r#ref)? { + value["ref"] = reference; + } + Ok(value) +} + +fn stable_sui_tool_reference_json( + reference: &ToolRef, +) -> anyhow::Result> { + Ok(reference + .sui_parts()? + .map(|(package_address, module_name, tool_witness_id)| { + json!({ + "package_address": package_address, + "module_name": module_name, + "tool_witness_id": tool_witness_id, + }) + })) } /// Render a human-readable inspection report. No-op in `--json` mode — the @@ -160,7 +187,13 @@ fn print_tool_reference(tool: &Tool) -> AnyResult<(), NexusCliError> { #[cfg(test)] mod tests { - use {super::*, nexus_sdk::fqn}; + use { + super::*, + nexus_sdk::{ + fqn, + move_bindings::{move_std::ascii, sui_framework::object::ID}, + }, + }; #[test] fn inspect_tool_result_json_reports_missing_tool() { @@ -172,7 +205,7 @@ mod tests { tool: None, }; - let json = inspect_tool_result_json(&inspection); + let json = inspect_tool_result_json(&inspection).expect("inspection JSON should build"); assert_eq!(json["exists"], serde_json::Value::Bool(false)); assert_eq!( json["tool_id"], @@ -180,4 +213,24 @@ mod tests { ); assert!(json["tool"].is_null()); } + + #[test] + fn stable_tool_json_flattens_generated_sui_reference() { + let package_address = sui::types::Address::from_static("0xaa"); + let tool_witness_id = sui::types::Address::from_static("0xbb"); + let reference = ToolRef::Sui { + _variant_name: ascii::String::from("Sui"), + package_address, + module_name: ascii::String::from("u64_math"), + tool_witness_id: ID::new(tool_witness_id), + }; + + let generated = stable_sui_tool_reference_json(&reference) + .expect("Sui reference should decode") + .expect("Sui reference should have a stable projection"); + + assert_eq!(generated["package_address"], package_address.to_string()); + assert_eq!(generated["module_name"], "u64_math"); + assert_eq!(generated["tool_witness_id"], tool_witness_id.to_string()); + } } diff --git a/cli/src/tool/tool_register_offchain.rs b/cli/src/tool/tool_register_offchain.rs index b39499dc3..b3c569530 100644 --- a/cli/src/tool/tool_register_offchain.rs +++ b/cli/src/tool/tool_register_offchain.rs @@ -93,7 +93,15 @@ async fn register_one_tool( let signer = nexus_client.signer(); let address = signer.get_active_address(); let nexus_objects = &*nexus_client.get_nexus_objects(); - let collateral_coin = fetch_coin(grpc_client, owner, collateral_coin, 1).await?; + let collateral_coin = fetch_coin_by_type( + grpc_client, + owner, + collateral_coin, + 0, + nexus_objects.us_token.coin_type_tag(), + "US collateral coin", + ) + .await?; // Craft a TX to register the tool. let tx_handle = loading!("Crafting transaction..."); @@ -265,7 +273,7 @@ pub(crate) async fn register_off_chain_tool( ) -> AnyResult<(), NexusCliError> { if collateral_coin.is_some() && collateral_coin == sui_gas_coin { return Err(NexusCliError::Any(anyhow!( - "The coin used for collateral cannot be the same as the gas coin." + "The US collateral coin cannot be the same as the SUI gas coin." ))); } diff --git a/cli/src/tool/tool_register_onchain.rs b/cli/src/tool/tool_register_onchain.rs index 9dc50ceb2..45d5a1a68 100644 --- a/cli/src/tool/tool_register_onchain.rs +++ b/cli/src/tool/tool_register_onchain.rs @@ -54,7 +54,7 @@ pub(crate) async fn register_onchain_tool( if collateral_coin.is_some() && collateral_coin == sui_gas_coin { return Err(NexusCliError::Any(anyhow!( - "The coin used for collateral cannot be the same as the gas coin." + "The US collateral coin cannot be the same as the SUI gas coin." ))); } @@ -65,7 +65,15 @@ pub(crate) async fn register_onchain_tool( let conf = CliConf::load().await.unwrap_or_default(); let client = build_sui_grpc_client(&conf).await?; - let collateral_coin = fetch_coin(client.clone(), address, collateral_coin, 1).await?; + let collateral_coin = fetch_coin_by_type( + client.clone(), + address, + collateral_coin, + 0, + nexus_objects.us_token.coin_type_tag(), + "US collateral coin", + ) + .await?; // Generate and customize schemas. let (input_schema, output_schema) = diff --git a/sdk/.just b/sdk/.just index e6c5238d3..48931a29e 100644 --- a/sdk/.just +++ b/sdk/.just @@ -22,9 +22,9 @@ test: _check-cargo # Regenerate the committed Nexus Move binding IR (src/move_bindings/ir/*.json). # -# Requires a deployment objects TOML and a running Sui gRPC endpoint. -# Set source_root to a matching Nexus Move source tree to restore source parameter names. -# The reduced framework support IR files remain unchanged. +# Accepts either a deployment objects TOML or a Nexus `sui` source directory and a running Sui +# gRPC endpoint. A source directory resolves `bin/target/objects.localnet.toml` and restores source +# parameter names automatically. Set source_root explicitly when using an objects TOML. # The wrapper does not start Sui or publish packages. # # The offline render happens automatically in build.rs on the next build. diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index ba46b30ff..8c5ba3a23 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -58,6 +58,7 @@ binding_codegen = [ "tokio/full", "sui-move-codegen", "sui-sdk-types", + "toml", ] # Walrus client feature enables the use of the `walrus` module, providing @@ -136,6 +137,7 @@ full = [ [dependencies] anyhow.workspace = true +allocative.workspace = true chrono.workspace = true serde.workspace = true @@ -361,6 +363,10 @@ branch = "feat/add-sui-support" features = ["sui", "redis", "postgres"] optional = true +[dependencies.toml] +workspace = true +optional = true + # === Dev deps === [dev-dependencies] assert_matches = "1.5.0" diff --git a/sdk/src/bin/regenerate_bindings.rs b/sdk/src/bin/regenerate_bindings.rs index b028f3b96..565682f86 100644 --- a/sdk/src/bin/regenerate_bindings.rs +++ b/sdk/src/bin/regenerate_bindings.rs @@ -3,7 +3,6 @@ use { anyhow::{anyhow, bail, Context, Result}, std::{ - collections::BTreeMap, env, fs, path::{Path, PathBuf}, @@ -28,6 +27,7 @@ const NEXUS_PACKAGES: &[(&str, &str)] = &[ ("workflow", "0xa4"), ("scheduler", "0xa5"), ]; +const TALUS_PACKAGE: (&str, &str) = ("talus", "0xa6"); #[derive(Debug, PartialEq, Eq)] struct Inputs { @@ -42,7 +42,18 @@ async fn main() -> Result<()> { } async fn regenerate(inputs: Inputs) -> Result<()> { - let package_ids = packages_from_objects_file(&inputs.objects_file)?; + let source_root = inputs.source_root.as_deref().or_else(|| { + inputs + .objects_file + .is_dir() + .then_some(inputs.objects_file.as_path()) + }); + let objects_file = if inputs.objects_file.is_dir() { + inputs.objects_file.join("bin/target/objects.localnet.toml") + } else { + inputs.objects_file.clone() + }; + let package_ids = packages_from_objects_file(&objects_file)?; let out_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join(IR_DIR); fs::create_dir_all(&out_dir).with_context(|| format!("create {}", out_dir.display()))?; @@ -54,7 +65,7 @@ async fn regenerate(inputs: Inputs) -> Result<()> { let mut package = fetch_package(&mut client, package_id) .await .with_context(|| format!("fetch {name} ({package_id})"))?; - apply_source_names(&mut package, &name, inputs.source_root.as_deref())?; + apply_source_names(&mut package, &name, source_root)?; packages.push((name, package)); } @@ -95,16 +106,18 @@ fn canonicalize_sdk_ir(packages: &mut [(String, NormalizedPackage)]) { let mut replacements = Vec::new(); for (name, package) in packages.iter_mut() { package.version = CANONICAL_PACKAGE_VERSION; - let Some((_, canonical_id)) = NEXUS_PACKAGES + let canonical_id = NEXUS_PACKAGES .iter() .find(|(package_name, _)| package_name == name) - else { + .map(|(_, canonical_id)| *canonical_id) + .or_else(|| (name == TALUS_PACKAGE.0).then_some(TALUS_PACKAGE.1)); + let Some(canonical_id) = canonical_id else { continue; }; - replacements.push((package.storage_id.clone(), (*canonical_id).to_string())); + replacements.push((package.storage_id.clone(), canonical_id.to_string())); if let Some(original_id) = &package.original_id { - replacements.push((original_id.clone(), (*canonical_id).to_string())); + replacements.push((original_id.clone(), canonical_id.to_string())); } } @@ -159,30 +172,23 @@ fn packages_from_objects_file(path: &Path) -> Result> { } fn packages_from_objects_toml(text: &str, source: &str) -> Result> { - let mut ids = BTreeMap::new(); - for line in text.lines() { - let line = line.split('#').next().unwrap_or("").trim(); - let Some((key, value)) = line.split_once('=') else { - continue; - }; - let key = key.trim(); - let Some(package) = key.strip_suffix("_pkg_id") else { - continue; - }; - let value = value.trim(); - let Some(value) = value.strip_prefix('"').and_then(|v| v.strip_suffix('"')) else { - bail!("{source}: {key} must be a TOML string"); - }; - ids.insert(package.to_string(), value.to_string()); - } + let parsed: toml::Value = toml::from_str(text).with_context(|| format!("parse {source}"))?; let mut packages = Vec::new(); for (package, _) in NEXUS_PACKAGES { - let id = ids - .get(*package) - .ok_or_else(|| anyhow!("{source} is missing {package}_pkg_id"))?; + let key = format!("{package}_pkg_id"); + let id = parsed + .get(&key) + .and_then(toml::Value::as_str) + .ok_or_else(|| anyhow!("{source} is missing {key}"))?; packages.push(((*package).to_string(), parse_address(id)?)); } + let talus_id = parsed + .get("us_token") + .and_then(|value| value.get("package_id")) + .and_then(toml::Value::as_str) + .ok_or_else(|| anyhow!("{source} is missing us_token.package_id"))?; + packages.push((TALUS_PACKAGE.0.to_string(), parse_address(talus_id)?)); Ok(packages) } @@ -203,6 +209,7 @@ fn write_package_ir(out_dir: &Path, name: &str, package: &NormalizedPackage) -> mod tests { use { super::*, + std::collections::BTreeMap, sui_move_codegen::ir::{ Datatype, DatatypeKind, @@ -223,6 +230,8 @@ mod tests { r#"registry_pkg_id = "0x13""#, r#"workflow_pkg_id = "0x14""#, r#"scheduler_pkg_id = "0x15""#, + r#"[us_token]"#, + r#"package_id = "0x16""#, ] .join("\n"); let packages = packages_from_objects_toml(&objects, "objects.localnet.toml") @@ -236,10 +245,28 @@ mod tests { ("registry".to_string(), Address::from_str("0x13").unwrap()), ("workflow".to_string(), Address::from_str("0x14").unwrap()), ("scheduler".to_string(), Address::from_str("0x15").unwrap()), + ("talus".to_string(), Address::from_str("0x16").unwrap()), ] ); } + #[test] + fn rejects_objects_without_talus_package() { + let objects = [ + r#"primitives_pkg_id = "0x11""#, + r#"interface_pkg_id = "0x12""#, + r#"registry_pkg_id = "0x13""#, + r#"workflow_pkg_id = "0x14""#, + r#"scheduler_pkg_id = "0x15""#, + ] + .join("\n"); + + let error = packages_from_objects_toml(&objects, "objects.toml") + .expect_err("Talus package metadata is required"); + + assert!(error.to_string().contains("us_token.package_id")); + } + #[test] fn accepts_objects_file_and_optional_grpc_url() { assert_eq!( @@ -388,13 +415,16 @@ mod tests { let mut first = vec![ ("primitives".to_string(), package("0x11", "0x10", "0x20")), ("interface".to_string(), package("0x21", "0x20", "0x10")), + ("talus".to_string(), package("0x31", "0x30", "0x10")), ]; let mut second = vec![ ("primitives".to_string(), package("0x111", "0x110", "0x220")), ("interface".to_string(), package("0x221", "0x220", "0x110")), + ("talus".to_string(), package("0x331", "0x330", "0x110")), ]; second[0].1.version = 7; second[1].1.version = 9; + second[2].1.version = 11; canonicalize_sdk_ir(&mut first); canonicalize_sdk_ir(&mut second); @@ -402,6 +432,8 @@ mod tests { assert_eq!(first, second); assert_eq!(first[0].1.storage_id, "0xa1"); assert_eq!(first[0].1.original_id.as_deref(), Some("0xa1")); + assert_eq!(first[2].1.storage_id, "0xa6"); + assert_eq!(first[2].1.original_id.as_deref(), Some("0xa6")); assert_eq!( first[0].1.modules["m"].functions[0].parameters[0].ty, TypeRef::Datatype { diff --git a/sdk/src/dag/validator.rs b/sdk/src/dag/validator.rs index c68dc57aa..10ecb4fba 100644 --- a/sdk/src/dag/validator.rs +++ b/sdk/src/dag/validator.rs @@ -530,7 +530,7 @@ fn try_into_graph(dag: &DagSpec) -> AnyResult { } graph.add_edge(output_variant_node, output_port_node, EdgeKind::Normal); - graph.add_edge(output_port_node, input_port_node, edge.kind.clone()); + graph.add_edge(output_port_node, input_port_node, edge.kind); } // Ensure we don't have duplicate vertices. diff --git a/sdk/src/events/parsing.rs b/sdk/src/events/parsing.rs index 0c00ca425..f694b6462 100644 --- a/sdk/src/events/parsing.rs +++ b/sdk/src/events/parsing.rs @@ -377,7 +377,7 @@ mod direct_event_tests { fn parse_bcs_uses_direct_dag_created_event() { let dag = id(sui::types::Address::from_static("0xabc")); let bytes = bcs::to_bytes(&Wrapper { - event: DAGCreatedEvent { dag: dag.clone() }, + event: DAGCreatedEvent { dag }, }) .unwrap(); @@ -400,7 +400,7 @@ mod direct_event_tests { walk_index: 1, next_vertex: RuntimeVertex::plain("vertex"), evaluations: id(sui::types::Address::from_static("0xd")), - agent_id: agent_id.clone(), + agent_id, skill_id: 2, interface_version: version::InterfaceVersion { inner: 3 }, scheduled_task_id: MoveOption::from_option(None), @@ -432,7 +432,7 @@ mod direct_event_tests { let leaders = vec![addr(0x45), addr(0x46)]; let request = RequestWalkExecutionEvent { dag: id(addr(0xb0)), - execution: execution.clone(), + execution, invoker: addr(0xb2), walk_index: 12, next_vertex: RuntimeVertex::plain("scheduled_walk"), @@ -660,7 +660,7 @@ mod direct_event_tests { ), RequestWalkExecutionEvent { dag: id(addr(0xa6)), - execution: execution.clone(), + execution, invoker: addr(0xa7), walk_index: 8, next_vertex: RuntimeVertex::plain("foreign_emitter"), diff --git a/sdk/src/move_bindings/extensions/leader_registry.rs b/sdk/src/move_bindings/extensions/leader_registry.rs index 65413a263..47345ae29 100644 --- a/sdk/src/move_bindings/extensions/leader_registry.rs +++ b/sdk/src/move_bindings/extensions/leader_registry.rs @@ -54,7 +54,7 @@ impl LeaderRegistry { Self { id: crate::move_bindings::sui_framework::object::UID::new(id), unbonding_duration_ms: 0, - min_stake_mist: 0, + min_stake_us: 0, max_transaction_budget: 10_000_000_000, leaders: MoveVecSet { contents: vec![] }, records: MoveTable::new(sui::types::Address::ZERO, 0), @@ -147,7 +147,7 @@ mod tests { let original = LeaderRegistry { id: crate::move_bindings::sui_framework::object::UID::new(registry_id), unbonding_duration_ms: 5_000, - min_stake_mist: 1_000_000, + min_stake_us: 1_000_000, max_transaction_budget: 7_500_000_000, leaders: MoveVecSet { contents: vec![ diff --git a/sdk/src/move_bindings/extensions/mod.rs b/sdk/src/move_bindings/extensions/mod.rs index eefd448b3..f3bf12cca 100644 --- a/sdk/src/move_bindings/extensions/mod.rs +++ b/sdk/src/move_bindings/extensions/mod.rs @@ -10,6 +10,7 @@ mod network_auth; mod nexus_data; mod payment; mod ports_data; +mod priority_fee_vault; mod runtime_vertex; mod scheduler_models; mod shared_object_ref; diff --git a/sdk/src/move_bindings/extensions/network_auth.rs b/sdk/src/move_bindings/extensions/network_auth.rs index 82c424494..86f5bf0e0 100644 --- a/sdk/src/move_bindings/extensions/network_auth.rs +++ b/sdk/src/move_bindings/extensions/network_auth.rs @@ -90,9 +90,9 @@ impl KeyBinding { Self { id: crate::move_bindings::sui_framework::object::UID::new(id), identity, - description: MoveOption::from_option(description).into(), + description: MoveOption::from_option(description), next_key_id, - active_key_id: MoveOption::from_option(active_key_id).into(), + active_key_id: MoveOption::from_option(active_key_id), keys, } } @@ -114,7 +114,7 @@ impl KeyRecord { scheme, public_key, added_at_ms, - revoked_at_ms: MoveOption::from_option(revoked_at_ms).into(), + revoked_at_ms: MoveOption::from_option(revoked_at_ms), } } } diff --git a/sdk/src/move_bindings/extensions/priority_fee_vault.rs b/sdk/src/move_bindings/extensions/priority_fee_vault.rs new file mode 100644 index 000000000..a9d550524 --- /dev/null +++ b/sdk/src/move_bindings/extensions/priority_fee_vault.rs @@ -0,0 +1,128 @@ +//! SDK projections for the generated registry-owned priority-fee vault. + +use crate::{ + move_bindings::{registry::priority_fee_vault::PriorityFeeVault, sui_framework::object::ID}, + sui, + types::{PriorityFeeSuiDrainQuote, PriorityFeeWithdrawalQuote}, +}; + +impl PriorityFeeVault { + pub fn leader_share(&self, leader_cap_id: sui::types::Address) -> Option { + self.leader_accounts + .get(&ID::new(leader_cap_id)) + .map(|account| account.share) + } + + pub fn quote_withdrawal(&self, share_to_withdraw: u64) -> Option { + let sui_balance = self.sui_balance.value; + let us_balance = self.us_balance.value; + if sui_balance != 0 + || us_balance == 0 + || self.total_share == 0 + || share_to_withdraw == 0 + || share_to_withdraw > self.total_share + { + return None; + } + + let us_out = if share_to_withdraw == self.total_share { + us_balance + } else { + let us_out = (u128::from(us_balance) * u128::from(share_to_withdraw) + / u128::from(self.total_share)) as u64; + if us_out == 0 { + return None; + } + us_out + }; + + Some(PriorityFeeWithdrawalQuote { + share_to_withdraw, + us_out, + us_refunded: us_balance.checked_sub(us_out)?, + }) + } + + pub fn quote_leader_withdrawal( + &self, + leader_cap_id: sui::types::Address, + share_to_withdraw: u64, + ) -> Option { + if share_to_withdraw > self.leader_share(leader_cap_id)? { + return None; + } + self.quote_withdrawal(share_to_withdraw) + } + + pub fn quote_sui_drain(&self) -> Option { + if self.exchange_rate == 0 || self.sui_balance.value == 0 { + return None; + } + Some(PriorityFeeSuiDrainQuote { + exchange_rate: self.exchange_rate, + sui_out: self.sui_balance.value, + }) + } +} + +#[cfg(test)] +mod tests { + use { + super::*, + crate::move_bindings::{ + registry::priority_fee_vault::PriorityFeeAccount, + sui_framework::{ + balance::Balance, + object::UID, + sui::SUI, + vec_map::{Entry, VecMap}, + }, + talus::us::US, + }, + }; + + fn vault( + sui_balance: u64, + us_balance: u64, + exchange_rate: u64, + total_share: u64, + ) -> PriorityFeeVault { + PriorityFeeVault::new( + UID::new(sui::types::Address::from_static("0x1")), + Balance::::new(sui_balance), + Balance::::new(us_balance), + exchange_rate, + total_share, + VecMap::new(vec![Entry::new( + ID::new(sui::types::Address::from_static("0x42")), + PriorityFeeAccount::new(10), + )]), + ) + } + + #[test] + fn generated_vault_quotes_leader_withdrawal() { + let state = vault(0, 90, 3, 30); + + assert_eq!( + state.quote_leader_withdrawal(sui::types::Address::from_static("0x42"), 10), + Some(PriorityFeeWithdrawalQuote { + share_to_withdraw: 10, + us_out: 30, + us_refunded: 60, + }) + ); + } + + #[test] + fn generated_vault_quotes_sui_drain() { + assert_eq!( + vault(123, 0, 10, 123).quote_sui_drain(), + Some(PriorityFeeSuiDrainQuote { + exchange_rate: 10, + sui_out: 123, + }) + ); + assert_eq!(vault(123, 0, 0, 123).quote_sui_drain(), None); + } +} diff --git a/sdk/src/move_bindings/extensions/runtime_vertex.rs b/sdk/src/move_bindings/extensions/runtime_vertex.rs index 698ac981b..f795e7c30 100644 --- a/sdk/src/move_bindings/extensions/runtime_vertex.rs +++ b/sdk/src/move_bindings/extensions/runtime_vertex.rs @@ -8,7 +8,7 @@ use crate::move_bindings::{ interface::graph::{RuntimeVertex, Vertex}, - move_std::{ascii::String as MoveString, type_name::TypeName}, + move_std::type_name::TypeName, }; impl RuntimeVertex { @@ -66,16 +66,14 @@ fn vertex_from_str(vertex: &str) -> Vertex { impl From for Vertex { fn from(value: TypeName) -> Self { - Self { - name: MoveString::from(value.name), - } + Self { name: value.name } } } impl From<&TypeName> for Vertex { fn from(value: &TypeName) -> Self { Self { - name: MoveString::from(value.name.clone()), + name: value.name.clone(), } } } diff --git a/sdk/src/move_bindings/extensions/support.rs b/sdk/src/move_bindings/extensions/support.rs index 6c13e045d..23409d821 100644 --- a/sdk/src/move_bindings/extensions/support.rs +++ b/sdk/src/move_bindings/extensions/support.rs @@ -104,10 +104,10 @@ mod tests { #[test] fn id_and_uid_helpers_return_addresses_and_display_id() { let id = id("0x123"); - let uid = UID { id: id.clone() }; + let uid = UID { id }; assert_eq!(format!("{id}"), id.bytes.to_string()); - assert_eq!(sui::types::Address::from(id.clone()), id.bytes); + assert_eq!(sui::types::Address::from(id), id.bytes); assert_eq!(sui::types::Address::from(uid), id.bytes); } diff --git a/sdk/src/move_bindings/extensions/tap.rs b/sdk/src/move_bindings/extensions/tap.rs index 70797b694..4eb649e3e 100644 --- a/sdk/src/move_bindings/extensions/tap.rs +++ b/sdk/src/move_bindings/extensions/tap.rs @@ -90,7 +90,7 @@ impl PaymentSourceKind { pub fn identity(&self) -> sui::types::Address { match self { Self::UserFunded { user } => *user, - Self::AgentFunded { agent_id } => agent_id.clone().into(), + Self::AgentFunded { agent_id } => (*agent_id).into(), } } } diff --git a/sdk/src/move_bindings/extensions/workflow.rs b/sdk/src/move_bindings/extensions/workflow.rs index 32e22c839..44fd6464d 100644 --- a/sdk/src/move_bindings/extensions/workflow.rs +++ b/sdk/src/move_bindings/extensions/workflow.rs @@ -32,7 +32,7 @@ impl Default for VerifierConfig { impl RequestWalkExecutionEvent { pub fn skill_revision_key(&self) -> Option { Some(SkillRevisionLookupKey { - agent_id: self.agent_id.clone().into(), + agent_id: self.agent_id.into(), skill_id: self.skill_id, interface_revision: self.interface_version, }) @@ -40,7 +40,7 @@ impl RequestWalkExecutionEvent { pub fn to_context(&self) -> anyhow::Result> { Ok(Some(RequestWalkContext { - agent_id: self.agent_id.clone().into(), + agent_id: self.agent_id.into(), skill_id: self.skill_id, interface_revision: self.interface_version, scheduled_task_id: self.scheduled_task_id.as_option().map(|id| id.bytes), diff --git a/sdk/src/move_bindings/ir/interface.json b/sdk/src/move_bindings/ir/interface.json index 9f62d007d..e4f19a78a 100644 --- a/sdk/src/move_bindings/ir/interface.json +++ b/sdk/src/move_bindings/ir/interface.json @@ -16343,6 +16343,21 @@ "U64" ] }, + { + "name": "checked_u128_to_u64", + "visibility": "Private", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "value", + "ty": "U128" + } + ], + "return_types": [ + "U64" + ] + }, { "name": "complete_scheduled_payment_reserve_occurrence", "visibility": "Public", diff --git a/sdk/src/move_bindings/ir/registry.json b/sdk/src/move_bindings/ir/registry.json index 6bdcb4e98..483d321f3 100644 --- a/sdk/src/move_bindings/ir/registry.json +++ b/sdk/src/move_bindings/ir/registry.json @@ -3761,9 +3761,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -3988,7 +3988,7 @@ "ty": "U64" }, { - "name": "min_stake_mist", + "name": "min_stake_us", "position": 2, "ty": "U64" }, @@ -5221,7 +5221,7 @@ }, { "name": "assert_leader_cap_matches_registry", - "visibility": "Private", + "visibility": "Public", "is_entry": false, "type_parameters": [], "parameters": [ @@ -6286,7 +6286,7 @@ ] }, { - "name": "min_stake_mist", + "name": "min_stake_us", "visibility": "Public", "is_entry": false, "type_parameters": [], @@ -6849,9 +6849,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -7456,9 +7456,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -7521,9 +7521,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -10118,14 +10118,9 @@ "Struct": { "fields": [ { - "name": "accrued", + "name": "share", "position": 0, "ty": "U64" - }, - { - "name": "withdrawn", - "position": 1, - "ty": "U64" } ] } @@ -10174,10 +10169,67 @@ { "name": "leader_cap_id", "position": 1, - "ty": "Address" + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } + } + ] + } + } + }, + { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeDepositEvent" + }, + "module": "priority_fee_vault", + "name": "PriorityFeeDepositEvent", + "abilities": [ + "Copy", + "Drop" + ], + "type_parameters": [], + "kind": { + "Struct": { + "fields": [ + { + "name": "vault", + "position": 0, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } + }, + { + "name": "leader_cap_id", + "position": 1, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } }, { - "name": "charged_amount", + "name": "amount", "position": 2, "ty": "U64" } @@ -10189,10 +10241,10 @@ "type_name": { "address": "0xa3", "module": "priority_fee_vault", - "name": "PriorityFeeDepositedEvent" + "name": "PriorityFeeSwapEvent" }, "module": "priority_fee_vault", - "name": "PriorityFeeDepositedEvent", + "name": "PriorityFeeSwapEvent", "abilities": [ "Copy", "Drop" @@ -10216,14 +10268,19 @@ } }, { - "name": "leader_cap_id", + "name": "us_in", "position": 1, - "ty": "Address" + "ty": "U64" }, { - "name": "amount", + "name": "us_refunded", "position": 2, "ty": "U64" + }, + { + "name": "sui_out", + "position": 3, + "ty": "U64" } ] } @@ -10259,7 +10316,7 @@ } }, { - "name": "balance", + "name": "sui_balance", "position": 1, "ty": { "Datatype": { @@ -10284,8 +10341,43 @@ } }, { - "name": "leader_accounts", + "name": "us_balance", "position": 2, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "balance", + "name": "Balance" + }, + "type_arguments": [ + { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + ] + } + } + }, + { + "name": "exchange_rate", + "position": 3, + "ty": "U64" + }, + { + "name": "total_share", + "position": 4, + "ty": "U64" + }, + { + "name": "leader_accounts", + "position": 5, "ty": { "Datatype": { "type_name": { @@ -10294,7 +10386,16 @@ "name": "VecMap" }, "type_arguments": [ - "Address", + { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + }, { "Datatype": { "type_name": { @@ -10313,6 +10414,93 @@ } } }, + { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVaultConfiguredEvent" + }, + "module": "priority_fee_vault", + "name": "PriorityFeeVaultConfiguredEvent", + "abilities": [ + "Copy", + "Drop" + ], + "type_parameters": [], + "kind": { + "Struct": { + "fields": [ + { + "name": "vault", + "position": 0, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } + }, + { + "name": "exchange_rate", + "position": 1, + "ty": "U64" + } + ] + } + } + }, + { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVaultOwnerCap" + }, + "module": "priority_fee_vault", + "name": "PriorityFeeVaultOwnerCap", + "abilities": [ + "Store", + "Key" + ], + "type_parameters": [], + "kind": { + "Struct": { + "fields": [ + { + "name": "id", + "position": 0, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "UID" + }, + "type_arguments": [] + } + } + }, + { + "name": "vault", + "position": 1, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } + } + ] + } + } + }, { "type_name": { "address": "0xa3", @@ -10346,12 +10534,31 @@ { "name": "leader_cap_id", "position": 1, - "ty": "Address" + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } }, { - "name": "amount", + "name": "share_to_withdraw", "position": 2, "ty": "U64" + }, + { + "name": "us_out", + "position": 3, + "ty": "U64" + }, + { + "name": "us_refunded", + "position": 4, + "ty": "U64" } ] } @@ -10385,7 +10592,16 @@ }, { "name": "leader_cap_id", - "ty": "Address" + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } }, { "name": "amount", @@ -10395,8 +10611,8 @@ "return_types": [] }, { - "name": "deposit", - "visibility": "Private", + "name": "configure", + "visibility": "Public", "is_entry": false, "type_parameters": [], "parameters": [ @@ -10419,7 +10635,7 @@ } }, { - "name": "leader_registry", + "name": "owner_cap", "ty": { "Ref": { "mutable": false, @@ -10427,8 +10643,8 @@ "Datatype": { "type_name": { "address": "0xa3", - "module": "leader", - "name": "LeaderRegistry" + "module": "priority_fee_vault", + "name": "PriorityFeeVaultOwnerCap" }, "type_arguments": [] } @@ -10437,15 +10653,64 @@ } }, { - "name": "deposit", - "ty": { - "Datatype": { - "type_name": { - "address": "0xa3", - "module": "priority_fee_vault", - "name": "PriorityFeeDeposit" - }, - "type_arguments": [] + "name": "exchange_rate", + "ty": "U64" + } + ], + "return_types": [] + }, + { + "name": "deposit", + "visibility": "Private", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", + "ty": { + "Ref": { + "mutable": true, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVault" + }, + "type_arguments": [] + } + } + } + } + }, + { + "name": "leader_registry", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "leader", + "name": "LeaderRegistry" + }, + "type_arguments": [] + } + } + } + } + }, + { + "name": "deposit", + "ty": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeDeposit" + }, + "type_arguments": [] } } } @@ -10496,7 +10761,16 @@ }, { "name": "leader_cap_id", - "ty": "Address" + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } }, { "name": "amount", @@ -10529,6 +10803,35 @@ ], "return_types": [] }, + { + "name": "exchange_rate", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVault" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [ + "U64" + ] + }, { "name": "leader_account", "visibility": "Public", @@ -10555,12 +10858,19 @@ }, { "name": "leader_cap_id", - "ty": "Address" + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } } ], "return_types": [ - "U64", - "U64", "U64" ] }, @@ -10599,6 +10909,16 @@ }, "type_arguments": [] } + }, + { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVaultOwnerCap" + }, + "type_arguments": [] + } } ] }, @@ -10634,11 +10954,16 @@ }, { "name": "leader_cap_id", - "ty": "Address" - }, - { - "name": "charged_amount", - "ty": "U64" + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "ID" + }, + "type_arguments": [] + } + } } ], "return_types": [ @@ -10654,6 +10979,39 @@ } ] }, + { + "name": "quote_swap_us_for_sui", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVault" + }, + "type_arguments": [] + } + } + } + } + }, + { + "name": "us_in", + "ty": "U64" + } + ], + "return_types": [ + "U64" + ] + }, { "name": "share", "visibility": "Friend", @@ -10677,8 +11035,37 @@ "return_types": [] }, { - "name": "withdraw", - "visibility": "Private", + "name": "sui_balance", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVault" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [ + "U64" + ] + }, + { + "name": "swap_us_for_sui", + "visibility": "Public", "is_entry": false, "type_parameters": [], "parameters": [ @@ -10701,11 +11088,31 @@ } }, { - "name": "leader_cap_id", - "ty": "Address" + "name": "input", + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "coin", + "name": "Coin" + }, + "type_arguments": [ + { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + ] + } + } }, { - "name": "amount", + "name": "min_sui_out", "ty": "U64" }, { @@ -10748,7 +11155,86 @@ } ] } + }, + { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "coin", + "name": "Coin" + }, + "type_arguments": [ + { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + ] + } + } + ] + }, + { + "name": "total_share", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVault" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [ + "U64" + ] + }, + { + "name": "us_balance", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "priority_fee_vault", + "name": "PriorityFeeVault" + }, + "type_arguments": [] + } + } + } + } } + ], + "return_types": [ + "U64" ] }, { @@ -10823,7 +11309,7 @@ } }, { - "name": "amount", + "name": "share_to_withdraw", "ty": "U64" }, { @@ -10857,9 +11343,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -11946,9 +12432,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -12311,7 +12797,7 @@ } }, { - "name": "mist_collateral_to_lock", + "name": "us_collateral_to_lock", "position": 5, "ty": "U64" }, @@ -12780,9 +13266,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -13465,9 +13951,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -13654,9 +14140,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -13847,9 +14333,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -14036,9 +14522,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -14205,9 +14691,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -14378,9 +14864,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } @@ -14455,13 +14941,31 @@ "return_types": [] }, { - "name": "set_mist_collateral_to_lock", + "name": "set_off_chain_supported_verifier_methods", "visibility": "Public", "is_entry": false, "type_parameters": [], "parameters": [ { "name": "self", + "ty": { + "Ref": { + "mutable": true, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa3", + "module": "tool_registry", + "name": "Tool" + }, + "type_arguments": [] + } + } + } + } + }, + { + "name": "registry", "ty": { "Ref": { "mutable": true, @@ -14479,10 +14983,10 @@ } }, { - "name": "_slashing_cap", + "name": "owner_cap", "ty": { "Ref": { - "mutable": false, + "mutable": true, "inner": { "Datatype": { "type_name": { @@ -14495,8 +14999,8 @@ "Datatype": { "type_name": { "address": "0xa3", - "module": "slashing", - "name": "OverSlashing" + "module": "tool_registry", + "name": "OverTool" }, "type_arguments": [] } @@ -14508,29 +15012,16 @@ } }, { - "name": "new_mist_collateral_to_lock", - "ty": "U64" - } - ], - "return_types": [] - }, - { - "name": "set_off_chain_supported_verifier_methods", - "visibility": "Public", - "is_entry": false, - "type_parameters": [], - "parameters": [ - { - "name": "self", + "name": "verifier_registry", "ty": { "Ref": { - "mutable": true, + "mutable": false, "inner": { "Datatype": { "type_name": { "address": "0xa3", - "module": "tool_registry", - "name": "Tool" + "module": "verifier_registry", + "name": "VerifierRegistry" }, "type_arguments": [] } @@ -14539,7 +15030,31 @@ } }, { - "name": "registry", + "name": "methods", + "ty": { + "Vector": { + "Datatype": { + "type_name": { + "address": "0x1", + "module": "ascii", + "name": "String" + }, + "type_arguments": [] + } + } + } + } + ], + "return_types": [] + }, + { + "name": "set_us_collateral_to_lock", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "self", "ty": { "Ref": { "mutable": true, @@ -14557,10 +15072,10 @@ } }, { - "name": "owner_cap", + "name": "_slashing_cap", "ty": { "Ref": { - "mutable": true, + "mutable": false, "inner": { "Datatype": { "type_name": { @@ -14573,8 +15088,8 @@ "Datatype": { "type_name": { "address": "0xa3", - "module": "tool_registry", - "name": "OverTool" + "module": "slashing", + "name": "OverSlashing" }, "type_arguments": [] } @@ -14586,37 +15101,8 @@ } }, { - "name": "verifier_registry", - "ty": { - "Ref": { - "mutable": false, - "inner": { - "Datatype": { - "type_name": { - "address": "0xa3", - "module": "verifier_registry", - "name": "VerifierRegistry" - }, - "type_arguments": [] - } - } - } - } - }, - { - "name": "methods", - "ty": { - "Vector": { - "Datatype": { - "type_name": { - "address": "0x1", - "module": "ascii", - "name": "String" - }, - "type_arguments": [] - } - } - } + "name": "new_us_collateral_to_lock", + "ty": "U64" } ], "return_types": [] @@ -14791,9 +15277,9 @@ { "Datatype": { "type_name": { - "address": "0x2", - "module": "sui", - "name": "SUI" + "address": "0xa6", + "module": "us", + "name": "US" }, "type_arguments": [] } diff --git a/sdk/src/move_bindings/ir/talus.json b/sdk/src/move_bindings/ir/talus.json new file mode 100644 index 000000000..0c590b7f8 --- /dev/null +++ b/sdk/src/move_bindings/ir/talus.json @@ -0,0 +1,325 @@ +{ + "storage_id": "0xa6", + "original_id": "0xa6", + "version": 1, + "modules": { + "us": { + "name": "us", + "datatypes": [ + { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "ProtectedTreasury" + }, + "module": "us", + "name": "ProtectedTreasury", + "abilities": [ + "Key" + ], + "type_parameters": [], + "kind": { + "Struct": { + "fields": [ + { + "name": "id", + "position": 0, + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "object", + "name": "UID" + }, + "type_arguments": [] + } + } + } + ] + } + } + }, + { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "TreasuryCapKey" + }, + "module": "us", + "name": "TreasuryCapKey", + "abilities": [ + "Copy", + "Drop", + "Store" + ], + "type_parameters": [], + "kind": { + "Struct": { + "fields": [ + { + "name": "dummy_field", + "position": 0, + "ty": "Bool" + } + ] + } + } + }, + { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "module": "us", + "name": "US", + "abilities": [ + "Drop" + ], + "type_parameters": [], + "kind": { + "Struct": { + "fields": [ + { + "name": "dummy_field", + "position": 0, + "ty": "Bool" + } + ] + } + } + } + ], + "functions": [ + { + "name": "borrow_cap", + "visibility": "Private", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "arg0", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "ProtectedTreasury" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [ + { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "coin", + "name": "TreasuryCap" + }, + "type_arguments": [ + { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + ] + } + } + } + } + ] + }, + { + "name": "borrow_cap_mut", + "visibility": "Private", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "arg0", + "ty": { + "Ref": { + "mutable": true, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "ProtectedTreasury" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [ + { + "Ref": { + "mutable": true, + "inner": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "coin", + "name": "TreasuryCap" + }, + "type_arguments": [ + { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + ] + } + } + } + } + ] + }, + { + "name": "burn", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "arg0", + "ty": { + "Ref": { + "mutable": true, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "ProtectedTreasury" + }, + "type_arguments": [] + } + } + } + } + }, + { + "name": "arg1", + "ty": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "coin", + "name": "Coin" + }, + "type_arguments": [ + { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + ] + } + } + } + ], + "return_types": [] + }, + { + "name": "init", + "visibility": "Private", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "arg0", + "ty": { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "US" + }, + "type_arguments": [] + } + } + }, + { + "name": "arg1", + "ty": { + "Ref": { + "mutable": true, + "inner": { + "Datatype": { + "type_name": { + "address": "0x2", + "module": "tx_context", + "name": "TxContext" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [] + }, + { + "name": "total_supply", + "visibility": "Public", + "is_entry": false, + "type_parameters": [], + "parameters": [ + { + "name": "arg0", + "ty": { + "Ref": { + "mutable": false, + "inner": { + "Datatype": { + "type_name": { + "address": "0xa6", + "module": "us", + "name": "ProtectedTreasury" + }, + "type_arguments": [] + } + } + } + } + } + ], + "return_types": [ + "U64" + ] + } + ] + } + } +} diff --git a/sdk/src/move_bindings/ir/workflow.json b/sdk/src/move_bindings/ir/workflow.json index 34b1d47d2..33b4c478f 100644 --- a/sdk/src/move_bindings/ir/workflow.json +++ b/sdk/src/move_bindings/ir/workflow.json @@ -15837,25 +15837,6 @@ } ], "functions": [ - { - "name": "fallback_terminal_err_eval_reason", - "visibility": "Private", - "is_entry": false, - "type_parameters": [], - "parameters": [], - "return_types": [ - { - "Datatype": { - "type_name": { - "address": "0x1", - "module": "ascii", - "name": "String" - }, - "type_arguments": [] - } - } - ] - }, { "name": "terminal_err_eval_hash", "visibility": "Friend", @@ -15967,18 +15948,6 @@ } ] }, - { - "name": "timeout_err_eval_reason_bytes", - "visibility": "Private", - "is_entry": false, - "type_parameters": [], - "parameters": [], - "return_types": [ - { - "Vector": "U8" - } - ] - }, { "name": "timeout_err_eval_variant_ports_to_data", "visibility": "Friend", diff --git a/sdk/src/move_bindings/mod.rs b/sdk/src/move_bindings/mod.rs index 643d72f13..663219a8d 100644 --- a/sdk/src/move_bindings/mod.rs +++ b/sdk/src/move_bindings/mod.rs @@ -34,26 +34,33 @@ pub(crate) fn with_nexus_scope(objects: &NexusObjects, f: impl FnOnce() -> R) sui::types::Address::from_static("0x2"), sui::types::Address::from_static("0x2"), || { - primitives::with_packages( - objects.primitives_pkg_id, - objects.primitives_pkg_id, + talus::with_packages( + objects.us_token.package_id, + objects.us_token.package_id, || { - interface::with_packages( - objects.interface_pkg_id, - objects.interface_pkg_id, + primitives::with_packages( + objects.primitives_pkg_id, + objects.primitives_pkg_id, || { - registry::with_packages( - objects.registry_pkg_id, - objects.registry_pkg_id, + interface::with_packages( + objects.interface_pkg_id, + objects.interface_pkg_id, || { - workflow::with_packages( - objects.workflow_pkg_id, - objects.workflow_type_origin_pkg_id(), + registry::with_packages( + objects.registry_pkg_id, + objects.registry_pkg_id, || { - scheduler::with_packages( - objects.scheduler_pkg_id, - objects.scheduler_type_origin_pkg_id(), - f, + workflow::with_packages( + objects.workflow_pkg_id, + objects.workflow_type_origin_pkg_id(), + || { + scheduler::with_packages( + objects.scheduler_pkg_id, + objects + .scheduler_type_origin_pkg_id(), + f, + ) + }, ) }, ) @@ -297,6 +304,17 @@ pub mod sui_framework { include!(concat!(env!("OUT_DIR"), "/sui_framework_types.rs")); } +pub mod talus { + #![allow( + clippy::all, + dead_code, + non_camel_case_types, + private_interfaces, + unused_imports + )] + include!(concat!(env!("OUT_DIR"), "/talus_types.rs")); +} + pub mod workflow { #![allow( clippy::all, @@ -310,10 +328,11 @@ pub mod workflow { #[cfg(test)] mod tests { - use super::registry; + use {super::registry, sui_move::MoveType}; #[test] fn generated_bindings_expose_calls() { let _ = registry::leader::claim_unstaked_for_self_target; + let _ = super::talus::us::US::type_tag_static; } } diff --git a/sdk/src/move_boundary/mod.rs b/sdk/src/move_boundary/mod.rs index 049647bcc..dce8c71bb 100644 --- a/sdk/src/move_boundary/mod.rs +++ b/sdk/src/move_boundary/mod.rs @@ -453,7 +453,7 @@ mod tests { crate::{ move_bindings::workflow::gas::{deescalate_target, GasService}, sui, - types::DefaultDagExecutorTarget, + types::{DefaultDagExecutorTarget, UsTokenConfig}, }, sui_move::MoveStruct, }; @@ -546,6 +546,8 @@ mod tests { gas_service: obj(6), leader_registry: obj(7), priority_fee_vault: obj(8), + priority_fee_vault_owner_cap: obj(9), + us_token: UsTokenConfig::new(addr(0x66)), workflow_original_pkg_id: Some(addr(0x40)), scheduler_original_pkg_id: Some(addr(0x50)), } diff --git a/sdk/src/nexus/gas.rs b/sdk/src/nexus/gas.rs index 4cc070f28..a92dd83aa 100644 --- a/sdk/src/nexus/gas.rs +++ b/sdk/src/nexus/gas.rs @@ -1,9 +1,11 @@ //! Commands related to gas management in Nexus. use crate::{ + move_bindings::registry::priority_fee_vault::PriorityFeeVault, nexus::{client::NexusClient, error::NexusError}, sui, transactions::gas, + types::PriorityFeeWithdrawalQuote, }; pub struct BuyExpiryTicketResult { @@ -30,11 +32,171 @@ pub struct DisableLimitedInvocationsExtensionResult { pub tx_digest: sui::types::Digest, } +pub struct ConfigurePriorityFeeVaultResult { + pub tx_digest: sui::types::Digest, +} + +pub struct SwapUsForSuiResult { + pub tx_digest: sui::types::Digest, +} + +#[derive(Debug)] +pub struct DrainPriorityFeeVaultSuiResult { + pub tx_digest: sui::types::Digest, + pub exchange_rate: u64, + pub sui_balance_before: u64, + pub min_sui_out: u64, +} + +pub struct WithdrawPriorityFeeResult { + pub tx_digest: sui::types::Digest, +} + pub struct GasActions { pub(super) client: NexusClient, } impl GasActions { + /// Fetch and decode the priority fee vault state. + pub async fn fetch_priority_fee_vault_state(&self) -> Result { + self.client + .crawler() + .get_object::( + *self.client.nexus_objects.priority_fee_vault.object_id(), + ) + .await + .map(|response| response.data) + .map_err(|e| { + NexusError::Rpc(anyhow::anyhow!( + "Failed to fetch priority fee vault state: {e}" + )) + }) + } + + /// Return the current vault share for a leader cap object ID. + pub async fn priority_fee_share( + &self, + leader_cap: sui::types::Address, + ) -> Result { + let state = self.fetch_priority_fee_vault_state().await?; + state.leader_share(leader_cap).ok_or_else(|| { + NexusError::Configuration(format!( + "Leader cap '{leader_cap}' has no priority fee share in the vault" + )) + }) + } + + /// Quote a leader priority-fee withdrawal before constructing the PTB. + pub async fn quote_priority_fee_withdrawal( + &self, + leader_cap: sui::types::Address, + share_to_withdraw: u64, + ) -> Result { + let state = self.fetch_priority_fee_vault_state().await?; + state + .quote_leader_withdrawal(leader_cap, share_to_withdraw) + .ok_or_else(|| { + NexusError::Configuration(format!( + "Invalid priority fee withdrawal for leader cap '{leader_cap}' and share '{share_to_withdraw}'" + )) + }) + } + + /// Configure the priority fee vault exchange rate. + pub async fn configure_priority_fee_vault( + &self, + exchange_rate: u64, + ) -> Result { + let address = self.client.signer.get_active_address(); + let nexus_objects = &self.client.nexus_objects; + let tx = gas::configure_priority_fee_vault(nexus_objects, exchange_rate) + .map_err(NexusError::TransactionBuilding)?; + + let response = self.client.submit_transaction(tx, address).await?; + + Ok(ConfigurePriorityFeeVaultResult { + tx_digest: response.digest, + }) + } + + /// Swap an owned `$US` coin for SUI and transfer both returned coins to the sender. + pub async fn swap_us_for_sui( + &self, + us_coin: sui::types::Address, + min_sui_out: u64, + ) -> Result { + let address = self.client.signer.get_active_address(); + let nexus_objects = &self.client.nexus_objects; + let crawler = self.client.crawler(); + let us_coin = crawler + .get_object_metadata(us_coin) + .await + .map(|resp| resp.object_ref()) + .map_err(|e| { + NexusError::Rpc(anyhow::anyhow!("Failed to fetch `$US` coin metadata: {e}")) + })?; + + let tx = gas::swap_us_for_sui(nexus_objects, &us_coin, min_sui_out, address) + .map_err(NexusError::TransactionBuilding)?; + + let response = self.client.submit_transaction(tx, address).await?; + + Ok(SwapUsForSuiResult { + tx_digest: response.digest, + }) + } + + /// Drain all currently available SUI from the priority fee vault by swapping an owned `$US` + /// coin with strict minimum output set to the current vault SUI balance. + pub async fn drain_priority_fee_vault_sui( + &self, + us_coin: sui::types::Address, + ) -> Result { + let state = self.fetch_priority_fee_vault_state().await?; + let quote = state.quote_sui_drain().ok_or_else(|| { + NexusError::Configuration( + "Priority fee vault must have a configured exchange rate and positive SUI balance to drain" + .to_owned(), + ) + })?; + let min_sui_out = quote.sui_out; + let result = self.swap_us_for_sui(us_coin, min_sui_out).await?; + + Ok(DrainPriorityFeeVaultSuiResult { + tx_digest: result.tx_digest, + exchange_rate: quote.exchange_rate, + sui_balance_before: quote.sui_out, + min_sui_out, + }) + } + + /// Withdraw a leader's `$US` priority-fee share and transfer it to the sender. + pub async fn withdraw_priority_fee( + &self, + leader_cap: sui::types::Address, + share_to_withdraw: u64, + ) -> Result { + let address = self.client.signer.get_active_address(); + let nexus_objects = &self.client.nexus_objects; + let crawler = self.client.crawler(); + let leader_cap = crawler + .get_object_metadata(leader_cap) + .await + .map(|resp| resp.object_ref()) + .map_err(|e| { + NexusError::Rpc(anyhow::anyhow!("Failed to fetch leader cap metadata: {e}")) + })?; + + let tx = gas::withdraw_priority_fee(nexus_objects, &leader_cap, share_to_withdraw, address) + .map_err(NexusError::TransactionBuilding)?; + + let response = self.client.submit_transaction(tx, address).await?; + + Ok(WithdrawPriorityFeeResult { + tx_digest: response.digest, + }) + } + /// Enable the expiry gas extension for the specified tool. pub async fn enable_expiry_extension( &self, @@ -265,6 +427,11 @@ impl GasActions { mod tests { use crate::{ fqn, + move_bindings::{ + registry::priority_fee_vault::PriorityFeeVault, + sui_framework::{balance::Balance, object::UID, sui::SUI, vec_map::VecMap}, + talus::us::US, + }, sui, test_utils::{nexus_mocks, sui_mocks}, }; @@ -694,4 +861,44 @@ mod tests { assert_eq!(result.tx_digest, tx_digest); } + + #[tokio::test] + async fn test_gas_actions_drain_priority_fee_vault_sui_rejects_empty_vault() { + let nexus_objects = sui_mocks::mock_nexus_objects(); + let mut ledger_service_mock = sui_mocks::grpc::MockLedgerService::new(); + let vault = PriorityFeeVault::new( + UID::new(*nexus_objects.priority_fee_vault.object_id()), + Balance::::new(0), + Balance::::new(0), + 10, + 0, + VecMap::new(vec![]), + ); + + sui_mocks::grpc::mock_reference_gas_price(&mut ledger_service_mock, 1000); + sui_mocks::grpc::mock_get_object_bcs( + &mut ledger_service_mock, + nexus_objects.priority_fee_vault.clone(), + sui::types::Owner::Shared(1), + bcs::to_bytes(&vault).expect("serialize generated empty priority fee vault"), + ); + + let rpc_url = sui_mocks::grpc::mock_server(sui_mocks::grpc::ServerMocks { + ledger_service_mock: Some(ledger_service_mock), + ..Default::default() + }); + let client = nexus_mocks::mock_nexus_client(&nexus_objects, &rpc_url).await; + + let err = client + .gas() + .drain_priority_fee_vault_sui(sui::types::Address::from_static("0x99")) + .await + .expect_err("empty vault should not build a drain swap"); + + assert!( + err.to_string() + .contains("configured exchange rate and positive SUI balance"), + "unexpected error: {err}" + ); + } } diff --git a/sdk/src/nexus/scheduler.rs b/sdk/src/nexus/scheduler.rs index 565753f81..0baaafd0f 100644 --- a/sdk/src/nexus/scheduler.rs +++ b/sdk/src/nexus/scheduler.rs @@ -824,7 +824,7 @@ pub(crate) fn extract_task_id( .events .iter() .find_map(|event| match &event.data { - NexusEventKind::ScheduledSkillExecutionCreated(e) => Some(e.task.clone().into()), + NexusEventKind::ScheduledSkillExecutionCreated(e) => Some(e.task.into()), _ => None, }) .ok_or_else(|| { diff --git a/sdk/src/nexus/workflow.rs b/sdk/src/nexus/workflow.rs index 307060ab4..6f8799602 100644 --- a/sdk/src/nexus/workflow.rs +++ b/sdk/src/nexus/workflow.rs @@ -469,13 +469,13 @@ pub struct WorkflowActions { fn event_execution_id(event: &NexusEventKind) -> Option { match event { - NexusEventKind::WalkAdvanced(e) => Some(e.execution.clone().into()), - NexusEventKind::WalkFailed(e) => Some(e.execution.clone().into()), - NexusEventKind::TerminalErrEvalRecorded(e) => Some(e.execution.clone().into()), - NexusEventKind::WalkAborted(e) => Some(e.execution.clone().into()), - NexusEventKind::WalkCancelled(e) => Some(e.execution.clone().into()), - NexusEventKind::EndStateReached(e) => Some(e.execution.clone().into()), - NexusEventKind::ExecutionFinished(e) => Some(e.execution.clone().into()), + NexusEventKind::WalkAdvanced(e) => Some(e.execution.into()), + NexusEventKind::WalkFailed(e) => Some(e.execution.into()), + NexusEventKind::TerminalErrEvalRecorded(e) => Some(e.execution.into()), + NexusEventKind::WalkAborted(e) => Some(e.execution.into()), + NexusEventKind::WalkCancelled(e) => Some(e.execution.into()), + NexusEventKind::EndStateReached(e) => Some(e.execution.into()), + NexusEventKind::ExecutionFinished(e) => Some(e.execution.into()), _ => None, } } @@ -1054,7 +1054,7 @@ pub async fn offchain_success_requires_verifier_proof( let dag = crawler.get_object::(dag_object_id).await?; let mut vertices = fetch_dag_vertices_bcs(crawler, &dag.data).await?; let vertex_name = next_vertex.vertex(); - let vertex = vertices.remove(&vertex_name).ok_or_else(|| { + let vertex = vertices.remove(vertex_name).ok_or_else(|| { anyhow!( "Vertex '{}' not found in DAG verifier config", vertex_name.name @@ -2306,7 +2306,7 @@ mod tests { variant_ports_to_data: crate::move_bindings::sui_framework::vec_map::VecMap { contents: vec![], }, - failure_evidence_kind: MoveOption::from_option(primary_failure.clone()), + failure_evidence_kind: MoveOption::from_option(primary_failure), primary_failure_evidence_kind: MoveOption::from_option(primary_failure), secondary_failure_evidence_kind: MoveOption::from_option(secondary_failure), current_leader_cap_id: object_id(primary_leader), diff --git a/sdk/src/test_utils/contracts.rs b/sdk/src/test_utils/contracts.rs index 4bdf1016f..0b4662fdf 100644 --- a/sdk/src/test_utils/contracts.rs +++ b/sdk/src/test_utils/contracts.rs @@ -8,7 +8,7 @@ use { std::{ env, path::{Path, PathBuf}, - sync::Arc, + sync::{Arc, OnceLock}, }, tempfile::{Builder, TempDir}, tokio::sync::Mutex, @@ -19,9 +19,26 @@ fn test_artifact_temp_root() -> PathBuf { .join("target") .join("test-temp"); std::fs::create_dir_all(&root).expect("Failed to create SDK test temp root"); + ensure_test_move_home(&root); root } +fn ensure_test_move_home(root: &Path) { + static MOVE_HOME: OnceLock = OnceLock::new(); + + let move_home = MOVE_HOME.get_or_init(|| { + env::var_os("MOVE_HOME") + .map(PathBuf::from) + .unwrap_or_else(|| { + let move_home = root.join(".move"); + std::fs::create_dir_all(&move_home).expect("Failed to create SDK test Move home"); + env::set_var("MOVE_HOME", &move_home); + move_home + }) + }); + std::fs::create_dir_all(move_home).expect("Failed to create SDK test Move home"); +} + fn build_tempdir(prefix: &str) -> TempDir { Builder::new() .prefix(prefix) diff --git a/sdk/src/test_utils/sui_mocks.rs b/sdk/src/test_utils/sui_mocks.rs index c51024436..16207231e 100644 --- a/sdk/src/test_utils/sui_mocks.rs +++ b/sdk/src/test_utils/sui_mocks.rs @@ -1,7 +1,7 @@ use { crate::{ sui, - types::{DefaultDagExecutorTarget, NexusObjects}, + types::{DefaultDagExecutorTarget, NexusObjects, UsTokenConfig}, }, sui_transaction_builder as tx, }; @@ -57,6 +57,8 @@ pub fn mock_nexus_objects() -> NexusObjects { gas_service: mock_sui_object_ref(), leader_registry: mock_sui_object_ref(), priority_fee_vault: mock_sui_object_ref(), + priority_fee_vault_owner_cap: mock_sui_object_ref(), + us_token: UsTokenConfig::new(sui::types::Address::generate(&mut rng)), workflow_original_pkg_id: None, scheduler_original_pkg_id: None, } diff --git a/sdk/src/transactions/dag.rs b/sdk/src/transactions/dag.rs index c6c74eb4a..27ea47394 100644 --- a/sdk/src/transactions/dag.rs +++ b/sdk/src/transactions/dag.rs @@ -1225,10 +1225,9 @@ fn prepare_verifier_contract_result( result: &VerifierContractResult, ) -> anyhow::Result { let method = tx.ascii_string(&result.method)?; - let decision = prepare_verifier_decision(tx, result.decision.clone())?; - let submission_kind = prepare_submission_kind(tx, result.submission_kind.clone())?; - let failure_evidence_kind = - prepare_verifier_evidence_kind(tx, result.failure_evidence_kind.clone())?; + let decision = prepare_verifier_decision(tx, result.decision)?; + let submission_kind = prepare_submission_kind(tx, result.submission_kind)?; + let failure_evidence_kind = prepare_verifier_evidence_kind(tx, result.failure_evidence_kind)?; let payload_or_reason_hash = tx.arg(&result.payload_or_reason_hash)?; let credential = tx.arg(&result.credential)?; let detail = tx.arg(&result.detail)?; @@ -1342,7 +1341,7 @@ fn prepare_offchain_verifier_evidence( expected_vertex: sui::types::Argument, evidence: &AuthenticatedOffchainVerifierEvidence, ) -> anyhow::Result { - let submission_kind = prepare_submission_kind(tx, evidence.submission_kind.clone())?; + let submission_kind = prepare_submission_kind(tx, evidence.submission_kind)?; let payload_or_reason_hash = tx.arg(&evidence.payload_or_reason_hash)?; let transport_proof = tx.arg(&evidence.transport_proof)?; let request = prepare_authenticated_offchain_request_evidence( @@ -2535,7 +2534,11 @@ fn execute_agent_dag_internal( #[cfg(test)] mod tests { - use {super::*, crate::types::DefaultDagExecutorTarget, sui::types::Command}; + use { + super::*, + crate::types::{DefaultDagExecutorTarget, UsTokenConfig}, + sui::types::Command, + }; fn addr(value: &'static str) -> sui::types::Address { sui::types::Address::from_static(value) @@ -2568,6 +2571,8 @@ mod tests { gas_service: object_ref("0xd", 1, 13), leader_registry: object_ref("0xe", 1, 14), priority_fee_vault: object_ref("0xf", 1, 15), + priority_fee_vault_owner_cap: object_ref("0x10", 1, 16), + us_token: UsTokenConfig::new(addr("0x12")), workflow_original_pkg_id: None, scheduler_original_pkg_id: None, } diff --git a/sdk/src/transactions/gas.rs b/sdk/src/transactions/gas.rs index 2401a9502..d99c82adc 100644 --- a/sdk/src/transactions/gas.rs +++ b/sdk/src/transactions/gas.rs @@ -1,6 +1,9 @@ use { crate::{ - move_bindings::workflow::{gas as gas_binding, gas_extension as gas_extension_binding}, + move_bindings::{ + registry::priority_fee_vault as priority_fee_vault_binding, + workflow::{gas as gas_binding, gas_extension as gas_extension_binding}, + }, move_boundary, sui, types::NexusObjects, @@ -138,7 +141,75 @@ pub fn abort_expired_execution_with_tool_gas_ptb( }) } -/// Build a PTB to enable the limited invocations gas extension for a tool. +/// PTB template to configure the `$US` priority fee vault exchange rate. +pub fn configure_priority_fee_vault( + objects: &NexusObjects, + exchange_rate: u64, +) -> anyhow::Result { + move_boundary::ptb(objects, |tx| { + let priority_fee_vault = tx.shared_object(&objects.priority_fee_vault, true)?; + let owner_cap = tx.owned_object(&objects.priority_fee_vault_owner_cap)?; + let exchange_rate = tx.arg(&exchange_rate)?; + + tx.call_target( + priority_fee_vault_binding::configure_target, + vec![priority_fee_vault, owner_cap, exchange_rate], + )?; + Ok(()) + }) +} + +/// PTB template to swap an owned `Coin` for vault SUI. +pub fn swap_us_for_sui( + objects: &NexusObjects, + us_coin: &sui::types::ObjectReference, + min_sui_out: u64, + recipient: sui::types::Address, +) -> anyhow::Result { + move_boundary::ptb(objects, |tx| { + let priority_fee_vault = tx.shared_object(&objects.priority_fee_vault, true)?; + let us_coin = tx.owned_object(us_coin)?; + let min_sui_out = tx.arg(&min_sui_out)?; + let result = tx.call_target( + priority_fee_vault_binding::swap_us_for_sui_target, + vec![priority_fee_vault, us_coin, min_sui_out], + )?; + let sui_out = tx.nested_result(result, 0)?; + let us_refund = tx.nested_result(result, 1)?; + let recipient = tx.arg(&recipient)?; + tx.transfer_objects(vec![sui_out, us_refund], recipient)?; + Ok(()) + }) +} + +/// PTB template to withdraw a leader's priority-fee share from the registry vault. +pub fn withdraw_priority_fee( + objects: &NexusObjects, + leader_cap: &sui::types::ObjectReference, + share_to_withdraw: u64, + recipient: sui::types::Address, +) -> anyhow::Result { + move_boundary::ptb(objects, |tx| { + let priority_fee_vault = tx.shared_object(&objects.priority_fee_vault, true)?; + let leader_registry = tx.shared_object(&objects.leader_registry, false)?; + let leader_cap = tx.owned_object(leader_cap)?; + let share_to_withdraw = tx.arg(&share_to_withdraw)?; + let us_out = tx.call_target( + priority_fee_vault_binding::withdraw_priority_fee_target, + vec![ + priority_fee_vault, + leader_registry, + leader_cap, + share_to_withdraw, + ], + )?; + let recipient = tx.arg(&recipient)?; + tx.transfer_objects(vec![us_out], recipient)?; + Ok(()) + }) +} + +/// PTB template to refund payment settlement for a vertex. #[allow(clippy::too_many_arguments)] pub(crate) fn enable_limited_invocations_ptb( objects: &NexusObjects, @@ -202,7 +273,11 @@ pub(crate) fn buy_limited_invocations_gas_ticket_ptb( #[cfg(test)] mod tests { - use {super::*, crate::types::DefaultDagExecutorTarget, sui::types::Command}; + use { + super::*, + crate::types::{DefaultDagExecutorTarget, UsTokenConfig}, + sui::types::{Argument, Command, Input, MoveCall}, + }; fn addr(value: &'static str) -> sui::types::Address { sui::types::Address::from_static(value) @@ -235,36 +310,126 @@ mod tests { gas_service: object_ref("0xd", 1, 13), leader_registry: object_ref("0xe", 1, 14), priority_fee_vault: object_ref("0xf", 1, 15), + priority_fee_vault_owner_cap: object_ref("0x10", 1, 16), + us_token: UsTokenConfig::new(addr("0x12")), workflow_original_pkg_id: None, scheduler_original_pkg_id: None, } } + fn move_call(command: &Command) -> &MoveCall { + let Command::MoveCall(call) = command else { + panic!("expected MoveCall command, got {command:?}"); + }; + call + } + + fn input_for_argument<'a>(ptb: &'a ProgrammableTransaction, argument: &Argument) -> &'a Input { + let Argument::Input(index) = argument else { + panic!("expected input argument, got {argument:?}"); + }; + &ptb.inputs[*index as usize] + } + + fn assert_shared( + ptb: &ProgrammableTransaction, + argument: &Argument, + expected: &sui::types::ObjectReference, + mutable: bool, + ) { + let Input::Shared(shared) = input_for_argument(ptb, argument) else { + panic!("expected shared object input"); + }; + assert_eq!(shared.object_id(), *expected.object_id()); + assert_eq!(shared.version(), expected.version()); + assert_eq!(shared.mutability().is_mutable(), mutable); + } + + fn assert_owned( + ptb: &ProgrammableTransaction, + argument: &Argument, + expected: &sui::types::ObjectReference, + ) { + let Input::ImmutableOrOwned(actual) = input_for_argument(ptb, argument) else { + panic!("expected owned object input"); + }; + assert_eq!(actual, expected); + } + #[test] - fn abort_expired_execution_with_tool_gas_uses_current_move_signature() { + fn abort_expired_execution_with_tool_gas_uses_generated_target() { let objects = nexus_objects(); - let ptb = abort_expired_execution_with_tool_gas_ptb( - &objects, - &object_ref("0x20", 2, 20), - &object_ref("0x21", 3, 21), - &object_ref("0x22", 4, 22), - ) - .expect("ptb should build"); - - let call = ptb - .commands - .iter() - .find_map(|command| match command { - Command::MoveCall(call) - if call.module.as_str() == "gas_extension" - && call.function.as_str() == "abort_expired_execution_with_tool_gas" => - { - Some(call) - } - _ => None, - }) - .expect("abort move call should exist"); + let tool_gas = object_ref("0x20", 2, 20); + let dag = object_ref("0x21", 3, 21); + let execution = object_ref("0x22", 4, 22); + let ptb = abort_expired_execution_with_tool_gas_ptb(&objects, &tool_gas, &dag, &execution) + .unwrap(); + + let call = move_call(ptb.commands.last().unwrap()); + assert_eq!(call.package, objects.workflow_pkg_id); + assert_eq!(call.module.as_str(), "gas_extension"); + assert_eq!( + call.function.as_str(), + "abort_expired_execution_with_tool_gas" + ); + assert_shared(&ptb, &call.arguments[0], &tool_gas, true); + assert_shared(&ptb, &call.arguments[1], &dag, false); + assert_shared(&ptb, &call.arguments[2], &execution, true); + } + + #[test] + fn configure_priority_fee_vault_uses_generated_registry_target() { + let objects = nexus_objects(); + let ptb = configure_priority_fee_vault(&objects, 77).unwrap(); + + let call = move_call(&ptb.commands[0]); + assert_eq!(call.package, objects.registry_pkg_id); + assert_eq!(call.module.as_str(), "priority_fee_vault"); + assert_eq!(call.function.as_str(), "configure"); + assert_eq!(call.arguments.len(), 3); + assert_shared(&ptb, &call.arguments[0], &objects.priority_fee_vault, true); + assert_owned( + &ptb, + &call.arguments[1], + &objects.priority_fee_vault_owner_cap, + ); + assert_eq!( + input_for_argument(&ptb, &call.arguments[2]), + &Input::Pure(77u64.to_le_bytes().to_vec()) + ); + } + + #[test] + fn swap_us_for_sui_uses_generated_target_and_transfers_both_results() { + let objects = nexus_objects(); + let us_coin = object_ref("0x20", 2, 20); + let recipient = addr("0x99"); + let ptb = swap_us_for_sui(&objects, &us_coin, 42, recipient).unwrap(); + + let call = move_call(&ptb.commands[0]); + assert_eq!(call.package, objects.registry_pkg_id); + assert_eq!(call.module.as_str(), "priority_fee_vault"); + assert_eq!(call.function.as_str(), "swap_us_for_sui"); + assert_eq!(call.arguments.len(), 3); + assert_shared(&ptb, &call.arguments[0], &objects.priority_fee_vault, true); + assert_owned(&ptb, &call.arguments[1], &us_coin); + assert!(matches!(&ptb.commands[1], Command::TransferObjects(_))); + } + + #[test] + fn withdraw_priority_fee_uses_generated_target_and_transfers_us() { + let objects = nexus_objects(); + let leader_cap = object_ref("0x20", 2, 20); + let ptb = withdraw_priority_fee(&objects, &leader_cap, 55, addr("0x99")).unwrap(); + let call = move_call(&ptb.commands[0]); + assert_eq!(call.package, objects.registry_pkg_id); + assert_eq!(call.module.as_str(), "priority_fee_vault"); + assert_eq!(call.function.as_str(), "withdraw_priority_fee"); assert_eq!(call.arguments.len(), 4); + assert_shared(&ptb, &call.arguments[0], &objects.priority_fee_vault, true); + assert_shared(&ptb, &call.arguments[1], &objects.leader_registry, false); + assert_owned(&ptb, &call.arguments[2], &leader_cap); + assert!(matches!(&ptb.commands[1], Command::TransferObjects(_))); } } diff --git a/sdk/src/transactions/leader.rs b/sdk/src/transactions/leader.rs index 6977ca9b9..69d9c4df3 100644 --- a/sdk/src/transactions/leader.rs +++ b/sdk/src/transactions/leader.rs @@ -5,55 +5,33 @@ use { move_bindings::{ primitives::owner_cap, registry::{leader as leader_binding, leader_cap}, - sui_framework::{coin as coin_binding, sui as sui_binding}, + sui_framework::coin as coin_binding, + talus::us::US, }, move_boundary, sui, types::NexusObjects, }, sui::types::ProgrammableTransaction, - sui_move::MoveType, - sui_move_call::{CallArg, CallSpecError, CallTarget}, }; type OverNetworkCap = owner_cap::CloneableOwnerCap; -fn sui_type_tag(objects: &NexusObjects) -> sui::types::TypeTag { - crate::move_bindings::type_tag::(objects) -} - -fn redeem_funds_target() -> Result -where - T: MoveType, -{ - let mut target = CallTarget::new( - sui::types::Address::from_static("0x2"), - "coin", - "redeem_funds", - )?; - target.push_type_arg::(); - Ok(target) -} - /// Struct tag for the shared `CloneableOwnerCap` capability. pub fn over_network_cap_struct_tag(objects: &NexusObjects) -> sui::types::StructTag { crate::move_bindings::struct_tag::(objects) } -/// Register the transaction sender as a leader using sender address balance funds. +/// Register the transaction sender as a leader using an owned Talus `$US` stake coin. pub fn register_for_self_ptb( objects: &NexusObjects, - stake_mist: u64, + stake_coin: &sui::types::ObjectReference, + stake_us: u64, ) -> anyhow::Result { move_boundary::ptb(objects, |tx| { let leader_registry = tx.shared_object(&objects.leader_registry, true)?; - let withdrawal = tx.input(CallArg::FundsWithdrawal(sui::types::FundsWithdrawal::new( - stake_mist, - sui_type_tag(objects), - sui::types::WithdrawFrom::Sender, - )))?; - let pay_with = tx.call_target(redeem_funds_target::, vec![withdrawal])?; - let amount = tx.arg(&stake_mist)?; + let pay_with = tx.owned_object(stake_coin)?; + let amount = tx.arg(&stake_us)?; let metadata = tx.call_target(leader_binding::empty_metadata_target, vec![])?; let clock = tx.clock()?; @@ -61,10 +39,7 @@ pub fn register_for_self_ptb( leader_binding::register_target, vec![leader_registry, pay_with, amount, metadata, clock], )?; - tx.call_target( - coin_binding::destroy_zero_target::, - vec![pay_with], - )?; + tx.call_target(coin_binding::destroy_zero_target::, vec![pay_with])?; Ok(()) }) @@ -110,8 +85,8 @@ pub fn suspend_if_token_for_self_ptb( mod tests { use { super::*, - crate::types::DefaultDagExecutorTarget, - sui::types::{Argument, Command, MoveCall}, + crate::types::{DefaultDagExecutorTarget, UsTokenConfig}, + sui::types::{Argument, Command, Input, MoveCall}, }; fn addr(value: &'static str) -> sui::types::Address { @@ -145,6 +120,8 @@ mod tests { gas_service: object_ref("0xd", 1, 13), leader_registry: object_ref("0xe", 1, 14), priority_fee_vault: object_ref("0xf", 1, 15), + priority_fee_vault_owner_cap: object_ref("0x10", 1, 16), + us_token: UsTokenConfig::new(addr("0x12")), workflow_original_pkg_id: None, scheduler_original_pkg_id: None, } @@ -158,32 +135,30 @@ mod tests { } #[test] - fn register_for_self_redeems_address_balance_funds() { + fn register_for_self_uses_owned_us_stake_and_generated_targets() { let objects = nexus_objects(); - let ptb = register_for_self_ptb(&objects, 1).unwrap(); + let stake_coin = object_ref("0x20", 2, 20); + let ptb = register_for_self_ptb(&objects, &stake_coin, 1).unwrap(); - let CallArg::FundsWithdrawal(withdrawal) = &ptb.inputs[1] else { - panic!("expected funds withdrawal input"); + let Input::ImmutableOrOwned(input_stake_coin) = &ptb.inputs[1] else { + panic!("expected owned US stake coin input"); }; - assert_eq!(withdrawal.amount(), Some(1)); - assert_eq!(withdrawal.coin_type(), &sui_type_tag(&objects)); - assert_eq!(withdrawal.source(), sui::types::WithdrawFrom::Sender); - - let redeem = move_call(&ptb.commands[0]); - assert_eq!(redeem.package, addr("0x2")); - assert_eq!(redeem.module.as_str(), "coin"); - assert_eq!(redeem.function.as_str(), "redeem_funds"); - assert_eq!(redeem.type_arguments, vec![sui_type_tag(&objects)]); - assert_eq!(redeem.arguments, vec![Argument::Input(1)]); - - let register = move_call(&ptb.commands[2]); + assert_eq!(input_stake_coin, &stake_coin); + + let register = move_call(&ptb.commands[1]); + assert_eq!(register.package, objects.registry_pkg_id); assert_eq!(register.module.as_str(), "leader"); assert_eq!(register.function.as_str(), "register"); - assert_eq!(register.arguments[1], Argument::Result(0)); + assert_eq!(register.arguments[1], Argument::Input(1)); - let destroy_zero = move_call(&ptb.commands[3]); + let destroy_zero = move_call(&ptb.commands[2]); + assert_eq!(destroy_zero.package, addr("0x2")); assert_eq!(destroy_zero.module.as_str(), "coin"); assert_eq!(destroy_zero.function.as_str(), "destroy_zero"); - assert_eq!(destroy_zero.arguments, vec![Argument::Result(0)]); + assert_eq!( + destroy_zero.type_arguments, + vec![crate::move_bindings::type_tag::(&objects)] + ); + assert_eq!(destroy_zero.arguments, vec![Argument::Input(1)]); } } diff --git a/sdk/src/transactions/network_auth.rs b/sdk/src/transactions/network_auth.rs index 94ec6e4d0..0c0dcae35 100644 --- a/sdk/src/transactions/network_auth.rs +++ b/sdk/src/transactions/network_auth.rs @@ -29,10 +29,10 @@ fn proof_for_offchain_tool( tool: Argument, owner_cap: Argument, ) -> anyhow::Result { - Ok(tx.call_target( + tx.call_target( network_auth_binding::prove_offchain_tool_target, vec![tool, owner_cap], - )?) + ) } fn proof_for_leader( diff --git a/sdk/src/transactions/scheduler.rs b/sdk/src/transactions/scheduler.rs index 90be2b0ae..14fe3af58 100644 --- a/sdk/src/transactions/scheduler.rs +++ b/sdk/src/transactions/scheduler.rs @@ -82,9 +82,8 @@ where )?; for (key, value) in key_values.into_iter() { - let key = tx.ascii_string(key.as_ref())?; - - let value = tx.ascii_string(value.as_ref())?; + let key = tx.arg(&MoveString::new(key.as_ref().as_bytes().to_vec()))?; + let value = tx.arg(&MoveString::new(value.as_ref().as_bytes().to_vec()))?; tx.call_target( vec_map_binding::insert_target::, @@ -727,11 +726,11 @@ fn execute_scheduled_occurrence( let proof = match generator { OccurrenceGenerator::Queue => tx.call_target( scheduler_binding::check_queue_occurrence_target, - vec![task.clone(), leader_registry.clone(), clock.clone()], + vec![task, leader_registry, clock], )?, OccurrenceGenerator::Periodic => tx.call_target( scheduler_binding::check_periodic_occurrence_target, - vec![task.clone(), leader_registry.clone(), clock.clone()], + vec![task, leader_registry, clock], )?, }; @@ -742,33 +741,26 @@ fn execute_scheduled_occurrence( let execution = tx.call_target( scheduler_binding::prepare_execution_from_scheduled_payment_target, - vec![ - dag.clone(), - agent_registry, - tool_registry, - task.clone(), - leader_cap, - clock.clone(), - ], + vec![dag, agent_registry, tool_registry, task, leader_cap, clock], )?; let gas_service = tx.shared_object(&objects.gas_service, false)?; tx.call_target( gas_binding::snapshot_dag_tool_costs_target, - vec![gas_service, execution.clone(), dag.clone()], + vec![gas_service, execution, dag], )?; for (address, version) in tools_gas { let tool_gas = tx.shared_object_by_id(*address, *version, true)?; tx.call_target( gas_binding::lock_payment_state_for_tool_target, - vec![tool_gas, dag.clone(), execution.clone()], + vec![tool_gas, dag, execution], )?; } tx.call_target( execution_entries_binding::start_execution_target, - vec![dag.clone(), execution.clone(), leader_registry, clock], + vec![dag, execution, leader_registry, clock], )?; tx.call_target( transfer_binding::public_share_object_target::, @@ -925,4 +917,40 @@ mod tests { .to_string() .contains("priority fee percentage must be in 10..=10000")); } + + #[test] + fn default_agent_task_metadata_uses_move_utf8_strings() { + let objects = mock_nexus_objects(); + let ptb = create_default_agent_task_ptb( + &objects, + sui::types::Address::from_static("0x42"), + "default", + &HashMap::new(), + &[("demo".to_owned(), "scheduler".to_owned())], + OccurrenceGenerator::Queue, + None, + 50_000_000, + 50_000_000, + ) + .expect("default-agent task PTB should build"); + + let Command::MoveCall(insert) = &ptb.commands[1] else { + panic!("expected metadata map insertion"); + }; + assert_eq!(insert.module.as_str(), "vec_map"); + assert_eq!(insert.function.as_str(), "insert"); + + let key: crate::move_bindings::move_std::string::String = + bcs::from_bytes(pure_input(&ptb, &insert.arguments[1])) + .expect("metadata key should be a generated Move string"); + assert_eq!(key.bytes, b"demo"); + + let value: crate::move_bindings::move_std::string::String = + bcs::from_bytes(pure_input(&ptb, &insert.arguments[2])) + .expect("metadata value should be a generated Move string"); + assert_eq!(value.bytes, b"scheduler"); + + let metadata = scheduler_call(&ptb, "new_metadata"); + assert_eq!(metadata.arguments, [Argument::Result(0)]); + } } diff --git a/sdk/src/transactions/tap.rs b/sdk/src/transactions/tap.rs index 46a8fa604..79e4aa334 100644 --- a/sdk/src/transactions/tap.rs +++ b/sdk/src/transactions/tap.rs @@ -134,7 +134,7 @@ pub(crate) fn register_skill_ptb( artifact.dag_id, artifact.skill_name.as_bytes().to_vec(), artifact.requirements.input_commitment.clone(), - artifact.requirements.payment_policy.clone(), + artifact.requirements.payment_policy, artifact.requirements.schedule_policy.clone(), artifact.requirements.fixed_tools.clone(), )?; @@ -201,7 +201,7 @@ pub(crate) fn update_skill_from_artifact_ptb( registry_for_policies, agent_for_policies, skill_id, - artifact.requirements.payment_policy.clone(), + artifact.requirements.payment_policy, artifact.requirements.schedule_policy.clone(), )?; Ok(()) @@ -243,7 +243,7 @@ pub(crate) fn bind_agent_skill_ptb( artifact.dag_id, artifact.skill_name.as_bytes().to_vec(), artifact.requirements.input_commitment.clone(), - artifact.requirements.payment_policy.clone(), + artifact.requirements.payment_policy, artifact.requirements.schedule_policy.clone(), artifact.requirements.fixed_tools.clone(), )?; @@ -649,7 +649,7 @@ fn scheduled_vertex_authorization_template_arg( ) -> anyhow::Result { let skill_id = tx.arg(&template.skill_id)?; let vertex = tx.ascii_string(&template.vertex)?; - let recipient_id = tx.object_id(template.recipient_id.clone().into())?; + let recipient_id = tx.object_id(template.recipient_id.into())?; tx.call_target( authorization_binding::agent_vertex_authorization_template_target, vec![skill_id, vertex, recipient_id], diff --git a/sdk/src/types/mod.rs b/sdk/src/types/mod.rs index 8705b3f18..5b6978eb9 100644 --- a/sdk/src/types/mod.rs +++ b/sdk/src/types/mod.rs @@ -1,5 +1,6 @@ mod dag; mod nexus_objects; +mod priority_fee; mod secret; mod secret_value; mod tap; @@ -9,7 +10,8 @@ mod workflow_models; pub use { dag::*, - nexus_objects::NexusObjects, + nexus_objects::{NexusObjects, UsTokenConfig}, + priority_fee::{PriorityFeeSuiDrainQuote, PriorityFeeWithdrawalQuote}, secret::Secret, secret_value::SecretValue, tap::*, diff --git a/sdk/src/types/nexus_objects.rs b/sdk/src/types/nexus_objects.rs index ccc6fe7f1..477b5ca62 100644 --- a/sdk/src/types/nexus_objects.rs +++ b/sdk/src/types/nexus_objects.rs @@ -19,16 +19,74 @@ use { move_std::type_name::TypeName, primitives::policy::Symbol as PolicySymbol, scheduler::scheduler as scheduler_move, + sui_framework::coin::Coin as MoveCoin, + talus::us::US, }, sui, types::DefaultDagExecutorTarget, }, serde::{Deserialize, Serialize}, - sui_move::MoveStruct, + sui_move::{MoveStruct, MoveType}, }; #[cfg(feature = "nexus")] use {std::sync::Arc, tokio::sync::Mutex}; +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +pub struct UsTokenConfig { + pub package_id: sui::types::Address, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protected_treasury: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, +} + +impl Default for UsTokenConfig { + fn default() -> Self { + Self::new(sui::types::Address::ZERO) + } +} + +impl UsTokenConfig { + pub fn new(package_id: sui::types::Address) -> Self { + Self { + package_id, + protected_treasury: None, + metadata: None, + } + } + + pub fn type_tag(&self) -> sui::types::TypeTag { + crate::move_bindings::talus::with_packages( + self.package_id, + self.package_id, + US::type_tag_static, + ) + } + + pub fn coin_type_tag(&self) -> sui::types::StructTag { + crate::move_bindings::sui_framework::with_packages( + sui::types::Address::from_static("0x2"), + sui::types::Address::from_static("0x2"), + || { + crate::move_bindings::talus::with_packages( + self.package_id, + self.package_id, + MoveCoin::::struct_tag_static, + ) + }, + ) + } + + pub fn qualified_type(&self) -> String { + let tag = crate::move_bindings::talus::with_packages( + self.package_id, + self.package_id, + US::struct_tag_static, + ); + format!("{}::{}::{}", tag.address(), tag.module(), tag.name()) + } +} + #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct NexusObjects { pub workflow_pkg_id: sui::types::Address, @@ -45,6 +103,10 @@ pub struct NexusObjects { pub gas_service: sui::types::ObjectReference, pub leader_registry: sui::types::ObjectReference, pub priority_fee_vault: sui::types::ObjectReference, + #[serde(default = "default_object_reference")] + pub priority_fee_vault_owner_cap: sui::types::ObjectReference, + #[serde(default)] + pub us_token: UsTokenConfig, /// Original (defining) package address for the workflow package. /// @@ -63,6 +125,10 @@ pub struct NexusObjects { pub scheduler_original_pkg_id: Option, } +fn default_object_reference() -> sui::types::ObjectReference { + sui::types::ObjectReference::new(sui::types::Address::ZERO, 1, sui::types::Digest::ZERO) +} + impl NexusObjects { /// Returns the original (defining) workflow package address. /// @@ -363,6 +429,12 @@ mod tests { 1, sui::types::Digest::generate(&mut rng), ), + priority_fee_vault_owner_cap: sui::types::ObjectReference::new( + sui::types::Address::generate(&mut rng), + 1, + sui::types::Digest::generate(&mut rng), + ), + us_token: UsTokenConfig::new(sui::types::Address::generate(&mut rng)), workflow_original_pkg_id: None, scheduler_original_pkg_id: None, } @@ -398,6 +470,29 @@ mod tests { } } + #[test] + fn us_token_config_scopes_generated_token_and_coin_tags() { + let package = sui::types::Address::from_static("0x42"); + let config = UsTokenConfig::new(package); + + let sui::types::TypeTag::Struct(us_tag) = config.type_tag() else { + panic!("US must be a generated struct type"); + }; + assert_eq!(*us_tag.address(), package); + assert_eq!(us_tag.module().as_str(), "us"); + assert_eq!(us_tag.name().as_str(), "US"); + + let coin_tag = config.coin_type_tag(); + assert_eq!(*coin_tag.address(), sui::types::Address::from_static("0x2")); + assert_eq!(coin_tag.module().as_str(), "coin"); + assert_eq!(coin_tag.name().as_str(), "Coin"); + assert_eq!( + coin_tag.type_params(), + &[sui::types::TypeTag::Struct(us_tag)] + ); + assert_eq!(config.qualified_type(), format!("{package}::us::US")); + } + #[test] fn matches_workflow_interface_and_agent_registry_events() { let objects = sample_objects(); diff --git a/sdk/src/types/priority_fee.rs b/sdk/src/types/priority_fee.rs new file mode 100644 index 000000000..0b9fe51a1 --- /dev/null +++ b/sdk/src/types/priority_fee.rs @@ -0,0 +1,14 @@ +//! Off-chain quote values derived from the generated priority-fee vault state. + +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct PriorityFeeWithdrawalQuote { + pub share_to_withdraw: u64, + pub us_out: u64, + pub us_refunded: u64, +} + +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct PriorityFeeSuiDrainQuote { + pub exchange_rate: u64, + pub sui_out: u64, +} diff --git a/sdk/tests/tap_contract_test.rs b/sdk/tests/tap_contract_test.rs index 5f3d5513d..4736768f6 100644 --- a/sdk/tests/tap_contract_test.rs +++ b/sdk/tests/tap_contract_test.rs @@ -42,6 +42,7 @@ use { SkillRevisionContext, SkillRevisionLookupError, SkillRevisionLookupKey, + UsTokenConfig, }, }, std::{path::PathBuf, str::FromStr}, @@ -231,6 +232,8 @@ fn nexus_objects() -> NexusObjects { gas_service: object_ref("0xd", 1, 13), leader_registry: object_ref("0xe", 1, 14), priority_fee_vault: object_ref("0xf", 1, 15), + priority_fee_vault_owner_cap: object_ref("0x10", 1, 16), + us_token: UsTokenConfig::new(addr("0x12")), workflow_original_pkg_id: None, scheduler_original_pkg_id: None, }