diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 9d8106df16..dd5e7a26b8 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -9,6 +9,7 @@ autocheckpoint autonumber backpressure bech +biguint bkioshn blockfetch blosc @@ -126,6 +127,7 @@ oneshot openat outlen outparam +pastey permissioned pollable pollables diff --git a/hermes/Cargo.lock b/hermes/Cargo.lock index 7f2a83b5e2..91335102d7 100644 --- a/hermes/Cargo.lock +++ b/hermes/Cargo.lock @@ -203,15 +203,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" -[[package]] -name = "ascii-canvas" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" -dependencies = [ - "term", -] - [[package]] name = "asn1-rs" version = "0.6.2" @@ -295,27 +286,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "async-attributes" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - [[package]] name = "async-channel" version = "2.5.0" @@ -328,35 +298,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-executor" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" -dependencies = [ - "async-channel 2.5.0", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - [[package]] name = "async-io" version = "2.6.0" @@ -381,36 +322,19 @@ version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-object-pool" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "333c456b97c3f2d50604e8b2624253b7f787208cb72eb75e64b0ad11b221652c" -dependencies = [ - "async-std", -] - -[[package]] -name = "async-process" -version = "2.5.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +checksum = "e1ac0219111eb7bb7cb76d4cf2cb50c598e7ae549091d3616f9e95442c18486f" dependencies = [ - "async-channel 2.5.0", - "async-io", "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener 5.4.1", - "futures-lite", - "rustix 1.1.2", + "event-listener", ] [[package]] @@ -436,52 +360,6 @@ dependencies = [ "wasm-bindgen-futures", ] -[[package]] -name = "async-signal" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix 1.1.2", - "signal-hook-registry", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-std" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" -dependencies = [ - "async-attributes", - "async-channel 1.9.0", - "async-global-executor", - "async-io", - "async-lock", - "async-process", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers 0.3.0", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -504,12 +382,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - [[package]] name = "async-trait" version = "0.1.89" @@ -547,7 +419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" dependencies = [ "base64 0.22.1", - "http 1.3.1", + "http", "log", "url", ] @@ -640,17 +512,6 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" -[[package]] -name = "basic-cookies" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67bd8fd42c16bdb08688243dc5f0cc117a3ca9efeeaba3a345a18a6159ad96f7" -dependencies = [ - "lalrpop", - "lalrpop-util", - "regex", -] - [[package]] name = "bech32" version = "0.9.1" @@ -729,30 +590,15 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec 0.6.3", -] - [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec 0.8.0", + "bit-vec", ] -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bit-vec" version = "0.8.0" @@ -851,19 +697,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel 2.5.0", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "blosc-src" version = "0.3.6" @@ -894,6 +727,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eeab4423108c5d7c744f4d234de88d18d636100093ae04caf4825134b9c3a32" +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 4.0.3", +] + [[package]] name = "brotli" version = "8.0.2" @@ -902,7 +746,17 @@ checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", + "brotli-decompressor 5.0.0", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", ] [[package]] @@ -927,9 +781,9 @@ dependencies = [ [[package]] name = "build-info" -version = "0.0.41" +version = "0.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e232cc6fad4ac9f969bba34440da4d45947a55e60008fbaf5342163f30d6d34" +checksum = "362b762d8ad3063c57f02a3a94bc6814aee11d09c7e4d8b31fefb34d4731a611" dependencies = [ "bincode", "build-info-common", @@ -938,9 +792,9 @@ dependencies = [ [[package]] name = "build-info-build" -version = "0.0.41" +version = "0.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c095501b4684e681005757c3171fccf3b8a4132a8cf8e5135b6a885068cd413e" +checksum = "3b090e1d116997848529faaf849e1efd592cbe6e9eb44623c0588f017c63bbc4" dependencies = [ "anyhow", "base64 0.22.1", @@ -958,9 +812,9 @@ dependencies = [ [[package]] name = "build-info-common" -version = "0.0.41" +version = "0.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b409ed3b3b89db66e81ed7df221d30a1d78c298e719472cac30b21dfdacf9ce" +checksum = "c7a436965b6554ae18aba994745234bf2ed98d2c984e96b58aeb0f845c666969" dependencies = [ "chrono", "derive_more", @@ -970,9 +824,9 @@ dependencies = [ [[package]] name = "build-info-proc" -version = "0.0.41" +version = "0.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc6a2f7c956ef2a43081719feb90f90998ad1343c770db43bcdbfbc63894db8" +checksum = "163d30dc69f05b7bd0ae944539f8bd292607e10471ad5b4b3ab849da24e582f3" dependencies = [ "anyhow", "base64 0.22.1", @@ -1025,6 +879,26 @@ dependencies = [ "serde", ] +[[package]] +name = "c509-certificate" +version = "0.0.3" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=c509-certificate-v0.0.3#ba4dde11bcb7b1f1c8e42d27af7b0fba043cae57" +dependencies = [ + "anyhow", + "asn1-rs 0.6.2", + "bimap", + "ed25519-dalek", + "hex", + "minicbor 0.25.1", + "oid", + "oid-registry 0.7.1", + "regex", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", + "thiserror 2.0.17", +] + [[package]] name = "camino" version = "1.2.1" @@ -1131,13 +1005,13 @@ dependencies = [ "num-bigint", "num-traits", "ouroboros", - "pallas-addresses 1.0.0-alpha.2", - "pallas-codec 1.0.0-alpha.2", - "pallas-crypto 1.0.0-alpha.2", - "pallas-hardano", - "pallas-network 1.0.0-alpha.2", - "pallas-primitives 1.0.0-alpha.2", - "pallas-traverse 1.0.0-alpha.2", + "pallas-addresses 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-hardano 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-network 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-primitives 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-traverse 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", "serde", "serde_json", "strum 0.26.3", @@ -1145,6 +1019,38 @@ dependencies = [ "tracing", ] +[[package]] +name = "cardano-blockchain-types" +version = "0.0.8" +source = "git+https://github.com/input-output-hk/catalyst-libs?tag=cardano-blockchain-types%2Fv0.0.8#177938325720af5a6dceb8aa99017a42e0356dd6" +dependencies = [ + "anyhow", + "blake2b_simd", + "catalyst-types 0.0.10", + "cbork-utils", + "chrono", + "dashmap", + "dirs 5.0.1", + "displaydoc", + "ed25519-dalek", + "hex", + "minicbor 0.25.1", + "num-bigint", + "num-traits", + "ouroboros", + "pallas-addresses 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-hardano 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-network 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-primitives 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-traverse 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "serde", + "strum 0.26.3", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "cardano-chain-follower" version = "0.0.14" @@ -1152,7 +1058,7 @@ source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=cardano-c dependencies = [ "anyhow", "async-trait", - "cardano-blockchain-types", + "cardano-blockchain-types 0.0.6", "catalyst-types 0.0.6", "chrono", "cpu-time", @@ -1163,7 +1069,7 @@ dependencies = [ "futures", "hex", "hickory-resolver 0.24.4", - "http 1.3.1", + "http", "humantime", "logcall", "memx", @@ -1185,38 +1091,21 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-util-schemas" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63d2780ac94487eb9f1fea7b0d56300abc9eb488800854ca217f102f5caccca" +checksum = "122ec45a44b270afd1402f351b782c676b173e3c3fb28d86ff7ebfb4d86a4ee4" dependencies = [ - "semver", "serde", - "serde-untagged", - "serde-value", - "thiserror 1.0.69", - "toml", - "unicode-xid", - "url", ] [[package]] name = "cargo_metadata" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7835cfc6135093070e95eb2b53e5d9b5c403dc3a6be6040ee026270aa82502" +checksum = "981a6f317983eec002839b90fae7411a85621410ae591a9cab2ecf5cb5744873" dependencies = [ "camino", "cargo-platform", - "cargo-util-schemas", "semver", "serde", "serde_json", @@ -1271,6 +1160,27 @@ dependencies = [ "uuid", ] +[[package]] +name = "catalyst-types" +version = "0.0.10" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=catalyst-types%2Fv0.0.10#b7a5b23a3f0412aead4e19b3d75a745469432493" +dependencies = [ + "base64-url", + "chrono", + "displaydoc", + "ed25519-dalek", + "fluent-uri", + "fmmap", + "minicbor 0.25.1", + "num-traits", + "orx-concurrent-vec", + "serde", + "strum 0.27.2", + "thiserror 2.0.17", + "tracing", + "uuid", +] + [[package]] name = "cbor4ii" version = "0.2.14" @@ -1618,36 +1528,36 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e2df3d5caad11e71bb0b70115a5210c3af4a0bcb2893f78ee9311b1b266b05" +checksum = "ab1fff953380f89a421a80bbdd71ab0fe0f4391921b5632a7c091969aa3d259e" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63e87985fc9166a2541b05fd5f913a398cff9aec6b13ebca865253cdee15806" +checksum = "7fc077830cac61bf08443d44382635f3b24056556d8bb29fa4889cbf774a1769" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b5364dfe182d4b89af2f4bd0dafc8f6c590bbf0216ee8ce60bfd8893c3d14a6" +checksum = "1b5abfe6464802c75417d36ddaed91955088aa8e752436726cf999198654e7ee" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3067ca8c10796434497a5faac73d949b5ac0008ed572013debe88694bfef426e" +checksum = "e9cfefb6be25e6c5d9365ebef1c0d370a8ee135df72a0a357714b8841a6410e4" dependencies = [ "serde", "serde_derive", @@ -1655,9 +1565,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb420cc46d7f0956e2e3d9e6389036c612ada3542a29edc6f5deedf86d568ba" +checksum = "9cc0dd59ccde635f5f33e1a785978e0e86323a340922546d237b2d5d1451e89c" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -1682,9 +1592,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "440d31dd36e477fb6292821b593da65df60328bca1046ea5881f424aa5a44b5d" +checksum = "72e51fdebf4f2a5ea96f0f4ccd40168f04421565127bd5059d160236ae05de5d" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", @@ -1695,24 +1605,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b342ef4835787577f6e7553747cdd902797509eb5af733cd89e5ce97cea0f0" +checksum = "8bd26e948feae6b23f543b1055a8cc34b1d6ceec13fc0ad556e23de9f0c4c575" [[package]] name = "cranelift-control" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34de54534b61c3f3e475558cf19c90b2a7a758c7018e557e5d1a47b9a1fbb03" +checksum = "20bd53f9577d308d78fae8f4f939e781375d2212047fe4adc630a5413c7484a6" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d7bf1aae1800d053aa965381dcb01054404d0bcd8ea5ffe65bb855b8e3f654" +checksum = "8d451f8619df8989e9fb29253f864fec15c42d476fc1bcbf30418f80e33aa602" dependencies = [ "cranelift-bitset", "serde", @@ -1721,9 +1631,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36158c03d70e1f443cc2d6d9adc838fc0a031b166f3861534e9cb77742380e2a" +checksum = "b904ffb93b29dfddb079b38b4825c924b3cc8588f4048db7f6c17c92221b7af3" dependencies = [ "cranelift-codegen", "log", @@ -1733,15 +1643,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa194bbc189c965454f3a94c1acb6c89d63d5d0b183e60edc17db758bfbe519" +checksum = "1639b2403365212bd7522a725925d86eb6596ce71af61c43db28b428d189800e" [[package]] name = "cranelift-native" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c469bb98ffe9f38a1a5ada0427ab096f0f1b9a22a30149fc705205c56cf8985" +checksum = "b8b220e41def861b2ef01a49cfda953c5ae2f2109417d86e34b48da0261def6d" dependencies = [ "cranelift-codegen", "libc", @@ -1750,9 +1660,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.124.2" +version = "0.125.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12d694cd4c6b28fb8a4d0cf5b58d532b6b3b6e4afb2b65603e2ab8dc35bf18bd" +checksum = "2af56b41b482b60b0c07e685064b3b40fea7a0d225777a7c5f3b4cf36e448862" [[package]] name = "crc" @@ -2215,16 +2125,6 @@ dependencies = [ "dirs-sys 0.5.0", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -2249,17 +2149,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users 0.4.6", - "winapi", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -2391,15 +2280,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" -[[package]] -name = "ena" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" -dependencies = [ - "log", -] - [[package]] name = "encode_unicode" version = "1.0.0" @@ -2481,12 +2361,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.4.1" @@ -2504,7 +2378,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener", "pin-project-lite", ] @@ -2521,13 +2395,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + [[package]] name = "fancy-regex" version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" dependencies = [ - "bit-set 0.8.0", + "bit-set", "regex-automata", "regex-syntax", ] @@ -2595,12 +2475,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flagset" version = "0.4.7" @@ -2835,10 +2709,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "fastrand", "futures-core", - "futures-io", - "parking", "pin-project-lite", ] @@ -2893,7 +2764,7 @@ version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" dependencies = [ - "gloo-timers 0.2.6", + "gloo-timers", "send_wrapper 0.4.0", ] @@ -3005,18 +2876,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "group" version = "0.13.0" @@ -3039,7 +2898,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.3.1", + "http", "indexmap 2.11.4", "slab", "tokio", @@ -3099,6 +2958,15 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + [[package]] name = "hdf5-metno" version = "0.10.1" @@ -3168,6 +3036,30 @@ dependencies = [ "libc", ] +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64 0.22.1", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + [[package]] name = "heck" version = "0.4.1" @@ -3191,7 +3083,7 @@ dependencies = [ "blosc-src", "build-info", "build-info-build", - "cardano-blockchain-types", + "cardano-blockchain-types 0.0.6", "cardano-chain-follower", "catalyst-types 0.0.7", "chrono", @@ -3214,7 +3106,7 @@ dependencies = [ "hmac", "http-body-util", "httpmock", - "hyper 1.7.0", + "hyper", "hyper-util", "iana-time-zone", "jsonschema", @@ -3225,7 +3117,7 @@ dependencies = [ "num_cpus", "once_cell", "orx-concurrent-vec", - "paste", + "pastey", "pbkdf2", "rand 0.9.2", "rayon", @@ -3249,7 +3141,7 @@ dependencies = [ "url", "usvg", "uuid", - "wasmprinter", + "wasmprinter 0.240.0", "wasmtime", "wasmtime-wasi", "wat", @@ -3414,17 +3306,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.3.1" @@ -3436,17 +3317,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -3454,7 +3324,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http", ] [[package]] @@ -3465,8 +3335,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -3493,29 +3363,35 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "httpmock" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08ec9586ee0910472dec1a1f0f8acf52f0fdde93aea74d70d4a3107b4be0fd5b" +checksum = "511f510e9b1888d67f10bab4397f8b019d2a9b249a2c10acbce2d705b1b32e26" dependencies = [ "assert-json-diff", "async-object-pool", - "async-std", "async-trait", - "base64 0.21.7", - "basic-cookies", + "base64 0.22.1", + "bytes", "crossbeam-utils", "form_urlencoded", + "futures-timer", "futures-util", - "hyper 0.14.32", - "lazy_static", - "levenshtein", - "log", + "headers", + "http", + "http-body-util", + "hyper", + "hyper-util", + "path-tree", "regex", "serde", "serde_json", "serde_regex", "similar", + "stringmetrics", + "tabwriter", + "thiserror 2.0.17", "tokio", + "tracing", "url", ] @@ -3525,29 +3401,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.7.0" @@ -3559,8 +3412,8 @@ dependencies = [ "futures-channel", "futures-core", "h2", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -3577,8 +3430,8 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.3.1", - "hyper 1.7.0", + "http", + "hyper", "hyper-util", "rustls 0.23.35", "rustls-native-certs 0.8.1", @@ -3596,7 +3449,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.7.0", + "hyper", "hyper-util", "native-tls", "tokio", @@ -3615,9 +3468,9 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "hyper 1.7.0", + "http", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", @@ -3830,9 +3683,9 @@ dependencies = [ "attohttpc", "bytes", "futures", - "http 1.3.1", + "http", "http-body-util", - "hyper 1.7.0", + "hyper", "hyper-util", "log", "rand 0.9.2", @@ -3972,15 +3825,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -4110,46 +3954,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set 0.5.3", - "ena", - "itertools 0.11.0", - "lalrpop-util", - "petgraph", - "pico-args", - "regex", - "regex-syntax", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -4168,12 +3972,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" -[[package]] -name = "levenshtein" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" - [[package]] name = "libc" version = "0.2.176" @@ -4367,7 +4165,7 @@ version = "0.49.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f58e37d8d6848e5c4c9e3c35c6f61133235bff2960c9c00a663b0849301221" dependencies = [ - "async-channel 2.5.0", + "async-channel", "asynchronous-codec", "base64 0.22.1", "byteorder", @@ -4377,7 +4175,7 @@ dependencies = [ "futures", "futures-timer", "getrandom 0.2.16", - "hashlink", + "hashlink 0.9.1", "hex_fmt", "libp2p-core", "libp2p-identity", @@ -4893,6 +4691,7 @@ version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ + "serde", "value-bag", ] @@ -5418,12 +5217,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nix" version = "0.26.4" @@ -5598,6 +5391,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "oid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2" + [[package]] name = "oid-registry" version = "0.7.1" @@ -5694,20 +5493,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "ordered-float" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" -dependencies = [ - "num-traits", -] - [[package]] name = "orx-concurrent-iter" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2bc35dba600d3a9d975c7932933e355ddf37815dd2efa228c7ae57abc911c60" +checksum = "78e4381d6f1393a99e5a2bebe63e7a4c58c2526cdf25e01830baa11410c7ece1" dependencies = [ "orx-iterable", "orx-pseudo-default", @@ -5721,9 +5511,9 @@ checksum = "842a5c05d6f02368d1cdfebec87ae6e2277ca0cf544ab3778e6f2e6c5c947da3" [[package]] name = "orx-concurrent-vec" -version = "3.9.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df44ba7f5bda40fb6d14b00eecd6a15c8cab5cdb7dca274ace3ee5447794fd50" +checksum = "ad98d4d130277af640a2222188f0f706f25515be29b9b74519fad790b6a58e6e" dependencies = [ "orx-concurrent-option", "orx-fixed-vec", @@ -5736,9 +5526,9 @@ dependencies = [ [[package]] name = "orx-fixed-vec" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039e7861dcde4a2722c0054e809f7027172078e3ed6496df6bf4ea6d8f499089" +checksum = "96586d7477170175263986dfdfd36cc9a4b08bcc1743084f06115d6610181bb4" dependencies = [ "orx-concurrent-iter", "orx-iterable", @@ -5757,9 +5547,9 @@ dependencies = [ [[package]] name = "orx-pinned-concurrent-col" -version = "2.17.0" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14036a40735a25bdc8b0a0f56548e571ed988ede2afca35da5e8ce5ddaea1dcf" +checksum = "56b22c9e39d97d1c1d63dcbd9be68ac414cc61c9c6b8e799a125d383a18f3f10" dependencies = [ "orx-fixed-vec", "orx-pinned-vec", @@ -5769,9 +5559,9 @@ dependencies = [ [[package]] name = "orx-pinned-vec" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b8a3e9913e68446bcf7e1d6faaecd6192a8009ae13bce83d43073d989308c0" +checksum = "d38ff024d902a587fefdc502598107bbbf3d2a5350d63247bef34bd6a5518de9" dependencies = [ "orx-iterable", "orx-pseudo-default", @@ -5791,9 +5581,9 @@ checksum = "67a8e35dfe18921e475b9861266fd58a5ecfd681161f242d24a9e2d1e07fbc28" [[package]] name = "orx-split-vec" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09515b6021666927ecef8b567de04c5d26dcb3c5ff5b70ed4089e5618a7ee814" +checksum = "794100ff181e3903c90398e91147bbba7734ab0a1c6e13c4c569f4a15bccd6f7" dependencies = [ "orx-concurrent-iter", "orx-iterable", @@ -5869,8 +5659,23 @@ dependencies = [ "crc", "cryptoxide", "hex", - "pallas-codec 1.0.0-alpha.2", - "pallas-crypto 1.0.0-alpha.2", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "thiserror 1.0.69", +] + +[[package]] +name = "pallas-addresses" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "base58", + "bech32 0.9.1", + "crc", + "cryptoxide", + "hex", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", "thiserror 1.0.69", ] @@ -5897,6 +5702,17 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "pallas-codec" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "hex", + "minicbor 0.26.5", + "serde", + "thiserror 1.0.69", +] + [[package]] name = "pallas-crypto" version = "0.32.1" @@ -5919,12 +5735,25 @@ source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat dependencies = [ "cryptoxide", "hex", - "pallas-codec 1.0.0-alpha.2", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", "rand_core 0.6.4", "serde", "thiserror 1.0.69", ] +[[package]] +name = "pallas-crypto" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "cryptoxide", + "hex", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "rand_core 0.9.3", + "serde", + "thiserror 1.0.69", +] + [[package]] name = "pallas-hardano" version = "1.0.0-alpha.2" @@ -5932,11 +5761,31 @@ source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat dependencies = [ "binary-layout", "hex", - "pallas-addresses 1.0.0-alpha.2", - "pallas-codec 1.0.0-alpha.2", - "pallas-crypto 1.0.0-alpha.2", - "pallas-network 1.0.0-alpha.2", - "pallas-traverse 1.0.0-alpha.2", + "pallas-addresses 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-network 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-traverse 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "serde", + "serde_json", + "serde_with 3.15.0", + "tap", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "pallas-hardano" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "binary-layout", + "hex", + "pallas-addresses 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-network 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-traverse 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", "serde", "serde_json", "serde_with 3.15.0", @@ -5971,9 +5820,27 @@ dependencies = [ "byteorder", "hex", "itertools 0.13.0", - "pallas-codec 1.0.0-alpha.2", - "pallas-crypto 1.0.0-alpha.2", - "pallas-primitives 1.0.0-alpha.2", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-primitives 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "rand 0.8.5", + "socket2 0.5.10", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "pallas-network" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "byteorder", + "hex", + "itertools 0.13.0", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-primitives 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", "rand 0.8.5", "socket2 0.5.10", "thiserror 1.0.69", @@ -6003,8 +5870,20 @@ version = "1.0.0-alpha.2" source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" dependencies = [ "hex", - "pallas-codec 1.0.0-alpha.2", - "pallas-crypto 1.0.0-alpha.2", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "serde", + "serde_json", +] + +[[package]] +name = "pallas-primitives" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "hex", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", "serde", "serde_json", ] @@ -6033,10 +5912,26 @@ source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat dependencies = [ "hex", "itertools 0.13.0", - "pallas-addresses 1.0.0-alpha.2", - "pallas-codec 1.0.0-alpha.2", - "pallas-crypto 1.0.0-alpha.2", - "pallas-primitives 1.0.0-alpha.2", + "pallas-addresses 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "pallas-primitives 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types)", + "paste", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "pallas-traverse" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00#9c6322e6b51916b2cc54ba713b07bb25ef07dd00" +dependencies = [ + "hex", + "itertools 0.13.0", + "pallas-addresses 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-codec 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-crypto 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", + "pallas-primitives 1.0.0-alpha.2 (git+https://github.com/input-output-hk/catalyst-pallas.git?rev=9c6322e6b51916b2cc54ba713b07bb25ef07dd00)", "paste", "serde", "thiserror 1.0.69", @@ -6102,6 +5997,21 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + +[[package]] +name = "path-tree" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a97453bc21a968f722df730bfe11bd08745cb50d1300b0df2bda131dece136" +dependencies = [ + "smallvec", +] + [[package]] name = "pbkdf2" version = "0.12.2" @@ -6138,31 +6048,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.11.4", -] - -[[package]] -name = "phf" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" -dependencies = [ - "phf_shared 0.12.1", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "phf" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" dependencies = [ - "siphasher", + "phf_shared", ] [[package]] @@ -6212,17 +6103,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkcs8" version = "0.10.2" @@ -6365,12 +6245,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "pretty_assertions" version = "1.4.1" @@ -6406,7 +6280,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit", ] [[package]] @@ -6502,9 +6376,9 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cff3cc2c3a933419d4989b9dcdee724ebc9ee4cdc1f175dbaeef71d3b963336" +checksum = "8665bed5903771a337a68881d7e54c3a417013b72f788a9091efb15174543d17" dependencies = [ "cranelift-bitset", "log", @@ -6514,9 +6388,9 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56fca4a86a359a71f35f188de13bdfa9dc5b56a36d236fa98cb0db601ef4d21" +checksum = "572f69980fc11dd3c07ab054974330844cac436bacb79a69dfda9c2e5c72cba4" dependencies = [ "proc-macro2", "quote", @@ -6707,6 +6581,30 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rbac-registration" +version = "0.0.14" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=rbac-registration%2Fv0.0.14#177938325720af5a6dceb8aa99017a42e0356dd6" +dependencies = [ + "anyhow", + "brotli 7.0.0", + "c509-certificate", + "cardano-blockchain-types 0.0.8", + "catalyst-types 0.0.10", + "cbork-utils", + "der-parser 9.0.0", + "ed25519-dalek", + "hex", + "minicbor 0.25.1", + "oid-registry 0.7.1", + "strum_macros 0.26.4", + "thiserror 2.0.17", + "tracing", + "uuid", + "x509-cert", + "zstd", +] + [[package]] name = "rcgen" version = "0.13.2" @@ -6842,10 +6740,10 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.7.0", + "hyper", "hyper-rustls", "hyper-tls", "hyper-util", @@ -6949,6 +6847,20 @@ dependencies = [ "tokio", ] +[[package]] +name = "rusqlite" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" +dependencies = [ + "bitflags 2.9.4", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink 0.10.0", + "libsqlite3-sys", + "smallvec", +] + [[package]] name = "rust-ipfs" version = "0.15.0" @@ -7132,8 +7044,8 @@ version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ - "brotli", - "brotli-decompressor", + "brotli 8.0.2", + "brotli-decompressor 5.0.0", "log", "once_cell", "ring", @@ -7462,28 +7374,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-untagged" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" -dependencies = [ - "erased-serde", - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - [[package]] name = "serde-wasm-bindgen" version = "0.6.5" @@ -7525,6 +7415,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "serde_fmt" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" +dependencies = [ + "serde", +] + [[package]] name = "serde_ipld_dagcbor" version = "0.6.4" @@ -7571,15 +7470,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -7733,6 +7623,33 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shared" +version = "0.1.0" +dependencies = [ + "anyhow", + "base64 0.22.1", + "bech32 0.11.0", + "cardano-blockchain-types 0.0.8", + "catalyst-types 0.0.10", + "chrono", + "derive_more", + "ed25519-dalek", + "hex", + "log", + "num-bigint", + "rbac-registration", + "regex", + "rusqlite", + "serde", + "serde_json", + "strum 0.27.2", + "url", + "utoipa", + "uuid", + "wit-bindgen", +] + [[package]] name = "shlex" version = "1.3.0" @@ -7930,6 +7847,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "staked_ada_indexer_mock" +version = "0.1.0" +dependencies = [ + "anyhow", + "cardano-blockchain-types 0.0.8", + "shared", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -7946,16 +7872,10 @@ dependencies = [ ] [[package]] -name = "string_cache" -version = "0.8.9" +name = "stringmetrics" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared 0.11.3", - "precomputed-hash", -] +checksum = "7b3c8667cd96245cbb600b8dec5680a7319edd719c5aa2b5d23c6bff94f39765" [[package]] name = "stringzilla" @@ -8057,6 +7977,84 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "sval" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502b8906c4736190684646827fbab1e954357dfe541013bbd7994d033d53a1ca" + +[[package]] +name = "sval_buffer" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4b854348b15b6c441bdd27ce9053569b016a0723eab2d015b1fd8e6abe4f708" +dependencies = [ + "sval", + "sval_ref", +] + +[[package]] +name = "sval_dynamic" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bd9e8b74410ddad37c6962587c5f9801a2caadba9e11f3f916ee3f31ae4a1f" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_fmt" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe17b8deb33a9441280b4266c2d257e166bafbaea6e66b4b34ca139c91766d9" +dependencies = [ + "itoa", + "ryu", + "sval", +] + +[[package]] +name = "sval_json" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854addb048a5bafb1f496c98e0ab5b9b581c3843f03ca07c034ae110d3b7c623" +dependencies = [ + "itoa", + "ryu", + "sval", +] + +[[package]] +name = "sval_nested" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96cf068f482108ff44ae8013477cb047a1665d5f1a635ad7cf79582c1845dce9" +dependencies = [ + "sval", + "sval_buffer", + "sval_ref", +] + +[[package]] +name = "sval_ref" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed02126365ffe5ab8faa0abd9be54fbe68d03d607cd623725b0a71541f8aaa6f" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_serde" +version = "2.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a263383c6aa2076c4ef6011d3bae1b356edf6ea2613e3d8e8ebaa7b57dd707d5" +dependencies = [ + "serde_core", + "sval", + "sval_nested", +] + [[package]] name = "svgtypes" version = "0.15.3" @@ -8146,6 +8144,15 @@ dependencies = [ "winx", ] +[[package]] +name = "tabwriter" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce91f2f0ec87dff7e6bcbbeb267439aa1188703003c6055193c821487400432" +dependencies = [ + "unicode-width", +] + [[package]] name = "tagptr" version = "0.2.0" @@ -8194,17 +8201,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -8303,15 +8299,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - [[package]] name = "tiny-skia-path" version = "0.11.4" @@ -8468,27 +8455,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - [[package]] name = "toml_datetime" version = "0.7.2" @@ -8498,20 +8464,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.11.4", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - [[package]] name = "toml_edit" version = "0.23.6" @@ -8519,7 +8471,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ "indexmap 2.11.4", - "toml_datetime 0.7.2", + "toml_datetime", "toml_parser", "winnow", ] @@ -8533,12 +8485,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "tower" version = "0.5.2" @@ -8563,8 +8509,8 @@ dependencies = [ "bitflags 2.9.4", "bytes", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "iri-string", "pin-project-lite", "tower", @@ -8930,6 +8876,31 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "utoipa" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" +dependencies = [ + "indexmap 2.11.4", + "serde", + "serde_json", + "utoipa-gen", +] + +[[package]] +name = "utoipa-gen" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "url", + "uuid", +] + [[package]] name = "uuid" version = "1.18.1" @@ -8964,6 +8935,36 @@ name = "value-bag" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" +dependencies = [ + "value-bag-serde1", + "value-bag-sval2", +] + +[[package]] +name = "value-bag-serde1" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35540706617d373b118d550d41f5dfe0b78a0c195dc13c6815e92e2638432306" +dependencies = [ + "erased-serde", + "serde", + "serde_fmt", +] + +[[package]] +name = "value-bag-sval2" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe7e140a2658cc16f7ee7a86e413e803fc8f9b5127adc8755c19f9fefa63a52" +dependencies = [ + "sval", + "sval_buffer", + "sval_dynamic", + "sval_fmt", + "sval_json", + "sval_ref", + "sval_serde", +] [[package]] name = "vcpkg" @@ -9111,7 +9112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5be00faa2b4950c76fe618c409d2c3ea5a3c9422013e079482d78544bb2d184c" dependencies = [ "leb128fmt", - "wasmparser", + "wasmparser 0.239.0", ] [[package]] @@ -9123,7 +9124,7 @@ dependencies = [ "anyhow", "indexmap 2.11.4", "wasm-encoder", - "wasmparser", + "wasmparser 0.239.0", ] [[package]] @@ -9152,6 +9153,17 @@ dependencies = [ "serde", ] +[[package]] +name = "wasmparser" +version = "0.240.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b722dcf61e0ea47440b53ff83ccb5df8efec57a69d150e4f24882e4eba7e24a4" +dependencies = [ + "bitflags 2.9.4", + "indexmap 2.11.4", + "semver", +] + [[package]] name = "wasmprinter" version = "0.239.0" @@ -9160,14 +9172,25 @@ checksum = "b3981f3d51f39f24f5fc90f93049a90f08dbbca8deba602cd46bb8ca67a94718" dependencies = [ "anyhow", "termcolor", - "wasmparser", + "wasmparser 0.239.0", +] + +[[package]] +name = "wasmprinter" +version = "0.240.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84d6e25c198da67d0150ee7c2c62d33d784f0a565d1e670bdf1eeccca8158bc" +dependencies = [ + "anyhow", + "termcolor", + "wasmparser 0.240.0", ] [[package]] name = "wasmtime" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1092d79769b1f888940a572ed881eec18f837cb96201985eb5928226759ebc3e" +checksum = "e531a32acde0375ac27636d144dc8cd23ceb58605b15db2bf063484e9de4b1b2" dependencies = [ "addr2line", "anyhow", @@ -9194,9 +9217,8 @@ dependencies = [ "serde_derive", "smallvec", "target-lexicon", - "wasmparser", + "wasmparser 0.239.0", "wasmtime-environ", - "wasmtime-internal-asm-macros", "wasmtime-internal-component-macro", "wasmtime-internal-component-util", "wasmtime-internal-cranelift", @@ -9214,9 +9236,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "484db5c4dd06e96559217b60893b5dbb9fe3cd28489c83a4257b277c9ead959c" +checksum = "9a1de365ce0d1a70da9faee9983512feb221887e3e79dfdc51b0fce6c5916dde" dependencies = [ "anyhow", "cranelift-bitset", @@ -9232,25 +9254,16 @@ dependencies = [ "smallvec", "target-lexicon", "wasm-encoder", - "wasmparser", - "wasmprinter", + "wasmparser 0.239.0", + "wasmprinter 0.239.0", "wasmtime-internal-component-util", ] -[[package]] -name = "wasmtime-internal-asm-macros" -version = "37.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60d3903b8db592bb4f5e847bd6dc38f485791d4d9ebc9e2df167d3c7f072115c" -dependencies = [ - "cfg-if", -] - [[package]] name = "wasmtime-internal-component-macro" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c7d26d0c0d6da9f35dd56e3651a84bc4741646803e78886a3144aaf15c941e" +checksum = "7c3791fb3c7704950f515ea6ab621cb8de327aa5825ad8c3e2359cabb244d9ac" dependencies = [ "anyhow", "proc-macro2", @@ -9263,15 +9276,15 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-util" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb62647125f7a0833cefb9a8862bc7886d206fe4e7131201bddd8d3979abbb02" +checksum = "7e4f61020b589bde513aa479656fbe9de0c9f4efcf4883d0873f8ec1caa4a4f7" [[package]] name = "wasmtime-internal-cranelift" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d802c0a214c82fbf3e60ead87bf4d5dff7fc957c9a4449ceeae74bd89283ee57" +checksum = "50abcf67b53a21c719794b09dd15a9162cf1f59f607e334d03879d1059078891" dependencies = [ "anyhow", "cfg-if", @@ -9288,7 +9301,7 @@ dependencies = [ "smallvec", "target-lexicon", "thiserror 2.0.17", - "wasmparser", + "wasmparser 0.239.0", "wasmtime-environ", "wasmtime-internal-math", "wasmtime-internal-unwinder", @@ -9297,25 +9310,24 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fdeb4c50dbbb3ebf01f7e6d270ba4239c8db5ff1e68725386abad2e5250be4" +checksum = "b2dc763648d8ba894d7dcb30cc174a64b48d0b4a8a44c1ae8326fd4d798e8b90" dependencies = [ "anyhow", "cc", "cfg-if", "libc", "rustix 1.1.2", - "wasmtime-internal-asm-macros", "wasmtime-internal-versioned-export-macros", "windows-sys 0.60.2", ] [[package]] name = "wasmtime-internal-jit-debug" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe059ecd3f572ec2f616f036e5f31a88649a5f16e4838147cb3af6c3b5cedd5" +checksum = "c1a161687c89a359eb16bca91de98906cf1d9e30c88003edc7b3059f856c313b" dependencies = [ "cc", "wasmtime-internal-versioned-export-macros", @@ -9323,9 +9335,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a03f55a9dbfa30f2ed269fa9735c2994b8423461d45c3ca08aa7a103daeff20" +checksum = "29f1c115ac6cbf982cd57b20586950965250f5bfa59a6d3fd4396a18af504d84" dependencies = [ "anyhow", "cfg-if", @@ -9335,24 +9347,24 @@ dependencies = [ [[package]] name = "wasmtime-internal-math" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7f491d2c7f1be3f6e5485ab5a26f26f177860c8b5c16d3ab87df4b24f28e40" +checksum = "b67c90301051105f5438469e7c0db39ca06cb67aaf9e8e477a663e5bdaee3054" dependencies = [ "libm", ] [[package]] name = "wasmtime-internal-slab" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce79a933dd9c5fdcc1ce1f6b46e89e72ccb6767619557f0468d97fbfb0475db6" +checksum = "736f6bbc455233aeaab2d8b94dc6967243b8f660fd48113f29283cb0ece97cd0" [[package]] name = "wasmtime-internal-unwinder" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0e12be7ff91e956c6e7cee17654982669493c4aaa861e3536f7b1c22999519d" +checksum = "24018476d830438b84a00f22d3aece7904686f7e3d26c6386ab9e23d0d8952ca" dependencies = [ "anyhow", "cfg-if", @@ -9363,9 +9375,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d114c747409b6f76ddf86deb2c5976f809baed3eea8fdca493063ea182246b" +checksum = "8d57f08c4d8acde5550bcd4b45baa16daba411eb6f715d21dbfc26b535c9a17f" dependencies = [ "proc-macro2", "quote", @@ -9374,9 +9386,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-winch" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc9d9e984025efce72ec4b90b95790e857f2fef7601c317abedf61226e21585" +checksum = "82616326aa1741554ae1f584be0275473d84e9cb0d42d88c6fa57b1fa3f2289a" dependencies = [ "anyhow", "cranelift-codegen", @@ -9384,7 +9396,7 @@ dependencies = [ "log", "object", "target-lexicon", - "wasmparser", + "wasmparser 0.239.0", "wasmtime-environ", "wasmtime-internal-cranelift", "winch-codegen", @@ -9392,9 +9404,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-wit-bindgen" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fb054d6661ef694d1d90e1c01233cb8ef0d7f84b73980709d3facef1373e189" +checksum = "53e1842825751a6c749e9998469fb8ada0582a655affea75128de90d7ab3caa5" dependencies = [ "anyhow", "bitflags 2.9.4", @@ -9405,9 +9417,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da6617d09fda0be82e11227418e5561c67a8469709215d7c05a9d9f4d2192dc7" +checksum = "d0457bafbef08724e3c8854eba8a2eab48e7f724b0abf0c2b771c84da235a880" dependencies = [ "anyhow", "async-trait", @@ -9436,9 +9448,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi-io" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdca5f5ac3e7814f184f44e49add8e99a3e92bc1ceb45c05ba013b2822b7b705" +checksum = "3ed71604b0adfa9086963020942e913c3dfcb71208709a52ad305d7a3542bfd0" dependencies = [ "anyhow", "async-trait", @@ -9524,9 +9536,9 @@ checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" [[package]] name = "wiggle" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e45c8d34846d01d20157c00cd61e207e4f4d8889cfc69b45d43e5114834e71e" +checksum = "8748ba1418928ee5cf4d6cec181bb2b044cb00931a9e5bf5252ed9f31013aacd" dependencies = [ "anyhow", "async-trait", @@ -9539,9 +9551,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772a63dfce3a1bce1cc019720e43603633c5a2cb84291bec77f438ec38b55bf2" +checksum = "1098f722216cfe33dd6c68d3ee16ca7fcbdc1330d9022340b83266067ad0a65b" dependencies = [ "anyhow", "heck 0.5.0", @@ -9553,9 +9565,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3636c0c0352f54b28f45d1327784176e134009db4230024be6509966c88adf74" +checksum = "043f56e8ee5ac5b569dcaa242b408fdc1dbe3d3ef992c7777fe4a5bbdf3d1913" dependencies = [ "proc-macro2", "quote", @@ -9596,9 +9608,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "37.0.2" +version = "38.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61aeea98b13a9d2f537b9aec71a168397aefd5a3faebdc6b3d96ff7df4592e59" +checksum = "8b61b44daa19d084d388d44e4acc66ce6c13482cd522e3e7ebc6ade4c646d87f" dependencies = [ "anyhow", "cranelift-assembler-x64", @@ -9608,7 +9620,7 @@ dependencies = [ "smallvec", "target-lexicon", "thiserror 2.0.17", - "wasmparser", + "wasmparser 0.239.0", "wasmtime-environ", "wasmtime-internal-cranelift", "wasmtime-internal-math", @@ -10077,7 +10089,7 @@ dependencies = [ "serde_json", "wasm-encoder", "wasm-metadata", - "wasmparser", + "wasmparser 0.239.0", "wit-parser", ] @@ -10096,7 +10108,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser", + "wasmparser 0.239.0", ] [[package]] diff --git a/hermes/Cargo.toml b/hermes/Cargo.toml index fca1467011..88ce7e8b9e 100644 --- a/hermes/Cargo.toml +++ b/hermes/Cargo.toml @@ -5,7 +5,8 @@ members = [ "bin/tests/integration/components/http_request_rte_01", "bin/tests/integration/components/failed_init", "bin/tests/integration/components/sleep_component", - "bin/tests/integration/components/cron_callback" + "bin/tests/integration/components/cron_callback", + "bin/tests/integration/components/staked_ada_indexer_mock" ] default-members = [ "bin", diff --git a/hermes/Earthfile b/hermes/Earthfile index f9c4522790..2cec85262e 100644 --- a/hermes/Earthfile +++ b/hermes/Earthfile @@ -103,7 +103,7 @@ build-athena: DO rust-ci+EXECUTE \ --cmd="/scripts/std_build.py" \ --args1="--build_flags=\"--target wasm32-wasip2\"" \ - --args2="--libs=http-proxy,rbac-registration,rbac-registration-indexer,staked-ada-indexer,shared" \ + --args2="--libs=http-proxy,rbac-registration,rbac-registration-indexer,staked-ada,staked-ada-indexer,shared" \ --output="release/athena" \ --docs="true" diff --git a/hermes/apps/athena/Cargo.lock b/hermes/apps/athena/Cargo.lock index b71e6c7176..4a4bf12779 100644 --- a/hermes/apps/athena/Cargo.lock +++ b/hermes/apps/athena/Cargo.lock @@ -957,6 +957,17 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-proxy" version = "0.1.0" @@ -1240,6 +1251,12 @@ dependencies = [ "libc", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "minicbor" version = "0.25.1" @@ -2193,6 +2210,23 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "staked-ada" +version = "0.1.0" +dependencies = [ + "anyhow", + "cardano-blockchain-types", + "http", + "mime", + "num-bigint", + "regex", + "serde", + "serde_json", + "shared", + "thiserror 2.0.17", + "utoipa", +] + [[package]] name = "staked-ada-indexer" version = "0.1.0" diff --git a/hermes/apps/athena/manifest_app.json b/hermes/apps/athena/manifest_app.json index d1d8922488..2a8eecbe2a 100644 --- a/hermes/apps/athena/manifest_app.json +++ b/hermes/apps/athena/manifest_app.json @@ -1,21 +1,29 @@ { - "$schema": "https://raw.githubusercontent.com/input-output-hk/hermes/main/hermes/schemas/hermes_app_manifest.schema.json", - "name": "app", - "icon": "icon.svg", - "metadata": "metadata.json", - "modules": [ - { - "package": "modules/http-proxy/lib/http_proxy.hmod", - "name": "http_proxy" - }, - { - "package": "modules/rbac-registration-indexer/lib/rbac_registration_indexer.hmod", - "name": "rbac_registration_indexer" - }, - { - "package": "modules/rbac-registration/lib/rbac_registration.hmod", - "name": "rbac_registration" - } - ], - "www": "modules/http-proxy/lib/www" -} \ No newline at end of file + "$schema": "https://raw.githubusercontent.com/input-output-hk/hermes/main/hermes/schemas/hermes_app_manifest.schema.json", + "name": "athena", + "icon": "icon.svg", + "metadata": "metadata.json", + "modules": [ + { + "package": "modules/http-proxy/lib/http_proxy.hmod", + "name": "http_proxy" + }, + { + "package": "modules/rbac-registration-indexer/lib/rbac_registration_indexer.hmod", + "name": "rbac_registration_indexer" + }, + { + "package": "modules/rbac-registration/lib/rbac_registration.hmod", + "name": "rbac_registration" + }, + { + "package": "modules/staked-ada-indexer/lib/staked_ada_indexer.hmod", + "name": "staked_ada_indexer" + }, + { + "package": "modules/staked-ada/lib/staked_ada.hmod", + "name": "staked_ada" + } + ], + "www": "modules/http-proxy/lib/www" +} diff --git a/hermes/apps/athena/modules/staked-ada/Cargo.lock b/hermes/apps/athena/modules/staked-ada/Cargo.lock new file mode 100644 index 0000000000..271841489e --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/Cargo.lock @@ -0,0 +1,3672 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 1.0.69", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "attribute-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0053e96dd3bec5b4879c23a138d6ef26f2cb936c9cdc96274ac2b9ed44b5bb54" +dependencies = [ + "attribute-derive-macro", + "derive-where", + "manyhow", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "attribute-derive-macro" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463b53ad0fd5b460af4b1915fe045ff4d946d025fb6c4dc3337752eaa980f71b" +dependencies = [ + "collection_literals", + "interpolator", + "manyhow", + "proc-macro-utils", + "proc-macro2", + "quote", + "quote-use", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64-url" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2b6c78c06f7288d5e3c3d683bde35a79531127c83b087e5d0d77c974b4b28" +dependencies = [ + "base64", +] + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bech32" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "binary-layout" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5845e3504cf59b9588fff324710f27ee519515b8a8a9f1207042da9a9e64f819" +dependencies = [ + "doc-comment", + "paste", +] + +[[package]] +name = "bitflags" +version = "2.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borrow-or-share" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eeab4423108c5d7c744f4d234de88d18d636100093ae04caf4825134b9c3a32" + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "c509-certificate" +version = "0.0.3" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=c509-certificate-v0.0.3#ba4dde11bcb7b1f1c8e42d27af7b0fba043cae57" +dependencies = [ + "anyhow", + "asn1-rs", + "bimap", + "ed25519-dalek", + "hex", + "minicbor 0.25.1", + "oid", + "oid-registry", + "regex", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", + "thiserror 2.0.16", +] + +[[package]] +name = "cardano-blockchain-types" +version = "0.0.6" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=cardano-blockchain-types%2Fv0.0.6#0e16500065715624c81cf3240b1e807c35265909" +dependencies = [ + "anyhow", + "blake2b_simd", + "catalyst-types 0.0.6", + "cbork-utils", + "chrono", + "dashmap", + "dirs", + "displaydoc", + "ed25519-dalek", + "hex", + "minicbor 0.25.1", + "num-bigint", + "num-traits", + "ouroboros", + "pallas-addresses", + "pallas-codec", + "pallas-crypto", + "pallas-hardano", + "pallas-network", + "pallas-primitives", + "pallas-traverse", + "serde", + "serde_json", + "strum 0.26.3", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "catalyst-types" +version = "0.0.6" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=catalyst-types%2Fv0.0.6#600f8462cf5ba4d17bf5f91a4e14da911912f026" +dependencies = [ + "base64-url", + "chrono", + "displaydoc", + "ed25519-dalek", + "fluent-uri", + "fmmap", + "minicbor 0.25.1", + "num-traits", + "orx-concurrent-vec", + "serde", + "strum 0.27.2", + "thiserror 2.0.16", + "tracing", + "uuid", +] + +[[package]] +name = "catalyst-types" +version = "0.0.7" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=catalyst-types%2Fv0.0.7#760bbcce3e2007104cde8704c32f9fa9ea7c8f74" +dependencies = [ + "base64-url", + "chrono", + "displaydoc", + "ed25519-dalek", + "fluent-uri", + "fmmap", + "minicbor 0.25.1", + "num-traits", + "orx-concurrent-vec", + "serde", + "strum 0.27.2", + "thiserror 2.0.16", + "tracing", + "uuid", +] + +[[package]] +name = "cbork-utils" +version = "0.0.2" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=cbork-utils-v0.0.2#ba4dde11bcb7b1f1c8e42d27af7b0fba043cae57" +dependencies = [ + "minicbor 0.25.1", +] + +[[package]] +name = "cc" +version = "1.2.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f41ae168f955c12fb8960b057d70d0ca153fb83182b57d86380443527be7e9" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link 0.2.0", +] + +[[package]] +name = "collection_literals" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b3f65b8fb8e88ba339f7d23a390fe1b0896217da05e2a66c584c9b29a91df8" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cryptoxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "der_derive", + "flagset", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "deranged" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "duration-string" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2334658684d7c213e18602aa72ce37e94d1c9b535882ef6e30bc444b7514a1ee" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "serde", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.0", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" + +[[package]] +name = "flagset" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" + +[[package]] +name = "fluent-uri" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1918b65d96df47d3591bed19c5cca17e3fa5d0707318e4b5ef2eae01764df7e5" +dependencies = [ + "borrow-or-share", + "ref-cast", +] + +[[package]] +name = "fmmap" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687c574434dc6e3cd24a363fe0944711174f947fe71696fdc9a0ae046fe6e715" +dependencies = [ + "byteorder", + "bytes", + "enum_dispatch", + "fs4", + "memmap2", + "parse-display", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs4" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521" +dependencies = [ + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gateway" +version = "0.1.0" +dependencies = [ + "anyhow", + "base64", + "bech32 0.11.0", + "blake2b_simd", + "bytes", + "cardano-blockchain-types", + "catalyst-types 0.0.7", + "chrono", + "const_format", + "derive_more", + "dotenvy", + "duration-string", + "ed25519-dalek", + "futures", + "get-size2", + "headers", + "hex", + "http", + "mime", + "moka", + "num-bigint", + "num-traits", + "rbac-registration", + "regex", + "serde", + "serde_json", + "strum 0.26.3", + "thiserror 1.0.69", + "tokio", + "tracing", + "url", + "utoipa", + "uuid", + "wit-bindgen 0.43.0", +] + +[[package]] +name = "generator" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "get-size-derive2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a443e77201a230c25f0c11574e9b20e5705f749520e0f30ab0d0974fb1a794" +dependencies = [ + "attribute-derive", + "quote", + "syn", +] + +[[package]] +name = "get-size2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0594e2a78d082f2f8b1615c728391c6a5277f6c017474a7249934fc735945d55" +dependencies = [ + "get-size-derive2", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.7+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", + "serde", + "serde_core", +] + +[[package]] +name = "interpolator" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libredox" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +dependencies = [ + "bitflags", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "manyhow" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587" +dependencies = [ + "manyhow-macros", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "manyhow-macros" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memmap2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +dependencies = [ + "libc", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minicbor" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0452a60c1863c1f50b5f77cd295e8d2786849f35883f0b9e18e7e6e1b5691b0" +dependencies = [ + "half", + "minicbor-derive 0.15.3", +] + +[[package]] +name = "minicbor" +version = "0.26.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a309f581ade7597820083bc275075c4c6986e57e53f8d26f88507cfefc8c987" +dependencies = [ + "half", + "minicbor-derive 0.16.2", +] + +[[package]] +name = "minicbor-derive" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "minicbor-derive" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9882ef5c56df184b8ffc107fc6c61e33ee3a654b021961d790a78571bb9d67a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "async-lock", + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "event-listener", + "futures-util", + "loom", + "parking_lot", + "portable-atomic", + "rustc_version", + "smallvec", + "tagptr", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2" + +[[package]] +name = "oid-registry" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "orx-concurrent-iter" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31485aa02a0ad52d390951a44f3212bfb9dbf06f6e2c8b4265dc2966d5faf85c" +dependencies = [ + "orx-iterable", + "orx-pseudo-default", +] + +[[package]] +name = "orx-concurrent-option" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "842a5c05d6f02368d1cdfebec87ae6e2277ca0cf544ab3778e6f2e6c5c947da3" + +[[package]] +name = "orx-concurrent-vec" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bc932e6a214ee031f4cfa5a89b55e5c9faafe977c6180a54b5d8bc068cb599a" +dependencies = [ + "orx-concurrent-option", + "orx-fixed-vec", + "orx-pinned-concurrent-col", + "orx-pinned-vec", + "orx-pseudo-default", + "orx-split-vec", + "serde", +] + +[[package]] +name = "orx-fixed-vec" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb81507ef485e9148e07d1f716c2d8b72fccc6a7ea93f3958ddbf1a6401786b3" +dependencies = [ + "orx-concurrent-iter", + "orx-iterable", + "orx-pinned-vec", + "orx-pseudo-default", +] + +[[package]] +name = "orx-iterable" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa2cb3f82a187c68835faac9cf03faaee70b93f4da3b85515ac1b4c6f8a432d" +dependencies = [ + "orx-self-or", +] + +[[package]] +name = "orx-pinned-concurrent-col" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60977176e74a36cb65bdf21b63ae8caecc04f93981021db4d472f3252cbf338c" +dependencies = [ + "orx-fixed-vec", + "orx-pinned-vec", + "orx-pseudo-default", + "orx-split-vec", +] + +[[package]] +name = "orx-pinned-vec" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcd865a63f5d56134bd5e5d7ffe6e2a6a8458d79f625ebf7b56c43292829e96c" +dependencies = [ + "orx-iterable", + "orx-pseudo-default", +] + +[[package]] +name = "orx-pseudo-default" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34eaace9ae01f7025804fbca40ec45b87c19ba0328d97195e01c6135897762a8" + +[[package]] +name = "orx-self-or" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8e35dfe18921e475b9861266fd58a5ecfd681161f242d24a9e2d1e07fbc28" + +[[package]] +name = "orx-split-vec" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eccac043eb507001a48c0e75c39e36650e6bbd99ece1ab8a15df43d7354c91e" +dependencies = [ + "orx-concurrent-iter", + "orx-iterable", + "orx-pinned-vec", + "orx-pseudo-default", +] + +[[package]] +name = "ouroboros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" +dependencies = [ + "aliasable", + "ouroboros_macro", + "static_assertions", +] + +[[package]] +name = "ouroboros_macro" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn", +] + +[[package]] +name = "pallas-addresses" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "base58", + "bech32 0.9.1", + "crc", + "cryptoxide", + "hex", + "pallas-codec", + "pallas-crypto", + "thiserror 1.0.69", +] + +[[package]] +name = "pallas-codec" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "hex", + "minicbor 0.26.5", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "pallas-crypto" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "cryptoxide", + "hex", + "pallas-codec", + "rand_core", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "pallas-hardano" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "binary-layout", + "hex", + "pallas-addresses", + "pallas-codec", + "pallas-crypto", + "pallas-network", + "pallas-traverse", + "serde", + "serde_json", + "serde_with", + "tap", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "pallas-network" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "byteorder", + "hex", + "itertools", + "pallas-codec", + "pallas-crypto", + "pallas-primitives", + "rand", + "socket2 0.5.10", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "pallas-primitives" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "hex", + "pallas-codec", + "pallas-crypto", + "serde", + "serde_json", +] + +[[package]] +name = "pallas-traverse" +version = "1.0.0-alpha.2" +source = "git+https://github.com/input-output-hk/catalyst-pallas.git?branch=feat%2Fpallas-network-types#9cfb41cb4f15f913fc17388cec4ccd87c3551ff0" +dependencies = [ + "hex", + "itertools", + "pallas-addresses", + "pallas-codec", + "pallas-crypto", + "pallas-primitives", + "paste", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "parse-display" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287d8d3ebdce117b8539f59411e4ed9ec226e0a4153c7f55495c6070d68e6f72" +dependencies = [ + "parse-display-derive", + "regex", + "regex-syntax", +] + +[[package]] +name = "parse-display-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc048687be30d79502dea2f623d052f3a074012c6eac41726b7ab17213616b1" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "regex-syntax", + "structmeta", + "syn", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-utils" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeaf08a13de400bc215877b5bdc088f241b12eb42f0a548d3390dc1c56bb7071" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "version_check", + "yansi", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "quote-use" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9619db1197b497a36178cfc736dc96b271fe918875fbf1344c436a7e93d0321e" +dependencies = [ + "quote", + "quote-use-macros", +] + +[[package]] +name = "quote-use-macros" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82ebfb7faafadc06a7ab141a6f67bcfb24cb8beb158c6fe933f2f035afa99f35" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rbac-registration" +version = "0.0.10" +source = "git+https://github.com/input-output-hk/catalyst-libs.git?tag=rbac-registration%2Fv0.0.10#77cd6a83750e436283c45d887cdfef748074ee25" +dependencies = [ + "anyhow", + "brotli", + "c509-certificate", + "cardano-blockchain-types", + "catalyst-types 0.0.7", + "cbork-utils", + "der-parser", + "ed25519-dalek", + "hex", + "minicbor 0.25.1", + "oid-registry", + "strum_macros 0.26.4", + "thiserror 2.0.16", + "tracing", + "uuid", + "x509-cert", + "zstd", +] + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "regex" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.11.4", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "rand_core", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "structmeta" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329" +dependencies = [ + "proc-macro2", + "quote", + "structmeta-derive", + "syn", +] + +[[package]] +name = "structmeta-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +dependencies = [ + "thiserror-impl 2.0.16", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tls_codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" +dependencies = [ + "tls_codec_derive", + "zeroize", +] + +[[package]] +name = "tls_codec_derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "pin-project-lite", + "slab", + "socket2 0.6.0", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utoipa" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" +dependencies = [ + "indexmap 2.11.4", + "serde", + "serde_json", + "utoipa-gen", +] + +[[package]] +name = "utoipa-gen" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "getrandom 0.3.3", + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen 0.46.0", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.235.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bc393c395cb621367ff02d854179882b9a351b4e0c93d1397e6090b53a5c2a" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.235.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" +dependencies = [ + "anyhow", + "indexmap 2.11.4", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.235.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap 2.11.4", + "semver", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.0", + "windows-result 0.4.0", + "windows-strings 0.5.0", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link 0.2.0", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link 0.2.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a18712ff1ec5bd09da500fe1e91dec11256b310da0ff33f8b4ec92b927cf0c6" +dependencies = [ + "wit-bindgen-rt", + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "wit-bindgen-core" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c53468e077362201de11999c85c07c36e12048a990a3e0d69da2bd61da355d0" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd734226eac1fd7c450956964e3a9094c9cee65e9dafdf126feef8c0096db65" +dependencies = [ + "bitflags", + "futures", + "once_cell", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531ebfcec48e56473805285febdb450e270fa75b2dacb92816861d0473b4c15f" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.11.4", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7852bf8a9d1ea80884d26b864ddebd7b0c7636697c6ca10f4c6c93945e023966" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.235.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a57a11109cc553396f89f3a38a158a97d0b1adaec113bd73e0f64d30fb601f" +dependencies = [ + "anyhow", + "bitflags", + "indexmap 2.11.4", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.235.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a1f95a87d03a33e259af286b857a95911eb46236a0f726cbaec1227b3dfc67a" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.11.4", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "x509-cert" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "spki", + "tls_codec", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/hermes/apps/athena/modules/staked-ada/Cargo.toml b/hermes/apps/athena/modules/staked-ada/Cargo.toml new file mode 100644 index 0000000000..51953c67dd --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/Cargo.toml @@ -0,0 +1,29 @@ +[package] +edition.workspace = true +name = "staked-ada" +version = "0.1.0" +license = "MIT OR Apache-2.0" + +[lints] +workspace = true + +[lib] +crate-type = ["cdylib"] + +[dependencies] +shared = { version = "0.1.0", path = "../../shared", features = [ + "cardano-blockchain-types", + "cat-gateway-types", +] } +regex = "1.12.2" + + +cardano-blockchain-types = { version = "0.0.8", git = "https://github.com/input-output-hk/catalyst-libs.git", tag = "cardano-blockchain-types/v0.0.8" } +serde = "1.0.228" +serde_json = { version = "1.0.145", features = ["arbitrary_precision"] } +anyhow = "1.0.100" +num-bigint = "0.4.6" +utoipa = { version = "5.4.0", features = ["uuid", "url"] } +thiserror = "2.0.17" +http = "1.3.1" +mime = "0.3.17" diff --git a/hermes/apps/athena/modules/staked-ada/Earthfile b/hermes/apps/athena/modules/staked-ada/Earthfile new file mode 100644 index 0000000000..1a9fd9d6e4 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/Earthfile @@ -0,0 +1,31 @@ +VERSION 0.8 + +IMPORT ../../../../ AS hermes +IMPORT ../../../../../wasm/wasi AS wasi +IMPORT ../.. AS athena + +build-staked-ada: + DO athena+BUILD_ATHENA_COMPONENT --out=staked_ada.wasm + +local-build-staked-ada: + FROM alpine + COPY +build-staked-ada/staked_ada.wasm . + + # Copy module configuration and metadata files + COPY lib/config.schema.json . + COPY lib/manifest_module.json . + COPY lib/metadata.json . + COPY lib/settings.schema.json . + + # Create the missing config.json file (empty JSON object) + RUN echo '{}' > config.json + + # Create staging directory structure + RUN mkdir -p /staging/ + + # Copy WASM module and JSON config files to root of staging + RUN cp staked_ada.wasm /staging/ + RUN cp *.json /staging/ || true + + # Export build artifacts from staging directory + SAVE ARTIFACT /staging AS LOCAL lib \ No newline at end of file diff --git a/hermes/apps/athena/modules/staked-ada/lib/config.json b/hermes/apps/athena/modules/staked-ada/lib/config.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/lib/config.json @@ -0,0 +1 @@ +{} diff --git a/hermes/apps/athena/modules/staked-ada/lib/config.schema.json b/hermes/apps/athena/modules/staked-ada/lib/config.schema.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/lib/config.schema.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/hermes/apps/athena/modules/staked-ada/lib/manifest_module.json b/hermes/apps/athena/modules/staked-ada/lib/manifest_module.json new file mode 100644 index 0000000000..f2398f39f5 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/lib/manifest_module.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://raw.githubusercontent.com/input-output-hk/hermes/main/hermes/schemas/hermes_module_manifest.schema.json", + "name": "staked_ada", + "metadata": "metadata.json", + "component": "staked_ada.wasm", + "config": { + "file": "config.json", + "schema": "config.schema.json" + }, + "settings": { + "schema": "settings.schema.json" + } +} diff --git a/hermes/apps/athena/modules/staked-ada/lib/metadata.json b/hermes/apps/athena/modules/staked-ada/lib/metadata.json new file mode 100644 index 0000000000..b5d4aa6363 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/lib/metadata.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://raw.githubusercontent.com/input-output-hk/hermes/main/hermes/schemas/hermes_app_metadata.schema.json", + "name": "Catalyst Staked Ada API service", + "version": "V0.1.0", + "description": "Catalyst Staked Ada API service", + "src": [ + "https://github.com/input-output-hk/hermes", + "https://github.com/input-output-hk/catalyst-voices" + ], + "copyright": ["Copyright Ⓒ 2024, IOG Singapore."], + "license": [ + { + "spdx": "Apache-2.0", + "file": "/srv/data/apache2.txt" + }, + { + "spdx": "MIT", + "file": "/srv/data/mit.txt" + } + ], + "developer": { + "name": "IOG Singapore", + "contact": "redirect-service@iohk.io", + "payment": "wallet address" + } +} diff --git a/hermes/apps/athena/modules/staked-ada/lib/settings.schema.json b/hermes/apps/athena/modules/staked-ada/lib/settings.schema.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/lib/settings.schema.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/hermes/apps/athena/modules/staked-ada/src/api/assets_get.rs b/hermes/apps/athena/modules/staked-ada/src/api/assets_get.rs new file mode 100644 index 0000000000..150da844a7 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/src/api/assets_get.rs @@ -0,0 +1,298 @@ +//! Implementation of the GET `../assets` endpoint + +use std::collections::{HashMap, HashSet}; + +use cardano_blockchain_types::StakeAddress; +use shared::{ + database::staked_ada::{ + get_txi_by_txn_ids, get_txo_assets_by_stake_address, get_txo_by_stake_address, + update_txo_spent, UpdateTxoSpentParams, + }, + utils::{ + common::{ + objects::cardano::{ + network::Network, + stake_info::{FullStakeInfo, StakeInfo, StakedTxoAssetInfo}, + }, + responses::ErrorResponses, + types::cardano::{ + ada_value::AdaValue, asset_name::AssetName, asset_value::AssetValue, + cip19_stake_address::Cip19StakeAddress, hash28::HexEncodedHash28, slot_no::SlotNo, + }, + }, + log, + settings::Settings, + sqlite::Connection, + }, +}; + +use crate::{ + api::types::{ + AllResponses, GetAssetsByStakeAddressQueryKey, GetAssetsByStakeAddressQueryValue, + Responses, TxoAssetsMap, TxoAssetsState, TxoInfo, TxoMap, + }, + config::DB_BATCH_SIZE, +}; + +/// # GET `/staked_ada` +pub(crate) fn endpoint( + stake_address: &Cip19StakeAddress, + provided_network: Option, + slot_num: Option, +) -> AllResponses { + match build_full_stake_info_response(stake_address, provided_network, slot_num) { + Ok(None) => AllResponses::Error(ErrorResponses::NotFound), + Ok(Some(full_stake_info)) => AllResponses::With(Responses::Ok(full_stake_info)), + Err(err) => AllResponses::handle_error(&err), + } +} + +/// Building a full stake info response from the provided arguments. +fn build_full_stake_info_response( + stake_address: &Cip19StakeAddress, + provided_network: Option, + slot_num: Option, +) -> anyhow::Result> { + if provided_network + .is_some_and(|n| cardano_blockchain_types::Network::from(n) != Settings::cardano_network()) + { + return Ok(None); + } + + let mut persistent_session = Connection::open(false)?; + let mut volatile_session = Connection::open(true)?; + let adjusted_slot_num = slot_num.unwrap_or(SlotNo::MAXIMUM); + + let persistent_txo_state = calculate_assets_state( + &mut persistent_session, + stake_address.clone(), + TxoAssetsState::default(), + )?; + + let volatile_txo_state = calculate_assets_state( + &mut volatile_session, + stake_address.clone(), + persistent_txo_state.clone(), + )?; + + if volatile_txo_state.is_empty() && persistent_txo_state.is_empty() { + return Ok(None); + } + let persistent_stake_info = build_stake_info(persistent_txo_state, adjusted_slot_num)?; + + let volatile_stake_info = build_stake_info(volatile_txo_state, adjusted_slot_num)?; + + Ok(Some(FullStakeInfo { + volatile: volatile_stake_info.into(), + persistent: persistent_stake_info.into(), + })) +} + +/// Calculate the assets state info for a given stake address. +/// +/// This function also updates the spent column if it detects that a TXO was spent +/// between lookups. +fn calculate_assets_state( + session: &mut Connection, + stake_address: Cip19StakeAddress, + mut txo_base_state: TxoAssetsState, +) -> anyhow::Result { + let address: StakeAddress = stake_address.try_into().map_err(|err| { + anyhow::anyhow!("Failed to convert Cip19StakeAddress to StakeAddress: {err}") + })?; + + let (mut txos, txo_assets) = ( + get_txo(session, address.clone())?, + get_txo_assets(session, address.clone())?, + ); + + let params = update_spent(session, &address, &mut txo_base_state.txos, &mut txos)?; + + // Extend the base state with current session data (used to calculate volatile data) + let txos = txo_base_state.txos.into_iter().chain(txos).collect(); + let txo_assets: HashMap<_, _> = txo_base_state + .txo_assets + .into_iter() + .chain(txo_assets) + .collect(); + let mut tx = Connection::begin(session)?; + if let Err((_, err)) = update_txo_spent(&mut tx, params) { + tx.rollback()?; + log::error!("Failed to update TXO spent info, err: {err}"); + } + + Ok(TxoAssetsState { txos, txo_assets }) +} + +/// Returns a map of TXO infos for the given stake address. +fn get_txo( + session: &mut Connection, + stake_address: StakeAddress, +) -> anyhow::Result { + let txos_stream = get_txo_by_stake_address(session, stake_address)?; + + let txo_map = txos_stream.iter().fold(HashMap::new(), |mut txo_map, row| { + txo_map.insert((row.txn_id, row.txo), TxoInfo { + value: row.value.clone().into(), + txn_index: row.txn_index.into(), + txo: row.txo, + slot_no: row.slot_no.into(), + spent_slot_no: row.spent_slot.map(Into::into), + }); + txo_map + }); + Ok(txo_map) +} + +/// Returns a map of txo asset infos for the given stake address. +fn get_txo_assets( + session: &mut Connection, + stake_address: StakeAddress, +) -> anyhow::Result { + let assets_txos_stream = get_txo_assets_by_stake_address(session, stake_address)?; + + let tokens_map = + assets_txos_stream + .iter() + .fold(HashMap::new(), |mut tokens_map: TxoAssetsMap, row| { + let key = GetAssetsByStakeAddressQueryKey { + txn_index: row.txn_index, + txo: row.txo, + slot_no: row.slot_no, + }; + let value = GetAssetsByStakeAddressQueryValue { + policy_id: row.policy_id.to_vec(), + asset_name: row.asset_name.as_slice().to_vec(), + value: row.value.clone(), + }; + match tokens_map.entry(key) { + std::collections::hash_map::Entry::Occupied(mut o) => { + o.get_mut().push(value); + }, + std::collections::hash_map::Entry::Vacant(v) => { + v.insert(vec![value]); + }, + } + tokens_map + }); + Ok(tokens_map) +} + +/// Checks if the given TXOs were spent and mark then as such. +/// Separating `base_txos` and `txos` because we don't want to make an update inside the +/// db for the `base_txos` data (it is covering the case when inside the persistent part +/// we have a txo which is spent inside the volatile, so to not incorrectly mix up records +/// from these two tables, inserting some rows from persistent to volatile section). +fn update_spent( + session: &mut Connection, + stake_address: &StakeAddress, + base_txos: &mut TxoMap, + txos: &mut TxoMap, +) -> anyhow::Result> { + let txn_hashes = txos + .iter() + .chain(base_txos.iter()) + .filter(|(_, txo)| txo.spent_slot_no.is_none()) + .map(|((tx_id, _), _)| *tx_id) + .collect::>() + .into_iter() + .collect::>(); + + let mut params = Vec::new(); + + for chunk in txn_hashes.chunks(DB_BATCH_SIZE) { + let txi_stream = get_txi_by_txn_ids(session, chunk.to_vec())?; + + for row in txi_stream { + let key = (row.txn_id, row.txo); + if let Some(txo_info) = txos.get_mut(&key) { + params.push(UpdateTxoSpentParams { + stake_address: stake_address.clone(), + txn_index: txo_info.txn_index.into(), + txo: txo_info.txo, + slot_no: txo_info.slot_no.into(), + spent_slot: row.slot_no, + }); + + txo_info.spent_slot_no = Some(row.slot_no.into()); + } + if let Some(txo_info) = base_txos.get_mut(&key) { + txo_info.spent_slot_no = Some(row.slot_no.into()); + } + } + } + + Ok(params) +} + +/// Builds an instance of [`StakeInfo`] based on the TXOs given. +fn build_stake_info( + mut txo_state: TxoAssetsState, + slot_num: SlotNo, +) -> anyhow::Result { + let slot_num = slot_num.into(); + let mut total_ada_amount = AdaValue::default(); + let mut last_slot_num = SlotNo::default(); + let mut assets = HashMap::<(HexEncodedHash28, AssetName), AssetValue>::new(); + + for txo_info in txo_state.txos.into_values() { + // Filter out spent TXOs. + if txo_info.slot_no >= slot_num { + continue; + } + // Filter out spent TXOs. + if let Some(spent_slot) = txo_info.spent_slot_no { + if spent_slot <= slot_num { + continue; + } + } + + let value = AdaValue::try_from(txo_info.value) + .map_err(|err| anyhow::anyhow!("Failed to convert TXO value to AdaValue: {err}"))?; + total_ada_amount = total_ada_amount.saturating_add(value); + + let key = GetAssetsByStakeAddressQueryKey { + slot_no: txo_info.slot_no.into(), + txn_index: txo_info.txn_index.into(), + txo: txo_info.txo, + }; + if let Some(native_assets) = txo_state.txo_assets.remove(&key) { + for native_asset in native_assets { + let amount = (&native_asset.value).into(); + let policy_hash: HexEncodedHash28 = + (&native_asset.policy_id).try_into().map_err(|err| { + anyhow::anyhow!("Failed to convert policy_id to HexEncodedHash28: {err}") + })?; + match assets.entry((policy_hash, (&native_asset.asset_name).into())) { + std::collections::hash_map::Entry::Occupied(mut o) => { + *o.get_mut() = o.get().saturating_add(&amount); + }, + std::collections::hash_map::Entry::Vacant(v) => { + v.insert(amount.clone()); + }, + } + } + } + + let slot_no = txo_info.slot_no.into(); + if last_slot_num < slot_no { + last_slot_num = slot_no; + } + } + + Ok(StakeInfo { + ada_amount: total_ada_amount, + slot_number: last_slot_num, + assets: assets + .into_iter() + .map(|((policy_hash, asset_name), amount)| { + StakedTxoAssetInfo { + policy_hash, + asset_name, + amount, + } + }) + .collect::>() + .into(), + }) +} diff --git a/hermes/apps/athena/modules/staked-ada/src/api/mod.rs b/hermes/apps/athena/modules/staked-ada/src/api/mod.rs new file mode 100644 index 0000000000..57d191398b --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/src/api/mod.rs @@ -0,0 +1,71 @@ +//! Cardano Staking API Endpoints. +use serde::{Deserialize, Serialize}; +use shared::utils::common::{ + auth::none_or_rbac::NoneOrRBAC, + objects::cardano::{network::Network, stake_info::FullStakeInfo}, + types::cardano::{self, cip19_stake_address::Cip19StakeAddress, slot_no::SlotNo}, +}; + +use crate::api::types::AllResponses; + +pub mod assets_get; +pub mod types; + +#[derive(Default, Serialize, Deserialize)] +/// Staked ada request. +pub(crate) struct GetStakedAdaRequest { + /// Cardano network type. + /// If omitted network type is identified from the stake address. + /// If specified it must be correspondent to the network type encoded in the stake + /// address. + /// As `preprod` and `preview` network types in the stake address encoded as a + /// `testnet`, to specify `preprod` or `preview` network type use this + /// query parameter. + pub(crate) network: Option, + /// A time point at which the assets should be calculated. + /// If omitted latest slot number is used. + pub(crate) asat: Option, + // No Authorization required, but Token permitted. + // pub(crate) auth: NoneOrRBAC, +} + +#[utoipa::path( + get, + path = "/v1/cardano/assets/{stake_address}", + responses( + (status = 200, description = "Stake info for stake address found successfully", body = FullStakeInfo), + (status = NOT_FOUND, description = "Stake info was not found") + ), + params( + ("stake_address" = Cip19StakeAddress, Path, description = "Should be a valid Bech32 encoded address followed by the https://cips.cardano.org/cip/CIP-19/#stake-addresses"), + ("network" = Option, Query, description = "Cardano network type"), + ("asat" = Option, Query, description = "A time point at which the assets should be calculated"), + ) + )] +/// Get staked assets. +/// +/// This endpoint returns the total Cardano's staked assets to the corresponded +/// user's stake address. +pub fn staked_ada_get( + // The stake address of the user. + // Should be a valid Bech32 encoded address followed by the https://cips.cardano.org/cip/CIP-19/#stake-addresses. + // stake_address: Path, + stake_address: &Cip19StakeAddress, + // Cardano network type. + // If omitted network type is identified from the stake address. + // If specified it must be correspondent to the network type encoded in the stake + // address. + // As `preprod` and `preview` network types in the stake address encoded as a + // `testnet`, to specify `preprod` or `preview` network type use this + // query parameter. + // network: Query>, + network: Option, + // A time point at which the assets should be calculated. + // If omitted latest slot number is used. + // asat: Query>, + asat: Option, + // No Authorization required, but Token permitted. + _auth: NoneOrRBAC, +) -> AllResponses { + assets_get::endpoint(stake_address, network, SlotNo::into_option(asat)) +} diff --git a/hermes/apps/athena/modules/staked-ada/src/api/types.rs b/hermes/apps/athena/modules/staked-ada/src/api/types.rs new file mode 100644 index 0000000000..b5cacc184c --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/src/api/types.rs @@ -0,0 +1,83 @@ +//! Staked ada helper types. + +use std::collections::HashMap; + +use cardano_blockchain_types::{hashes::TransactionId, Slot, TxnIndex}; +use shared::utils::common::{ + objects::cardano::stake_info::FullStakeInfo, responses::WithErrorResponses, +}; + +/// Endpoint responses. +pub(crate) enum Responses { + /// ## Ok + /// + /// The amount of ADA staked by the queried stake address, as at the indicated slot. + Ok(FullStakeInfo), + /// ## Not Found + /// + /// The queried stake address was not found at the requested slot number. + NotFound, +} + +/// All responses. +pub(crate) type AllResponses = WithErrorResponses; + +/// TXO information used when calculating a user's stake info. +#[derive(Clone)] +pub(crate) struct TxoInfo { + /// TXO value. + pub(crate) value: num_bigint::BigInt, + /// TXO transaction index within the slot. + pub(crate) txn_index: TxnIndex, + /// TXO index. + pub(crate) txo: u16, + /// TXO transaction slot number. + pub(crate) slot_no: Slot, + /// Whether the TXO was spent. + pub(crate) spent_slot_no: Option, +} + +/// `TxoInfo` map type alias +pub(crate) type TxoMap = HashMap<(TransactionId, u16), TxoInfo>; + +/// TXO Assets map type alias +pub(crate) type TxoAssetsMap = + HashMap>; + +/// TXO Assets state +#[derive(Default, Clone)] +pub(crate) struct TxoAssetsState { + /// TXO Info map + pub(crate) txos: TxoMap, + /// TXO Assets map + pub(crate) txo_assets: TxoAssetsMap, +} + +impl TxoAssetsState { + /// Returns true if underlying `txos` and `txo_assets` are empty, false otherwise + pub(crate) fn is_empty(&self) -> bool { + self.txos.is_empty() && self.txo_assets.is_empty() + } +} + +/// Get native assets query key +#[derive(Hash, PartialEq, Eq, Debug, Clone)] +pub(crate) struct GetAssetsByStakeAddressQueryKey { + /// TXO transaction index within the slot. + pub txn_index: u16, + /// TXO index. + pub txo: u16, + /// TXO transaction slot number. + pub slot_no: u64, +} + +/// Get native assets query value +#[derive(Clone)] +pub(crate) struct GetAssetsByStakeAddressQueryValue { + /// Asset policy hash (28 bytes). + pub policy_id: Vec, + /// Asset name (range of 0 - 32 bytes) + pub asset_name: Vec, + /// Asset value. + pub value: num_bigint::BigInt, +} diff --git a/hermes/apps/athena/modules/staked-ada/src/config.rs b/hermes/apps/athena/modules/staked-ada/src/config.rs new file mode 100644 index 0000000000..e5d720f772 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/src/config.rs @@ -0,0 +1,22 @@ +//! Configuration constants for the staked-ada module. + +/// Regex pattern for matching stake address routes. +/// Matches paths like: /api/gateway/v1/cardano/assets/stake1... +pub const STAKE_ROUTE_PATTERN: &str = + r"^/api/gateway/v1/cardano/assets/((stake1|stake_test1)[02-9ac-hj-np-z]{53})$"; + +/// Batch size for database operations. +pub const DB_BATCH_SIZE: usize = 100; + +/// Error messages. +#[allow(clippy::missing_docs_in_private_items)] +pub mod messages { + pub const STAKE_ADDRESS_NOT_FOUND: &str = "Stake address not found"; + pub const INTERNAL_SERVER_ERROR: &str = "Internal server error"; + pub const SERVICE_UNAVAILABLE: &str = "Service unavailable"; + pub const NOT_FOUND: &str = "Not found"; + pub const UNKNOWN_ERROR: &str = "Unknown error"; + pub const SERIALIZATION_FAILED: &str = "Serialization failed"; + pub const PAGE_NOT_FOUND: &str = "404 - Page Not Found"; + pub const BAD_REQUEST: &str = "400 - Bad Request"; +} diff --git a/hermes/apps/athena/modules/staked-ada/src/error.rs b/hermes/apps/athena/modules/staked-ada/src/error.rs new file mode 100644 index 0000000000..0179103221 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/src/error.rs @@ -0,0 +1,58 @@ +//! Error types for the staked-ada module. + +use thiserror::Error; + +/// Errors that can occur in the staked-ada module. +#[derive(Debug, Error)] +#[allow(clippy::missing_docs_in_private_items)] +pub enum StakedAdaError { + /// Invalid stake address format. + #[error("Invalid stake address format: {address}")] + InvalidStakeAddress { address: String }, + + /// Database connection or query error. + #[error("Database error: {source}")] + Database { source: anyhow::Error }, + + /// Network mismatch between provided and expected. + #[error("Network mismatch: expected {expected:?}, got {actual:?}")] + NetworkMismatch { + expected: shared::utils::common::objects::cardano::network::Network, + actual: shared::utils::common::objects::cardano::network::Network, + }, + + /// Stake address not found in database. + #[error("Stake address not found: {address}")] + StakeAddressNotFound { address: String }, + + /// JSON serialization/deserialization error. + #[error("Serialization error: {source}")] + Serialization { source: serde_json::Error }, + + /// Invalid path format for route matching. + #[error("Invalid path format: {path}")] + InvalidPath { path: String }, + + /// General validation error. + #[error("Validation error: {message}")] + Validation { message: String }, + + /// Internal server error. + #[error("Internal server error: {message}")] + Internal { message: String }, +} + +/// Result type alias for the staked-ada module. +pub type Result = std::result::Result; + +impl From for StakedAdaError { + fn from(err: anyhow::Error) -> Self { + Self::Database { source: err } + } +} + +impl From for StakedAdaError { + fn from(source: serde_json::Error) -> Self { + Self::Serialization { source } + } +} diff --git a/hermes/apps/athena/modules/staked-ada/src/lib.rs b/hermes/apps/athena/modules/staked-ada/src/lib.rs new file mode 100644 index 0000000000..048d8ad909 --- /dev/null +++ b/hermes/apps/athena/modules/staked-ada/src/lib.rs @@ -0,0 +1,253 @@ +#![allow(dead_code, missing_docs)] +//! Catalyst Gateway API + +mod api; +mod config; +mod error; + +use std::sync::OnceLock; + +use hermes::http_gateway::api::{Bstr, Headers, HttpGatewayResponse, HttpResponse}; + +shared::bindings_generate!({ + world: "hermes:app/hermes", + path: "../../../../../wasm/wasi/wit", + inline: " + package hermes:app; + + world hermes { + include wasi:cli/imports@0.2.6; + import hermes:logging/api; + export hermes:http-gateway/event; + + } + ", + share: ["hermes:logging"], +}); +export!(CatGatewayAPI); + +use http::{header::CONTENT_TYPE, StatusCode}; +use mime::{APPLICATION_JSON, TEXT_HTML}; +use regex::Regex; +use shared::utils::{ + common::{ + auth::none::NoAuthorization, + responses::{ErrorResponses, WithErrorResponses}, + types::cardano::cip19_stake_address::Cip19StakeAddress, + }, + log, +}; + +use crate::{ + api::{staked_ada_get, types::Responses, GetStakedAdaRequest}, + config::messages, + error::{Result, StakedAdaError}, +}; + +/// Staked ada route regex. +static STAKE_ROUTE_REGEX: OnceLock = OnceLock::new(); + +/// Initializes staked ada route regex. +#[allow(clippy::expect_used)] +fn stake_route_regex() -> &'static Regex { + STAKE_ROUTE_REGEX.get_or_init(|| { + Regex::new(crate::config::STAKE_ROUTE_PATTERN) + .expect("Hardcoded regex pattern should be valid") + }) +} + +/// HTTP proxy component providing configurable request routing. +/// +/// Currently serves as a temporary bridge to external Cat Voices endpoints +/// while native implementations are developed. The long-term vision is to +/// evolve this into a full-featured configurable proxy supporting: +/// - Dynamic backend selection +/// - Load balancing strategies +/// - Circuit breakers and health checks +/// - Request/response middleware chains +/// - A/B testing and canary deployments +struct CatGatewayAPI; + +/// Creates a 404 not found response +/// TODO: Make error responses configurable (custom error pages, etc.) +fn create_not_found_response( + method: &str, + path: &str, +) -> HttpGatewayResponse { + const FUNCTION_NAME: &str = "create_not_found_response"; + log::warn!( + "Route not found (no native implementation or external routing configured): {method} {path}", + ); + HttpGatewayResponse::Http(HttpResponse { + code: StatusCode::NOT_FOUND.as_u16(), + headers: vec![(CONTENT_TYPE.to_string(), vec![TEXT_HTML.to_string()])], + body: Bstr::from(format!( + "

{}

", + messages::PAGE_NOT_FOUND + )), + }) +} + +/// Creates a 400 Bad Request response +/// TODO: Make error responses configurable (custom error pages, etc.) +fn create_bad_request_response( + method: &str, + path: &str, +) -> HttpGatewayResponse { + const FUNCTION_NAME: &str = "create_bad_request_response"; + log::warn!("Invalid route: {method} {path}",); + HttpGatewayResponse::Http(HttpResponse { + code: StatusCode::BAD_REQUEST.as_u16(), + headers: vec![(CONTENT_TYPE.to_string(), vec![TEXT_HTML.to_string()])], + body: Bstr::from(format!( + "

{}

", + messages::BAD_REQUEST + )), + }) +} + +/// Formats the response type for logging +fn format_response_type(response: &HttpGatewayResponse) -> String { + match response { + HttpGatewayResponse::Http(resp) => format!("HTTP {}", resp.code), + HttpGatewayResponse::InternalRedirect(_) => { + "EXTERNAL_REDIRECT (temporary bridge)".to_string() + }, + } +} + +/// Create a JSON HTTP response with the given status code and body. +fn create_json_response( + status: StatusCode, + body: String, +) -> HttpGatewayResponse { + HttpGatewayResponse::Http(HttpResponse { + code: status.as_u16(), + headers: vec![(CONTENT_TYPE.to_string(), vec![APPLICATION_JSON.to_string()])], + body: Bstr::from(body), + }) +} + +/// Convert successful stake info response to HTTP response +fn convert_to_http_response(stake_info: Responses) -> HttpGatewayResponse { + match stake_info { + Responses::Ok(full_stake_info) => { + let json_body = serde_json::to_string(&full_stake_info).unwrap_or_else(|_| { + format!("{{\"error\":\"{}\"}}", messages::SERIALIZATION_FAILED) + }); + create_json_response(StatusCode::OK, json_body) + }, + Responses::NotFound => { + let error_body = format!("{{\"error\":\"{}\"}}", messages::STAKE_ADDRESS_NOT_FOUND); + create_json_response(StatusCode::NOT_FOUND, error_body) + }, + } +} + +/// Convert error response to HTTP response +fn convert_error_to_http_response(error: &ErrorResponses) -> HttpGatewayResponse { + match error { + ErrorResponses::NotFound => { + let error_body = format!("{{\"error\":\"{}\"}}", messages::NOT_FOUND); + create_json_response(StatusCode::NOT_FOUND, error_body) + }, + ErrorResponses::ServerError(_) => { + let error_body = format!("{{\"error\":\"{}\"}}", messages::INTERNAL_SERVER_ERROR); + create_json_response(StatusCode::INTERNAL_SERVER_ERROR, error_body) + }, + ErrorResponses::ServiceUnavailable(..) => { + let error_body = format!("{{\"error\":\"{}\"}}", messages::SERVICE_UNAVAILABLE); + create_json_response(StatusCode::SERVICE_UNAVAILABLE, error_body) + }, + _ => { + let error_body = format!("{{\"error\":\"{}\"}}", messages::UNKNOWN_ERROR); + create_json_response(StatusCode::INTERNAL_SERVER_ERROR, error_body) + }, + } +} + +impl exports::hermes::http_gateway::event::Guest for CatGatewayAPI { + /// Routes HTTP requests through configurable proxy logic. + /// + /// Current implementation provides temporary bridging to external Cat Voices + /// endpoints while native implementations are developed. Future versions will + /// support sophisticated routing rules, backend selection, and middleware chains. + fn reply( + body: Vec, + headers: Headers, + path: String, + method: String, + ) -> Option { + const FUNCTION_NAME: &str = "reply"; + log::init(log::LevelFilter::Trace); + + let validation_result = validate_stake_route(&path); + let response = match validation_result { + Ok(stake_address) => { + log::info!("Processing STAKE_ROUTE: {method} {path} {body:?} {headers:?}",); + + // For GET requests, use default values if body is empty + let request: GetStakedAdaRequest = if body.is_empty() { + GetStakedAdaRequest::default() + } else { + match serde_json::from_slice(&body) { + Ok(req) => req, + Err(err) => { + log::error!("request parse failed: {err}"); + return Some(create_not_found_response(&method, &path)); + }, + } + }; + + let response = staked_ada_get( + &stake_address, + request.network, + request.asat, + shared::utils::common::auth::none_or_rbac::NoneOrRBAC::None(NoAuthorization), + ); + + match response { + WithErrorResponses::With(stake_info) => { + log::info!("processed STAKE_ROUTE successfully"); + convert_to_http_response(stake_info) + }, + WithErrorResponses::Error(error_response) => { + log::info!("processed STAKE_ROUTE with error"); + convert_error_to_http_response(&error_response) + }, + } + }, + Err(StakedAdaError::InvalidPath { .. }) => create_not_found_response(&method, &path), + _ => create_bad_request_response(&method, &path), + }; + + log::info!( + "Request completed: {method} {path} -> {}", + format_response_type(&response) + ); + + Some(response) + } +} + +/// Validates staked ada route and extracts stake address from it. +fn validate_stake_route(path: &str) -> Result { + let route_regex = stake_route_regex(); + if let Some(captures) = route_regex.captures(&path.to_lowercase()) { + if let Some(stake_address_match) = captures.get(1) { + let stake_address = stake_address_match.as_str(); + let stake_address = Cip19StakeAddress::try_from(stake_address).map_err(|_| { + StakedAdaError::InvalidStakeAddress { + address: stake_address.to_string(), + } + })?; + return Ok(stake_address); + } + return Err(StakedAdaError::Validation { + message: "Stake address is missing or has invalid format".to_string(), + }); + } + Err(StakedAdaError::InvalidPath { + path: path.to_string(), + }) +} diff --git a/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_assets_by_stake.sql b/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_assets_by_stake.sql index 6bbe781104..c1fb7b2070 100644 --- a/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_assets_by_stake.sql +++ b/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_assets_by_stake.sql @@ -1,8 +1,8 @@ SELECT stake_address, + slot_no, txn_index, txo, - slot_no, policy_id, asset_name, value diff --git a/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_by_stake.sql b/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_by_stake.sql index bdfa553429..e18b512ec8 100644 --- a/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_by_stake.sql +++ b/hermes/apps/athena/shared/src/database/sql/staked_ada/select_txo_by_stake.sql @@ -1,10 +1,10 @@ SELECT stake_address, - txn_id, + slot_no, txn_index, txo, - slot_no, value, + txn_id, spent_slot FROM txo_by_stake WHERE stake_address = ?; diff --git a/hermes/bin/Cargo.toml b/hermes/bin/Cargo.toml index 101037a8b5..df12927823 100644 --- a/hermes/bin/Cargo.toml +++ b/hermes/bin/Cargo.toml @@ -41,14 +41,14 @@ hdf5 = { package = "hdf5-metno", version = "0.10.1", features = [ "static", "blo # needs to enable blosc compression functionality for hdf5 crate blosc-src = { version = "0.3.6", features = ["lz4", "zlib", "zstd"] } -wasmtime = { version = "37.0.2", default-features = false, features = ["runtime", "cranelift", "component-model"] } -criterion = {version = "0.7.0", optional=true} +wasmtime = { version = "38.0.3", default-features = false, features = ["runtime", "cranelift", "component-model"] } +criterion = { version = "0.7.0", optional = true } rusty_ulid = "2.0.0" anyhow = "1.0.99" hex-literal = "1.0.0" thiserror = "2.0.16" hex = "0.4.3" -tracing = {version="0.1.41", features = ["log"] } +tracing = { version = "0.1.41", features = ["log"] } tracing-subscriber = { version = "0.3.20", features = ["fmt", "json", "time", "env-filter"] } libtest-mimic = "0.8.1" crossbeam-queue = "0.3.12" @@ -61,19 +61,19 @@ dashmap = "6.1.0" once_cell = "1.21.3" clap = "4.5.46" ctrlc = "3.5.0" -build-info = "0.0.41" +build-info = "0.0.42" derive_more = "2.0.1" chrono = { version = "0.4.41", features = ["now"] } chrono-tz = "0.10.4" saffron = "0.1.0" tokio = { version = "1.47.1", features = ["macros", "sync", "rt-multi-thread", "rt", "net"] } rayon = "1.11.0" -libsqlite3-sys = {version="0.35.0", features = ["bundled"] } +libsqlite3-sys = { version = "0.35.0", features = ["bundled"] } stringzilla = "4.2.3" temp-dir = "0.1.16" num_cpus = "1.17.0" console = "0.16.0" -serde = { version="1.0.219", features = ["derive"] } +serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.143" jsonschema = "0.33.0" hyper = { version = "1.7.0", features = ["full"] } @@ -83,11 +83,11 @@ hmac = "0.12.1" pbkdf2 = "0.12.2" blake2b_simd = "1.0.3" sha2 = "0.10.9" -ed25519-dalek = { version="2.2.0", features = ["pem"] } -x509-cert = { version="0.2.5", features = ["pem"] } +ed25519-dalek = { version = "2.2.0", features = ["pem"] } +x509-cert = { version = "0.2.5", features = ["pem"] } coset = "0.4.0" dirs = "6.0.0" -regex = "1.12.2" +regex = "1.11.2" rustls = { version = "0.23.35", default-features = false, features = ["ring","brotli","zlib"] } webpki-roots = "1.0.2" tokio-rustls = { version = "0.26.2", default-features = false, features = ["ring"] } @@ -96,22 +96,22 @@ uuid = { version = "1.18.0", features = ["v4"] } reqwest = "0.12.24" url = "2.5.7" num-traits = "0.2.19" -paste = "1.0.15" +paste = { package = "pastey", version = "0.1.1" } traitreg = "0.4.0" -orx-concurrent-vec = "3.7.0" +orx-concurrent-vec = "3.10.0" keyed-lock = "0.2.3" -wasmprinter = "0.239.0" +wasmprinter = "0.240.0" wat = "1.239.0" [build-dependencies] -build-info-build = "0.0.41" +build-info-build = "0.0.42" [dev-dependencies] serial_test = { version = "3.2.0", features = ["file_locks"] } # An override with the "wat" and "addr2line" features added (debug purposes). -wasmtime = { version = "37.0.2", default-features = false, features = ["runtime", "cranelift", "component-model", "wat", "addr2line"] } -httpmock = "0.7.0" -wasmtime-wasi = "37.0.2" +wasmtime = { version = "38.0.3", default-features = false, features = ["runtime", "cranelift", "component-model", "wat", "addr2line"] } +httpmock = "0.8.2" +wasmtime-wasi = "38.0.3" [package.metadata.cargo-machete] # This is required for HDF5. diff --git a/hermes/bin/src/runtime_extensions/hermes/http_gateway/config/endpoints.json b/hermes/bin/src/runtime_extensions/hermes/http_gateway/config/endpoints.json index beca2472bc..ede3592247 100644 --- a/hermes/bin/src/runtime_extensions/hermes/http_gateway/config/endpoints.json +++ b/hermes/bin/src/runtime_extensions/hermes/http_gateway/config/endpoints.json @@ -3,9 +3,7 @@ { "subscription_id": "rbac_registration", "module_id": "rbac_registration", - "methods": [ - "GET" - ], + "methods": ["GET"], "path_regex": "^/api/v1/registration(/.*)?$", "content_types": [], "json_schema": null @@ -13,9 +11,7 @@ { "subscription_id": "gateway_frontend_config", "module_id": "http_proxy", - "methods": [ - "GET" - ], + "methods": ["GET"], "path_regex": "^/api/gateway/v1/config/frontend$", "content_types": [], "json_schema": null @@ -23,12 +19,7 @@ { "subscription_id": "gateway_document_v1", "module_id": "http_proxy", - "methods": [ - "GET", - "POST", - "PUT", - "DELETE" - ], + "methods": ["GET", "POST", "PUT", "DELETE"], "path_regex": "^/api/gateway/v1/document.*$", "content_types": [], "json_schema": null @@ -36,15 +27,18 @@ { "subscription_id": "gateway_document_v2", "module_id": "http_proxy", - "methods": [ - "GET", - "POST", - "PUT", - "DELETE" - ], + "methods": ["GET", "POST", "PUT", "DELETE"], "path_regex": "^/api/gateway/v2/document.*$", "content_types": [], "json_schema": null + }, + { + "subscription_id": "staked_ada", + "module_id": "staked_ada", + "methods": ["GET"], + "path_regex": "^/api/gateway/v1/cardano/assets/((stake1|stake_test1)[02-9ac-hj-np-z]{53})$", + "content_types": ["application/json"], + "json_schema": null } ] -} \ No newline at end of file +} diff --git a/hermes/bin/src/runtime_extensions/hermes/http_gateway/gateway_task.rs b/hermes/bin/src/runtime_extensions/hermes/http_gateway/gateway_task.rs index cff6777178..a13a2f4a4f 100644 --- a/hermes/bin/src/runtime_extensions/hermes/http_gateway/gateway_task.rs +++ b/hermes/bin/src/runtime_extensions/hermes/http_gateway/gateway_task.rs @@ -45,7 +45,8 @@ impl Default for Config { ] .to_vec(), local_addr: SocketAddr::new([127, 0, 0, 1].into(), GATEWAY_PORT), - is_auth_activate: true, + // TODO(bkioshn): change back when auth module is added + is_auth_activate: false, } } } diff --git a/hermes/bin/tests/integration/components/staked_ada_indexer_mock/Cargo.toml b/hermes/bin/tests/integration/components/staked_ada_indexer_mock/Cargo.toml new file mode 100644 index 0000000000..b119104da5 --- /dev/null +++ b/hermes/bin/tests/integration/components/staked_ada_indexer_mock/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "staked_ada_indexer_mock" +version = "0.1.0" +edition.workspace = true +license.workspace = true + +[lib] +crate-type = ["cdylib"] + +[dependencies] +shared = { path = "../../../../../apps/athena/shared", version = "0.1.0", features = ["cat-gateway-types"] } + +anyhow = "1.0.100" +cardano-blockchain-types = { version = "0.0.8", git = "https://github.com/input-output-hk/catalyst-libs", tag = "cardano-blockchain-types/v0.0.8" } + + +[lints] +workspace = true \ No newline at end of file diff --git a/hermes/bin/tests/integration/components/staked_ada_indexer_mock/src/events.rs b/hermes/bin/tests/integration/components/staked_ada_indexer_mock/src/events.rs new file mode 100644 index 0000000000..08c041816b --- /dev/null +++ b/hermes/bin/tests/integration/components/staked_ada_indexer_mock/src/events.rs @@ -0,0 +1,62 @@ +//! Hermes RTE events inner implementations. + +use cardano_blockchain_types::hashes::{Blake2bHash, TransactionId}; +use shared::{ + database::staked_ada::{create_tables, insert_txo_by_stake, TxoByStakeRow}, + utils::{common::types::cardano::cip19_stake_address::Cip19StakeAddress, log::info, sqlite}, +}; + +/// Mock stake address used for testing +// cspell:ignore racwpyrnngpzvjfcf dacpvd djgfkd cfzwyau +const MOCKED_STAKE_ADDRESS: &str = "stake1ux5wm486ud2racwpyrnngpzvjfcf839dacpvd60djgfkd0cfzwyau"; + +/// Initializes sqlite tables and cardano block subscription. +pub fn init() -> anyhow::Result<()> { + info!( + target: "staked_ada_indexer::init", + "💫 Initializing Sqlite..." + ); + + let mut conn = sqlite::Connection::open(false)?; + let mut conn_volatile = sqlite::Connection::open(true)?; + + create_tables(&mut conn)?; + create_tables(&mut conn_volatile)?; + + insert_test_data(&mut conn)?; + insert_test_data(&mut conn_volatile)?; + + info!( + target: "staked_ada_indexer::init", + "💫 Sqlite initialized." + ); + + Ok(()) +} + +/// Inserts test data for the mocked stake address. +fn insert_test_data(conn: &mut sqlite::Connection) -> anyhow::Result<()> { + let cip19_stake = Cip19StakeAddress::try_from(MOCKED_STAKE_ADDRESS)?; + let stake_address: cardano_blockchain_types::StakeAddress = cip19_stake.try_into()?; + let txn_id: TransactionId = Blake2bHash::from([0u8; 32]).into(); + + let txo_rows = vec![TxoByStakeRow { + stake_address: stake_address.clone(), + txn_id, + txn_index: 0, + txo: 0, + slot_no: 12345, + value: 100_000_000u64.into(), + spent_slot: None, + }]; + + let count = insert_txo_by_stake(conn, txo_rows) + .map_err(|(_, err)| anyhow::anyhow!("Failed to insert txo_by_stake: {err:?}"))?; + + info!( + target: "staked_ada_indexer::init", + "💫 Test data inserted for stake address: {MOCKED_STAKE_ADDRESS}, rows inserted: {count}" + ); + + Ok(()) +} diff --git a/hermes/bin/tests/integration/components/staked_ada_indexer_mock/src/lib.rs b/hermes/bin/tests/integration/components/staked_ada_indexer_mock/src/lib.rs new file mode 100644 index 0000000000..eff68785c7 --- /dev/null +++ b/hermes/bin/tests/integration/components/staked_ada_indexer_mock/src/lib.rs @@ -0,0 +1,43 @@ +#![allow(missing_docs)] +//! Staked ADA Indexer Mock Component + +shared::bindings_generate!({ + world: "hermes:app/hermes", + path: "../../../../../../wasm/wasi/wit", + inline: " + package hermes:app; + + world hermes { + include wasi:cli/imports@0.2.6; + import hermes:cardano/api; + import hermes:logging/api; + import hermes:init/api; + import hermes:sqlite/api; + + export hermes:init/event; + } + ", + share: ["hermes:sqlite", "hermes:logging"], +}); + +export!(Component); + +mod events; + +use shared::utils::log::{self, error}; + +/// Mocked indexer component. +struct Component; + +impl exports::hermes::init::event::Guest for Component { + fn init() -> bool { + log::init(log::LevelFilter::Trace); + match events::init() { + Ok(()) => true, + Err(error) => { + error!(target: "staked_ada_indexer::init", error:?; "Not handled"); + false + }, + } + } +} diff --git a/hermes/bin/tests/integration/tests/serial/athena/staked_ada.rs b/hermes/bin/tests/integration/tests/serial/athena/staked_ada.rs deleted file mode 100644 index 45bc4c63c2..0000000000 --- a/hermes/bin/tests/integration/tests/serial/athena/staked_ada.rs +++ /dev/null @@ -1,17 +0,0 @@ -use hyper::Method; - -use crate::serial::athena::build::build_athena; - -#[tokio::test] -async fn check_empty_db_request() { - let app_file_name = build_athena().expect("failed to build athena app"); - - utils::hermes::build(); - - let handler = tokio::spawn( - utils::hermes::run_app(&temp_dir, &app_file_name) - .expect_err("should fail to run hermes app"), - ); - - let req = reqwest::Request::new(Method::GET, ""); -} diff --git a/hermes/bin/tests/integration/tests/serial/mod.rs b/hermes/bin/tests/integration/tests/serial/mod.rs index 6f23cb82cf..80ec9506ce 100644 --- a/hermes/bin/tests/integration/tests/serial/mod.rs +++ b/hermes/bin/tests/integration/tests/serial/mod.rs @@ -8,3 +8,4 @@ mod cron_callback; mod failed_module_init; mod http_request_rte; mod parallel_module_execution; +mod staked_ada; diff --git a/hermes/bin/tests/integration/tests/serial/staked_ada.rs b/hermes/bin/tests/integration/tests/serial/staked_ada.rs new file mode 100644 index 0000000000..946ef5680c --- /dev/null +++ b/hermes/bin/tests/integration/tests/serial/staked_ada.rs @@ -0,0 +1,220 @@ +use std::{path::Path, str::FromStr, sync::Arc, time::Duration}; + +use anyhow::Context; +use reqwest::{ + header::{HeaderName, HeaderValue, AUTHORIZATION, CONTENT_TYPE, HOST}, + StatusCode, +}; +use serial_test::serial; +use temp_dir::TempDir; + +use crate::utils; + +fn build_stake_ada_with_db_mock(temp_dir: &TempDir) -> anyhow::Result { + const COMPONENT: &str = "staked-ada"; + const MOCK_COMPONENT: &str = "staked_ada_indexer_mock"; + + let manifest_dir_path = Path::new(env!("CARGO_MANIFEST_DIR")); + let hermes_root = manifest_dir_path + .parent() + .ok_or_else(|| anyhow::anyhow!("could not find parent directory for bin"))?; + let athena_modules_path = hermes_root.join("apps/athena/modules"); + utils::component::build_at_path(&athena_modules_path, COMPONENT, temp_dir) + .map_err(|err| anyhow::anyhow!("failed to build {COMPONENT} component: {err}"))?; + utils::component::build(MOCK_COMPONENT, temp_dir).context("failed to build component")?; + let components = ["staked_ada_indexer_mock", "staked_ada"]; + for component in &components { + utils::packaging::package_module(temp_dir, component, component) + .map_err(|err| anyhow::anyhow!("failed to package {component} module: {err}"))?; + } + + let modules = components + .into_iter() + .map(ToString::to_string) + .collect::>(); + + let app_name = utils::packaging::package_app_with_modules(temp_dir, Some(modules)) + .map_err(|err| anyhow::anyhow!("failed to package athena app: {err}"))?; + + Ok(app_name) +} + +fn build_request_for_athena( + url: &str, + app_name: &str, + client: &reqwest::blocking::Client, +) -> anyhow::Result { + let request = client + .get(url) + .headers( + [ + ( + HOST, + HeaderValue::from_str(&format!("{app_name}.hermes.local")) + .context("invalid header value")?, + ), + (CONTENT_TYPE, HeaderValue::from_static("application/json")), + ( + AUTHORIZATION, + HeaderValue::from_static("Bearer your-token-here"), + ), + ( + HeaderName::from_lowercase(b"x-custom-header") + .context("invalid header name")?, + HeaderValue::from_static("custom-value"), + ), + ] + .into_iter() + .collect(), + ) + .build()?; + Ok(request) +} + +struct StakedData<'a> { + ada_amount: &'a serde_json::Number, + slot_number: u64, + assets: &'a Vec, +} + +fn extract_staked_data_from_json(data: &serde_json::Value) -> anyhow::Result> { + Ok(StakedData { + ada_amount: data + .get("ada_amount") + .context("ada_amount is missing") + .and_then(|ada_amount| { + serde_json::Value::as_number(ada_amount).context("ada_amount is not Number") + })?, + slot_number: data + .get("slot_number") + .context("slot_number is missing") + .and_then(|slot_number| { + serde_json::Value::as_u64(slot_number).context("slot_number is not u64") + })?, + assets: data + .get("assets") + .context("assets are missing") + .and_then(|assets| { + serde_json::Value::as_array(assets).context("assets is not and array") + })?, + }) +} + +#[test] +#[serial] +fn staked_ada_requests() -> anyhow::Result<()> { + let temp_dir = Arc::new(TempDir::new()?); + + let app_name = build_stake_ada_with_db_mock(&temp_dir).context("failed to build modules")?; + + // Build Hermes and spawn it as a child; it will be terminated on drop + utils::hermes::build(); + let _hermes = utils::hermes::spawn_app(&temp_dir, &app_name)?; + + // Wait for app to initialize modules. + std::thread::sleep(Duration::from_secs(10)); + + let url_builder = |stake_address: &str| { + format!("http://localhost:5000/api/gateway/v1/cardano/assets/{stake_address}") + }; + // cspell:disable + let url_with_mocked_address = + url_builder("stake1ux5wm486ud2racwpyrnngpzvjfcf839dacpvd60djgfkd0cfzwyau"); + let url_with_unknown_address = + url_builder("stake1u9658xgzll2su0mpfgjykz86zutmv7x737vcdgf3nsu03wqt63ggw"); + let url_with_invalid_address = url_builder("blah_blah"); + // cspell:enable + + let client = reqwest::blocking::Client::new(); + + // + // + // Mocked stake address + // + // + { + let request_for_mocked_address = + build_request_for_athena(&url_with_mocked_address, &app_name, &client) + .context("failed to build request")?; + let response_for_mocked_address = client + .execute(request_for_mocked_address) + .context("failed to get response from Athena")?; + let status = response_for_mocked_address.status(); + assert_eq!(status, StatusCode::OK, "Expected 200 OK but got {status:?}"); + + let response_body = response_for_mocked_address + .text() + .context("failed to get response body")?; + + let response_data: serde_json::Value = + serde_json::from_str(&response_body).context("failed to parse response as JSON")?; + + let (persistent_data, volatile_data) = ( + response_data + .get("persistent") + .context("persistent should exist")?, + response_data + .get("volatile") + .context("volatile should exist")?, + ); + let persistent_data = extract_staked_data_from_json(persistent_data)?; + assert_eq!( + persistent_data.ada_amount, + &serde_json::Number::from_str("100000000")? + ); + assert_eq!( + persistent_data.slot_number, 12345, + "Expected slot number to be 12345" + ); + anyhow::ensure!(persistent_data.assets.is_empty()); + + let volatile_data = extract_staked_data_from_json(volatile_data)?; + assert_eq!( + volatile_data.ada_amount, + &serde_json::Number::from_str("100000000")? + ); + assert_eq!( + volatile_data.slot_number, 12345, + "Expected slot number to be 12345" + ); + anyhow::ensure!(volatile_data.assets.is_empty()); + } + + // + // + // Unknown stake address + // + // + { + let request_for_unknown_address = + build_request_for_athena(&url_with_unknown_address, &app_name, &client) + .context("failed to build request")?; + let response_unknown_address = client + .execute(request_for_unknown_address) + .context("failed to get response from Athena")?; + assert_eq!(response_unknown_address.status(), StatusCode::NOT_FOUND); + } + + // + // + // Invalid url + // + // + { + let request_for_invalid_address = + build_request_for_athena(&url_with_invalid_address, &app_name, &client) + .context("failed to build request")?; + let response_for_invalid_address = client + .execute(request_for_invalid_address) + .context("failed to get response from Athena")?; + assert_eq!(response_for_invalid_address.status(), StatusCode::NOT_FOUND); + } + + // Hermes will be terminated when `_hermes` is dropped + + // Uncomment the line below if you want to inspect the details + // available in the temp directory. + // + // utils::debug_sleep(&temp_dir); + Ok(()) +} diff --git a/hermes/bin/tests/integration/tests/utils/hermes.rs b/hermes/bin/tests/integration/tests/utils/hermes.rs index a812f9fd4f..99ad0f075a 100644 --- a/hermes/bin/tests/integration/tests/utils/hermes.rs +++ b/hermes/bin/tests/integration/tests/utils/hermes.rs @@ -29,9 +29,10 @@ pub fn build() { pub fn run_app( temp_dir: &TempDir, - app_file_name: &str, + app_name: &str, ) -> anyhow::Result { - let app_path = temp_dir.as_ref().join(app_file_name); + let mut app_path = temp_dir.as_ref().join(app_name); + app_path.set_extension("happ"); let log_file_path = temp_dir.as_ref().join(LOG_FILE_NAME); let log_file = File::create(&log_file_path)?; @@ -52,3 +53,55 @@ pub fn run_app( Ok(String::from_utf8_lossy(&output.stdout).to_string()) } + +/// Spawn Hermes as a child process and return a guard that will +/// terminate it on drop. +pub fn spawn_app( + temp_dir: &TempDir, + app_name: &str, +) -> anyhow::Result { + let mut app_path = temp_dir.as_ref().join(app_name); + app_path.set_extension("happ"); + + let log_file_path = temp_dir.as_ref().join(LOG_FILE_NAME); + let log_file = File::create(&log_file_path)?; + + let child = Command::new(utils::HERMES_BINARY_PATH) + .arg("run") + .arg("--untrusted") + .arg(app_path) + .env("HERMES_LOG_LEVEL", "trace") + .stdout(Stdio::from(log_file.try_clone()?)) + .stderr(Stdio::from(log_file)) + .spawn()?; + + Ok(HermesChild { child }) +} + +pub struct HermesChild { + child: std::process::Child, +} + +impl HermesChild { + /// Try to determine if child is still running. + pub fn is_running(&mut self) -> bool { + matches!(self.child.try_wait(), Ok(None)) + } +} + +impl Drop for HermesChild { + fn drop(&mut self) { + // If still running, try to kill and wait a bit + if self.is_running() { + self.child.kill().ok(); + // Best-effort wait + for _ in 0..10 { + if let Ok(Some(_)) = self.child.try_wait() { + break; + } + std::thread::sleep(std::time::Duration::from_millis(100)); + } + self.child.wait().ok(); + } + } +} diff --git a/hermes/bin/tests/integration/tests/utils/packaging.rs b/hermes/bin/tests/integration/tests/utils/packaging.rs index 3ac00c325d..961dc011f1 100644 --- a/hermes/bin/tests/integration/tests/utils/packaging.rs +++ b/hermes/bin/tests/integration/tests/utils/packaging.rs @@ -111,7 +111,7 @@ pub fn package_app_with_modules( modules: Option>, ) -> anyhow::Result { let manifest_path = temp_dir.as_ref().join("manifest_app.json"); - let app_filename = format!("{}.happ", Uuid::new_v4()); + let app_name = Uuid::new_v4().to_string(); if let Some(modules) = modules { replace_app_manifest_with_modules(temp_dir, &modules)?; @@ -121,7 +121,7 @@ pub fn package_app_with_modules( .arg("app") .arg("package") .arg("--name") - .arg(app_filename.clone()) + .arg(&app_name) .arg(manifest_path) .output()?; @@ -132,5 +132,5 @@ pub fn package_app_with_modules( ); } - Ok(app_filename) + Ok(app_name) } diff --git a/justfile b/justfile index 95eb146188..237df7a159 100644 --- a/justfile +++ b/justfile @@ -99,10 +99,12 @@ get-local-athena: # Step 1: Build WASM module using Earthly (local development target) # This compiles Rust source to optimized WASM binary and saves locally - + earthly ./hermes/apps/athena/modules/http-proxy+local-build-http-proxy earthly ./hermes/apps/athena/modules/rbac-registration-indexer+local-build-rbac-registration-indexer earthly ./hermes/apps/athena/modules/rbac-registration+local-build-rbac-registration + earthly ./hermes/apps/athena/modules/staked-ada-indexer+local-build-staked-ada-indexer + earthly ./hermes/apps/athena/modules/staked-ada+local-build-staked-ada echo "✅ WASM compilation complete" @@ -114,6 +116,8 @@ get-local-athena: target/release/hermes module package hermes/apps/athena/modules/http-proxy/lib/manifest_module.json target/release/hermes module package hermes/apps/athena/modules/rbac-registration-indexer/lib/manifest_module.json target/release/hermes module package hermes/apps/athena/modules/rbac-registration/lib/manifest_module.json + target/release/hermes module package hermes/apps/athena/modules/staked-ada-indexer/lib/manifest_module.json + target/release/hermes module package hermes/apps/athena/modules/staked-ada/lib/manifest_module.json echo "✅ Module packaging complete (.hmod file created)" echo "📦 Packaging application bundle..." @@ -211,7 +215,7 @@ run-athena: echo "" # Execute the application with security sandboxing - # HERMES_LOG_LEVEL="debug" + # HERMES_LOG_LEVEL="debug" target/release/hermes run --untrusted hermes/apps/athena/app.happ # Complete build and run workflow - recommended for most use cases