diff --git a/.dockerignore b/.dockerignore index fa3a0e9e..eac6e322 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,41 @@ -.vscode -/**/target/ -/**/snapshots/ -Cargo.lock -/**/compute_data/ -/**/rollups_data/ +**/target/ +**/snapshots/ +**/compute_data/ +**/rollups_data/ + +**/.git +**/.github +**/.venv +**/.vscode + +cartesi-rollups/contracts/**/daveconsensus.rs + +prt/tests/compute/outputs/ +prt/tests/compute/pixels/ +prt/contracts/**/leaftournament.rs +prt/contracts/**/nonleaftournament.rs +prt/contracts/**/nonroottournament.rs +prt/contracts/**/roottournament.rs +prt/contracts/**/tournament.rs + +machine/emulator/**/*.o +machine/emulator/**/*.swp +machine/emulator/**/*.d +machine/emulator/**/*.pb.cc +machine/emulator/**/*.pb.h +machine/emulator/**/*.gcno +machine/emulator/**/*.so +machine/emulator/**/*.dtb +machine/emulator/**/*.bin +machine/emulator/**/*.md +machine/emulator/**/*.deb + +machine/emulator/build +machine/emulator/third-party/downloads +machine/emulator/src/cartesi-machine-client +machine/emulator/src/cartesi-machine-server +machine/emulator/src/cartesi-machine-hash +machine/emulator/doc/html +machine/emulator/doc/api.md +machine/emulator/doc/html/ +machine/emulator/doc/xml/ diff --git a/doc/assets/dave-img.jpeg b/.github/assets/dave-img.jpeg similarity index 100% rename from doc/assets/dave-img.jpeg rename to .github/assets/dave-img.jpeg diff --git a/.gitignore b/.gitignore index 413011fc..fb60df7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,10 @@ .bin .env .vscode -.DS_Store +**/.DS_Store **/.idea/ target/ -snapshots/ -common-rs/Cargo.lock -prt/client-rs/Cargo.lock -prt/tests/compute/outputs/ -prt/tests/compute/pixels/ node_modules -**/contract-bindings/src/contract -**/contract-bindings/Cargo.lock +**/snapshots/ **/compute_data/ **/rollups_data/ diff --git a/AUTHORS b/AUTHORS index 87afca4a..6333ac3b 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1,3 @@ Gabriel Coutinho de Paula +Guilherme Dantas Stephen Chen <20940639+stephenctw@users.noreply.github.com> diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..44a097d3 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4468 @@ +# 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8367891bf380210abb0d6aa30c5f85a9080cb4a066c4d5c5acadad630823751b" +dependencies = [ + "alloy-consensus 0.3.6", + "alloy-contract 0.3.6", + "alloy-core", + "alloy-eips 0.3.6", + "alloy-genesis 0.3.6", + "alloy-network 0.3.6", + "alloy-provider 0.3.6", + "alloy-rpc-client 0.3.6", + "alloy-serde 0.3.6", + "alloy-transport 0.3.6", + "alloy-transport-http 0.3.6", +] + +[[package]] +name = "alloy" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59febb24956a41c29bb5f450978fbe825bd6456b3f80586c8bd558dc882e7b6a" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-contract 0.8.3", + "alloy-core", + "alloy-eips 0.8.3", + "alloy-genesis 0.8.3", + "alloy-network 0.8.3", + "alloy-provider 0.8.3", + "alloy-rpc-client 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer 0.8.3", + "alloy-signer-local", + "alloy-transport 0.8.3", + "alloy-transport-http 0.8.3", +] + +[[package]] +name = "alloy-chains" +version = "0.1.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830045a4421ee38d3ab570d36d4d2b5152c066e72797139224da8de5d5981fd0" +dependencies = [ + "alloy-primitives", + "num_enum", + "strum", +] + +[[package]] +name = "alloy-consensus" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" +dependencies = [ + "alloy-eips 0.3.6", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.3.6", + "c-kzg", + "serde", +] + +[[package]] +name = "alloy-consensus" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88e1edea70787c33e11197d3f32ae380f3db19e6e061e539a5bcf8184a6b326" +dependencies = [ + "alloy-eips 0.8.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.8.3", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b1bb53f40c0273cd1975573cd457b39213e68584e36d1401d25fd0398a1d65" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 0.3.6", + "alloy-network-primitives 0.3.6", + "alloy-primitives", + "alloy-provider 0.3.6", + "alloy-rpc-types-eth 0.3.6", + "alloy-sol-types", + "alloy-transport 0.3.6", + "futures", + "futures-util", + "thiserror 1.0.69", +] + +[[package]] +name = "alloy-contract" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b668c78c4b1f12f474ede5a85e8ce550d0aa1ef7d49fd1d22855a43b960e725" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 0.8.3", + "alloy-network-primitives 0.8.3", + "alloy-primitives", + "alloy-provider 0.8.3", + "alloy-rpc-types-eth 0.8.3", + "alloy-sol-types", + "alloy-transport 0.8.3", + "futures", + "futures-util", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-core" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c618bd382f0bc2ac26a7e4bfae01c9b015ca8f21b37ca40059ae35a7e62b3dc6" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "const-hex", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "serde", +] + +[[package]] +name = "alloy-eips" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.1.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.3.6", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9fadfe089e9ccc0650473f2d4ef0a28bc015bbca5631d9f0f09e49b557fdb3" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.4.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.8.3", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-genesis" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" +dependencies = [ + "alloy-primitives", + "alloy-serde 0.3.6", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2a4cf7b70f3495788e74ce1c765260ffe38820a2a774ff4aacb62e31ea73f9" +dependencies = [ + "alloy-primitives", + "alloy-serde 0.8.3", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e29040b9d5fe2fb70415531882685b64f8efd08dfbd6cc907120650504821105" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" +dependencies = [ + "alloy-consensus 0.3.6", + "alloy-eips 0.3.6", + "alloy-json-rpc 0.3.6", + "alloy-network-primitives 0.3.6", + "alloy-primitives", + "alloy-rpc-types-eth 0.3.6", + "alloy-serde 0.3.6", + "alloy-signer 0.3.6", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "thiserror 1.0.69", +] + +[[package]] +name = "alloy-network" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510cc00b318db0dfccfdd2d032411cfae64fc144aef9679409e014145d3dacc4" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-consensus-any", + "alloy-eips 0.8.3", + "alloy-json-rpc 0.8.3", + "alloy-network-primitives 0.8.3", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer 0.8.3", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" +dependencies = [ + "alloy-eips 0.3.6", + "alloy-primitives", + "alloy-serde 0.3.6", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9081c099e798b8a2bba2145eb82a9a146f01fc7a35e9ab6e7b43305051f97550" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-primitives", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "foldhash", + "hashbrown 0.15.2", + "hex-literal", + "indexmap", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand", + "ruint", + "rustc-hash 2.1.0", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.3.6", + "alloy-eips 0.3.6", + "alloy-json-rpc 0.3.6", + "alloy-network 0.3.6", + "alloy-network-primitives 0.3.6", + "alloy-primitives", + "alloy-rpc-client 0.3.6", + "alloy-rpc-types-eth 0.3.6", + "alloy-transport 0.3.6", + "alloy-transport-http 0.3.6", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "pin-project", + "reqwest", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "alloy-provider" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2dfaddd9a30aa870a78a4e1316e3e115ec1e12e552cbc881310456b85c1f24" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-json-rpc 0.8.3", + "alloy-network 0.8.3", + "alloy-network-primitives 0.8.3", + "alloy-primitives", + "alloy-rpc-client 0.8.3", + "alloy-rpc-types-eth 0.8.3", + "alloy-transport 0.8.3", + "alloy-transport-http 0.8.3", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project", + "reqwest", + "schnellru", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" +dependencies = [ + "alloy-json-rpc 0.3.6", + "alloy-transport 0.3.6", + "alloy-transport-http 0.3.6", + "futures", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531137b283547d5b9a5cafc96b006c64ef76810c681d606f28be9781955293b6" +dependencies = [ + "alloy-json-rpc 0.8.3", + "alloy-primitives", + "alloy-transport 0.8.3", + "alloy-transport-http 0.8.3", + "futures", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed98e1af55a7d856bfa385f30f63d8d56be2513593655c904a8f4a7ec963aa3e" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" +dependencies = [ + "alloy-consensus 0.3.6", + "alloy-eips 0.3.6", + "alloy-network-primitives 0.3.6", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.3.6", + "alloy-sol-types", + "cfg-if", + "derive_more", + "hashbrown 0.14.5", + "itertools 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8737d7a6e37ca7bba9c23e9495c6534caec6760eb24abc9d5ffbaaba147818e1" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-consensus-any", + "alloy-eips 0.8.3", + "alloy-network-primitives 0.8.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.8.3", + "alloy-sol-types", + "derive_more", + "itertools 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5851bf8d5ad33014bd0c45153c603303e730acc8a209450a7ae6b4a12c2789e2" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 1.0.69", +] + +[[package]] +name = "alloy-signer" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e10ca565da6500cca015ba35ee424d59798f2e1b85bc0dd8f81dafd401f029a" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-signer-local" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47fababf5a745133490cde927d48e50267f97d3d1209b9fc9f1d1d666964d172" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-network 0.8.3", + "alloy-primitives", + "alloy-signer 0.8.3", + "async-trait", + "k256", + "rand", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.90", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" +dependencies = [ + "alloy-json-rpc 0.3.6", + "base64", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "538a04a37221469cac0ce231b737fd174de2fdfcdd843bdd068cb39ed3e066ad" +dependencies = [ + "alloy-json-rpc 0.8.3", + "base64", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" +dependencies = [ + "alloy-json-rpc 0.3.6", + "alloy-transport 0.3.6", + "reqwest", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ed40eb1e1265b2911512f6aa1dcece9702d078f5a646730c45e39e2be00ac1c" +dependencies = [ + "alloy-json-rpc 0.8.3", + "alloy-transport 0.8.3", + "reqwest", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-trie" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.90", + "which", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[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 = "blst" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "cartesi-dave-arithmetic" +version = "0.1.0" + +[[package]] +name = "cartesi-dave-contracts" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", +] + +[[package]] +name = "cartesi-dave-merkle" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "hex", + "ruint", + "sha3", + "thiserror 1.0.69", +] + +[[package]] +name = "cartesi-machine" +version = "0.1.0" +dependencies = [ + "cartesi-machine-sys", + "hex", + "thiserror 1.0.69", +] + +[[package]] +name = "cartesi-machine-sys" +version = "0.1.0" +dependencies = [ + "bindgen", + "bytes", + "cfg-if", + "hex-literal", + "link-cplusplus", + "reqwest", + "sha1", +] + +[[package]] +name = "cartesi-prt-contracts" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", +] + +[[package]] +name = "cartesi-prt-core" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "anyhow", + "async-recursion", + "async-trait", + "cartesi-dave-arithmetic", + "cartesi-dave-merkle", + "cartesi-machine", + "cartesi-prt-contracts", + "clap", + "hex", + "lazy_static", + "log", + "num-traits", + "ruint", + "rusqlite", + "rusqlite_migration", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "cartesi-rollups-contracts" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637ddabaf0c1b84ab22dcbdbb3d5dabe349e5547478df6d59bf8fb2349977305" +dependencies = [ + "alloy 0.3.6", +] + +[[package]] +name = "cc" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[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 = "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 = "dave-rollups" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "anyhow", + "cartesi-prt-core", + "cartesi-rollups-contracts", + "clap", + "env_logger", + "futures", + "log", + "rollups-blockchain-reader", + "rollups-compute-runner", + "rollups-epoch-manager", + "rollups-machine-runner", + "rollups-state-manager", + "rusqlite", + "tokio", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fallible-iterator" +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 = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[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 2.0.90", +] + +[[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 = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6884a48c6826ec44f524c7456b163cebe9e55a18d7b5e307cb4f100371cc767" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[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.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "js-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets", +] + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libsqlite3-sys" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "link-cplusplus" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" +dependencies = [ + "cc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-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-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", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "nybbles" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "openssl" +version = "0.10.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +dependencies = [ + "memchr", + "thiserror 2.0.8", + "ucd-trie", +] + +[[package]] +name = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.90", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.0", + "rustls", + "socket2", + "thiserror 2.0.8", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom", + "rand", + "ring", + "rustc-hash 2.1.0", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.8", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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", + "serde", +] + +[[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", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "windows-registry", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rollups-blockchain-reader" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "alloy-rpc-types-eth 0.8.3", + "async-recursion", + "cartesi-dave-contracts", + "cartesi-rollups-contracts", + "clap", + "log", + "num-traits", + "rollups-state-manager", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "rollups-compute-runner" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "cartesi-prt-core", + "log", + "rollups-state-manager", +] + +[[package]] +name = "rollups-epoch-manager" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "anyhow", + "cartesi-dave-contracts", + "cartesi-prt-core", + "log", + "num-traits", + "rollups-state-manager", + "tokio", +] + +[[package]] +name = "rollups-machine-runner" +version = "0.1.0" +dependencies = [ + "alloy 0.8.3", + "cartesi-dave-arithmetic", + "cartesi-dave-merkle", + "cartesi-machine", + "cartesi-prt-core", + "cartesi-rollups-contracts", + "hex", + "rollups-state-manager", + "thiserror 1.0.69", +] + +[[package]] +name = "rollups-state-manager" +version = "0.1.0" +dependencies = [ + "lazy_static", + "rusqlite", + "rusqlite_migration", + "thiserror 1.0.69", +] + +[[package]] +name = "ruint" +version = "1.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rusqlite" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rusqlite_migration" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55709bc01054c69e2f1cefdc886642b5e6376a8db3c86f761be0c423eebf178b" +dependencies = [ + "log", + "rusqlite", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.24", +] + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +dependencies = [ + "web-time", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[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 = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +dependencies = [ + "thiserror-impl 2.0.8", +] + +[[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 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "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 2.0.90", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..1d862b55 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,85 @@ +[workspace] +resolver = "2" +members = [ + # Solidity bindings + "cartesi-rollups/contracts/bindings-rs", + "prt/contracts/bindings-rs", + + # common-rs + "common-rs/merkle", + "common-rs/arithmetic", + + # prt + "prt/client-rs", + + # rollups-node + "cartesi-rollups/node/blockchain-reader", + "cartesi-rollups/node/dave-rollups", + "cartesi-rollups/node/epoch-manager", + "cartesi-rollups/node/machine-runner", + "cartesi-rollups/node/state-manager", +] + +[workspace.package] +version = "0.1.0" + +authors = [ + "Gabriel Coutinho de Paula ", + "Stephen Chen ", +] +description = "A Cartesi validator reference implementation" +edition = "2021" +homepage = "https://github.com/cartesi/dave" +license-file = "LICENSE" +readme = "README.md" +repository = "https://github.com/cartesi/dave" + +[workspace.dependencies] + +## Workspace crates + +# machine bindings +cartesi-machine = { path = "machine/rust-bindings/cartesi-machine" } + +# solidity bindings +cartesi-dave-contracts = { path = "cartesi-rollups/contracts/bindings-rs" } +cartesi-prt-contracts = { path = "prt/contracts/bindings-rs" } + +# rollups-node +rollups-blockchain-reader = { version = "0.1", path = "cartesi-rollups/node/blockchain-reader" } +rollups-compute-runner = { version = "0.1", path = "cartesi-rollups/node/compute-runner" } +rollups-epoch-manager = { version = "0.1", path = "cartesi-rollups/node/epoch-manager" } +rollups-machine-runner = { version = "0.1", path = "cartesi-rollups/node/machine-runner" } +rollups-state-manager = { version = "0.1", path = "cartesi-rollups/node/state-manager" } + +# common-rs +cartesi-dave-arithmetic = { path = "common-rs/arithmetic" } +cartesi-dave-merkle = { path = "common-rs/merkle" } + +# prt +cartesi-prt-core = { path = "prt/client-rs" } + + +## Dependencies + +# cartesi +cartesi-rollups-contracts = "=2.0.0-rc.12" + +# eth +alloy = { version = "0.8", features = ["sol-types", "contract", "network", "reqwest", "signers", "signer-local"] } +ruint = "1.12" + +# error handling +anyhow = "1.0" +thiserror = "1.0" + +# async +async-recursion = "1" +async-trait = "0.1" +futures = "0.3" +tokio = { version = "1", features = ["full"] } + +clap = { version = "4.5", features = ["derive", "env"] } +hex = "0.4" +log = "0.4" +num-traits = "0.2" diff --git a/README.md b/README.md index c74b7668..74a26b28 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ Dave is a permissionless, interactive fraud-proof system. This repo contains the This project uses git submodules. Remember to either clone the repository with the flag `--recurse-submodules`, or run `git submodule update --recursive --init` after cloning. -To run the PRT Lua node, follow the instructions [here](prt/tests/compute/README.md). +To run the PRT Lua client (compute), follow the instructions [here](prt/tests/compute/README.md). +To run the PRT Rust node (rollups), follow the instructions [here](prt/tests/rollups/README.md). ## What's in a name @@ -62,7 +63,7 @@ As such, the defenders have an exponential resource advantage over the attackers Although delay grows logarithmically in the Permissionless Refereed Tournaments (PRT) algorithm, the constant multiplying this logarithm is high, harming its liveness. The second implementation of Dave will be based on the eponymous Dave algorithm, which improves the liveness of PRT, while maintaining its attractive security and decentralization properties. -We've published our initial research [here](https://arxiv.org/abs/2411.05463). +We've published our initial research [here](https://arxiv.org/abs/2411.05463), and presented our findings at Devcon 24 [here](https://youtu.be/dI_3neyXVl0). ## Status @@ -86,7 +87,7 @@ Please review our [LICENSE](LICENSE) file. ---
- Dave + Dave

Dave.

diff --git a/cartesi-rollups/Makefile b/cartesi-rollups/Makefile deleted file mode 100644 index 283df91a..00000000 --- a/cartesi-rollups/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -BINDINGS_DIR := ./contract-bindings/src/contract -SRC_DIR := ./contracts -BINDINGS_FILTER := 'DaveConsensus' - -help: - @echo ' clean - clean the generated bindings' - @echo ' bind - generate Rust bindings from Solidity code' - -clean: - @rm -rf $(BINDINGS_DIR) - -bind: - @forge bind --alloy --select $(BINDINGS_FILTER) \ - --module --bindings-path $(BINDINGS_DIR) \ - --root $(SRC_DIR) - -.PHONY: help bind clean diff --git a/cartesi-rollups/contracts/bindings-rs/Cargo.lock b/cartesi-rollups/contracts/bindings-rs/Cargo.lock new file mode 100644 index 00000000..cacd9bbf --- /dev/null +++ b/cartesi-rollups/contracts/bindings-rs/Cargo.lock @@ -0,0 +1,3401 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e472966e28cd766b0364e7cddbb80e3f5f5faa726538408eb6117b72e7d36661" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-rpc-client", + "alloy-serde", + "alloy-transport", + "alloy-transport-http", +] + +[[package]] +name = "alloy-chains" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0161082e0edd9013d23083465cc04b20e44b7a15646d36ba7b0cdb7cd6fe18f" +dependencies = [ + "alloy-primitives", + "num_enum", + "strum", +] + +[[package]] +name = "alloy-consensus" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf9f8fb3895d5a526b6b8cae7e1bba96ba350545852f0b0ab51041136785ac95" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164267377454c880130601a97ec6ca41da78973e696bee7a22cae48ff9d468cb" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a1240738b2c2d5a45153722fc50f28cd6e3129283b5f3e039031577c71eb70d" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "thiserror", +] + +[[package]] +name = "alloy-core" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c618bd382f0bc2ac26a7e4bfae01c9b015ca8f21b37ca40059ae35a7e62b3dc6" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "const-hex", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "serde", +] + +[[package]] +name = "alloy-eips" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5061487522a347cc84b282ce507dfca70a34d0ef173c1af643b47f77897e38c9" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-genesis" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62acff796b1cfc301f09eba904b8299b2e243069ddf33584941843e3a1c5a6a5" +dependencies = [ + "alloy-primitives", + "alloy-serde", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c81f9b96b5ed5c32508ca494d74cdc693e534535b0cf9bf2a5b94a2d3d3a27" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e53bad8c26999c2577e395e5cea1cee39966247218206ecc694544f0853993" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b699b67cfcd261fce73f4b36cc7bca91698fae05993fb66ac0b115637d5d96d9" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "foldhash", + "hashbrown 0.15.2", + "hex-literal", + "indexmap", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9cda73601658d30295f1a4e93614166da9ad925f26196157f48e0e225ef70a" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project", + "reqwest", + "schnellru", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "318806a3a1f5e8c2f110de2bdf5aa14faf9f2f19a4f24603a8cb968b35319a6c" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "alloy-transport-http", + "futures", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f6a77bd7ba68990acd291697087b9fda38bc68299a51b5d72b303051d9018d" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43495c55aeaac24faa4f8b315ea8b7ee6e49985bd1edfcb1e156177de59b55a6" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "derive_more", + "itertools 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514e925398442f5ac13d33ba98e26bd99925131edd4928a9a15658ec67f2bf92" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39d611775721dfe9f993d94308ac6c84ea5b1880e4c91e8b38c86d3e610ae41c" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.90", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df16f5842a8484d8523297a5c1d574ec0f43500b1baa0566ff1ea4190883c5c" +dependencies = [ + "alloy-json-rpc", + "base64", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c4c662b3f9d5d4470ea7f0d60ad00c9332315001d0acbe91f6b0ca0df535f4" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-trie" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[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 = "blst" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "cartesi-dave-contracts" +version = "0.1.0" +dependencies = [ + "alloy", +] + +[[package]] +name = "cc" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[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 = "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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[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 2.0.90", +] + +[[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 = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "hyper" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[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.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "js-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[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-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", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "nybbles" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "openssl" +version = "0.10.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[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", + "serde", +] + +[[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", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "ruint" +version = "1.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.24", +] + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[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 = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.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 = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "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 2.0.90", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] diff --git a/cartesi-rollups/contract-bindings/Cargo.toml b/cartesi-rollups/contracts/bindings-rs/Cargo.toml similarity index 100% rename from cartesi-rollups/contract-bindings/Cargo.toml rename to cartesi-rollups/contracts/bindings-rs/Cargo.toml diff --git a/cartesi-rollups/contract-bindings/README.md b/cartesi-rollups/contracts/bindings-rs/README.md similarity index 100% rename from cartesi-rollups/contract-bindings/README.md rename to cartesi-rollups/contracts/bindings-rs/README.md diff --git a/cartesi-rollups/contracts/bindings-rs/src/contract/.gitignore b/cartesi-rollups/contracts/bindings-rs/src/contract/.gitignore new file mode 100644 index 00000000..fffad1ca --- /dev/null +++ b/cartesi-rollups/contracts/bindings-rs/src/contract/.gitignore @@ -0,0 +1 @@ +daveconsensus.rs diff --git a/cartesi-rollups/contracts/bindings-rs/src/contract/daveconsensus.rs b/cartesi-rollups/contracts/bindings-rs/src/contract/daveconsensus.rs new file mode 100644 index 00000000..64fec07d --- /dev/null +++ b/cartesi-rollups/contracts/bindings-rs/src/contract/daveconsensus.rs @@ -0,0 +1,3004 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +interface DaveConsensus { + error IncorrectEpochNumber(uint256 received, uint256 actual); + error InputHashMismatch(bytes32 fromReceivedInput, bytes32 fromInputBox); + error TournamentNotFinishedYet(); + + event ConsensusCreation(address inputBox, address appContract, address tournamentFactory); + event EpochSealed(uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, Machine.Hash initialMachineStateHash, address tournament); + + constructor(address inputBox, address appContract, address tournamentFactory, Machine.Hash initialMachineStateHash); + + function canSettle() external view returns (bool isFinished, uint256 epochNumber); + function getApplicationContract() external view returns (address); + function getCurrentSealedEpoch() external view returns (uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, address tournament); + function getInputBox() external view returns (address); + function getTournamentFactory() external view returns (address); + function provideMerkleRootOfInput(uint256 inputIndexWithinEpoch, bytes memory input) external view returns (bytes32); + function settle(uint256 epochNumber) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "inputBox", + "type": "address", + "internalType": "contract IInputBox" + }, + { + "name": "appContract", + "type": "address", + "internalType": "address" + }, + { + "name": "tournamentFactory", + "type": "address", + "internalType": "contract ITournamentFactory" + }, + { + "name": "initialMachineStateHash", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canSettle", + "inputs": [], + "outputs": [ + { + "name": "isFinished", + "type": "bool", + "internalType": "bool" + }, + { + "name": "epochNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApplicationContract", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentSealedEpoch", + "inputs": [], + "outputs": [ + { + "name": "epochNumber", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "inputIndexLowerBound", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "inputIndexUpperBound", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "tournament", + "type": "address", + "internalType": "contract ITournament" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getInputBox", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IInputBox" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTournamentFactory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITournamentFactory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "provideMerkleRootOfInput", + "inputs": [ + { + "name": "inputIndexWithinEpoch", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "input", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "settle", + "inputs": [ + { + "name": "epochNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "ConsensusCreation", + "inputs": [ + { + "name": "inputBox", + "type": "address", + "indexed": false, + "internalType": "contract IInputBox" + }, + { + "name": "appContract", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "tournamentFactory", + "type": "address", + "indexed": false, + "internalType": "contract ITournamentFactory" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EpochSealed", + "inputs": [ + { + "name": "epochNumber", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "inputIndexLowerBound", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "inputIndexUpperBound", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "initialMachineStateHash", + "type": "bytes32", + "indexed": false, + "internalType": "Machine.Hash" + }, + { + "name": "tournament", + "type": "address", + "indexed": false, + "internalType": "contract ITournament" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "IncorrectEpochNumber", + "inputs": [ + { + "name": "received", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "actual", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InputHashMismatch", + "inputs": [ + { + "name": "fromReceivedInput", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "fromInputBox", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "TournamentNotFinishedYet", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod DaveConsensus { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60e080604052346101ef57608081611982803803809161001f828561023b565b8339810103126101ef578051906001600160a01b038216908183036101ef576020810151906001600160a01b0382168083036101ef5760408201516001600160a01b038116938482036101ef57606060209401519660805260a05260c0527faf68463e16cb5595a44214bea8d366ecf7cd3410269c50f92c104b50a7829daa60606040518681528385820152856040820152a16024604051809581936361a93c8760e01b835260048301525afa9182156101fb575f92610206575b5060205f9183600255604460405180948193630b64d79b60e01b83528860048401523060248401525af19081156101fb575f916101a6575b5f5160206119625f395f51905f5260a0848685600180851b03169081600180861b03196003541617600355604051925f84525f6020850152604084015260608301526080820152a16040516116ef9081610273823960805181818160950152818161028401526106d5015260a051818181610252015281816104560152610697015260c05181818161019301526102f20152f35b90506020813d6020116101f3575b816101c16020938361023b565b810103126101ef5751906001600160a01b03821682036101ef57905f5160206119625f395f51905f52610112565b5f80fd5b3d91506101b4565b6040513d5f823e3d90fd5b9091506020813d602011610233575b816102226020938361023b565b810103126101ef57519060206100da565b3d9150610215565b601f909101601f19168101906001600160401b0382119082101761025e57604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062aace9a146100835780631239acd91461007e5780637a96f48014610079578063813a1aaf146100745780638df828001461006f578063c050be001461006a5763faf7ba6a14610065575f80fd5b610485565b610441565b6101c2565b61017e565b610108565b6100cb565b346100c7575f3660031901126100c7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b346100c7575f3660031901126100c75760805f5460015460025460018060a01b036003541691604051938452602084015260408301526060820152f35b346100c75760403660031901126100c75760043560243567ffffffffffffffff81116100c757366023820112156100c757806004013567ffffffffffffffff81116100c75736602482840101116100c75761017a92602461016a930190610650565b6040519081529081906020820190565b0390f35b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c75760203660031901126100c757600480356101e55f548281811461074d565b6003546060906001600160a01b031660405163cb2773db60e01b815293849182905afa9081156103cd575f925f92610403575b5061022661022b929361078f565b6107a5565b805f556002549061023b82600155565b6040516361a93c8760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015292602084806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156103cd575f946103d2575b506102c684600255565b604051630b64d79b60e01b815260048101829052306024820152906020826044815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156103cd577fa26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e695610397935f9361039c575b50600380546001600160a01b0319166001600160a01b0385161790556040519586958693909594919260809360a0860197865260208601526040850152606084015260018060a01b0316910152565b0390a1005b6103bf91935060203d6020116103c6575b6103b781836105ab565b8101906107b3565b915f610348565b503d6103ad565b610627565b6103f591945060203d6020116103fc575b6103ed81836105ab565b810190610618565b925f6102bc565b503d6103e3565b610226935061022b925061042e9060603d60601161043a575b61042681836105ab565b81019061076b565b94919050939250610218565b503d61041c565b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c7575f3660031901126100c75760035460405163cb2773db60e01b815290606090829060049082906001600160a01b03165afa9081156103cd575f916104e0575b505f54604080519215158352602083019190915290f35b6104f9915060603d60601161043a5761042681836105ab565b50505f6104c9565b634e487b7160e01b5f52601160045260245ffd5b600201908160021161052357565b610501565b906040820180921161052357565b906020820180921161052357565b906010820180921161052357565b906008820180921161052357565b906004820180921161052357565b906002820180921161052357565b906001820180921161052357565b9190820180921161052357565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105cd57604052565b610597565b92919267ffffffffffffffff82116105cd57604051916105fc601f8201601f1916602001846105ab565b8294818452818301116100c7578281602093845f960137010152565b908160209103126100c7575190565b6040513d5f823e3d90fd5b1561063b575050565b6352faaeb760e11b5f5260045260245260445ffd5b61065f9092919260015461058a565b91600254831015610746576106d1602061067a3685856105d2565b80519082012060405163677087c960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101969096529491829081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103cd576107229461071d925f92610725575b50818114610632565b6107d2565b90565b61073f91925060203d6020116103fc576103ed81836105ab565b905f610714565b5050505f90565b15610756575050565b6304c9aca960e11b5f5260045260245260445ffd5b908160609103126100c757805180151581036100c757916040602083015192015190565b1561079657565b630ee145cb60e31b5f5260045ffd5b5f1981146105235760010190565b908160209103126100c757516001600160a01b03811681036100c75790565b610722916107df81610823565b60058111156107ee57916109e7565b506005916109e7565b60041981019190821161052357565b5f1981019190821161052357565b60011981019190821161052357565b8061082d57505f90565b5f1981019081116105235761084190610b47565b6101000361010081116105235790565b1561085857565b60405162461bcd60e51b815260206004820152601760248201527f447269766520736d616c6c6572207468616e206c6561660000000000000000006044820152606490fd5b156108a457565b60405162461bcd60e51b815260206004820152601860248201527f4472697665206c6172676572207468616e206d656d6f727900000000000000006044820152606490fd5b156108f057565b60405162461bcd60e51b815260206004820152601660248201527544617461206c6172676572207468616e20647269766560501b6044820152606490fd5b67ffffffffffffffff81116105cd5760051b60200190565b906109508261092e565b61095d60405191826105ab565b828152809261096e601f199161092e565b0190602036910137565b8051156109855760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156109855760209160051b010190565b156109b457565b60405162461bcd60e51b815260206004820152600b60248201526a39ba30b1b59032b93937b960a91b6044820152606490fd5b9091610a0c906109fa6005821015610851565b610a07604082111561089d565b6107f7565b908215610b3c5790610a38610a336001831b92610a2e8460051b8711156108e9565b610515565b610946565b925f92835b838110610a61575050505090610a586001610a5d93146109ad565b610978565b5190565b828160051b105f14610b045780610a7c610a8c928585611644565b610a868789610999565b526107a5565b92610a9784956107a5565b945b6001811615610aa9575092610a3d565b94610af881610ae6610ac6610ac0610aff95610806565b8b610999565b51610ad9610ad384610814565b8c610999565b515f5260205260405f2090565b610af2610ac083610814565b52610806565b9560011c90565b610a99565b92610a97610b33610b1486611622565b95610b1e876115ba565b610b28898b610999565b526001871b9061058a565b80951c956107a5565b5061072291506115ba565b8015610c7f575f906fffffffffffffffffffffffffffffffff19811615610c74575b6001600160c01b0319811615610c5b575b6001600160e01b0319811615610c42575b6001600160f01b0319811615610c29575b6001600160f81b0319811615610c10575b600f60fc1b811615610bf7575b600360fe1b811615610bde575b600160ff1b1615610bd55790565b6107229061057c565b90610beb610bf29161056e565b9160021b90565b610bc7565b90610c04610c0b91610560565b9160041b90565b610bba565b90610c1d610c2491610552565b9160081b90565b610bad565b90610c36610c3d91610544565b9160101b90565b610b9c565b90610c4f610c5691610536565b9160201b90565b610b8b565b90610c68610c6f91610528565b9160401b90565b610b7a565b60809150811b610b69565b5061010090565b60405190610c966107a0836105ab565b61078082527f31d0f66ab43019856780cb246cfd37b0c190d17111d5c016f19ba715ee622dc5610780837f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360208201527f633dc4d7da7256660a892f8f1604a44b5432649cc8ec5cb3ced4c4e6ac94dd1d60408201527f890740a8eb06ce9be422cb8da5cdafc2b58c0a5e24036c578de2a433c828ff7d60608201527f3b8ec09e026fdc305365dfc94e189a81b38c7597b3d941c279f042e8206e0bd860808201527fecd50eee38e386bd62be9bedb990706951b65fe053bd9d8a521af753d139e2da60a08201527fdefff6d330bb5403f63b14f33b578274160de3a50df4efecf0e0db73bcdd3da560c08201527f617bdd11f7c0a11f49db22f629387a12da7596f9d1704d7465177c63d88ec7d760e08201527f292c23a9aa1d8bea7e2435e555a4a60e379a5a35f3f452bae60121073fb6eead6101008201527fe1cea92ed99acdcb045a6726b2f87107e8a61620a232cf4d7d5b5766b3952e106101208201527f7ad66c0a68c72cb89e4fb4303841966e4062a76ab97451e3b9fb526a5ceb7f826101408201527fe026cc5a4aed3c22a58cbd3d2ac754c9352c5436f638042dca99034e836365166101608201527f3d04cffd8b46a874edf5cfae63077de85f849a660426697b06a829c70dd1409c6101808201527fad676aa337a485e4728a0b240d92b3ef7b3c372d06d189322bfd5f61f1e7203e6101a08201527fa2fca4a49658f9fab7aa63289c91b7c7b6c832a6d0e69334ff5b0a3483d09dab6101c08201527f4ebfd9cd7bca2505f7bef59cc1c12ecc708fff26ae4af19abe852afe9e20c8626101e08201527f2def10d13dd169f550f578bda343d9717a138562e0093b380a1120789d53cf106102008201527f776a31db34a1a0a7caaf862cffdfff1789297ffadc380bd3d39281d340abd3ad6102208201527fe2e7610b87a5fdf3a72ebe271287d923ab990eefac64b6e59d79f8b7e08c46e36102408201527f504364a5c6858bf98fff714ab5be9de19ed31a976860efbd0e772a2efe23e2e06102608201527f4f05f4acb83f5b65168d9fef89d56d4d77b8944015e6b1eed81b0238e2d0dba36102808201527f44a6d974c75b07423e1d6d33f481916fdd45830aea11b6347e700cd8b9f0767c6102a08201527fedf260291f734ddac396a956127dde4c34c0cfb8d8052f88ac139658ccf2d5076102c08201527f6075c657a105351e7f0fce53bc320113324a522e8fd52dc878c762551e01a46e6102e08201527f6ca6a3f763a9395f7da16014725ca7ee17e4815c0ff8119bf33f273dee11833b6103008201527f1c25ef10ffeb3c7d08aa707d17286e0b0d3cbcb50f1bd3b6523b63ba3b52dd0f6103208201527ffffc43bd08273ccf135fd3cacbeef055418e09eb728d727c4d5d5c556cdea7e36103408201527fc5ab8111456b1f28f3c7a0a604b4553ce905cb019c463ee159137af83c350b226103608201527f0ff273fcbf4ae0f2bd88d6cf319ff4004f8d7dca70d4ced4e74d2c74139739e66103808201527f7fa06ba11241ddd5efdc65d4e39c9f6991b74fd4b81b62230808216c876f827c6103a08201527f7e275adf313a996c7e2950cac67caba02a5ff925ebf9906b58949f3e77aec5b96103c08201527f8f6162fa308d2b3a15dc33cffac85f13ab349173121645aedf00f471663108be6103e08201527f78ccaaab73373552f207a63599de54d7d8d0c1805f86ce7da15818d09f4cff626104008201527fcf277fb80a82478460e8988570b718f1e083ceb76f7e271a1a1497e5975f53ae6104208201527f4bf6ffa2bc131204513289738567a68fa9f4827dac7fd3b3d1f2e94777d57f366104408201527fb49d61e8c2c894e12486176ab8f4d7069d6692fa6495541567872e7ecbddb7266104608201527f202b1014739f29b1d905d630ddeb8560a32bf23e666c8a1523a4a600227fef7c6104808201527f9e1d1ce5cdca9cdf40fa5786548b58eb19ddfd32395b4582983919099dbd15316104a08201527f13784d01e2fae904de62c6fbf9776979ca7a2777ae2632ee278d19aca30f890e6104c08201527f68c477f83a13a000ad2b5b3e50375b7c3ae782d987ba4b5a65376bbb97469fb36104e08201527f71e37864edf08740d592362cd24d0db067bf14cd3b97bd2a68e782adffb436556105008201527f88d0cc35e8abe7d6524569be8aa1a48bb23362326fdfefe961348bc96091c94c6105208201527f8545f2c1afdace5d87f06ce1d44bc0a2691aea4414d0ad640be0d9879c8374d96105408201527f2360c4480d69879eadd7ae508409f2f0ba83a2b0fe0da57b40008c064d2c397d6105608201527f31763a8e1dedb15ad0c8b88d437fef835aeb958292644810663dc1756550f22b6105808201527ffa4c9b1172ab5afebd159573e19e25169975242e10a2ed38dfc805232fb50a646105a08201527f3528594d65e9525233b39587174bcf0bba562d95b50b429914c7e0e8a9ae58f96105c08201527f1765922797ba721e8937c7470a26d5c2f141f3d4106447dab171fced7d652a696105e08201527ff0573e660ba01cff272a1c6f7927d73c94c85d380a84399867626d6429d48bae6106008201527f31682c19f715cd317da1a553ce384de6902fe26032fecc7de03e40502af05dce6106208201527fd50c6062bfcd7bbd0dbd68d1ddeeae095485720a1ce334e9e5e5153066f422606106408201527fe0bcfbd03fa4a619a5bc3cae15404f39b4b7bf5ddd5161ea642d13d23baef5456106608201527facb98b6fb1a5fdae0a5718d0b812e1de1412e44d875146acc1a7f7c3916c003a6106808201527fbb1ff291eb2e614a661d6730b502bae2bde112958cee698478845a1bb3788a6b6106a08201527f9a91f4c19545d6cd9720d4736591fe70edcf3e33cb2e56f21fdc1244f3d2ef6d6106c08201527fbdf82c7d252d69c64bd6fa8ee66ad9d30241016981e4580e3c2edc4804b752366106e08201527f63bc3b9e8340ab48a66828d7d9d7d5be2f5f280665196d25a39c4d01345cb95e6107008201527fa962e4bd7d1f316f845784e115ff103530d85f9dfacd638ad45fbe938ba85c406107208201527fb3f100a0f506f6a6c86c10f107ab4811ddc76f72516fcdfa8a0c9bd71ff912ab6107408201527fe7e8dbc3898515970ca6fce19039ca22ae2638e44b24641fd61048b94dc2be256107608201520152565b603b81116115e6578060051b9080820460201490151715610523576020906115e0610c86565b01015190565b60405162461bcd60e51b8152602060048201526014602482015273486569676874206f7574206f6620626f756e647360601b6044820152606490fd5b8061162e575061010090565b5f19810181811161052357610841911916610b47565b9160051b90808210156116a7578082116100c75791810135910360208110611696575b50604051611690816116826020820194859190602083019252565b03601f1981018352826105ab565b51902090565b5f199060200360031b1b165f611667565b50505060206116b4610c86565b01519056fea26469706673582212201ffc9a10fe921b8bbeba6157a2908c167e2b422d2381dc9e0353b0c6c5086dfe64736f6c634300081b0033a26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e6 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xE0\x80`@R4a\x01\xEFW`\x80\x81a\x19\x82\x808\x03\x80\x91a\0\x1F\x82\x85a\x02;V[\x839\x81\x01\x03\x12a\x01\xEFW\x80Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x81\x83\x03a\x01\xEFW` \x81\x01Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x80\x83\x03a\x01\xEFW`@\x82\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x93\x84\x82\x03a\x01\xEFW``` \x94\x01Q\x96`\x80R`\xA0R`\xC0R\x7F\xAFhF>\x16\xCBU\x95\xA4B\x14\xBE\xA8\xD3f\xEC\xF7\xCD4\x10&\x9CP\xF9,\x10KP\xA7\x82\x9D\xAA```@Q\x86\x81R\x83\x85\x82\x01R\x85`@\x82\x01R\xA1`$`@Q\x80\x95\x81\x93ca\xA9<\x87`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x01\xFBW_\x92a\x02\x06W[P` _\x91\x83`\x02U`D`@Q\x80\x94\x81\x93c\x0Bd\xD7\x9B`\xE0\x1B\x83R\x88`\x04\x84\x01R0`$\x84\x01RZ\xF1\x90\x81\x15a\x01\xFBW_\x91a\x01\xA6W[_Q` a\x19b_9_Q\x90_R`\xA0\x84\x86\x85`\x01\x80\x85\x1B\x03\x16\x90\x81`\x01\x80\x86\x1B\x03\x19`\x03T\x16\x17`\x03U`@Q\x92_\x84R_` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\xA1`@Qa\x16\xEF\x90\x81a\x02s\x829`\x80Q\x81\x81\x81`\x95\x01R\x81\x81a\x02\x84\x01Ra\x06\xD5\x01R`\xA0Q\x81\x81\x81a\x02R\x01R\x81\x81a\x04V\x01Ra\x06\x97\x01R`\xC0Q\x81\x81\x81a\x01\x93\x01Ra\x02\xF2\x01R\xF3[\x90P` \x81=` \x11a\x01\xF3W[\x81a\x01\xC1` \x93\x83a\x02;V[\x81\x01\x03\x12a\x01\xEFWQ\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x01\xEFW\x90_Q` a\x19b_9_Q\x90_Ra\x01\x12V[_\x80\xFD[=\x91Pa\x01\xB4V[`@Q=_\x82>=\x90\xFD[\x90\x91P` \x81=` \x11a\x023W[\x81a\x02\"` \x93\x83a\x02;V[\x81\x01\x03\x12a\x01\xEFWQ\x90` a\0\xDAV[=\x91Pa\x02\x15V[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17a\x02^W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80b\xAA\xCE\x9A\x14a\0\x83W\x80c\x129\xAC\xD9\x14a\0~W\x80cz\x96\xF4\x80\x14a\0yW\x80c\x81:\x1A\xAF\x14a\0tW\x80c\x8D\xF8(\0\x14a\0oW\x80c\xC0P\xBE\0\x14a\0jWc\xFA\xF7\xBAj\x14a\0eW_\x80\xFD[a\x04\x85V[a\x04AV[a\x01\xC2V[a\x01~V[a\x01\x08V[a\0\xCBV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[_\x80\xFD[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x80_T`\x01T`\x02T`\x01\x80`\xA0\x1B\x03`\x03T\x16\x91`@Q\x93\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\xF3[4a\0\xC7W`@6`\x03\x19\x01\x12a\0\xC7W`\x045`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`#\x82\x01\x12\x15a\0\xC7W\x80`\x04\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`$\x82\x84\x01\x01\x11a\0\xC7Wa\x01z\x92`$a\x01j\x93\x01\x90a\x06PV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W` 6`\x03\x19\x01\x12a\0\xC7W`\x04\x805a\x01\xE5_T\x82\x81\x81\x14a\x07MV[`\x03T``\x90`\x01`\x01`\xA0\x1B\x03\x16`@Qc\xCB's\xDB`\xE0\x1B\x81R\x93\x84\x91\x82\x90Z\xFA\x90\x81\x15a\x03\xCDW_\x92_\x92a\x04\x03W[Pa\x02&a\x02+\x92\x93a\x07\x8FV[a\x07\xA5V[\x80_U`\x02T\x90a\x02;\x82`\x01UV[`@Qca\xA9<\x87`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R\x92` \x84\x80`$\x81\x01\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x93\x84\x15a\x03\xCDW_\x94a\x03\xD2W[Pa\x02\xC6\x84`\x02UV[`@Qc\x0Bd\xD7\x9B`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R0`$\x82\x01R\x90` \x82`D\x81_`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x90\x81\x15a\x03\xCDW\x7F\xA2m\xC1\x88h\xF1\xEAW\xF3I\xA6\x80\x88y/=\xB3z\xF6\xFC\x05\xCB\xEBb\xCF7\x94~\xDE\xDF\x06\xE6\x95a\x03\x97\x93_\x93a\x03\x9CW[P`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90U`@Q\x95\x86\x95\x86\x93\x90\x95\x94\x91\x92`\x80\x93`\xA0\x86\x01\x97\x86R` \x86\x01R`@\x85\x01R``\x84\x01R`\x01\x80`\xA0\x1B\x03\x16\x91\x01RV[\x03\x90\xA1\0[a\x03\xBF\x91\x93P` =` \x11a\x03\xC6W[a\x03\xB7\x81\x83a\x05\xABV[\x81\x01\x90a\x07\xB3V[\x91_a\x03HV[P=a\x03\xADV[a\x06'V[a\x03\xF5\x91\x94P` =` \x11a\x03\xFCW[a\x03\xED\x81\x83a\x05\xABV[\x81\x01\x90a\x06\x18V[\x92_a\x02\xBCV[P=a\x03\xE3V[a\x02&\x93Pa\x02+\x92Pa\x04.\x90``=``\x11a\x04:W[a\x04&\x81\x83a\x05\xABV[\x81\x01\x90a\x07kV[\x94\x91\x90P\x93\x92Pa\x02\x18V[P=a\x04\x1CV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x03T`@Qc\xCB's\xDB`\xE0\x1B\x81R\x90``\x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03\xCDW_\x91a\x04\xE0W[P_T`@\x80Q\x92\x15\x15\x83R` \x83\x01\x91\x90\x91R\x90\xF3[a\x04\xF9\x91P``=``\x11a\x04:Wa\x04&\x81\x83a\x05\xABV[PP_a\x04\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x02\x01\x90\x81`\x02\x11a\x05#WV[a\x05\x01V[\x90`@\x82\x01\x80\x92\x11a\x05#WV[\x90` \x82\x01\x80\x92\x11a\x05#WV[\x90`\x10\x82\x01\x80\x92\x11a\x05#WV[\x90`\x08\x82\x01\x80\x92\x11a\x05#WV[\x90`\x04\x82\x01\x80\x92\x11a\x05#WV[\x90`\x02\x82\x01\x80\x92\x11a\x05#WV[\x90`\x01\x82\x01\x80\x92\x11a\x05#WV[\x91\x90\x82\x01\x80\x92\x11a\x05#WV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x05\xCDW`@RV[a\x05\x97V[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x05\xCDW`@Q\x91a\x05\xFC`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x05\xABV[\x82\x94\x81\x84R\x81\x83\x01\x11a\0\xC7W\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x81` \x91\x03\x12a\0\xC7WQ\x90V[`@Q=_\x82>=\x90\xFD[\x15a\x06;WPPV[cR\xFA\xAE\xB7`\xE1\x1B_R`\x04R`$R`D_\xFD[a\x06_\x90\x92\x91\x92`\x01Ta\x05\x8AV[\x91`\x02T\x83\x10\x15a\x07FWa\x06\xD1` a\x06z6\x85\x85a\x05\xD2V[\x80Q\x90\x82\x01 `@Qcgp\x87\xC9`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R`$\x81\x01\x96\x90\x96R\x94\x91\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03\xCDWa\x07\"\x94a\x07\x1D\x92_\x92a\x07%W[P\x81\x81\x14a\x062V[a\x07\xD2V[\x90V[a\x07?\x91\x92P` =` \x11a\x03\xFCWa\x03\xED\x81\x83a\x05\xABV[\x90_a\x07\x14V[PPP_\x90V[\x15a\x07VWPPV[c\x04\xC9\xAC\xA9`\xE1\x1B_R`\x04R`$R`D_\xFD[\x90\x81``\x91\x03\x12a\0\xC7W\x80Q\x80\x15\x15\x81\x03a\0\xC7W\x91`@` \x83\x01Q\x92\x01Q\x90V[\x15a\x07\x96WV[c\x0E\xE1E\xCB`\xE3\x1B_R`\x04_\xFD[_\x19\x81\x14a\x05#W`\x01\x01\x90V[\x90\x81` \x91\x03\x12a\0\xC7WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0\xC7W\x90V[a\x07\"\x91a\x07\xDF\x81a\x08#V[`\x05\x81\x11\x15a\x07\xEEW\x91a\t\xE7V[P`\x05\x91a\t\xE7V[`\x04\x19\x81\x01\x91\x90\x82\x11a\x05#WV[_\x19\x81\x01\x91\x90\x82\x11a\x05#WV[`\x01\x19\x81\x01\x91\x90\x82\x11a\x05#WV[\x80a\x08-WP_\x90V[_\x19\x81\x01\x90\x81\x11a\x05#Wa\x08A\x90a\x0BGV[a\x01\0\x03a\x01\0\x81\x11a\x05#W\x90V[\x15a\x08XWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FDrive smaller than leaf\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xA4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FDrive larger than memory\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xF0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01RuData larger than drive`P\x1B`D\x82\x01R`d\x90\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x05\xCDW`\x05\x1B` \x01\x90V[\x90a\tP\x82a\t.V[a\t]`@Q\x91\x82a\x05\xABV[\x82\x81R\x80\x92a\tn`\x1F\x19\x91a\t.V[\x01\x90` 6\x91\x017V[\x80Q\x15a\t\x85W` \x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80Q\x82\x10\x15a\t\x85W` \x91`\x05\x1B\x01\x01\x90V[\x15a\t\xB4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj9\xBA0\xB1\xB5\x902\xB997\xB9`\xA9\x1B`D\x82\x01R`d\x90\xFD[\x90\x91a\n\x0C\x90a\t\xFA`\x05\x82\x10\x15a\x08QV[a\n\x07`@\x82\x11\x15a\x08\x9DV[a\x07\xF7V[\x90\x82\x15a\x0Ba\x01\xA0\x82\x01R\x7F\xA2\xFC\xA4\xA4\x96X\xF9\xFA\xB7\xAAc(\x9C\x91\xB7\xC7\xB6\xC82\xA6\xD0\xE6\x934\xFF[\n4\x83\xD0\x9D\xABa\x01\xC0\x82\x01R\x7FN\xBF\xD9\xCD{\xCA%\x05\xF7\xBE\xF5\x9C\xC1\xC1.\xCCp\x8F\xFF&\xAEJ\xF1\x9A\xBE\x85*\xFE\x9E \xC8ba\x01\xE0\x82\x01R\x7F-\xEF\x10\xD1=\xD1i\xF5P\xF5x\xBD\xA3C\xD9qz\x13\x85b\xE0\t;8\n\x11 x\x9DS\xCF\x10a\x02\0\x82\x01R\x7Fwj1\xDB4\xA1\xA0\xA7\xCA\xAF\x86,\xFF\xDF\xFF\x17\x89)\x7F\xFA\xDC8\x0B\xD3\xD3\x92\x81\xD3@\xAB\xD3\xADa\x02 \x82\x01R\x7F\xE2\xE7a\x0B\x87\xA5\xFD\xF3\xA7.\xBE'\x12\x87\xD9#\xAB\x99\x0E\xEF\xACd\xB6\xE5\x9Dy\xF8\xB7\xE0\x8CF\xE3a\x02@\x82\x01R\x7FPCd\xA5\xC6\x85\x8B\xF9\x8F\xFFqJ\xB5\xBE\x9D\xE1\x9E\xD3\x1A\x97h`\xEF\xBD\x0Ew*.\xFE#\xE2\xE0a\x02`\x82\x01R\x7FO\x05\xF4\xAC\xB8?[e\x16\x8D\x9F\xEF\x89\xD5mMw\xB8\x94@\x15\xE6\xB1\xEE\xD8\x1B\x028\xE2\xD0\xDB\xA3a\x02\x80\x82\x01R\x7FD\xA6\xD9t\xC7[\x07B>\x1Dm3\xF4\x81\x91o\xDDE\x83\n\xEA\x11\xB64~p\x0C\xD8\xB9\xF0v|a\x02\xA0\x82\x01R\x7F\xED\xF2`)\x1FsM\xDA\xC3\x96\xA9V\x12}\xDEL4\xC0\xCF\xB8\xD8\x05/\x88\xAC\x13\x96X\xCC\xF2\xD5\x07a\x02\xC0\x82\x01R\x7F`u\xC6W\xA1\x055\x1E\x7F\x0F\xCES\xBC2\x01\x132JR.\x8F\xD5-\xC8x\xC7bU\x1E\x01\xA4na\x02\xE0\x82\x01R\x7Fl\xA6\xA3\xF7c\xA99_}\xA1`\x14r\\\xA7\xEE\x17\xE4\x81\\\x0F\xF8\x11\x9B\xF3?'=\xEE\x11\x83;a\x03\0\x82\x01R\x7F\x1C%\xEF\x10\xFF\xEB<}\x08\xAAp}\x17(n\x0B\r<\xBC\xB5\x0F\x1B\xD3\xB6R;c\xBA;R\xDD\x0Fa\x03 \x82\x01R\x7F\xFF\xFCC\xBD\x08'<\xCF\x13_\xD3\xCA\xCB\xEE\xF0UA\x8E\t\xEBr\x8Dr|M]\\Ul\xDE\xA7\xE3a\x03@\x82\x01R\x7F\xC5\xAB\x81\x11Ek\x1F(\xF3\xC7\xA0\xA6\x04\xB4U<\xE9\x05\xCB\x01\x9CF>\xE1Y\x13z\xF8<5\x0B\"a\x03`\x82\x01R\x7F\x0F\xF2s\xFC\xBFJ\xE0\xF2\xBD\x88\xD6\xCF1\x9F\xF4\0O\x8D}\xCAp\xD4\xCE\xD4\xE7M,t\x13\x979\xE6a\x03\x80\x82\x01R\x7F\x7F\xA0k\xA1\x12A\xDD\xD5\xEF\xDCe\xD4\xE3\x9C\x9Fi\x91\xB7O\xD4\xB8\x1Bb#\x08\x08!l\x87o\x82|a\x03\xA0\x82\x01R\x7F~'Z\xDF1:\x99l~)P\xCA\xC6|\xAB\xA0*_\xF9%\xEB\xF9\x90kX\x94\x9F>w\xAE\xC5\xB9a\x03\xC0\x82\x01R\x7F\x8Fab\xFA0\x8D+:\x15\xDC3\xCF\xFA\xC8_\x13\xAB4\x91s\x12\x16E\xAE\xDF\0\xF4qf1\x08\xBEa\x03\xE0\x82\x01R\x7Fx\xCC\xAA\xABs75R\xF2\x07\xA65\x99\xDET\xD7\xD8\xD0\xC1\x80_\x86\xCE}\xA1X\x18\xD0\x9FL\xFFba\x04\0\x82\x01R\x7F\xCF'\x7F\xB8\n\x82G\x84`\xE8\x98\x85p\xB7\x18\xF1\xE0\x83\xCE\xB7o~'\x1A\x1A\x14\x97\xE5\x97_S\xAEa\x04 \x82\x01R\x7FK\xF6\xFF\xA2\xBC\x13\x12\x04Q2\x89s\x85g\xA6\x8F\xA9\xF4\x82}\xAC\x7F\xD3\xB3\xD1\xF2\xE9Gw\xD5\x7F6a\x04@\x82\x01R\x7F\xB4\x9Da\xE8\xC2\xC8\x94\xE1$\x86\x17j\xB8\xF4\xD7\x06\x9Df\x92\xFAd\x95T\x15g\x87.~\xCB\xDD\xB7&a\x04`\x82\x01R\x7F +\x10\x14s\x9F)\xB1\xD9\x05\xD60\xDD\xEB\x85`\xA3+\xF2>fl\x8A\x15#\xA4\xA6\0\"\x7F\xEF|a\x04\x80\x82\x01R\x7F\x9E\x1D\x1C\xE5\xCD\xCA\x9C\xDF@\xFAW\x86T\x8BX\xEB\x19\xDD\xFD29[E\x82\x989\x19\t\x9D\xBD\x151a\x04\xA0\x82\x01R\x7F\x13xM\x01\xE2\xFA\xE9\x04\xDEb\xC6\xFB\xF9wiy\xCAz'w\xAE&2\xEE'\x8D\x19\xAC\xA3\x0F\x89\x0Ea\x04\xC0\x82\x01R\x7Fh\xC4w\xF8:\x13\xA0\0\xAD+[>P7[|:\xE7\x82\xD9\x87\xBAKZe7k\xBB\x97F\x9F\xB3a\x04\xE0\x82\x01R\x7Fq\xE3xd\xED\xF0\x87@\xD5\x926,\xD2M\r\xB0g\xBF\x14\xCD;\x97\xBD*h\xE7\x82\xAD\xFF\xB46Ua\x05\0\x82\x01R\x7F\x88\xD0\xCC5\xE8\xAB\xE7\xD6REi\xBE\x8A\xA1\xA4\x8B\xB23b2o\xDF\xEF\xE9a4\x8B\xC9`\x91\xC9La\x05 \x82\x01R\x7F\x85E\xF2\xC1\xAF\xDA\xCE]\x87\xF0l\xE1\xD4K\xC0\xA2i\x1A\xEAD\x14\xD0\xADd\x0B\xE0\xD9\x87\x9C\x83t\xD9a\x05@\x82\x01R\x7F#`\xC4H\ri\x87\x9E\xAD\xD7\xAEP\x84\t\xF2\xF0\xBA\x83\xA2\xB0\xFE\r\xA5{@\0\x8C\x06M,9}a\x05`\x82\x01R\x7F1v:\x8E\x1D\xED\xB1Z\xD0\xC8\xB8\x8DC\x7F\xEF\x83Z\xEB\x95\x82\x92dH\x10f=\xC1ueP\xF2+a\x05\x80\x82\x01R\x7F\xFAL\x9B\x11r\xABZ\xFE\xBD\x15\x95s\xE1\x9E%\x16\x99u$.\x10\xA2\xED8\xDF\xC8\x05#/\xB5\nda\x05\xA0\x82\x01R\x7F5(YMe\xE9RR3\xB3\x95\x87\x17K\xCF\x0B\xBAV-\x95\xB5\x0BB\x99\x14\xC7\xE0\xE8\xA9\xAEX\xF9a\x05\xC0\x82\x01R\x7F\x17e\x92'\x97\xBAr\x1E\x897\xC7G\n&\xD5\xC2\xF1A\xF3\xD4\x10dG\xDA\xB1q\xFC\xED}e*ia\x05\xE0\x82\x01R\x7F\xF0W>f\x0B\xA0\x1C\xFF'*\x1Coy'\xD7<\x94\xC8]8\n\x849\x98gbmd)\xD4\x8B\xAEa\x06\0\x82\x01R\x7F1h,\x19\xF7\x15\xCD1}\xA1\xA5S\xCE8M\xE6\x90/\xE2`2\xFE\xCC}\xE0>@P*\xF0]\xCEa\x06 \x82\x01R\x7F\xD5\x0C`b\xBF\xCD{\xBD\r\xBDh\xD1\xDD\xEE\xAE\tT\x85r\n\x1C\xE34\xE9\xE5\xE5\x150f\xF4\"`a\x06@\x82\x01R\x7F\xE0\xBC\xFB\xD0?\xA4\xA6\x19\xA5\xBC<\xAE\x15@O9\xB4\xB7\xBF]\xDDQa\xEAd-\x13\xD2;\xAE\xF5Ea\x06`\x82\x01R\x7F\xAC\xB9\x8Bo\xB1\xA5\xFD\xAE\nW\x18\xD0\xB8\x12\xE1\xDE\x14\x12\xE4M\x87QF\xAC\xC1\xA7\xF7\xC3\x91l\0:a\x06\x80\x82\x01R\x7F\xBB\x1F\xF2\x91\xEB.aJf\x1Dg0\xB5\x02\xBA\xE2\xBD\xE1\x12\x95\x8C\xEEi\x84x\x84Z\x1B\xB3x\x8Aka\x06\xA0\x82\x01R\x7F\x9A\x91\xF4\xC1\x95E\xD6\xCD\x97 \xD4se\x91\xFEp\xED\xCF>3\xCB.V\xF2\x1F\xDC\x12D\xF3\xD2\xEFma\x06\xC0\x82\x01R\x7F\xBD\xF8,}%-i\xC6K\xD6\xFA\x8E\xE6j\xD9\xD3\x02A\x01i\x81\xE4X\x0E<.\xDCH\x04\xB7R6a\x06\xE0\x82\x01R\x7Fc\xBC;\x9E\x83@\xABH\xA6h(\xD7\xD9\xD7\xD5\xBE/_(\x06e\x19m%\xA3\x9CM\x014\\\xB9^a\x07\0\x82\x01R\x7F\xA9b\xE4\xBD}\x1F1o\x84W\x84\xE1\x15\xFF\x1050\xD8_\x9D\xFA\xCDc\x8A\xD4_\xBE\x93\x8B\xA8\\@a\x07 \x82\x01R\x7F\xB3\xF1\0\xA0\xF5\x06\xF6\xA6\xC8l\x10\xF1\x07\xABH\x11\xDD\xC7orQo\xCD\xFA\x8A\x0C\x9B\xD7\x1F\xF9\x12\xABa\x07@\x82\x01R\x7F\xE7\xE8\xDB\xC3\x89\x85\x15\x97\x0C\xA6\xFC\xE1\x909\xCA\"\xAE&8\xE4K$d\x1F\xD6\x10H\xB9M\xC2\xBE%a\x07`\x82\x01R\x01RV[`;\x81\x11a\x15\xE6W\x80`\x05\x1B\x90\x80\x82\x04` \x14\x90\x15\x17\x15a\x05#W` \x90a\x15\xE0a\x0C\x86V[\x01\x01Q\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsHeight out of bounds``\x1B`D\x82\x01R`d\x90\xFD[\x80a\x16.WPa\x01\0\x90V[_\x19\x81\x01\x81\x81\x11a\x05#Wa\x08A\x91\x19\x16a\x0BGV[\x91`\x05\x1B\x90\x80\x82\x10\x15a\x16\xA7W\x80\x82\x11a\0\xC7W\x91\x81\x015\x91\x03` \x81\x10a\x16\x96W[P`@Qa\x16\x90\x81a\x16\x82` \x82\x01\x94\x85\x91\x90` \x83\x01\x92RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x05\xABV[Q\x90 \x90V[_\x19\x90` \x03`\x03\x1B\x1B\x16_a\x16gV[PPP` a\x16\xB4a\x0C\x86V[\x01Q\x90V\xFE\xA2dipfsX\"\x12 \x1F\xFC\x9A\x10\xFE\x92\x1B\x8B\xBE\xBAaW\xA2\x90\x8C\x16~+B-#\x81\xDC\x9E\x03S\xB0\xC6\xC5\x08m\xFEdsolcC\0\x08\x1B\x003\xA2m\xC1\x88h\xF1\xEAW\xF3I\xA6\x80\x88y/=\xB3z\xF6\xFC\x05\xCB\xEBb\xCF7\x94~\xDE\xDF\x06\xE6", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361015610011575f80fd5b5f3560e01c8062aace9a146100835780631239acd91461007e5780637a96f48014610079578063813a1aaf146100745780638df828001461006f578063c050be001461006a5763faf7ba6a14610065575f80fd5b610485565b610441565b6101c2565b61017e565b610108565b6100cb565b346100c7575f3660031901126100c7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b346100c7575f3660031901126100c75760805f5460015460025460018060a01b036003541691604051938452602084015260408301526060820152f35b346100c75760403660031901126100c75760043560243567ffffffffffffffff81116100c757366023820112156100c757806004013567ffffffffffffffff81116100c75736602482840101116100c75761017a92602461016a930190610650565b6040519081529081906020820190565b0390f35b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c75760203660031901126100c757600480356101e55f548281811461074d565b6003546060906001600160a01b031660405163cb2773db60e01b815293849182905afa9081156103cd575f925f92610403575b5061022661022b929361078f565b6107a5565b805f556002549061023b82600155565b6040516361a93c8760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015292602084806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156103cd575f946103d2575b506102c684600255565b604051630b64d79b60e01b815260048101829052306024820152906020826044815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156103cd577fa26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e695610397935f9361039c575b50600380546001600160a01b0319166001600160a01b0385161790556040519586958693909594919260809360a0860197865260208601526040850152606084015260018060a01b0316910152565b0390a1005b6103bf91935060203d6020116103c6575b6103b781836105ab565b8101906107b3565b915f610348565b503d6103ad565b610627565b6103f591945060203d6020116103fc575b6103ed81836105ab565b810190610618565b925f6102bc565b503d6103e3565b610226935061022b925061042e9060603d60601161043a575b61042681836105ab565b81019061076b565b94919050939250610218565b503d61041c565b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c7575f3660031901126100c75760035460405163cb2773db60e01b815290606090829060049082906001600160a01b03165afa9081156103cd575f916104e0575b505f54604080519215158352602083019190915290f35b6104f9915060603d60601161043a5761042681836105ab565b50505f6104c9565b634e487b7160e01b5f52601160045260245ffd5b600201908160021161052357565b610501565b906040820180921161052357565b906020820180921161052357565b906010820180921161052357565b906008820180921161052357565b906004820180921161052357565b906002820180921161052357565b906001820180921161052357565b9190820180921161052357565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105cd57604052565b610597565b92919267ffffffffffffffff82116105cd57604051916105fc601f8201601f1916602001846105ab565b8294818452818301116100c7578281602093845f960137010152565b908160209103126100c7575190565b6040513d5f823e3d90fd5b1561063b575050565b6352faaeb760e11b5f5260045260245260445ffd5b61065f9092919260015461058a565b91600254831015610746576106d1602061067a3685856105d2565b80519082012060405163677087c960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101969096529491829081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103cd576107229461071d925f92610725575b50818114610632565b6107d2565b90565b61073f91925060203d6020116103fc576103ed81836105ab565b905f610714565b5050505f90565b15610756575050565b6304c9aca960e11b5f5260045260245260445ffd5b908160609103126100c757805180151581036100c757916040602083015192015190565b1561079657565b630ee145cb60e31b5f5260045ffd5b5f1981146105235760010190565b908160209103126100c757516001600160a01b03811681036100c75790565b610722916107df81610823565b60058111156107ee57916109e7565b506005916109e7565b60041981019190821161052357565b5f1981019190821161052357565b60011981019190821161052357565b8061082d57505f90565b5f1981019081116105235761084190610b47565b6101000361010081116105235790565b1561085857565b60405162461bcd60e51b815260206004820152601760248201527f447269766520736d616c6c6572207468616e206c6561660000000000000000006044820152606490fd5b156108a457565b60405162461bcd60e51b815260206004820152601860248201527f4472697665206c6172676572207468616e206d656d6f727900000000000000006044820152606490fd5b156108f057565b60405162461bcd60e51b815260206004820152601660248201527544617461206c6172676572207468616e20647269766560501b6044820152606490fd5b67ffffffffffffffff81116105cd5760051b60200190565b906109508261092e565b61095d60405191826105ab565b828152809261096e601f199161092e565b0190602036910137565b8051156109855760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156109855760209160051b010190565b156109b457565b60405162461bcd60e51b815260206004820152600b60248201526a39ba30b1b59032b93937b960a91b6044820152606490fd5b9091610a0c906109fa6005821015610851565b610a07604082111561089d565b6107f7565b908215610b3c5790610a38610a336001831b92610a2e8460051b8711156108e9565b610515565b610946565b925f92835b838110610a61575050505090610a586001610a5d93146109ad565b610978565b5190565b828160051b105f14610b045780610a7c610a8c928585611644565b610a868789610999565b526107a5565b92610a9784956107a5565b945b6001811615610aa9575092610a3d565b94610af881610ae6610ac6610ac0610aff95610806565b8b610999565b51610ad9610ad384610814565b8c610999565b515f5260205260405f2090565b610af2610ac083610814565b52610806565b9560011c90565b610a99565b92610a97610b33610b1486611622565b95610b1e876115ba565b610b28898b610999565b526001871b9061058a565b80951c956107a5565b5061072291506115ba565b8015610c7f575f906fffffffffffffffffffffffffffffffff19811615610c74575b6001600160c01b0319811615610c5b575b6001600160e01b0319811615610c42575b6001600160f01b0319811615610c29575b6001600160f81b0319811615610c10575b600f60fc1b811615610bf7575b600360fe1b811615610bde575b600160ff1b1615610bd55790565b6107229061057c565b90610beb610bf29161056e565b9160021b90565b610bc7565b90610c04610c0b91610560565b9160041b90565b610bba565b90610c1d610c2491610552565b9160081b90565b610bad565b90610c36610c3d91610544565b9160101b90565b610b9c565b90610c4f610c5691610536565b9160201b90565b610b8b565b90610c68610c6f91610528565b9160401b90565b610b7a565b60809150811b610b69565b5061010090565b60405190610c966107a0836105ab565b61078082527f31d0f66ab43019856780cb246cfd37b0c190d17111d5c016f19ba715ee622dc5610780837f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360208201527f633dc4d7da7256660a892f8f1604a44b5432649cc8ec5cb3ced4c4e6ac94dd1d60408201527f890740a8eb06ce9be422cb8da5cdafc2b58c0a5e24036c578de2a433c828ff7d60608201527f3b8ec09e026fdc305365dfc94e189a81b38c7597b3d941c279f042e8206e0bd860808201527fecd50eee38e386bd62be9bedb990706951b65fe053bd9d8a521af753d139e2da60a08201527fdefff6d330bb5403f63b14f33b578274160de3a50df4efecf0e0db73bcdd3da560c08201527f617bdd11f7c0a11f49db22f629387a12da7596f9d1704d7465177c63d88ec7d760e08201527f292c23a9aa1d8bea7e2435e555a4a60e379a5a35f3f452bae60121073fb6eead6101008201527fe1cea92ed99acdcb045a6726b2f87107e8a61620a232cf4d7d5b5766b3952e106101208201527f7ad66c0a68c72cb89e4fb4303841966e4062a76ab97451e3b9fb526a5ceb7f826101408201527fe026cc5a4aed3c22a58cbd3d2ac754c9352c5436f638042dca99034e836365166101608201527f3d04cffd8b46a874edf5cfae63077de85f849a660426697b06a829c70dd1409c6101808201527fad676aa337a485e4728a0b240d92b3ef7b3c372d06d189322bfd5f61f1e7203e6101a08201527fa2fca4a49658f9fab7aa63289c91b7c7b6c832a6d0e69334ff5b0a3483d09dab6101c08201527f4ebfd9cd7bca2505f7bef59cc1c12ecc708fff26ae4af19abe852afe9e20c8626101e08201527f2def10d13dd169f550f578bda343d9717a138562e0093b380a1120789d53cf106102008201527f776a31db34a1a0a7caaf862cffdfff1789297ffadc380bd3d39281d340abd3ad6102208201527fe2e7610b87a5fdf3a72ebe271287d923ab990eefac64b6e59d79f8b7e08c46e36102408201527f504364a5c6858bf98fff714ab5be9de19ed31a976860efbd0e772a2efe23e2e06102608201527f4f05f4acb83f5b65168d9fef89d56d4d77b8944015e6b1eed81b0238e2d0dba36102808201527f44a6d974c75b07423e1d6d33f481916fdd45830aea11b6347e700cd8b9f0767c6102a08201527fedf260291f734ddac396a956127dde4c34c0cfb8d8052f88ac139658ccf2d5076102c08201527f6075c657a105351e7f0fce53bc320113324a522e8fd52dc878c762551e01a46e6102e08201527f6ca6a3f763a9395f7da16014725ca7ee17e4815c0ff8119bf33f273dee11833b6103008201527f1c25ef10ffeb3c7d08aa707d17286e0b0d3cbcb50f1bd3b6523b63ba3b52dd0f6103208201527ffffc43bd08273ccf135fd3cacbeef055418e09eb728d727c4d5d5c556cdea7e36103408201527fc5ab8111456b1f28f3c7a0a604b4553ce905cb019c463ee159137af83c350b226103608201527f0ff273fcbf4ae0f2bd88d6cf319ff4004f8d7dca70d4ced4e74d2c74139739e66103808201527f7fa06ba11241ddd5efdc65d4e39c9f6991b74fd4b81b62230808216c876f827c6103a08201527f7e275adf313a996c7e2950cac67caba02a5ff925ebf9906b58949f3e77aec5b96103c08201527f8f6162fa308d2b3a15dc33cffac85f13ab349173121645aedf00f471663108be6103e08201527f78ccaaab73373552f207a63599de54d7d8d0c1805f86ce7da15818d09f4cff626104008201527fcf277fb80a82478460e8988570b718f1e083ceb76f7e271a1a1497e5975f53ae6104208201527f4bf6ffa2bc131204513289738567a68fa9f4827dac7fd3b3d1f2e94777d57f366104408201527fb49d61e8c2c894e12486176ab8f4d7069d6692fa6495541567872e7ecbddb7266104608201527f202b1014739f29b1d905d630ddeb8560a32bf23e666c8a1523a4a600227fef7c6104808201527f9e1d1ce5cdca9cdf40fa5786548b58eb19ddfd32395b4582983919099dbd15316104a08201527f13784d01e2fae904de62c6fbf9776979ca7a2777ae2632ee278d19aca30f890e6104c08201527f68c477f83a13a000ad2b5b3e50375b7c3ae782d987ba4b5a65376bbb97469fb36104e08201527f71e37864edf08740d592362cd24d0db067bf14cd3b97bd2a68e782adffb436556105008201527f88d0cc35e8abe7d6524569be8aa1a48bb23362326fdfefe961348bc96091c94c6105208201527f8545f2c1afdace5d87f06ce1d44bc0a2691aea4414d0ad640be0d9879c8374d96105408201527f2360c4480d69879eadd7ae508409f2f0ba83a2b0fe0da57b40008c064d2c397d6105608201527f31763a8e1dedb15ad0c8b88d437fef835aeb958292644810663dc1756550f22b6105808201527ffa4c9b1172ab5afebd159573e19e25169975242e10a2ed38dfc805232fb50a646105a08201527f3528594d65e9525233b39587174bcf0bba562d95b50b429914c7e0e8a9ae58f96105c08201527f1765922797ba721e8937c7470a26d5c2f141f3d4106447dab171fced7d652a696105e08201527ff0573e660ba01cff272a1c6f7927d73c94c85d380a84399867626d6429d48bae6106008201527f31682c19f715cd317da1a553ce384de6902fe26032fecc7de03e40502af05dce6106208201527fd50c6062bfcd7bbd0dbd68d1ddeeae095485720a1ce334e9e5e5153066f422606106408201527fe0bcfbd03fa4a619a5bc3cae15404f39b4b7bf5ddd5161ea642d13d23baef5456106608201527facb98b6fb1a5fdae0a5718d0b812e1de1412e44d875146acc1a7f7c3916c003a6106808201527fbb1ff291eb2e614a661d6730b502bae2bde112958cee698478845a1bb3788a6b6106a08201527f9a91f4c19545d6cd9720d4736591fe70edcf3e33cb2e56f21fdc1244f3d2ef6d6106c08201527fbdf82c7d252d69c64bd6fa8ee66ad9d30241016981e4580e3c2edc4804b752366106e08201527f63bc3b9e8340ab48a66828d7d9d7d5be2f5f280665196d25a39c4d01345cb95e6107008201527fa962e4bd7d1f316f845784e115ff103530d85f9dfacd638ad45fbe938ba85c406107208201527fb3f100a0f506f6a6c86c10f107ab4811ddc76f72516fcdfa8a0c9bd71ff912ab6107408201527fe7e8dbc3898515970ca6fce19039ca22ae2638e44b24641fd61048b94dc2be256107608201520152565b603b81116115e6578060051b9080820460201490151715610523576020906115e0610c86565b01015190565b60405162461bcd60e51b8152602060048201526014602482015273486569676874206f7574206f6620626f756e647360601b6044820152606490fd5b8061162e575061010090565b5f19810181811161052357610841911916610b47565b9160051b90808210156116a7578082116100c75791810135910360208110611696575b50604051611690816116826020820194859190602083019252565b03601f1981018352826105ab565b51902090565b5f199060200360031b1b165f611667565b50505060206116b4610c86565b01519056fea26469706673582212201ffc9a10fe921b8bbeba6157a2908c167e2b422d2381dc9e0353b0c6c5086dfe64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80b\xAA\xCE\x9A\x14a\0\x83W\x80c\x129\xAC\xD9\x14a\0~W\x80cz\x96\xF4\x80\x14a\0yW\x80c\x81:\x1A\xAF\x14a\0tW\x80c\x8D\xF8(\0\x14a\0oW\x80c\xC0P\xBE\0\x14a\0jWc\xFA\xF7\xBAj\x14a\0eW_\x80\xFD[a\x04\x85V[a\x04AV[a\x01\xC2V[a\x01~V[a\x01\x08V[a\0\xCBV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[_\x80\xFD[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x80_T`\x01T`\x02T`\x01\x80`\xA0\x1B\x03`\x03T\x16\x91`@Q\x93\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\xF3[4a\0\xC7W`@6`\x03\x19\x01\x12a\0\xC7W`\x045`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`#\x82\x01\x12\x15a\0\xC7W\x80`\x04\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`$\x82\x84\x01\x01\x11a\0\xC7Wa\x01z\x92`$a\x01j\x93\x01\x90a\x06PV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W` 6`\x03\x19\x01\x12a\0\xC7W`\x04\x805a\x01\xE5_T\x82\x81\x81\x14a\x07MV[`\x03T``\x90`\x01`\x01`\xA0\x1B\x03\x16`@Qc\xCB's\xDB`\xE0\x1B\x81R\x93\x84\x91\x82\x90Z\xFA\x90\x81\x15a\x03\xCDW_\x92_\x92a\x04\x03W[Pa\x02&a\x02+\x92\x93a\x07\x8FV[a\x07\xA5V[\x80_U`\x02T\x90a\x02;\x82`\x01UV[`@Qca\xA9<\x87`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R\x92` \x84\x80`$\x81\x01\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x93\x84\x15a\x03\xCDW_\x94a\x03\xD2W[Pa\x02\xC6\x84`\x02UV[`@Qc\x0Bd\xD7\x9B`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R0`$\x82\x01R\x90` \x82`D\x81_`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x90\x81\x15a\x03\xCDW\x7F\xA2m\xC1\x88h\xF1\xEAW\xF3I\xA6\x80\x88y/=\xB3z\xF6\xFC\x05\xCB\xEBb\xCF7\x94~\xDE\xDF\x06\xE6\x95a\x03\x97\x93_\x93a\x03\x9CW[P`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90U`@Q\x95\x86\x95\x86\x93\x90\x95\x94\x91\x92`\x80\x93`\xA0\x86\x01\x97\x86R` \x86\x01R`@\x85\x01R``\x84\x01R`\x01\x80`\xA0\x1B\x03\x16\x91\x01RV[\x03\x90\xA1\0[a\x03\xBF\x91\x93P` =` \x11a\x03\xC6W[a\x03\xB7\x81\x83a\x05\xABV[\x81\x01\x90a\x07\xB3V[\x91_a\x03HV[P=a\x03\xADV[a\x06'V[a\x03\xF5\x91\x94P` =` \x11a\x03\xFCW[a\x03\xED\x81\x83a\x05\xABV[\x81\x01\x90a\x06\x18V[\x92_a\x02\xBCV[P=a\x03\xE3V[a\x02&\x93Pa\x02+\x92Pa\x04.\x90``=``\x11a\x04:W[a\x04&\x81\x83a\x05\xABV[\x81\x01\x90a\x07kV[\x94\x91\x90P\x93\x92Pa\x02\x18V[P=a\x04\x1CV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x03T`@Qc\xCB's\xDB`\xE0\x1B\x81R\x90``\x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03\xCDW_\x91a\x04\xE0W[P_T`@\x80Q\x92\x15\x15\x83R` \x83\x01\x91\x90\x91R\x90\xF3[a\x04\xF9\x91P``=``\x11a\x04:Wa\x04&\x81\x83a\x05\xABV[PP_a\x04\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x02\x01\x90\x81`\x02\x11a\x05#WV[a\x05\x01V[\x90`@\x82\x01\x80\x92\x11a\x05#WV[\x90` \x82\x01\x80\x92\x11a\x05#WV[\x90`\x10\x82\x01\x80\x92\x11a\x05#WV[\x90`\x08\x82\x01\x80\x92\x11a\x05#WV[\x90`\x04\x82\x01\x80\x92\x11a\x05#WV[\x90`\x02\x82\x01\x80\x92\x11a\x05#WV[\x90`\x01\x82\x01\x80\x92\x11a\x05#WV[\x91\x90\x82\x01\x80\x92\x11a\x05#WV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x05\xCDW`@RV[a\x05\x97V[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x05\xCDW`@Q\x91a\x05\xFC`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x05\xABV[\x82\x94\x81\x84R\x81\x83\x01\x11a\0\xC7W\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x81` \x91\x03\x12a\0\xC7WQ\x90V[`@Q=_\x82>=\x90\xFD[\x15a\x06;WPPV[cR\xFA\xAE\xB7`\xE1\x1B_R`\x04R`$R`D_\xFD[a\x06_\x90\x92\x91\x92`\x01Ta\x05\x8AV[\x91`\x02T\x83\x10\x15a\x07FWa\x06\xD1` a\x06z6\x85\x85a\x05\xD2V[\x80Q\x90\x82\x01 `@Qcgp\x87\xC9`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R`$\x81\x01\x96\x90\x96R\x94\x91\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03\xCDWa\x07\"\x94a\x07\x1D\x92_\x92a\x07%W[P\x81\x81\x14a\x062V[a\x07\xD2V[\x90V[a\x07?\x91\x92P` =` \x11a\x03\xFCWa\x03\xED\x81\x83a\x05\xABV[\x90_a\x07\x14V[PPP_\x90V[\x15a\x07VWPPV[c\x04\xC9\xAC\xA9`\xE1\x1B_R`\x04R`$R`D_\xFD[\x90\x81``\x91\x03\x12a\0\xC7W\x80Q\x80\x15\x15\x81\x03a\0\xC7W\x91`@` \x83\x01Q\x92\x01Q\x90V[\x15a\x07\x96WV[c\x0E\xE1E\xCB`\xE3\x1B_R`\x04_\xFD[_\x19\x81\x14a\x05#W`\x01\x01\x90V[\x90\x81` \x91\x03\x12a\0\xC7WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0\xC7W\x90V[a\x07\"\x91a\x07\xDF\x81a\x08#V[`\x05\x81\x11\x15a\x07\xEEW\x91a\t\xE7V[P`\x05\x91a\t\xE7V[`\x04\x19\x81\x01\x91\x90\x82\x11a\x05#WV[_\x19\x81\x01\x91\x90\x82\x11a\x05#WV[`\x01\x19\x81\x01\x91\x90\x82\x11a\x05#WV[\x80a\x08-WP_\x90V[_\x19\x81\x01\x90\x81\x11a\x05#Wa\x08A\x90a\x0BGV[a\x01\0\x03a\x01\0\x81\x11a\x05#W\x90V[\x15a\x08XWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FDrive smaller than leaf\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xA4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FDrive larger than memory\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xF0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01RuData larger than drive`P\x1B`D\x82\x01R`d\x90\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x05\xCDW`\x05\x1B` \x01\x90V[\x90a\tP\x82a\t.V[a\t]`@Q\x91\x82a\x05\xABV[\x82\x81R\x80\x92a\tn`\x1F\x19\x91a\t.V[\x01\x90` 6\x91\x017V[\x80Q\x15a\t\x85W` \x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80Q\x82\x10\x15a\t\x85W` \x91`\x05\x1B\x01\x01\x90V[\x15a\t\xB4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj9\xBA0\xB1\xB5\x902\xB997\xB9`\xA9\x1B`D\x82\x01R`d\x90\xFD[\x90\x91a\n\x0C\x90a\t\xFA`\x05\x82\x10\x15a\x08QV[a\n\x07`@\x82\x11\x15a\x08\x9DV[a\x07\xF7V[\x90\x82\x15a\x0Ba\x01\xA0\x82\x01R\x7F\xA2\xFC\xA4\xA4\x96X\xF9\xFA\xB7\xAAc(\x9C\x91\xB7\xC7\xB6\xC82\xA6\xD0\xE6\x934\xFF[\n4\x83\xD0\x9D\xABa\x01\xC0\x82\x01R\x7FN\xBF\xD9\xCD{\xCA%\x05\xF7\xBE\xF5\x9C\xC1\xC1.\xCCp\x8F\xFF&\xAEJ\xF1\x9A\xBE\x85*\xFE\x9E \xC8ba\x01\xE0\x82\x01R\x7F-\xEF\x10\xD1=\xD1i\xF5P\xF5x\xBD\xA3C\xD9qz\x13\x85b\xE0\t;8\n\x11 x\x9DS\xCF\x10a\x02\0\x82\x01R\x7Fwj1\xDB4\xA1\xA0\xA7\xCA\xAF\x86,\xFF\xDF\xFF\x17\x89)\x7F\xFA\xDC8\x0B\xD3\xD3\x92\x81\xD3@\xAB\xD3\xADa\x02 \x82\x01R\x7F\xE2\xE7a\x0B\x87\xA5\xFD\xF3\xA7.\xBE'\x12\x87\xD9#\xAB\x99\x0E\xEF\xACd\xB6\xE5\x9Dy\xF8\xB7\xE0\x8CF\xE3a\x02@\x82\x01R\x7FPCd\xA5\xC6\x85\x8B\xF9\x8F\xFFqJ\xB5\xBE\x9D\xE1\x9E\xD3\x1A\x97h`\xEF\xBD\x0Ew*.\xFE#\xE2\xE0a\x02`\x82\x01R\x7FO\x05\xF4\xAC\xB8?[e\x16\x8D\x9F\xEF\x89\xD5mMw\xB8\x94@\x15\xE6\xB1\xEE\xD8\x1B\x028\xE2\xD0\xDB\xA3a\x02\x80\x82\x01R\x7FD\xA6\xD9t\xC7[\x07B>\x1Dm3\xF4\x81\x91o\xDDE\x83\n\xEA\x11\xB64~p\x0C\xD8\xB9\xF0v|a\x02\xA0\x82\x01R\x7F\xED\xF2`)\x1FsM\xDA\xC3\x96\xA9V\x12}\xDEL4\xC0\xCF\xB8\xD8\x05/\x88\xAC\x13\x96X\xCC\xF2\xD5\x07a\x02\xC0\x82\x01R\x7F`u\xC6W\xA1\x055\x1E\x7F\x0F\xCES\xBC2\x01\x132JR.\x8F\xD5-\xC8x\xC7bU\x1E\x01\xA4na\x02\xE0\x82\x01R\x7Fl\xA6\xA3\xF7c\xA99_}\xA1`\x14r\\\xA7\xEE\x17\xE4\x81\\\x0F\xF8\x11\x9B\xF3?'=\xEE\x11\x83;a\x03\0\x82\x01R\x7F\x1C%\xEF\x10\xFF\xEB<}\x08\xAAp}\x17(n\x0B\r<\xBC\xB5\x0F\x1B\xD3\xB6R;c\xBA;R\xDD\x0Fa\x03 \x82\x01R\x7F\xFF\xFCC\xBD\x08'<\xCF\x13_\xD3\xCA\xCB\xEE\xF0UA\x8E\t\xEBr\x8Dr|M]\\Ul\xDE\xA7\xE3a\x03@\x82\x01R\x7F\xC5\xAB\x81\x11Ek\x1F(\xF3\xC7\xA0\xA6\x04\xB4U<\xE9\x05\xCB\x01\x9CF>\xE1Y\x13z\xF8<5\x0B\"a\x03`\x82\x01R\x7F\x0F\xF2s\xFC\xBFJ\xE0\xF2\xBD\x88\xD6\xCF1\x9F\xF4\0O\x8D}\xCAp\xD4\xCE\xD4\xE7M,t\x13\x979\xE6a\x03\x80\x82\x01R\x7F\x7F\xA0k\xA1\x12A\xDD\xD5\xEF\xDCe\xD4\xE3\x9C\x9Fi\x91\xB7O\xD4\xB8\x1Bb#\x08\x08!l\x87o\x82|a\x03\xA0\x82\x01R\x7F~'Z\xDF1:\x99l~)P\xCA\xC6|\xAB\xA0*_\xF9%\xEB\xF9\x90kX\x94\x9F>w\xAE\xC5\xB9a\x03\xC0\x82\x01R\x7F\x8Fab\xFA0\x8D+:\x15\xDC3\xCF\xFA\xC8_\x13\xAB4\x91s\x12\x16E\xAE\xDF\0\xF4qf1\x08\xBEa\x03\xE0\x82\x01R\x7Fx\xCC\xAA\xABs75R\xF2\x07\xA65\x99\xDET\xD7\xD8\xD0\xC1\x80_\x86\xCE}\xA1X\x18\xD0\x9FL\xFFba\x04\0\x82\x01R\x7F\xCF'\x7F\xB8\n\x82G\x84`\xE8\x98\x85p\xB7\x18\xF1\xE0\x83\xCE\xB7o~'\x1A\x1A\x14\x97\xE5\x97_S\xAEa\x04 \x82\x01R\x7FK\xF6\xFF\xA2\xBC\x13\x12\x04Q2\x89s\x85g\xA6\x8F\xA9\xF4\x82}\xAC\x7F\xD3\xB3\xD1\xF2\xE9Gw\xD5\x7F6a\x04@\x82\x01R\x7F\xB4\x9Da\xE8\xC2\xC8\x94\xE1$\x86\x17j\xB8\xF4\xD7\x06\x9Df\x92\xFAd\x95T\x15g\x87.~\xCB\xDD\xB7&a\x04`\x82\x01R\x7F +\x10\x14s\x9F)\xB1\xD9\x05\xD60\xDD\xEB\x85`\xA3+\xF2>fl\x8A\x15#\xA4\xA6\0\"\x7F\xEF|a\x04\x80\x82\x01R\x7F\x9E\x1D\x1C\xE5\xCD\xCA\x9C\xDF@\xFAW\x86T\x8BX\xEB\x19\xDD\xFD29[E\x82\x989\x19\t\x9D\xBD\x151a\x04\xA0\x82\x01R\x7F\x13xM\x01\xE2\xFA\xE9\x04\xDEb\xC6\xFB\xF9wiy\xCAz'w\xAE&2\xEE'\x8D\x19\xAC\xA3\x0F\x89\x0Ea\x04\xC0\x82\x01R\x7Fh\xC4w\xF8:\x13\xA0\0\xAD+[>P7[|:\xE7\x82\xD9\x87\xBAKZe7k\xBB\x97F\x9F\xB3a\x04\xE0\x82\x01R\x7Fq\xE3xd\xED\xF0\x87@\xD5\x926,\xD2M\r\xB0g\xBF\x14\xCD;\x97\xBD*h\xE7\x82\xAD\xFF\xB46Ua\x05\0\x82\x01R\x7F\x88\xD0\xCC5\xE8\xAB\xE7\xD6REi\xBE\x8A\xA1\xA4\x8B\xB23b2o\xDF\xEF\xE9a4\x8B\xC9`\x91\xC9La\x05 \x82\x01R\x7F\x85E\xF2\xC1\xAF\xDA\xCE]\x87\xF0l\xE1\xD4K\xC0\xA2i\x1A\xEAD\x14\xD0\xADd\x0B\xE0\xD9\x87\x9C\x83t\xD9a\x05@\x82\x01R\x7F#`\xC4H\ri\x87\x9E\xAD\xD7\xAEP\x84\t\xF2\xF0\xBA\x83\xA2\xB0\xFE\r\xA5{@\0\x8C\x06M,9}a\x05`\x82\x01R\x7F1v:\x8E\x1D\xED\xB1Z\xD0\xC8\xB8\x8DC\x7F\xEF\x83Z\xEB\x95\x82\x92dH\x10f=\xC1ueP\xF2+a\x05\x80\x82\x01R\x7F\xFAL\x9B\x11r\xABZ\xFE\xBD\x15\x95s\xE1\x9E%\x16\x99u$.\x10\xA2\xED8\xDF\xC8\x05#/\xB5\nda\x05\xA0\x82\x01R\x7F5(YMe\xE9RR3\xB3\x95\x87\x17K\xCF\x0B\xBAV-\x95\xB5\x0BB\x99\x14\xC7\xE0\xE8\xA9\xAEX\xF9a\x05\xC0\x82\x01R\x7F\x17e\x92'\x97\xBAr\x1E\x897\xC7G\n&\xD5\xC2\xF1A\xF3\xD4\x10dG\xDA\xB1q\xFC\xED}e*ia\x05\xE0\x82\x01R\x7F\xF0W>f\x0B\xA0\x1C\xFF'*\x1Coy'\xD7<\x94\xC8]8\n\x849\x98gbmd)\xD4\x8B\xAEa\x06\0\x82\x01R\x7F1h,\x19\xF7\x15\xCD1}\xA1\xA5S\xCE8M\xE6\x90/\xE2`2\xFE\xCC}\xE0>@P*\xF0]\xCEa\x06 \x82\x01R\x7F\xD5\x0C`b\xBF\xCD{\xBD\r\xBDh\xD1\xDD\xEE\xAE\tT\x85r\n\x1C\xE34\xE9\xE5\xE5\x150f\xF4\"`a\x06@\x82\x01R\x7F\xE0\xBC\xFB\xD0?\xA4\xA6\x19\xA5\xBC<\xAE\x15@O9\xB4\xB7\xBF]\xDDQa\xEAd-\x13\xD2;\xAE\xF5Ea\x06`\x82\x01R\x7F\xAC\xB9\x8Bo\xB1\xA5\xFD\xAE\nW\x18\xD0\xB8\x12\xE1\xDE\x14\x12\xE4M\x87QF\xAC\xC1\xA7\xF7\xC3\x91l\0:a\x06\x80\x82\x01R\x7F\xBB\x1F\xF2\x91\xEB.aJf\x1Dg0\xB5\x02\xBA\xE2\xBD\xE1\x12\x95\x8C\xEEi\x84x\x84Z\x1B\xB3x\x8Aka\x06\xA0\x82\x01R\x7F\x9A\x91\xF4\xC1\x95E\xD6\xCD\x97 \xD4se\x91\xFEp\xED\xCF>3\xCB.V\xF2\x1F\xDC\x12D\xF3\xD2\xEFma\x06\xC0\x82\x01R\x7F\xBD\xF8,}%-i\xC6K\xD6\xFA\x8E\xE6j\xD9\xD3\x02A\x01i\x81\xE4X\x0E<.\xDCH\x04\xB7R6a\x06\xE0\x82\x01R\x7Fc\xBC;\x9E\x83@\xABH\xA6h(\xD7\xD9\xD7\xD5\xBE/_(\x06e\x19m%\xA3\x9CM\x014\\\xB9^a\x07\0\x82\x01R\x7F\xA9b\xE4\xBD}\x1F1o\x84W\x84\xE1\x15\xFF\x1050\xD8_\x9D\xFA\xCDc\x8A\xD4_\xBE\x93\x8B\xA8\\@a\x07 \x82\x01R\x7F\xB3\xF1\0\xA0\xF5\x06\xF6\xA6\xC8l\x10\xF1\x07\xABH\x11\xDD\xC7orQo\xCD\xFA\x8A\x0C\x9B\xD7\x1F\xF9\x12\xABa\x07@\x82\x01R\x7F\xE7\xE8\xDB\xC3\x89\x85\x15\x97\x0C\xA6\xFC\xE1\x909\xCA\"\xAE&8\xE4K$d\x1F\xD6\x10H\xB9M\xC2\xBE%a\x07`\x82\x01R\x01RV[`;\x81\x11a\x15\xE6W\x80`\x05\x1B\x90\x80\x82\x04` \x14\x90\x15\x17\x15a\x05#W` \x90a\x15\xE0a\x0C\x86V[\x01\x01Q\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsHeight out of bounds``\x1B`D\x82\x01R`d\x90\xFD[\x80a\x16.WPa\x01\0\x90V[_\x19\x81\x01\x81\x81\x11a\x05#Wa\x08A\x91\x19\x16a\x0BGV[\x91`\x05\x1B\x90\x80\x82\x10\x15a\x16\xA7W\x80\x82\x11a\0\xC7W\x91\x81\x015\x91\x03` \x81\x10a\x16\x96W[P`@Qa\x16\x90\x81a\x16\x82` \x82\x01\x94\x85\x91\x90` \x83\x01\x92RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x05\xABV[Q\x90 \x90V[_\x19\x90` \x03`\x03\x1B\x1B\x16_a\x16gV[PPP` a\x16\xB4a\x0C\x86V[\x01Q\x90V\xFE\xA2dipfsX\"\x12 \x1F\xFC\x9A\x10\xFE\x92\x1B\x8B\xBE\xBAaW\xA2\x90\x8C\x16~+B-#\x81\xDC\x9E\x03S\xB0\xC6\xC5\x08m\xFEdsolcC\0\x08\x1B\x003", + ); + /**Custom error with signature `IncorrectEpochNumber(uint256,uint256)` and selector `0x09935952`. +```solidity +error IncorrectEpochNumber(uint256 received, uint256 actual); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IncorrectEpochNumber { + pub received: alloy::sol_types::private::primitives::aliases::U256, + pub actual: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectEpochNumber) -> Self { + (value.received, value.actual) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectEpochNumber { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + received: tuple.0, + actual: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectEpochNumber { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectEpochNumber(uint256,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 147u8, 89u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.received), + as alloy_sol_types::SolType>::tokenize(&self.actual), + ) + } + } + }; + /**Custom error with signature `InputHashMismatch(bytes32,bytes32)` and selector `0xa5f55d6e`. +```solidity +error InputHashMismatch(bytes32 fromReceivedInput, bytes32 fromInputBox); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputHashMismatch { + pub fromReceivedInput: alloy::sol_types::private::FixedBytes<32>, + pub fromInputBox: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputHashMismatch) -> Self { + (value.fromReceivedInput, value.fromInputBox) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputHashMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromReceivedInput: tuple.0, + fromInputBox: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputHashMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputHashMismatch(bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [165u8, 245u8, 93u8, 110u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.fromReceivedInput), + as alloy_sol_types::SolType>::tokenize(&self.fromInputBox), + ) + } + } + }; + /**Custom error with signature `TournamentNotFinishedYet()` and selector `0x770a2e58`. +```solidity +error TournamentNotFinishedYet(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentNotFinishedYet {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: TournamentNotFinishedYet) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for TournamentNotFinishedYet { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentNotFinishedYet { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentNotFinishedYet()"; + const SELECTOR: [u8; 4] = [119u8, 10u8, 46u8, 88u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `ConsensusCreation(address,address,address)` and selector `0xaf68463e16cb5595a44214bea8d366ecf7cd3410269c50f92c104b50a7829daa`. +```solidity +event ConsensusCreation(address inputBox, address appContract, address tournamentFactory); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ConsensusCreation { + #[allow(missing_docs)] + pub inputBox: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub appContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub tournamentFactory: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ConsensusCreation { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ConsensusCreation(address,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 175u8, + 104u8, + 70u8, + 62u8, + 22u8, + 203u8, + 85u8, + 149u8, + 164u8, + 66u8, + 20u8, + 190u8, + 168u8, + 211u8, + 102u8, + 236u8, + 247u8, + 205u8, + 52u8, + 16u8, + 38u8, + 156u8, + 80u8, + 249u8, + 44u8, + 16u8, + 75u8, + 80u8, + 167u8, + 130u8, + 157u8, + 170u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + inputBox: data.0, + appContract: data.1, + tournamentFactory: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.inputBox, + ), + ::tokenize( + &self.appContract, + ), + ::tokenize( + &self.tournamentFactory, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ConsensusCreation { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ConsensusCreation> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ConsensusCreation) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EpochSealed(uint256,uint256,uint256,bytes32,address)` and selector `0xa26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e6`. +```solidity +event EpochSealed(uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, Machine.Hash initialMachineStateHash, address tournament); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct EpochSealed { + #[allow(missing_docs)] + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub inputIndexLowerBound: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub inputIndexUpperBound: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub initialMachineStateHash: ::RustType, + #[allow(missing_docs)] + pub tournament: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EpochSealed { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + Machine::Hash, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EpochSealed(uint256,uint256,uint256,bytes32,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 162u8, + 109u8, + 193u8, + 136u8, + 104u8, + 241u8, + 234u8, + 87u8, + 243u8, + 73u8, + 166u8, + 128u8, + 136u8, + 121u8, + 47u8, + 61u8, + 179u8, + 122u8, + 246u8, + 252u8, + 5u8, + 203u8, + 235u8, + 98u8, + 207u8, + 55u8, + 148u8, + 126u8, + 222u8, + 223u8, + 6u8, + 230u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + epochNumber: data.0, + inputIndexLowerBound: data.1, + inputIndexUpperBound: data.2, + initialMachineStateHash: data.3, + tournament: data.4, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.epochNumber), + as alloy_sol_types::SolType>::tokenize(&self.inputIndexLowerBound), + as alloy_sol_types::SolType>::tokenize(&self.inputIndexUpperBound), + ::tokenize( + &self.initialMachineStateHash, + ), + ::tokenize( + &self.tournament, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EpochSealed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EpochSealed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EpochSealed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address inputBox, address appContract, address tournamentFactory, Machine.Hash initialMachineStateHash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub inputBox: alloy::sol_types::private::Address, + pub appContract: alloy::sol_types::private::Address, + pub tournamentFactory: alloy::sol_types::private::Address, + pub initialMachineStateHash: ::RustType, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + Machine::Hash, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value.inputBox, + value.appContract, + value.tournamentFactory, + value.initialMachineStateHash, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + inputBox: tuple.0, + appContract: tuple.1, + tournamentFactory: tuple.2, + initialMachineStateHash: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + Machine::Hash, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.inputBox, + ), + ::tokenize( + &self.appContract, + ), + ::tokenize( + &self.tournamentFactory, + ), + ::tokenize( + &self.initialMachineStateHash, + ), + ) + } + } + }; + /**Function with signature `canSettle()` and selector `0xfaf7ba6a`. +```solidity +function canSettle() external view returns (bool isFinished, uint256 epochNumber); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSettleCall {} + ///Container type for the return parameters of the [`canSettle()`](canSettleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSettleReturn { + pub isFinished: bool, + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canSettleCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSettleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + bool, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canSettleReturn) -> Self { + (value.isFinished, value.epochNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSettleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + isFinished: tuple.0, + epochNumber: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canSettleCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canSettleReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canSettle()"; + const SELECTOR: [u8; 4] = [250u8, 247u8, 186u8, 106u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getApplicationContract()` and selector `0xc050be00`. +```solidity +function getApplicationContract() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApplicationContractCall {} + ///Container type for the return parameters of the [`getApplicationContract()`](getApplicationContractCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApplicationContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getApplicationContractCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getApplicationContractCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getApplicationContractReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getApplicationContractReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApplicationContractCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApplicationContractReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApplicationContract()"; + const SELECTOR: [u8; 4] = [192u8, 80u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentSealedEpoch()` and selector `0x1239acd9`. +```solidity +function getCurrentSealedEpoch() external view returns (uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, address tournament); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentSealedEpochCall {} + ///Container type for the return parameters of the [`getCurrentSealedEpoch()`](getCurrentSealedEpochCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentSealedEpochReturn { + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + pub inputIndexLowerBound: alloy::sol_types::private::primitives::aliases::U256, + pub inputIndexUpperBound: alloy::sol_types::private::primitives::aliases::U256, + pub tournament: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getCurrentSealedEpochCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getCurrentSealedEpochCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getCurrentSealedEpochReturn) -> Self { + ( + value.epochNumber, + value.inputIndexLowerBound, + value.inputIndexUpperBound, + value.tournament, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getCurrentSealedEpochReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + epochNumber: tuple.0, + inputIndexLowerBound: tuple.1, + inputIndexUpperBound: tuple.2, + tournament: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentSealedEpochCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentSealedEpochReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentSealedEpoch()"; + const SELECTOR: [u8; 4] = [18u8, 57u8, 172u8, 217u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getInputBox()` and selector `0x00aace9a`. +```solidity +function getInputBox() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getInputBoxCall {} + ///Container type for the return parameters of the [`getInputBox()`](getInputBoxCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getInputBoxReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getInputBoxCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getInputBoxCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getInputBoxReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getInputBoxReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getInputBoxCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getInputBoxReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getInputBox()"; + const SELECTOR: [u8; 4] = [0u8, 170u8, 206u8, 154u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getTournamentFactory()` and selector `0x813a1aaf`. +```solidity +function getTournamentFactory() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTournamentFactoryCall {} + ///Container type for the return parameters of the [`getTournamentFactory()`](getTournamentFactoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTournamentFactoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getTournamentFactoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getTournamentFactoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getTournamentFactoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getTournamentFactoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTournamentFactoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTournamentFactoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTournamentFactory()"; + const SELECTOR: [u8; 4] = [129u8, 58u8, 26u8, 175u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `provideMerkleRootOfInput(uint256,bytes)` and selector `0x7a96f480`. +```solidity +function provideMerkleRootOfInput(uint256 inputIndexWithinEpoch, bytes memory input) external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct provideMerkleRootOfInputCall { + pub inputIndexWithinEpoch: alloy::sol_types::private::primitives::aliases::U256, + pub input: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`provideMerkleRootOfInput(uint256,bytes)`](provideMerkleRootOfInputCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct provideMerkleRootOfInputReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: provideMerkleRootOfInputCall) -> Self { + (value.inputIndexWithinEpoch, value.input) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for provideMerkleRootOfInputCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + inputIndexWithinEpoch: tuple.0, + input: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: provideMerkleRootOfInputReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for provideMerkleRootOfInputReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for provideMerkleRootOfInputCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = provideMerkleRootOfInputReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "provideMerkleRootOfInput(uint256,bytes)"; + const SELECTOR: [u8; 4] = [122u8, 150u8, 244u8, 128u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.inputIndexWithinEpoch, + ), + ::tokenize( + &self.input, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `settle(uint256)` and selector `0x8df82800`. +```solidity +function settle(uint256 epochNumber) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct settleCall { + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`settle(uint256)`](settleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct settleReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: settleCall) -> Self { + (value.epochNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for settleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { epochNumber: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: settleReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for settleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for settleCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = settleReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "settle(uint256)"; + const SELECTOR: [u8; 4] = [141u8, 248u8, 40u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.epochNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DaveConsensus`](self) function calls. + pub enum DaveConsensusCalls { + canSettle(canSettleCall), + getApplicationContract(getApplicationContractCall), + getCurrentSealedEpoch(getCurrentSealedEpochCall), + getInputBox(getInputBoxCall), + getTournamentFactory(getTournamentFactoryCall), + provideMerkleRootOfInput(provideMerkleRootOfInputCall), + settle(settleCall), + } + #[automatically_derived] + impl DaveConsensusCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 170u8, 206u8, 154u8], + [18u8, 57u8, 172u8, 217u8], + [122u8, 150u8, 244u8, 128u8], + [129u8, 58u8, 26u8, 175u8], + [141u8, 248u8, 40u8, 0u8], + [192u8, 80u8, 190u8, 0u8], + [250u8, 247u8, 186u8, 106u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DaveConsensusCalls { + const NAME: &'static str = "DaveConsensusCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::canSettle(_) => { + ::SELECTOR + } + Self::getApplicationContract(_) => { + ::SELECTOR + } + Self::getCurrentSealedEpoch(_) => { + ::SELECTOR + } + Self::getInputBox(_) => { + ::SELECTOR + } + Self::getTournamentFactory(_) => { + ::SELECTOR + } + Self::provideMerkleRootOfInput(_) => { + ::SELECTOR + } + Self::settle(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn getInputBox( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getInputBox) + } + getInputBox + }, + { + fn getCurrentSealedEpoch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getCurrentSealedEpoch) + } + getCurrentSealedEpoch + }, + { + fn provideMerkleRootOfInput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::provideMerkleRootOfInput) + } + provideMerkleRootOfInput + }, + { + fn getTournamentFactory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getTournamentFactory) + } + getTournamentFactory + }, + { + fn settle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::settle) + } + settle + }, + { + fn getApplicationContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getApplicationContract) + } + getApplicationContract + }, + { + fn canSettle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::canSettle) + } + canSettle + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::canSettle(inner) => { + ::abi_encoded_size(inner) + } + Self::getApplicationContract(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentSealedEpoch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getInputBox(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTournamentFactory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::provideMerkleRootOfInput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::settle(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::canSettle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApplicationContract(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentSealedEpoch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getInputBox(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTournamentFactory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::provideMerkleRootOfInput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::settle(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`DaveConsensus`](self) custom errors. + pub enum DaveConsensusErrors { + IncorrectEpochNumber(IncorrectEpochNumber), + InputHashMismatch(InputHashMismatch), + TournamentNotFinishedYet(TournamentNotFinishedYet), + } + #[automatically_derived] + impl DaveConsensusErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [9u8, 147u8, 89u8, 82u8], + [119u8, 10u8, 46u8, 88u8], + [165u8, 245u8, 93u8, 110u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DaveConsensusErrors { + const NAME: &'static str = "DaveConsensusErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IncorrectEpochNumber(_) => { + ::SELECTOR + } + Self::InputHashMismatch(_) => { + ::SELECTOR + } + Self::TournamentNotFinishedYet(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn IncorrectEpochNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusErrors::IncorrectEpochNumber) + } + IncorrectEpochNumber + }, + { + fn TournamentNotFinishedYet( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusErrors::TournamentNotFinishedYet) + } + TournamentNotFinishedYet + }, + { + fn InputHashMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusErrors::InputHashMismatch) + } + InputHashMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IncorrectEpochNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputHashMismatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentNotFinishedYet(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IncorrectEpochNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputHashMismatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentNotFinishedYet(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DaveConsensus`](self) events. + pub enum DaveConsensusEvents { + ConsensusCreation(ConsensusCreation), + EpochSealed(EpochSealed), + } + #[automatically_derived] + impl DaveConsensusEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 162u8, + 109u8, + 193u8, + 136u8, + 104u8, + 241u8, + 234u8, + 87u8, + 243u8, + 73u8, + 166u8, + 128u8, + 136u8, + 121u8, + 47u8, + 61u8, + 179u8, + 122u8, + 246u8, + 252u8, + 5u8, + 203u8, + 235u8, + 98u8, + 207u8, + 55u8, + 148u8, + 126u8, + 222u8, + 223u8, + 6u8, + 230u8, + ], + [ + 175u8, + 104u8, + 70u8, + 62u8, + 22u8, + 203u8, + 85u8, + 149u8, + 164u8, + 66u8, + 20u8, + 190u8, + 168u8, + 211u8, + 102u8, + 236u8, + 247u8, + 205u8, + 52u8, + 16u8, + 38u8, + 156u8, + 80u8, + 249u8, + 44u8, + 16u8, + 75u8, + 80u8, + 167u8, + 130u8, + 157u8, + 170u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for DaveConsensusEvents { + const NAME: &'static str = "DaveConsensusEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ConsensusCreation) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::EpochSealed) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DaveConsensusEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ConsensusCreation(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EpochSealed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ConsensusCreation(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EpochSealed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DaveConsensus`](self) contract instance. + +See the [wrapper's documentation](`DaveConsensusInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DaveConsensusInstance { + DaveConsensusInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DaveConsensusInstance::< + T, + P, + N, + >::deploy( + provider, + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> alloy_contract::RawCallBuilder { + DaveConsensusInstance::< + T, + P, + N, + >::deploy_builder( + provider, + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + ) + } + /**A [`DaveConsensus`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DaveConsensus`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DaveConsensusInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DaveConsensusInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DaveConsensusInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DaveConsensusInstance { + /**Creates a new wrapper around an on-chain [`DaveConsensus`](self) contract instance. + +See the [wrapper's documentation](`DaveConsensusInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DaveConsensusInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DaveConsensusInstance { + DaveConsensusInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DaveConsensusInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`canSettle`] function. + pub fn canSettle( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&canSettleCall {}) + } + ///Creates a new call builder for the [`getApplicationContract`] function. + pub fn getApplicationContract( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApplicationContractCall {}) + } + ///Creates a new call builder for the [`getCurrentSealedEpoch`] function. + pub fn getCurrentSealedEpoch( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentSealedEpochCall {}) + } + ///Creates a new call builder for the [`getInputBox`] function. + pub fn getInputBox( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getInputBoxCall {}) + } + ///Creates a new call builder for the [`getTournamentFactory`] function. + pub fn getTournamentFactory( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTournamentFactoryCall {}) + } + ///Creates a new call builder for the [`provideMerkleRootOfInput`] function. + pub fn provideMerkleRootOfInput( + &self, + inputIndexWithinEpoch: alloy::sol_types::private::primitives::aliases::U256, + input: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &provideMerkleRootOfInputCall { + inputIndexWithinEpoch, + input, + }, + ) + } + ///Creates a new call builder for the [`settle`] function. + pub fn settle( + &self, + epochNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&settleCall { epochNumber }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DaveConsensusInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`ConsensusCreation`] event. + pub fn ConsensusCreation_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`EpochSealed`] event. + pub fn EpochSealed_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/cartesi-rollups/contracts/bindings-rs/src/contract/mod.rs b/cartesi-rollups/contracts/bindings-rs/src/contract/mod.rs new file mode 100644 index 00000000..965cd571 --- /dev/null +++ b/cartesi-rollups/contracts/bindings-rs/src/contract/mod.rs @@ -0,0 +1,6 @@ +#![allow(unused_imports, clippy::all, rustdoc::all)] +//! This module contains the sol! generated bindings for solidity contracts. +//! This is autogenerated code. +//! Do not manually edit these files. +//! These files may be overwritten by the codegen system at any time. +pub mod daveconsensus; diff --git a/cartesi-rollups/contract-bindings/src/lib.rs b/cartesi-rollups/contracts/bindings-rs/src/lib.rs similarity index 100% rename from cartesi-rollups/contract-bindings/src/lib.rs rename to cartesi-rollups/contracts/bindings-rs/src/lib.rs diff --git a/cartesi-rollups/contracts/justfile b/cartesi-rollups/contracts/justfile new file mode 100644 index 00000000..3a6bde69 --- /dev/null +++ b/cartesi-rollups/contracts/justfile @@ -0,0 +1,21 @@ +# Variables +BINDINGS_DIR := "./bindings-rs/src/contract" +SRC_DIR := "." +BINDINGS_FILTER := "DaveConsensus" + +default: help + +help: + @echo " clean - clean the generated bindings" + @echo " bind - generate Rust bindings from Solidity code" + +build: + forge build + +clean-bindings: + rm -rf {{BINDINGS_DIR}} + +bind: clean-bindings + forge bind --alloy --select {{BINDINGS_FILTER}} \ + --module --bindings-path {{BINDINGS_DIR}} \ + --root {{SRC_DIR}} diff --git a/cartesi-rollups/node/Cargo.toml b/cartesi-rollups/node/Cargo.toml deleted file mode 100644 index 369ac139..00000000 --- a/cartesi-rollups/node/Cargo.toml +++ /dev/null @@ -1,49 +0,0 @@ -[workspace] -resolver = "2" -members = [ - "blockchain-reader", - "dave-rollups", - "epoch-manager", - "machine-runner", - "state-manager", -] - -[workspace.package] -version = "0.1.0" - -authors = [ - "Gabriel Coutinho de Paula ", - "Stephen Chen ", -] -description = "A Cartesi validator reference implementation" -edition = "2021" -homepage = "https://github.com/cartesi/dave" -license-file = "LICENSE" -readme = "README.md" -repository = "https://github.com/cartesi/dave" - -[workspace.dependencies] -rollups-blockchain-reader = { version = "0.1", path = "blockchain-reader" } -rollups-compute-runner = { version = "0.1", path = "compute-runner" } -rollups-epoch-manager = { version = "0.1", path = "epoch-manager" } -rollups-machine-runner = { version = "0.1", path = "machine-runner" } -rollups-state-manager = { version = "0.1", path = "state-manager" } - -cartesi-machine = { path = "../../machine/rust-bindings/cartesi-machine" } -cartesi-dave-arithmetic = { path = "../../common-rs/arithmetic" } -cartesi-dave-contracts = { path = "../contract-bindings" } -cartesi-dave-merkle = { path = "../../common-rs/merkle" } -cartesi-prt-core = { path = "../../prt/client-rs" } - -alloy = { version = "0.8.0", features = ["sol-types", "contract", "network", "reqwest", "signers", "signer-local"] } -anyhow = "1.0" -async-recursion = "1" -async-trait = "0.1.74" -cartesi-rollups-contracts = "2.0.0-rc.13" -clap = { version = "4.5.7", features = ["derive", "env"] } -clap_derive = "=4.5.13" -futures = "0.3" -log = "0.4" -num-traits = "0.2.19" -thiserror = "1.0" -tokio = { version = "1", features = ["full"] } diff --git a/cartesi-rollups/node/blockchain-reader/Cargo.toml b/cartesi-rollups/node/blockchain-reader/Cargo.toml index d398ae36..3bad0823 100644 --- a/cartesi-rollups/node/blockchain-reader/Cargo.toml +++ b/cartesi-rollups/node/blockchain-reader/Cargo.toml @@ -19,7 +19,6 @@ alloy = { workspace = true } alloy-rpc-types-eth = "0.8.0" async-recursion = { workspace = true } clap = { workspace = true } -clap_derive = { workspace = true } log = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true } diff --git a/common-rs/Cargo.toml b/common-rs/Cargo.toml deleted file mode 100644 index 1e2256e0..00000000 --- a/common-rs/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = [ - "arithmetic", - "merkle", -] - -[workspace.package] -version = "0.1.0" - -authors = [ - "Gabriel Coutinho de Paula ", - "Algebraic Sofia ", - "Stephen Chen ", -] -description = "A Cartesi validator reference implementation" -edition = "2021" -homepage = "https://github.com/cartesi/dave" -license-file = "LICENSE" -readme = "README.md" -repository = "https://github.com/cartesi/dave" diff --git a/common-rs/merkle/Cargo.toml b/common-rs/merkle/Cargo.toml index c523dc6f..2cc1af05 100644 --- a/common-rs/merkle/Cargo.toml +++ b/common-rs/merkle/Cargo.toml @@ -11,8 +11,9 @@ readme = { workspace = true } repository = { workspace = true } [dependencies] -alloy = { version = "0.8.0", features = ["sol-types"] } +alloy = { workspace = true, features = ["sol-types"] } +ruint = { workspace = true } + hex = "0.4" -ruint = "1.12" sha3 = "0.10" thiserror = "1.0" diff --git a/justfile b/justfile new file mode 100644 index 00000000..2041cf75 --- /dev/null +++ b/justfile @@ -0,0 +1,30 @@ +build-consensus: + just -f ./cartesi-rollups/contracts/justfile build +clean-consensus-bindings: + just -f ./cartesi-rollups/contracts/justfile clean +bind-consensus: + just -f ./cartesi-rollups/contracts/justfile bind + +build-prt: + just -f ./prt/contracts/justfile build +clean-prt-bindings: + just -f ./prt/contracts/justfile clean +bind-prt: + just -f ./prt/contracts/justfile bind + +build-smart-contracts: build-consensus build-prt +bind: bind-consensus bind-prt +clean-bindings: clean-consensus-bindings clean-prt-bindings + +format-rust-workspace: + cargo fmt +check-rust-workspace: bind + cargo check +test-rust-workspace: bind + cargo test +build-rust-workspace: bind + cargo build +build-release-rust-workspace: bind + cargo build --release + +build: build-smart-contracts build-prt bind build-rust-workspace diff --git a/prt/Makefile b/prt/Makefile deleted file mode 100644 index 5dc11306..00000000 --- a/prt/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -BINDINGS_DIR := ./contract-bindings/src/contract -SRC_DIR := ./contracts -BINDINGS_FILTER := '^[^I].+TournamentFactory|LeafTournament|RootTournament|^Tournament$$' - -help: - @echo ' clean - clean the generated bindings' - @echo ' bind - generate Rust bindings from Solidity code' - -clean: - @rm -rf $(BINDINGS_DIR) - -bind: - @forge bind --alloy --select $(BINDINGS_FILTER) \ - --module --bindings-path $(BINDINGS_DIR) \ - --root $(SRC_DIR) - -.PHONY: help bind clean diff --git a/prt/client-rs/Cargo.toml b/prt/client-rs/Cargo.toml index e4295005..5adcc472 100644 --- a/prt/client-rs/Cargo.toml +++ b/prt/client-rs/Cargo.toml @@ -15,24 +15,35 @@ readme = "README.md" repository = "https://github.com/cartesi/dave" [dependencies] -cartesi-dave-arithmetic = { path = "../../common-rs/arithmetic" } -cartesi-dave-merkle = { path = "../../common-rs/merkle" } -cartesi-machine = { path = "../../machine/rust-bindings/cartesi-machine" } -cartesi-prt-contracts = { path = "../contract-bindings" } - -anyhow = "1.0" -async-recursion = "1" -async-trait = "0.1" -clap = { version = "4.5", features = ["derive", "env"] } -alloy = { version = "0.8.0", features = ["sol-types", "contract", "network", "reqwest", "signers", "signer-local"] } +# common-rs +cartesi-dave-arithmetic = { workspace = true } +cartesi-dave-merkle = { workspace = true } + +# machine bindings +cartesi-machine = { workspace = true } + +# solidity bindings +cartesi-prt-contracts = { workspace = true } + +alloy = { workspace = true, features = ["sol-types", "contract", "network", "reqwest", "signers", "signer-local"] } +ruint = { workspace = true, features = ["num-traits"] } + +# async +async-recursion = { workspace = true } +async-trait = { workspace = true } +tokio = { workspace = true, features = ["full"] } + +anyhow = { workspace = true } +thiserror = { workspace = true } + + +clap = { workspace = true, features = ["derive", "env"] } +hex = { workspace = true } lazy_static = "1.4.0" -log = "0.4" -hex = "0.4.3" -num-traits = "0.2.19" -ruint = { version = "1.12", features = ["num-traits"] } +log = { workspace = true } +num-traits = { workspace = true } rusqlite = { version = "0.31.0", features = ["bundled"] } rusqlite_migration = "1.2.0" + serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -thiserror = "1.0" -tokio = { version = "1", features = ["full"] } diff --git a/cartesi-rollups/node/Cargo.lock b/prt/contracts/bindings-rs/Cargo.lock similarity index 66% rename from cartesi-rollups/node/Cargo.lock rename to prt/contracts/bindings-rs/Cargo.lock index 45bfbd14..08cc6df2 100644 --- a/cartesi-rollups/node/Cargo.lock +++ b/prt/contracts/bindings-rs/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -29,15 +29,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - [[package]] name = "allocator-api2" version = "0.2.18" @@ -46,9 +37,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f13f1940c81e269e84ddb58f3b611be9660fbbfe39d4338aa2984dc3df0c402" +checksum = "8367891bf380210abb0d6aa30c5f85a9080cb4a066c4d5c5acadad630823751b" dependencies = [ "alloy-consensus", "alloy-contract", @@ -59,17 +50,15 @@ dependencies = [ "alloy-provider", "alloy-rpc-client", "alloy-serde", - "alloy-signer", - "alloy-signer-local", "alloy-transport", "alloy-transport-http", ] [[package]] name = "alloy-chains" -version = "0.1.27" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b515e82c8468ddb6ff8db21c78a5997442f113fd8471fd5b2261b2602dd0c67" +checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c" dependencies = [ "num_enum", "strum", @@ -77,9 +66,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4177d135789e282e925092be8939d421b701c6d92c0a16679faa659d9166289d" +checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips", "alloy-primitives", @@ -91,9 +80,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3be15f92fdb7490b164697a1d9b395cb7a3afa8fb15feed732ec5a6ff8db5f4" +checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -111,21 +100,22 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5aeeac2715738ff43076b65ca27bc0a2025ce0ee69f537c11c632027360bff" +checksum = "5ce854562e7cafd5049189d0268d6e5cba05fe6c9cb7c6f8126a79b94800629c" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-primitives", + "alloy-rlp", "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03f58cfae4d41b624effe1f11624ee40499449174b20a6d6505fd72ef0d547d" +checksum = "0b499852e1d0e9b8c6db0f24c48998e647c0d5762a01090f955106a7700e4611" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -135,7 +125,7 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.8", + "winnow", ] [[package]] @@ -162,9 +152,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "499ee14d296a133d142efd215eb36bf96124829fe91cf8f5d4e5ccdd381eae00" +checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -180,9 +170,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b85dfc693e4a1193f0372a8f789df12ab51fcbe7be0733baa04939a86dd813b" +checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" dependencies = [ "alloy-primitives", "alloy-serde", @@ -191,9 +181,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28ecae8b5315daecd0075084eb47f4374b3037777346ca52fc8d9c327693f02" +checksum = "a438d4486b5d525df3b3004188f9d5cd1d65cd30ecc41e5a3ccef6f6342e8af9" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -203,9 +193,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4207166c79cfdf7f3bed24bbc84f5c7c5d4db1970f8c82e3fcc76257f16d2166" +checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -217,9 +207,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe2802d5b8c632f18d68c352073378f02a3407c1b6a4487194e7d21ab0f002" +checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" dependencies = [ "alloy-consensus", "alloy-eips", @@ -238,10 +228,11 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396c07726030fa0f9dab5da8c71ccd69d5eb74a7fe1072b7ae453a67e4fe553e" +checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ + "alloy-eips", "alloy-primitives", "alloy-serde", "serde", @@ -249,31 +240,36 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb865df835f851b367ae439d6c82b117ded971628c8888b24fed411a290e38a" +checksum = "260d3ff3bff0bb84599f032a2f2c6828180b0ea0cd41fdaf44f39cef3ba41861" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more", + "hashbrown", "hex-literal", + "indexmap", "itoa", "k256", "keccak-asm", + "paste", "proptest", "rand", "ruint", + "rustc-hash", "serde", + "sha3", "tiny-keccak", ] [[package]] name = "alloy-provider" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1376948df782ffee83a54cac4b2aba14134edd997229a3db97da0a606586eb5c" +checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" dependencies = [ "alloy-chains", "alloy-consensus", @@ -305,9 +301,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b155716bab55763c95ba212806cf43d05bcc70e5f35b02bad20cf5ec7fe11fed" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -322,14 +318,14 @@ checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "alloy-rpc-client" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02378418a429f8a14a0ad8ffaa15b2d25ff34914fc4a1e366513c6a3800e03b3" +checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -348,9 +344,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bb3506ab1cf415d4752778c93e102050399fb8de97b7da405a5bf3e31f5f3b" +checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -359,17 +355,19 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", + "cfg-if", + "derive_more", + "hashbrown", "itertools 0.13.0", "serde", "serde_json", - "thiserror", ] [[package]] name = "alloy-serde" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae417978015f573b4a8c02af17f88558fb22e3fccd12e8a910cf6a2ff331cfcb" +checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ "alloy-primitives", "serde", @@ -378,9 +376,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750c9b61ac0646f8f4a61231c2732a337b2c829866fc9a191b96b7eedf80ffe" +checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" dependencies = [ "alloy-primitives", "async-trait", @@ -390,87 +388,71 @@ dependencies = [ "thiserror", ] -[[package]] -name = "alloy-signer-local" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c640f9343e8f741f837c345c5ea30239ba77938b3691b884c736834853bd16c" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "k256", - "rand", - "thiserror", -] - [[package]] name = "alloy-sol-macro" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2dc5201ca0018afb7a3e0cd8bd15f7ca6aca924333b5f3bb87463b41d0c4ef2" +checksum = "68e7f6e8fe5b443f82b3f1e15abfa191128f71569148428e49449d01f6f49e8b" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "155f63dc6945885aa4532601800201fddfaa3b20901fda8e8c2570327242fe0e" +checksum = "6b96ce28d2fde09abb6135f410c41fad670a3a770b6776869bd852f1df102e6f" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", - "heck 0.5.0", + "heck", "indexmap", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "847700aa9cb59d3c7b290b2d05976cd8d76b64d73bb63116a9533132d995586b" +checksum = "906746396a8296537745711630d9185746c0b50c033d5e9d18b0a6eba3d53f90" dependencies = [ "alloy-json-abi", "const-hex", "dunce", - "heck 0.5.0", + "heck", "proc-macro2", "quote", "serde_json", - "syn 2.0.66", + "syn 2.0.79", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6b5d462d4520bd9ed70d8364c6280aeff13baa46ea26be1ddd33538dbbe6ac" +checksum = "bc85178909a49c8827ffccfc9103a7ce1767ae66a801b69bdc326913870bf8e6" dependencies = [ "serde", - "winnow 0.6.8", + "winnow", ] [[package]] name = "alloy-sol-types" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83665e5607725a7a1aab3cb0dea708f4a05e70776954ec7f0a9461439175c957" +checksum = "d86a533ce22525969661b25dfe296c112d35eb6861f188fd284f8bd4bb3842ae" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -481,9 +463,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2799749ca692ae145f54968778877afd7c95e788488f176cfdfcf2a8abeb2062" +checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" dependencies = [ "alloy-json-rpc", "base64", @@ -500,9 +482,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.3.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc10c4dd932f66e0db6cc5735241e0c17a6a18564b430bbc1839f7db18587a93" +checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -513,61 +495,6 @@ dependencies = [ "url", ] -[[package]] -name = "anstream" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" - -[[package]] -name = "anstyle-parse" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - -[[package]] -name = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - [[package]] name = "ark-ff" version = "0.3.0" @@ -602,7 +529,7 @@ dependencies = [ "num-bigint", "num-traits", "paste", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "zeroize", ] @@ -694,20 +621,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-stream" @@ -728,18 +644,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -750,28 +666,28 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] [[package]] @@ -792,29 +708,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bindgen" -version = "0.69.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.66", - "which", -] - [[package]] name = "bit-set" version = "0.5.3" @@ -832,9 +725,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitvec" @@ -889,84 +782,28 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] [[package]] name = "c-kzg" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" dependencies = [ "blst", "cc", "glob", "hex", "libc", + "once_cell", "serde", ] -[[package]] -name = "cartesi-dave-arithmetic" -version = "0.1.0" - -[[package]] -name = "cartesi-dave-contracts" -version = "0.1.0" -dependencies = [ - "alloy", -] - -[[package]] -name = "cartesi-dave-merkle" -version = "0.1.0" -dependencies = [ - "alloy", - "hex", - "ruint", - "sha3", - "thiserror", -] - -[[package]] -name = "cartesi-machine" -version = "0.18.1" -dependencies = [ - "cartesi-machine-sys", - "hex", - "thiserror", -] - -[[package]] -name = "cartesi-machine-sys" -version = "0.18.1" -dependencies = [ - "bindgen", - "bytes", - "cfg-if", - "hex-literal", - "link-cplusplus", - "reqwest", - "sha1", -] - -[[package]] -name = "cartesi-prt-compute" -version = "0.1.0" -dependencies = [ - "alloy", - "anyhow", - "cartesi-prt-core", - "clap", - "env_logger", - "log", - "tokio", -] - [[package]] name = "cartesi-prt-contracts" version = "0.1.0" @@ -974,50 +811,13 @@ dependencies = [ "alloy", ] -[[package]] -name = "cartesi-prt-core" -version = "0.1.0" -dependencies = [ - "alloy", - "anyhow", - "async-recursion", - "async-trait", - "cartesi-dave-arithmetic", - "cartesi-dave-merkle", - "cartesi-machine", - "cartesi-prt-contracts", - "clap", - "clap_derive", - "hex", - "log", - "num-traits", - "ruint", - "sha3", - "thiserror", -] - -[[package]] -name = "cartesi-rollups-contracts" -version = "2.0.0-rc.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b11ea82d7e8deedbb22c303837f24c19ca6c058b6ee7f9a27db989607bcc5f42" -dependencies = [ - "alloy", -] - [[package]] name = "cc" -version = "1.0.98" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" - -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0" dependencies = [ - "nom", + "shlex", ] [[package]] @@ -1026,68 +826,11 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "clang-sys" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "4.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "clap_lex" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" - -[[package]] -name = "colorchoice" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" - [[package]] name = "const-hex" -version = "1.11.4" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ff96486ccc291d36a958107caf2c0af8c78c0af7d31ae2f35ce055130de1a6" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" dependencies = [ "cfg-if", "cpufeatures", @@ -1114,15 +857,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1175,29 +918,6 @@ dependencies = [ "parking_lot_core", ] -[[package]] -name = "dave-rollups" -version = "0.1.0" -dependencies = [ - "alloy", - "anyhow", - "cartesi-prt-compute", - "cartesi-prt-core", - "cartesi-rollups-contracts", - "clap", - "clap_derive", - "env_logger", - "futures", - "log", - "rollups-blockchain-reader", - "rollups-compute-runner", - "rollups-epoch-manager", - "rollups-machine-runner", - "rollups-state-manager", - "rusqlite", - "tokio", -] - [[package]] name = "der" version = "0.7.9" @@ -1236,7 +956,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "unicode-xid", ] @@ -1263,9 +983,9 @@ dependencies = [ [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ecdsa" @@ -1283,9 +1003,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -1306,29 +1026,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -1345,23 +1042,11 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "fallible-iterator" -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 = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fastrlp" @@ -1488,7 +1173,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -1551,9 +1236,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "glob" @@ -1580,23 +1265,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", -] - -[[package]] -name = "hashlink" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" -dependencies = [ - "hashbrown", + "serde", ] -[[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" @@ -1633,15 +1304,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "http" version = "1.1.0" @@ -1655,9 +1317,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -1665,12 +1327,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http", "http-body", "pin-project-lite", @@ -1678,21 +1340,15 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -1707,23 +1363,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-rustls" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" -dependencies = [ - "futures-util", - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - [[package]] name = "hyper-tls" version = "0.6.0" @@ -1742,9 +1381,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.4" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d8d52be92d09acc2e01dddb7fde3ad983fc6489c7db4837e605bc3fca4cb63e" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -1755,7 +1394,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -1792,25 +1430,20 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", + "serde", ] [[package]] name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "itertools" @@ -1821,15 +1454,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -1847,18 +1471,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -1878,9 +1502,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -1888,31 +1512,15 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[package]] -name = "libloading" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" -dependencies = [ - "cfg-if", - "windows-targets 0.52.5", -] +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libm" @@ -1920,26 +1528,6 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" -[[package]] -name = "libsqlite3-sys" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "link-cplusplus" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" -dependencies = [ - "cc", -] - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1958,9 +1546,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" @@ -1973,9 +1561,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -1983,39 +1571,33 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2027,21 +1609,11 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -2078,29 +1650,29 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -2113,9 +1685,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags", "cfg-if", @@ -2134,7 +1706,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2145,9 +1717,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -2181,16 +1753,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - [[package]] name = "parking_lot_core" version = "0.9.10" @@ -2201,7 +1763,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets", ] [[package]] @@ -2218,9 +1780,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -2244,7 +1806,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2271,24 +1833,17 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "prettyplease" version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "proc-macro2", - "syn 2.0.66", + "zerocopy", ] [[package]] @@ -2304,9 +1859,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ "toml_edit", ] @@ -2330,23 +1885,23 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "proc-macro2" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", @@ -2370,9 +1925,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2392,6 +1947,7 @@ dependencies = [ "libc", "rand_chacha", "rand_core", + "serde", ] [[package]] @@ -2424,58 +1980,33 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b" dependencies = [ "bitflags", ] -[[package]] -name = "regex" -version = "1.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64", "bytes", - "futures-channel", "futures-core", "futures-util", "http", "http-body", "http-body-util", "hyper", - "hyper-rustls", "hyper-tls", "hyper-util", "ipnet", @@ -2486,23 +2017,19 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", "rustls-pemfile", - "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tokio-native-tls", - "tokio-rustls", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", - "winreg", + "windows-registry", ] [[package]] @@ -2515,21 +2042,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", -] - [[package]] name = "rlp" version = "0.5.2" @@ -2540,68 +2052,6 @@ dependencies = [ "rustc-hex", ] -[[package]] -name = "rollups-blockchain-reader" -version = "0.1.0" -dependencies = [ - "alloy", - "alloy-rpc-types-eth", - "async-recursion", - "cartesi-dave-contracts", - "cartesi-rollups-contracts", - "clap", - "clap_derive", - "num-traits", - "rollups-state-manager", - "thiserror", - "tokio", -] - -[[package]] -name = "rollups-compute-runner" -version = "0.1.0" -dependencies = [ - "cartesi-prt-core", - "rollups-state-manager", -] - -[[package]] -name = "rollups-epoch-manager" -version = "0.1.0" -dependencies = [ - "alloy", - "anyhow", - "cartesi-dave-contracts", - "cartesi-prt-core", - "rollups-state-manager", - "tokio", -] - -[[package]] -name = "rollups-machine-runner" -version = "0.1.0" -dependencies = [ - "alloy", - "cartesi-dave-arithmetic", - "cartesi-dave-merkle", - "cartesi-machine", - "cartesi-prt-core", - "cartesi-rollups-contracts", - "hex", - "rollups-state-manager", - "thiserror", -] - -[[package]] -name = "rollups-state-manager" -version = "0.1.0" -dependencies = [ - "lazy_static", - "rusqlite", - "rusqlite_migration", - "thiserror", -] - [[package]] name = "ruint" version = "1.12.3" @@ -2632,30 +2082,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" -[[package]] -name = "rusqlite" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" -dependencies = [ - "bitflags", - "fallible-iterator", - "fallible-streaming-iterator", - "hashlink", - "libsqlite3-sys", - "smallvec", -] - -[[package]] -name = "rusqlite_migration" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55709bc01054c69e2f1cefdc886642b5e6376a8db3c86f761be0c423eebf178b" -dependencies = [ - "log", - "rusqlite", -] - [[package]] name = "rustc-demangle" version = "0.1.24" @@ -2664,9 +2090,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc-hex" @@ -2685,18 +2111,18 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags", "errno", @@ -2705,25 +2131,11 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rustls" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" -dependencies = [ - "log", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64", "rustls-pki-types", @@ -2731,20 +2143,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" - -[[package]] -name = "rustls-webpki" -version = "0.102.7" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustversion" @@ -2772,11 +2173,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2801,9 +2202,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags", "core-foundation", @@ -2814,9 +2215,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -2848,31 +2249,32 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.202" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.202" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2889,17 +2291,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha2" version = "0.10.8" @@ -2923,9 +2314,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", "cfg-if", @@ -2937,15 +2328,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] - [[package]] name = "signature" version = "2.2.0" @@ -2981,12 +2363,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "spki" version = "0.7.3" @@ -3003,39 +2379,33 @@ 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 = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3050,9 +2420,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -3061,14 +2431,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e1355d44af21638c8e05d45097db6cb5ec2aa3e970c51cb2901605cf3344fa" +checksum = "0ab661c8148c2261222a4d641ad5477fd4bea79406a99056096a0b41b35617a5" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3077,6 +2447,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] + [[package]] name = "tap" version = "1.0.1" @@ -3085,34 +2464,35 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3135,9 +2515,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3150,32 +2530,29 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", - "parking_lot", "pin-project-lite", - "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3188,22 +2565,11 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" -dependencies = [ - "rustls", - "rustls-pki-types", - "tokio", -] - [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -3213,9 +2579,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3226,48 +2592,46 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "tower" -version = "0.4.13" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ "futures-core", "futures-util", - "pin-project", "pin-project-lite", - "tokio", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", - "tracing", ] [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3275,7 +2639,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3289,7 +2652,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3345,48 +2708,36 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "untrusted" -version = "0.9.0" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "valuable" version = "0.1.0" @@ -3401,9 +2752,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -3431,34 +2782,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -3468,9 +2820,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3478,61 +2830,61 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki-roots" -version = "0.26.5" +name = "windows-registry" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "rustls-pki-types", + "windows-result", + "windows-strings", + "windows-targets", ] [[package]] -name = "which" -version = "4.4.2" +name = "windows-result" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "either", - "home", - "once_cell", - "rustix", + "windows-targets", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-strings" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-targets 0.48.5", + "windows-result", + "windows-targets", ] [[package]] @@ -3541,158 +2893,91 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 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", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" - -[[package]] -name = "winnow" -version = "0.5.40" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "wyz" version = "0.5.1" @@ -3704,29 +2989,30 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "zeroize_derive", ] @@ -3739,5 +3025,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] diff --git a/prt/contract-bindings/Cargo.toml b/prt/contracts/bindings-rs/Cargo.toml similarity index 100% rename from prt/contract-bindings/Cargo.toml rename to prt/contracts/bindings-rs/Cargo.toml diff --git a/prt/contract-bindings/README.md b/prt/contracts/bindings-rs/README.md similarity index 100% rename from prt/contract-bindings/README.md rename to prt/contracts/bindings-rs/README.md diff --git a/prt/contracts/bindings-rs/src/contract/.gitignore b/prt/contracts/bindings-rs/src/contract/.gitignore new file mode 100644 index 00000000..ccf02fb7 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/.gitignore @@ -0,0 +1,5 @@ +leaftournament.rs +nonleaftournament.rs +nonroottournament.rs +roottournament.rs +tournament.rs diff --git a/prt/contracts/bindings-rs/src/contract/leaftournament.rs b/prt/contracts/bindings-rs/src/contract/leaftournament.rs new file mode 100644 index 00000000..e97ad48d --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/leaftournament.rs @@ -0,0 +1,6649 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Clock { + struct State { Time.Duration allowance; Time.Instant startInstant; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Clock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity +struct State { Time.Duration allowance; Time.Instant startInstant; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub allowance: ::RustType, + pub startInstant: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Time::Duration, Time::Instant); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + (value.allowance, value.startInstant) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + allowance: tuple.0, + startInstant: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.allowance, + ), + ::tokenize( + &self.startInstant, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(uint64 allowance,uint64 startInstant)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.allowance, + ) + .0, + ::eip712_data_word( + &self.startInstant, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.allowance, + ) + + ::topic_preimage_length( + &rust.startInstant, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.allowance, + out, + ); + ::encode_topic_preimage( + &rust.startInstant, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ClockInstance { + ClockInstance::::new(address, provider) + } + /**A [`Clock`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Clock`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ClockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ClockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ClockInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ClockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ClockInstance { + ClockInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Match { + type IdHash is bytes32; + struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } + struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Match { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IdHash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl IdHash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for IdHash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for IdHash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + /**```solidity +struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Id { + pub commitmentOne: ::RustType, + pub commitmentTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Id) -> Self { + (value.commitmentOne, value.commitmentTwo) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Id { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitmentOne: tuple.0, + commitmentTwo: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Id { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Id { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.commitmentOne, + ), + ::tokenize( + &self.commitmentTwo, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Id { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Id { + const NAME: &'static str = "Id"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Id(bytes32 commitmentOne,bytes32 commitmentTwo)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.commitmentOne, + ) + .0, + ::eip712_data_word( + &self.commitmentTwo, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Id { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.commitmentOne, + ) + + ::topic_preimage_length( + &rust.commitmentTwo, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.commitmentOne, + out, + ); + ::encode_topic_preimage( + &rust.commitmentTwo, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub otherParent: ::RustType, + pub leftNode: ::RustType, + pub rightNode: ::RustType, + pub runningLeafPosition: alloy::sol_types::private::primitives::aliases::U256, + pub currentHeight: u64, + pub log2step: u64, + pub height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Tree::Node, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + u64, + u64, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + ( + value.otherParent, + value.leftNode, + value.rightNode, + value.runningLeafPosition, + value.currentHeight, + value.log2step, + value.height, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + otherParent: tuple.0, + leftNode: tuple.1, + rightNode: tuple.2, + runningLeafPosition: tuple.3, + currentHeight: tuple.4, + log2step: tuple.5, + height: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.otherParent, + ), + ::tokenize(&self.leftNode), + ::tokenize(&self.rightNode), + as alloy_sol_types::SolType>::tokenize(&self.runningLeafPosition), + as alloy_sol_types::SolType>::tokenize(&self.currentHeight), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(bytes32 otherParent,bytes32 leftNode,bytes32 rightNode,uint256 runningLeafPosition,uint64 currentHeight,uint64 log2step,uint64 height)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.otherParent, + ) + .0, + ::eip712_data_word( + &self.leftNode, + ) + .0, + ::eip712_data_word( + &self.rightNode, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.runningLeafPosition, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.currentHeight) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.otherParent, + ) + + ::topic_preimage_length( + &rust.leftNode, + ) + + ::topic_preimage_length( + &rust.rightNode, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.runningLeafPosition, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.currentHeight, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.otherParent, + out, + ); + ::encode_topic_preimage( + &rust.leftNode, + out, + ); + ::encode_topic_preimage( + &rust.rightNode, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.runningLeafPosition, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.currentHeight, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MatchInstance { + MatchInstance::::new(address, provider) + } + /**A [`Match`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Match`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MatchInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MatchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MatchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MatchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MatchInstance { + MatchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; + type Instant is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Instant(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Instant { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Instant { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Instant { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Clock { + struct State { + Time.Duration allowance; + Time.Instant startInstant; + } +} + +library Machine { + type Hash is bytes32; +} + +library Match { + type IdHash is bytes32; + struct Id { + Tree.Node commitmentOne; + Tree.Node commitmentTwo; + } + struct State { + Tree.Node otherParent; + Tree.Node leftNode; + Tree.Node rightNode; + uint256 runningLeafPosition; + uint64 currentHeight; + uint64 log2step; + uint64 height; + } +} + +library Time { + type Duration is uint64; + type Instant is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface LeafTournament { + error EliminateByTimeout(); + error IncorrectAgreeState(Machine.Hash initialState, Machine.Hash agreeState); + error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); + error TournamentIsClosed(); + error TournamentIsFinished(); + error WinByTimeout(); + error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); + error WrongFinalState(uint256 commitment, Machine.Hash computed, Machine.Hash claimed); + error WrongNodesForStep(); + + event commitmentJoined(Tree.Node root); + event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); + event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); + + function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; + function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); + function eliminateMatchByTimeout(Match.Id memory _matchId) external; + function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); + function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); + function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); + function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; + function sealLeafMatch(Match.Id memory _matchId, Tree.Node _leftLeaf, Tree.Node _rightLeaf, Machine.Hash _agreeHash, bytes32[] memory _agreeHashProof) external; + function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); + function winLeafMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, bytes memory proofs) external; + function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "advanceMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newLeftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newRightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canWinMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eliminateMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCommitment", + "inputs": [ + { + "name": "_commitmentRoot", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Clock.State", + "components": [ + { + "name": "allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "startInstant", + "type": "uint64", + "internalType": "Time.Instant" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatch", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Match.State", + "components": [ + { + "name": "otherParent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "runningLeafPosition", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentHeight", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatchCycle", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "joinTournament", + "inputs": [ + { + "name": "_finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_proof", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "sealLeafMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftLeaf", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightLeaf", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_agreeHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_agreeHashProof", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "tournamentLevelConstants", + "inputs": [], + "outputs": [ + { + "name": "_max_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_height", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "winLeafMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "proofs", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "winMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "commitmentJoined", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchAdvanced", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": true, + "internalType": "Match.IdHash" + }, + { + "name": "parent", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchCreated", + "inputs": [ + { + "name": "one", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "two", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "leftOfTwo", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "EliminateByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "IncorrectAgreeState", + "inputs": [ + { + "name": "initialState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "agreeState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "InvalidContestedFinalState", + "inputs": [ + { + "name": "contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "TournamentIsClosed", + "inputs": [] + }, + { + "type": "error", + "name": "TournamentIsFinished", + "inputs": [] + }, + { + "type": "error", + "name": "WinByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "WrongChildren", + "inputs": [ + { + "name": "commitment", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "parent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "right", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "type": "error", + "name": "WrongFinalState", + "inputs": [ + { + "name": "commitment", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "computed", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "claimed", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "WrongNodesForStep", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod LeafTournament { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `EliminateByTimeout()` and selector `0xf42e4c1c`. +```solidity +error EliminateByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct EliminateByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EliminateByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EliminateByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EliminateByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EliminateByTimeout()"; + const SELECTOR: [u8; 4] = [244u8, 46u8, 76u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `IncorrectAgreeState(bytes32,bytes32)` and selector `0x773af801`. +```solidity +error IncorrectAgreeState(Machine.Hash initialState, Machine.Hash agreeState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IncorrectAgreeState { + pub initialState: ::RustType, + pub agreeState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAgreeState) -> Self { + (value.initialState, value.agreeState) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAgreeState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialState: tuple.0, + agreeState: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAgreeState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAgreeState(bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 58u8, 248u8, 1u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.initialState, + ), + ::tokenize( + &self.agreeState, + ), + ) + } + } + }; + /**Custom error with signature `InvalidContestedFinalState(bytes32,bytes32,bytes32)` and selector `0xca5aceb3`. +```solidity +error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidContestedFinalState { + pub contestedFinalStateOne: ::RustType, + pub contestedFinalStateTwo: ::RustType, + pub finalState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: InvalidContestedFinalState) -> Self { + ( + value.contestedFinalStateOne, + value.contestedFinalStateTwo, + value.finalState, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for InvalidContestedFinalState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + contestedFinalStateOne: tuple.0, + contestedFinalStateTwo: tuple.1, + finalState: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidContestedFinalState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidContestedFinalState(bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [202u8, 90u8, 206u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.contestedFinalStateOne, + ), + ::tokenize( + &self.contestedFinalStateTwo, + ), + ::tokenize( + &self.finalState, + ), + ) + } + } + }; + /**Custom error with signature `TournamentIsClosed()` and selector `0xac57beef`. +```solidity +error TournamentIsClosed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsClosed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsClosed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsClosed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsClosed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsClosed()"; + const SELECTOR: [u8; 4] = [172u8, 87u8, 190u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `TournamentIsFinished()` and selector `0x95ddf153`. +```solidity +error TournamentIsFinished(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsFinished {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsFinished) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsFinished { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsFinished { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsFinished()"; + const SELECTOR: [u8; 4] = [149u8, 221u8, 241u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WinByTimeout()` and selector `0x9a8d5646`. +```solidity +error WinByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WinByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WinByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WinByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WinByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WinByTimeout()"; + const SELECTOR: [u8; 4] = [154u8, 141u8, 86u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WrongChildren(uint256,bytes32,bytes32,bytes32)` and selector `0x75af4da6`. +```solidity +error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongChildren { + pub commitment: alloy::sol_types::private::primitives::aliases::U256, + pub parent: ::RustType, + pub left: ::RustType, + pub right: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongChildren) -> Self { + (value.commitment, value.parent, value.left, value.right) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongChildren { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitment: tuple.0, + parent: tuple.1, + left: tuple.2, + right: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongChildren { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongChildren(uint256,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [117u8, 175u8, 77u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commitment), + ::tokenize(&self.parent), + ::tokenize(&self.left), + ::tokenize(&self.right), + ) + } + } + }; + /**Custom error with signature `WrongFinalState(uint256,bytes32,bytes32)` and selector `0xdc7f407a`. +```solidity +error WrongFinalState(uint256 commitment, Machine.Hash computed, Machine.Hash claimed); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongFinalState { + pub commitment: alloy::sol_types::private::primitives::aliases::U256, + pub computed: ::RustType, + pub claimed: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + Machine::Hash, + Machine::Hash, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongFinalState) -> Self { + (value.commitment, value.computed, value.claimed) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongFinalState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitment: tuple.0, + computed: tuple.1, + claimed: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongFinalState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongFinalState(uint256,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [220u8, 127u8, 64u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commitment), + ::tokenize( + &self.computed, + ), + ::tokenize(&self.claimed), + ) + } + } + }; + /**Custom error with signature `WrongNodesForStep()` and selector `0x19c030e8`. +```solidity +error WrongNodesForStep(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongNodesForStep {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongNodesForStep) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongNodesForStep { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongNodesForStep { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongNodesForStep()"; + const SELECTOR: [u8; 4] = [25u8, 192u8, 48u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `commitmentJoined(bytes32)` and selector `0xe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262`. +```solidity +event commitmentJoined(Tree.Node root); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct commitmentJoined { + #[allow(missing_docs)] + pub root: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for commitmentJoined { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "commitmentJoined(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { root: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.root),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for commitmentJoined { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&commitmentJoined> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &commitmentJoined) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchAdvanced(bytes32,bytes32,bytes32)` and selector `0x29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb369941378`. +```solidity +event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchAdvanced { + #[allow(missing_docs)] + pub _0: ::RustType, + #[allow(missing_docs)] + pub parent: ::RustType, + #[allow(missing_docs)] + pub left: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchAdvanced { + type DataTuple<'a> = (Tree::Node, Tree::Node); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>, Match::IdHash); + const SIGNATURE: &'static str = "matchAdvanced(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _0: topics.1, + parent: data.0, + left: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.parent), + ::tokenize(&self.left), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._0.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._0, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchAdvanced { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchAdvanced> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchAdvanced) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchCreated(bytes32,bytes32,bytes32)` and selector `0x32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e`. +```solidity +event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchCreated { + #[allow(missing_docs)] + pub one: ::RustType, + #[allow(missing_docs)] + pub two: ::RustType, + #[allow(missing_docs)] + pub leftOfTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchCreated { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + Tree::Node, + Tree::Node, + ); + const SIGNATURE: &'static str = "matchCreated(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + one: topics.1, + two: topics.2, + leftOfTwo: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.leftOfTwo),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.one.clone(), self.two.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.one, + ); + out[2usize] = ::encode_topic( + &self.two, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)` and selector `0xfcc85391`. +```solidity +function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + pub _newLeftNode: ::RustType, + pub _newRightNode: ::RustType, + } + ///Container type for the return parameters of the [`advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)`](advanceMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchCall) -> Self { + ( + value._matchId, + value._leftNode, + value._rightNode, + value._newLeftNode, + value._newRightNode, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + _newLeftNode: tuple.3, + _newRightNode: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for advanceMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = advanceMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 200u8, 83u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ::tokenize( + &self._newLeftNode, + ), + ::tokenize( + &self._newRightNode, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `canWinMatchByTimeout((bytes32,bytes32))` and selector `0x6a1a140d`. +```solidity +function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`canWinMatchByTimeout((bytes32,bytes32))`](canWinMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canWinMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canWinMatchByTimeoutReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canWinMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [106u8, 26u8, 20u8, 13u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `eliminateMatchByTimeout((bytes32,bytes32))` and selector `0x9a9b4b2b`. +```solidity +function eliminateMatchByTimeout(Match.Id memory _matchId) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`eliminateMatchByTimeout((bytes32,bytes32))`](eliminateMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eliminateMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eliminateMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eliminateMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [154u8, 155u8, 75u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCommitment(bytes32)` and selector `0x7795820c`. +```solidity +function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentCall { + pub _commitmentRoot: ::RustType, + } + ///Container type for the return parameters of the [`getCommitment(bytes32)`](getCommitmentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentReturn { + pub _0: ::RustType, + pub _1: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentCall) -> Self { + (value._commitmentRoot,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _commitmentRoot: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Clock::State, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCommitmentCall { + type Parameters<'a> = (Tree::Node,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCommitmentReturn; + type ReturnTuple<'a> = (Clock::State, Machine::Hash); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCommitment(bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 149u8, 130u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._commitmentRoot, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatch(bytes32)` and selector `0xfcc6077d`. +```solidity +function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatch(bytes32)`](getMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::State,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchReturn; + type ReturnTuple<'a> = (Match::State,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatch(bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 198u8, 7u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatchCycle(bytes32)` and selector `0x8acc802d`. +```solidity +function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatchCycle(bytes32)`](getMatchCycleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCycleCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchCycleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatchCycle(bytes32)"; + const SELECTOR: [u8; 4] = [138u8, 204u8, 128u8, 45u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `joinTournament(bytes32,bytes32[],bytes32,bytes32)` and selector `0x1d5bf796`. +```solidity +function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentCall { + pub _finalState: ::RustType, + pub _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`joinTournament(bytes32,bytes32[],bytes32,bytes32)`](joinTournamentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentCall) -> Self { + (value._finalState, value._proof, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for joinTournamentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _finalState: tuple.0, + _proof: tuple.1, + _leftNode: tuple.2, + _rightNode: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for joinTournamentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for joinTournamentCall { + type Parameters<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = joinTournamentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "joinTournament(bytes32,bytes32[],bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [29u8, 91u8, 247u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._finalState, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._proof), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `sealLeafMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32[])` and selector `0x5017746a`. +```solidity +function sealLeafMatch(Match.Id memory _matchId, Tree.Node _leftLeaf, Tree.Node _rightLeaf, Machine.Hash _agreeHash, bytes32[] memory _agreeHashProof) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sealLeafMatchCall { + pub _matchId: ::RustType, + pub _leftLeaf: ::RustType, + pub _rightLeaf: ::RustType, + pub _agreeHash: ::RustType, + pub _agreeHashProof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + } + ///Container type for the return parameters of the [`sealLeafMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32[])`](sealLeafMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sealLeafMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sealLeafMatchCall) -> Self { + ( + value._matchId, + value._leftLeaf, + value._rightLeaf, + value._agreeHash, + value._agreeHashProof, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sealLeafMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftLeaf: tuple.1, + _rightLeaf: tuple.2, + _agreeHash: tuple.3, + _agreeHashProof: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sealLeafMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sealLeafMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sealLeafMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sealLeafMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sealLeafMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32[])"; + const SELECTOR: [u8; 4] = [80u8, 23u8, 116u8, 106u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftLeaf), + ::tokenize(&self._rightLeaf), + ::tokenize( + &self._agreeHash, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._agreeHashProof), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tournamentLevelConstants()` and selector `0xa1af906b`. +```solidity +function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsCall {} + ///Container type for the return parameters of the [`tournamentLevelConstants()`](tournamentLevelConstantsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsReturn { + pub _max_level: u64, + pub _level: u64, + pub _log2step: u64, + pub _height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, u64, u64, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsReturn) -> Self { + (value._max_level, value._level, value._log2step, value._height) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _max_level: tuple.0, + _level: tuple.1, + _log2step: tuple.2, + _height: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tournamentLevelConstantsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tournamentLevelConstantsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tournamentLevelConstants()"; + const SELECTOR: [u8; 4] = [161u8, 175u8, 144u8, 107u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winLeafMatch((bytes32,bytes32),bytes32,bytes32,bytes)` and selector `0x6041ddd5`. +```solidity +function winLeafMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, bytes memory proofs) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winLeafMatchCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + pub proofs: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`winLeafMatch((bytes32,bytes32),bytes32,bytes32,bytes)`](winLeafMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winLeafMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: winLeafMatchCall) -> Self { + (value._matchId, value._leftNode, value._rightNode, value.proofs) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for winLeafMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + proofs: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: winLeafMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for winLeafMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winLeafMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winLeafMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winLeafMatch((bytes32,bytes32),bytes32,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [96u8, 65u8, 221u8, 213u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ::tokenize( + &self.proofs, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)` and selector `0xff78e0ee`. +```solidity +function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)`](winMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id, Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutCall) -> Self { + (value._matchId, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winMatchByTimeoutCall { + type Parameters<'a> = (Match::Id, Tree::Node, Tree::Node); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [255u8, 120u8, 224u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`LeafTournament`](self) function calls. + pub enum LeafTournamentCalls { + advanceMatch(advanceMatchCall), + canWinMatchByTimeout(canWinMatchByTimeoutCall), + eliminateMatchByTimeout(eliminateMatchByTimeoutCall), + getCommitment(getCommitmentCall), + getMatch(getMatchCall), + getMatchCycle(getMatchCycleCall), + joinTournament(joinTournamentCall), + sealLeafMatch(sealLeafMatchCall), + tournamentLevelConstants(tournamentLevelConstantsCall), + winLeafMatch(winLeafMatchCall), + winMatchByTimeout(winMatchByTimeoutCall), + } + #[automatically_derived] + impl LeafTournamentCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [29u8, 91u8, 247u8, 150u8], + [80u8, 23u8, 116u8, 106u8], + [96u8, 65u8, 221u8, 213u8], + [106u8, 26u8, 20u8, 13u8], + [119u8, 149u8, 130u8, 12u8], + [138u8, 204u8, 128u8, 45u8], + [154u8, 155u8, 75u8, 43u8], + [161u8, 175u8, 144u8, 107u8], + [252u8, 198u8, 7u8, 125u8], + [252u8, 200u8, 83u8, 145u8], + [255u8, 120u8, 224u8, 238u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for LeafTournamentCalls { + const NAME: &'static str = "LeafTournamentCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::advanceMatch(_) => { + ::SELECTOR + } + Self::canWinMatchByTimeout(_) => { + ::SELECTOR + } + Self::eliminateMatchByTimeout(_) => { + ::SELECTOR + } + Self::getCommitment(_) => { + ::SELECTOR + } + Self::getMatch(_) => ::SELECTOR, + Self::getMatchCycle(_) => { + ::SELECTOR + } + Self::joinTournament(_) => { + ::SELECTOR + } + Self::sealLeafMatch(_) => { + ::SELECTOR + } + Self::tournamentLevelConstants(_) => { + ::SELECTOR + } + Self::winLeafMatch(_) => { + ::SELECTOR + } + Self::winMatchByTimeout(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn joinTournament( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::joinTournament) + } + joinTournament + }, + { + fn sealLeafMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::sealLeafMatch) + } + sealLeafMatch + }, + { + fn winLeafMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::winLeafMatch) + } + winLeafMatch + }, + { + fn canWinMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::canWinMatchByTimeout) + } + canWinMatchByTimeout + }, + { + fn getCommitment( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::getCommitment) + } + getCommitment + }, + { + fn getMatchCycle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::getMatchCycle) + } + getMatchCycle + }, + { + fn eliminateMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::eliminateMatchByTimeout) + } + eliminateMatchByTimeout + }, + { + fn tournamentLevelConstants( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::tournamentLevelConstants) + } + tournamentLevelConstants + }, + { + fn getMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::getMatch) + } + getMatch + }, + { + fn advanceMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::advanceMatch) + } + advanceMatch + }, + { + fn winMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentCalls::winMatchByTimeout) + } + winMatchByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::advanceMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCommitment(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMatch(inner) => { + ::abi_encoded_size(inner) + } + Self::getMatchCycle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::joinTournament(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::sealLeafMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winLeafMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::advanceMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCommitment(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatchCycle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::joinTournament(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::sealLeafMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winLeafMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`LeafTournament`](self) custom errors. + pub enum LeafTournamentErrors { + EliminateByTimeout(EliminateByTimeout), + IncorrectAgreeState(IncorrectAgreeState), + InvalidContestedFinalState(InvalidContestedFinalState), + TournamentIsClosed(TournamentIsClosed), + TournamentIsFinished(TournamentIsFinished), + WinByTimeout(WinByTimeout), + WrongChildren(WrongChildren), + WrongFinalState(WrongFinalState), + WrongNodesForStep(WrongNodesForStep), + } + #[automatically_derived] + impl LeafTournamentErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [25u8, 192u8, 48u8, 232u8], + [117u8, 175u8, 77u8, 166u8], + [119u8, 58u8, 248u8, 1u8], + [149u8, 221u8, 241u8, 83u8], + [154u8, 141u8, 86u8, 70u8], + [172u8, 87u8, 190u8, 239u8], + [202u8, 90u8, 206u8, 179u8], + [220u8, 127u8, 64u8, 122u8], + [244u8, 46u8, 76u8, 28u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for LeafTournamentErrors { + const NAME: &'static str = "LeafTournamentErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::EliminateByTimeout(_) => { + ::SELECTOR + } + Self::IncorrectAgreeState(_) => { + ::SELECTOR + } + Self::InvalidContestedFinalState(_) => { + ::SELECTOR + } + Self::TournamentIsClosed(_) => { + ::SELECTOR + } + Self::TournamentIsFinished(_) => { + ::SELECTOR + } + Self::WinByTimeout(_) => { + ::SELECTOR + } + Self::WrongChildren(_) => { + ::SELECTOR + } + Self::WrongFinalState(_) => { + ::SELECTOR + } + Self::WrongNodesForStep(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn WrongNodesForStep( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::WrongNodesForStep) + } + WrongNodesForStep + }, + { + fn WrongChildren( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::WrongChildren) + } + WrongChildren + }, + { + fn IncorrectAgreeState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::IncorrectAgreeState) + } + IncorrectAgreeState + }, + { + fn TournamentIsFinished( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::TournamentIsFinished) + } + TournamentIsFinished + }, + { + fn WinByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::WinByTimeout) + } + WinByTimeout + }, + { + fn TournamentIsClosed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::TournamentIsClosed) + } + TournamentIsClosed + }, + { + fn InvalidContestedFinalState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::InvalidContestedFinalState) + } + InvalidContestedFinalState + }, + { + fn WrongFinalState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::WrongFinalState) + } + WrongFinalState + }, + { + fn EliminateByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LeafTournamentErrors::EliminateByTimeout) + } + EliminateByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::IncorrectAgreeState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongChildren(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongFinalState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WrongNodesForStep(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAgreeState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongChildren(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongFinalState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongNodesForStep(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`LeafTournament`](self) events. + pub enum LeafTournamentEvents { + commitmentJoined(commitmentJoined), + matchAdvanced(matchAdvanced), + matchCreated(matchCreated), + } + #[automatically_derived] + impl LeafTournamentEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ], + [ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ], + [ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for LeafTournamentEvents { + const NAME: &'static str = "LeafTournamentEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::commitmentJoined) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchAdvanced) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchCreated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for LeafTournamentEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`LeafTournament`](self) contract instance. + +See the [wrapper's documentation](`LeafTournamentInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> LeafTournamentInstance { + LeafTournamentInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + LeafTournamentInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + LeafTournamentInstance::::deploy_builder(provider) + } + /**A [`LeafTournament`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`LeafTournament`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct LeafTournamentInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for LeafTournamentInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("LeafTournamentInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LeafTournamentInstance { + /**Creates a new wrapper around an on-chain [`LeafTournament`](self) contract instance. + +See the [wrapper's documentation](`LeafTournamentInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl LeafTournamentInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> LeafTournamentInstance { + LeafTournamentInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LeafTournamentInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`advanceMatch`] function. + pub fn advanceMatch( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + _newLeftNode: ::RustType, + _newRightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &advanceMatchCall { + _matchId, + _leftNode, + _rightNode, + _newLeftNode, + _newRightNode, + }, + ) + } + ///Creates a new call builder for the [`canWinMatchByTimeout`] function. + pub fn canWinMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &canWinMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`eliminateMatchByTimeout`] function. + pub fn eliminateMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &eliminateMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`getCommitment`] function. + pub fn getCommitment( + &self, + _commitmentRoot: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &getCommitmentCall { + _commitmentRoot, + }, + ) + } + ///Creates a new call builder for the [`getMatch`] function. + pub fn getMatch( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCall { _matchIdHash }) + } + ///Creates a new call builder for the [`getMatchCycle`] function. + pub fn getMatchCycle( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCycleCall { _matchIdHash }) + } + ///Creates a new call builder for the [`joinTournament`] function. + pub fn joinTournament( + &self, + _finalState: ::RustType, + _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &joinTournamentCall { + _finalState, + _proof, + _leftNode, + _rightNode, + }, + ) + } + ///Creates a new call builder for the [`sealLeafMatch`] function. + pub fn sealLeafMatch( + &self, + _matchId: ::RustType, + _leftLeaf: ::RustType, + _rightLeaf: ::RustType, + _agreeHash: ::RustType, + _agreeHashProof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &sealLeafMatchCall { + _matchId, + _leftLeaf, + _rightLeaf, + _agreeHash, + _agreeHashProof, + }, + ) + } + ///Creates a new call builder for the [`tournamentLevelConstants`] function. + pub fn tournamentLevelConstants( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tournamentLevelConstantsCall {}) + } + ///Creates a new call builder for the [`winLeafMatch`] function. + pub fn winLeafMatch( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + proofs: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winLeafMatchCall { + _matchId, + _leftNode, + _rightNode, + proofs, + }, + ) + } + ///Creates a new call builder for the [`winMatchByTimeout`] function. + pub fn winMatchByTimeout( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winMatchByTimeoutCall { + _matchId, + _leftNode, + _rightNode, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LeafTournamentInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`commitmentJoined`] event. + pub fn commitmentJoined_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchAdvanced`] event. + pub fn matchAdvanced_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchCreated`] event. + pub fn matchCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/mod.rs b/prt/contracts/bindings-rs/src/contract/mod.rs new file mode 100644 index 00000000..7cbea44e --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/mod.rs @@ -0,0 +1,10 @@ +#![allow(unused_imports, clippy::all, rustdoc::all)] +//! This module contains the sol! generated bindings for solidity contracts. +//! This is autogenerated code. +//! Do not manually edit these files. +//! These files may be overwritten by the codegen system at any time. +pub mod leaftournament; +pub mod nonleaftournament; +pub mod nonroottournament; +pub mod roottournament; +pub mod tournament; diff --git a/prt/contracts/bindings-rs/src/contract/nonleaftournament.rs b/prt/contracts/bindings-rs/src/contract/nonleaftournament.rs new file mode 100644 index 00000000..b2b8f239 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/nonleaftournament.rs @@ -0,0 +1,6838 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Clock { + struct State { Time.Duration allowance; Time.Instant startInstant; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Clock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity +struct State { Time.Duration allowance; Time.Instant startInstant; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub allowance: ::RustType, + pub startInstant: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Time::Duration, Time::Instant); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + (value.allowance, value.startInstant) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + allowance: tuple.0, + startInstant: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.allowance, + ), + ::tokenize( + &self.startInstant, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(uint64 allowance,uint64 startInstant)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.allowance, + ) + .0, + ::eip712_data_word( + &self.startInstant, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.allowance, + ) + + ::topic_preimage_length( + &rust.startInstant, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.allowance, + out, + ); + ::encode_topic_preimage( + &rust.startInstant, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ClockInstance { + ClockInstance::::new(address, provider) + } + /**A [`Clock`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Clock`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ClockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ClockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ClockInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ClockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ClockInstance { + ClockInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Match { + type IdHash is bytes32; + struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } + struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Match { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IdHash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl IdHash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for IdHash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for IdHash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + /**```solidity +struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Id { + pub commitmentOne: ::RustType, + pub commitmentTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Id) -> Self { + (value.commitmentOne, value.commitmentTwo) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Id { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitmentOne: tuple.0, + commitmentTwo: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Id { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Id { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.commitmentOne, + ), + ::tokenize( + &self.commitmentTwo, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Id { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Id { + const NAME: &'static str = "Id"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Id(bytes32 commitmentOne,bytes32 commitmentTwo)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.commitmentOne, + ) + .0, + ::eip712_data_word( + &self.commitmentTwo, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Id { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.commitmentOne, + ) + + ::topic_preimage_length( + &rust.commitmentTwo, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.commitmentOne, + out, + ); + ::encode_topic_preimage( + &rust.commitmentTwo, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub otherParent: ::RustType, + pub leftNode: ::RustType, + pub rightNode: ::RustType, + pub runningLeafPosition: alloy::sol_types::private::primitives::aliases::U256, + pub currentHeight: u64, + pub log2step: u64, + pub height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Tree::Node, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + u64, + u64, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + ( + value.otherParent, + value.leftNode, + value.rightNode, + value.runningLeafPosition, + value.currentHeight, + value.log2step, + value.height, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + otherParent: tuple.0, + leftNode: tuple.1, + rightNode: tuple.2, + runningLeafPosition: tuple.3, + currentHeight: tuple.4, + log2step: tuple.5, + height: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.otherParent, + ), + ::tokenize(&self.leftNode), + ::tokenize(&self.rightNode), + as alloy_sol_types::SolType>::tokenize(&self.runningLeafPosition), + as alloy_sol_types::SolType>::tokenize(&self.currentHeight), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(bytes32 otherParent,bytes32 leftNode,bytes32 rightNode,uint256 runningLeafPosition,uint64 currentHeight,uint64 log2step,uint64 height)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.otherParent, + ) + .0, + ::eip712_data_word( + &self.leftNode, + ) + .0, + ::eip712_data_word( + &self.rightNode, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.runningLeafPosition, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.currentHeight) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.otherParent, + ) + + ::topic_preimage_length( + &rust.leftNode, + ) + + ::topic_preimage_length( + &rust.rightNode, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.runningLeafPosition, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.currentHeight, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.otherParent, + out, + ); + ::encode_topic_preimage( + &rust.leftNode, + out, + ); + ::encode_topic_preimage( + &rust.rightNode, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.runningLeafPosition, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.currentHeight, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MatchInstance { + MatchInstance::::new(address, provider) + } + /**A [`Match`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Match`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MatchInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MatchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MatchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MatchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MatchInstance { + MatchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; + type Instant is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Instant(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Instant { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Instant { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Instant { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Clock { + struct State { + Time.Duration allowance; + Time.Instant startInstant; + } +} + +library Machine { + type Hash is bytes32; +} + +library Match { + type IdHash is bytes32; + struct Id { + Tree.Node commitmentOne; + Tree.Node commitmentTwo; + } + struct State { + Tree.Node otherParent; + Tree.Node leftNode; + Tree.Node rightNode; + uint256 runningLeafPosition; + uint64 currentHeight; + uint64 log2step; + uint64 height; + } +} + +library Time { + type Duration is uint64; + type Instant is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface NonLeafTournament { + error ChildTournamentNotFinished(); + error EliminateByTimeout(); + error IncorrectAgreeState(Machine.Hash initialState, Machine.Hash agreeState); + error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); + error TournamentIsClosed(); + error TournamentIsFinished(); + error WinByTimeout(); + error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); + error WrongTournamentWinner(Tree.Node commitmentRoot, Tree.Node winner); + + event commitmentJoined(Tree.Node root); + event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); + event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); + event newInnerTournament(Match.IdHash indexed, address); + + function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; + function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); + function eliminateMatchByTimeout(Match.Id memory _matchId) external; + function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); + function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); + function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); + function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; + function sealInnerMatchAndCreateInnerTournament(Match.Id memory _matchId, Tree.Node _leftLeaf, Tree.Node _rightLeaf, Machine.Hash _agreeHash, bytes32[] memory _agreeHashProof) external; + function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); + function winInnerMatch(address _childTournament, Tree.Node _leftNode, Tree.Node _rightNode) external; + function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "advanceMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newLeftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newRightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canWinMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eliminateMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCommitment", + "inputs": [ + { + "name": "_commitmentRoot", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Clock.State", + "components": [ + { + "name": "allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "startInstant", + "type": "uint64", + "internalType": "Time.Instant" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatch", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Match.State", + "components": [ + { + "name": "otherParent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "runningLeafPosition", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentHeight", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatchCycle", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "joinTournament", + "inputs": [ + { + "name": "_finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_proof", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "sealInnerMatchAndCreateInnerTournament", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftLeaf", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightLeaf", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_agreeHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_agreeHashProof", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "tournamentLevelConstants", + "inputs": [], + "outputs": [ + { + "name": "_max_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_height", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "winInnerMatch", + "inputs": [ + { + "name": "_childTournament", + "type": "address", + "internalType": "contract NonRootTournament" + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "winMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "commitmentJoined", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchAdvanced", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": true, + "internalType": "Match.IdHash" + }, + { + "name": "parent", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchCreated", + "inputs": [ + { + "name": "one", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "two", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "leftOfTwo", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "newInnerTournament", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": true, + "internalType": "Match.IdHash" + }, + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "contract NonRootTournament" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ChildTournamentNotFinished", + "inputs": [] + }, + { + "type": "error", + "name": "EliminateByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "IncorrectAgreeState", + "inputs": [ + { + "name": "initialState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "agreeState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "InvalidContestedFinalState", + "inputs": [ + { + "name": "contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "TournamentIsClosed", + "inputs": [] + }, + { + "type": "error", + "name": "TournamentIsFinished", + "inputs": [] + }, + { + "type": "error", + "name": "WinByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "WrongChildren", + "inputs": [ + { + "name": "commitment", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "parent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "right", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "type": "error", + "name": "WrongTournamentWinner", + "inputs": [ + { + "name": "commitmentRoot", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "winner", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod NonLeafTournament { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `ChildTournamentNotFinished()` and selector `0xde0be8c2`. +```solidity +error ChildTournamentNotFinished(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ChildTournamentNotFinished {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: ChildTournamentNotFinished) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for ChildTournamentNotFinished { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ChildTournamentNotFinished { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ChildTournamentNotFinished()"; + const SELECTOR: [u8; 4] = [222u8, 11u8, 232u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `EliminateByTimeout()` and selector `0xf42e4c1c`. +```solidity +error EliminateByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct EliminateByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EliminateByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EliminateByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EliminateByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EliminateByTimeout()"; + const SELECTOR: [u8; 4] = [244u8, 46u8, 76u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `IncorrectAgreeState(bytes32,bytes32)` and selector `0x773af801`. +```solidity +error IncorrectAgreeState(Machine.Hash initialState, Machine.Hash agreeState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IncorrectAgreeState { + pub initialState: ::RustType, + pub agreeState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAgreeState) -> Self { + (value.initialState, value.agreeState) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAgreeState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialState: tuple.0, + agreeState: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAgreeState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAgreeState(bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 58u8, 248u8, 1u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.initialState, + ), + ::tokenize( + &self.agreeState, + ), + ) + } + } + }; + /**Custom error with signature `InvalidContestedFinalState(bytes32,bytes32,bytes32)` and selector `0xca5aceb3`. +```solidity +error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidContestedFinalState { + pub contestedFinalStateOne: ::RustType, + pub contestedFinalStateTwo: ::RustType, + pub finalState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: InvalidContestedFinalState) -> Self { + ( + value.contestedFinalStateOne, + value.contestedFinalStateTwo, + value.finalState, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for InvalidContestedFinalState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + contestedFinalStateOne: tuple.0, + contestedFinalStateTwo: tuple.1, + finalState: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidContestedFinalState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidContestedFinalState(bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [202u8, 90u8, 206u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.contestedFinalStateOne, + ), + ::tokenize( + &self.contestedFinalStateTwo, + ), + ::tokenize( + &self.finalState, + ), + ) + } + } + }; + /**Custom error with signature `TournamentIsClosed()` and selector `0xac57beef`. +```solidity +error TournamentIsClosed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsClosed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsClosed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsClosed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsClosed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsClosed()"; + const SELECTOR: [u8; 4] = [172u8, 87u8, 190u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `TournamentIsFinished()` and selector `0x95ddf153`. +```solidity +error TournamentIsFinished(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsFinished {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsFinished) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsFinished { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsFinished { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsFinished()"; + const SELECTOR: [u8; 4] = [149u8, 221u8, 241u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WinByTimeout()` and selector `0x9a8d5646`. +```solidity +error WinByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WinByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WinByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WinByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WinByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WinByTimeout()"; + const SELECTOR: [u8; 4] = [154u8, 141u8, 86u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WrongChildren(uint256,bytes32,bytes32,bytes32)` and selector `0x75af4da6`. +```solidity +error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongChildren { + pub commitment: alloy::sol_types::private::primitives::aliases::U256, + pub parent: ::RustType, + pub left: ::RustType, + pub right: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongChildren) -> Self { + (value.commitment, value.parent, value.left, value.right) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongChildren { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitment: tuple.0, + parent: tuple.1, + left: tuple.2, + right: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongChildren { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongChildren(uint256,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [117u8, 175u8, 77u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commitment), + ::tokenize(&self.parent), + ::tokenize(&self.left), + ::tokenize(&self.right), + ) + } + } + }; + /**Custom error with signature `WrongTournamentWinner(bytes32,bytes32)` and selector `0xd74cbd1f`. +```solidity +error WrongTournamentWinner(Tree.Node commitmentRoot, Tree.Node winner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongTournamentWinner { + pub commitmentRoot: ::RustType, + pub winner: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongTournamentWinner) -> Self { + (value.commitmentRoot, value.winner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongTournamentWinner { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitmentRoot: tuple.0, + winner: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongTournamentWinner { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongTournamentWinner(bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [215u8, 76u8, 189u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.commitmentRoot, + ), + ::tokenize(&self.winner), + ) + } + } + }; + /**Event with signature `commitmentJoined(bytes32)` and selector `0xe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262`. +```solidity +event commitmentJoined(Tree.Node root); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct commitmentJoined { + #[allow(missing_docs)] + pub root: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for commitmentJoined { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "commitmentJoined(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { root: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.root),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for commitmentJoined { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&commitmentJoined> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &commitmentJoined) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchAdvanced(bytes32,bytes32,bytes32)` and selector `0x29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb369941378`. +```solidity +event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchAdvanced { + #[allow(missing_docs)] + pub _0: ::RustType, + #[allow(missing_docs)] + pub parent: ::RustType, + #[allow(missing_docs)] + pub left: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchAdvanced { + type DataTuple<'a> = (Tree::Node, Tree::Node); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>, Match::IdHash); + const SIGNATURE: &'static str = "matchAdvanced(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _0: topics.1, + parent: data.0, + left: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.parent), + ::tokenize(&self.left), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._0.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._0, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchAdvanced { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchAdvanced> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchAdvanced) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchCreated(bytes32,bytes32,bytes32)` and selector `0x32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e`. +```solidity +event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchCreated { + #[allow(missing_docs)] + pub one: ::RustType, + #[allow(missing_docs)] + pub two: ::RustType, + #[allow(missing_docs)] + pub leftOfTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchCreated { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + Tree::Node, + Tree::Node, + ); + const SIGNATURE: &'static str = "matchCreated(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + one: topics.1, + two: topics.2, + leftOfTwo: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.leftOfTwo),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.one.clone(), self.two.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.one, + ); + out[2usize] = ::encode_topic( + &self.two, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `newInnerTournament(bytes32,address)` and selector `0x166b786700a644dcec96aa84a92c26ecfee11b50956409c8cc83616042290d79`. +```solidity +event newInnerTournament(Match.IdHash indexed, address); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct newInnerTournament { + #[allow(missing_docs)] + pub _0: ::RustType, + #[allow(missing_docs)] + pub _1: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for newInnerTournament { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>, Match::IdHash); + const SIGNATURE: &'static str = "newInnerTournament(bytes32,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 22u8, + 107u8, + 120u8, + 103u8, + 0u8, + 166u8, + 68u8, + 220u8, + 236u8, + 150u8, + 170u8, + 132u8, + 169u8, + 44u8, + 38u8, + 236u8, + 254u8, + 225u8, + 27u8, + 80u8, + 149u8, + 100u8, + 9u8, + 200u8, + 204u8, + 131u8, + 97u8, + 96u8, + 66u8, + 41u8, + 13u8, + 121u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: topics.1, _1: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._0.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._0, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for newInnerTournament { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&newInnerTournament> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &newInnerTournament) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)` and selector `0xfcc85391`. +```solidity +function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + pub _newLeftNode: ::RustType, + pub _newRightNode: ::RustType, + } + ///Container type for the return parameters of the [`advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)`](advanceMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchCall) -> Self { + ( + value._matchId, + value._leftNode, + value._rightNode, + value._newLeftNode, + value._newRightNode, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + _newLeftNode: tuple.3, + _newRightNode: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for advanceMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = advanceMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 200u8, 83u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ::tokenize( + &self._newLeftNode, + ), + ::tokenize( + &self._newRightNode, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `canWinMatchByTimeout((bytes32,bytes32))` and selector `0x6a1a140d`. +```solidity +function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`canWinMatchByTimeout((bytes32,bytes32))`](canWinMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canWinMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canWinMatchByTimeoutReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canWinMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [106u8, 26u8, 20u8, 13u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `eliminateMatchByTimeout((bytes32,bytes32))` and selector `0x9a9b4b2b`. +```solidity +function eliminateMatchByTimeout(Match.Id memory _matchId) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`eliminateMatchByTimeout((bytes32,bytes32))`](eliminateMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eliminateMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eliminateMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eliminateMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [154u8, 155u8, 75u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCommitment(bytes32)` and selector `0x7795820c`. +```solidity +function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentCall { + pub _commitmentRoot: ::RustType, + } + ///Container type for the return parameters of the [`getCommitment(bytes32)`](getCommitmentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentReturn { + pub _0: ::RustType, + pub _1: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentCall) -> Self { + (value._commitmentRoot,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _commitmentRoot: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Clock::State, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCommitmentCall { + type Parameters<'a> = (Tree::Node,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCommitmentReturn; + type ReturnTuple<'a> = (Clock::State, Machine::Hash); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCommitment(bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 149u8, 130u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._commitmentRoot, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatch(bytes32)` and selector `0xfcc6077d`. +```solidity +function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatch(bytes32)`](getMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::State,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchReturn; + type ReturnTuple<'a> = (Match::State,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatch(bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 198u8, 7u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatchCycle(bytes32)` and selector `0x8acc802d`. +```solidity +function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatchCycle(bytes32)`](getMatchCycleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCycleCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchCycleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatchCycle(bytes32)"; + const SELECTOR: [u8; 4] = [138u8, 204u8, 128u8, 45u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `joinTournament(bytes32,bytes32[],bytes32,bytes32)` and selector `0x1d5bf796`. +```solidity +function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentCall { + pub _finalState: ::RustType, + pub _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`joinTournament(bytes32,bytes32[],bytes32,bytes32)`](joinTournamentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentCall) -> Self { + (value._finalState, value._proof, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for joinTournamentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _finalState: tuple.0, + _proof: tuple.1, + _leftNode: tuple.2, + _rightNode: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for joinTournamentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for joinTournamentCall { + type Parameters<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = joinTournamentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "joinTournament(bytes32,bytes32[],bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [29u8, 91u8, 247u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._finalState, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._proof), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `sealInnerMatchAndCreateInnerTournament((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32[])` and selector `0x3f36e2fe`. +```solidity +function sealInnerMatchAndCreateInnerTournament(Match.Id memory _matchId, Tree.Node _leftLeaf, Tree.Node _rightLeaf, Machine.Hash _agreeHash, bytes32[] memory _agreeHashProof) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sealInnerMatchAndCreateInnerTournamentCall { + pub _matchId: ::RustType, + pub _leftLeaf: ::RustType, + pub _rightLeaf: ::RustType, + pub _agreeHash: ::RustType, + pub _agreeHashProof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + } + ///Container type for the return parameters of the [`sealInnerMatchAndCreateInnerTournament((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32[])`](sealInnerMatchAndCreateInnerTournamentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct sealInnerMatchAndCreateInnerTournamentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: sealInnerMatchAndCreateInnerTournamentCall) -> Self { + ( + value._matchId, + value._leftLeaf, + value._rightLeaf, + value._agreeHash, + value._agreeHashProof, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for sealInnerMatchAndCreateInnerTournamentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftLeaf: tuple.1, + _rightLeaf: tuple.2, + _agreeHash: tuple.3, + _agreeHashProof: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: sealInnerMatchAndCreateInnerTournamentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for sealInnerMatchAndCreateInnerTournamentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sealInnerMatchAndCreateInnerTournamentCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sealInnerMatchAndCreateInnerTournamentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sealInnerMatchAndCreateInnerTournament((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32[])"; + const SELECTOR: [u8; 4] = [63u8, 54u8, 226u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftLeaf), + ::tokenize(&self._rightLeaf), + ::tokenize( + &self._agreeHash, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._agreeHashProof), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tournamentLevelConstants()` and selector `0xa1af906b`. +```solidity +function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsCall {} + ///Container type for the return parameters of the [`tournamentLevelConstants()`](tournamentLevelConstantsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsReturn { + pub _max_level: u64, + pub _level: u64, + pub _log2step: u64, + pub _height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, u64, u64, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsReturn) -> Self { + (value._max_level, value._level, value._log2step, value._height) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _max_level: tuple.0, + _level: tuple.1, + _log2step: tuple.2, + _height: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tournamentLevelConstantsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tournamentLevelConstantsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tournamentLevelConstants()"; + const SELECTOR: [u8; 4] = [161u8, 175u8, 144u8, 107u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winInnerMatch(address,bytes32,bytes32)` and selector `0xb401865c`. +```solidity +function winInnerMatch(address _childTournament, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winInnerMatchCall { + pub _childTournament: alloy::sol_types::private::Address, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`winInnerMatch(address,bytes32,bytes32)`](winInnerMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winInnerMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: winInnerMatchCall) -> Self { + (value._childTournament, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for winInnerMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _childTournament: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: winInnerMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for winInnerMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winInnerMatchCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winInnerMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winInnerMatch(address,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [180u8, 1u8, 134u8, 92u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._childTournament, + ), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)` and selector `0xff78e0ee`. +```solidity +function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)`](winMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id, Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutCall) -> Self { + (value._matchId, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winMatchByTimeoutCall { + type Parameters<'a> = (Match::Id, Tree::Node, Tree::Node); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [255u8, 120u8, 224u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`NonLeafTournament`](self) function calls. + pub enum NonLeafTournamentCalls { + advanceMatch(advanceMatchCall), + canWinMatchByTimeout(canWinMatchByTimeoutCall), + eliminateMatchByTimeout(eliminateMatchByTimeoutCall), + getCommitment(getCommitmentCall), + getMatch(getMatchCall), + getMatchCycle(getMatchCycleCall), + joinTournament(joinTournamentCall), + sealInnerMatchAndCreateInnerTournament( + sealInnerMatchAndCreateInnerTournamentCall, + ), + tournamentLevelConstants(tournamentLevelConstantsCall), + winInnerMatch(winInnerMatchCall), + winMatchByTimeout(winMatchByTimeoutCall), + } + #[automatically_derived] + impl NonLeafTournamentCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [29u8, 91u8, 247u8, 150u8], + [63u8, 54u8, 226u8, 254u8], + [106u8, 26u8, 20u8, 13u8], + [119u8, 149u8, 130u8, 12u8], + [138u8, 204u8, 128u8, 45u8], + [154u8, 155u8, 75u8, 43u8], + [161u8, 175u8, 144u8, 107u8], + [180u8, 1u8, 134u8, 92u8], + [252u8, 198u8, 7u8, 125u8], + [252u8, 200u8, 83u8, 145u8], + [255u8, 120u8, 224u8, 238u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for NonLeafTournamentCalls { + const NAME: &'static str = "NonLeafTournamentCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::advanceMatch(_) => { + ::SELECTOR + } + Self::canWinMatchByTimeout(_) => { + ::SELECTOR + } + Self::eliminateMatchByTimeout(_) => { + ::SELECTOR + } + Self::getCommitment(_) => { + ::SELECTOR + } + Self::getMatch(_) => ::SELECTOR, + Self::getMatchCycle(_) => { + ::SELECTOR + } + Self::joinTournament(_) => { + ::SELECTOR + } + Self::sealInnerMatchAndCreateInnerTournament(_) => { + ::SELECTOR + } + Self::tournamentLevelConstants(_) => { + ::SELECTOR + } + Self::winInnerMatch(_) => { + ::SELECTOR + } + Self::winMatchByTimeout(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn joinTournament( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::joinTournament) + } + joinTournament + }, + { + fn sealInnerMatchAndCreateInnerTournament( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + NonLeafTournamentCalls::sealInnerMatchAndCreateInnerTournament, + ) + } + sealInnerMatchAndCreateInnerTournament + }, + { + fn canWinMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::canWinMatchByTimeout) + } + canWinMatchByTimeout + }, + { + fn getCommitment( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::getCommitment) + } + getCommitment + }, + { + fn getMatchCycle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::getMatchCycle) + } + getMatchCycle + }, + { + fn eliminateMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::eliminateMatchByTimeout) + } + eliminateMatchByTimeout + }, + { + fn tournamentLevelConstants( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::tournamentLevelConstants) + } + tournamentLevelConstants + }, + { + fn winInnerMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::winInnerMatch) + } + winInnerMatch + }, + { + fn getMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::getMatch) + } + getMatch + }, + { + fn advanceMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::advanceMatch) + } + advanceMatch + }, + { + fn winMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentCalls::winMatchByTimeout) + } + winMatchByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::advanceMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCommitment(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMatch(inner) => { + ::abi_encoded_size(inner) + } + Self::getMatchCycle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::joinTournament(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::sealInnerMatchAndCreateInnerTournament(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winInnerMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::advanceMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCommitment(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatchCycle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::joinTournament(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::sealInnerMatchAndCreateInnerTournament(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winInnerMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`NonLeafTournament`](self) custom errors. + pub enum NonLeafTournamentErrors { + ChildTournamentNotFinished(ChildTournamentNotFinished), + EliminateByTimeout(EliminateByTimeout), + IncorrectAgreeState(IncorrectAgreeState), + InvalidContestedFinalState(InvalidContestedFinalState), + TournamentIsClosed(TournamentIsClosed), + TournamentIsFinished(TournamentIsFinished), + WinByTimeout(WinByTimeout), + WrongChildren(WrongChildren), + WrongTournamentWinner(WrongTournamentWinner), + } + #[automatically_derived] + impl NonLeafTournamentErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [117u8, 175u8, 77u8, 166u8], + [119u8, 58u8, 248u8, 1u8], + [149u8, 221u8, 241u8, 83u8], + [154u8, 141u8, 86u8, 70u8], + [172u8, 87u8, 190u8, 239u8], + [202u8, 90u8, 206u8, 179u8], + [215u8, 76u8, 189u8, 31u8], + [222u8, 11u8, 232u8, 194u8], + [244u8, 46u8, 76u8, 28u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for NonLeafTournamentErrors { + const NAME: &'static str = "NonLeafTournamentErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::ChildTournamentNotFinished(_) => { + ::SELECTOR + } + Self::EliminateByTimeout(_) => { + ::SELECTOR + } + Self::IncorrectAgreeState(_) => { + ::SELECTOR + } + Self::InvalidContestedFinalState(_) => { + ::SELECTOR + } + Self::TournamentIsClosed(_) => { + ::SELECTOR + } + Self::TournamentIsFinished(_) => { + ::SELECTOR + } + Self::WinByTimeout(_) => { + ::SELECTOR + } + Self::WrongChildren(_) => { + ::SELECTOR + } + Self::WrongTournamentWinner(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn WrongChildren( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::WrongChildren) + } + WrongChildren + }, + { + fn IncorrectAgreeState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::IncorrectAgreeState) + } + IncorrectAgreeState + }, + { + fn TournamentIsFinished( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::TournamentIsFinished) + } + TournamentIsFinished + }, + { + fn WinByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::WinByTimeout) + } + WinByTimeout + }, + { + fn TournamentIsClosed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::TournamentIsClosed) + } + TournamentIsClosed + }, + { + fn InvalidContestedFinalState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::InvalidContestedFinalState) + } + InvalidContestedFinalState + }, + { + fn WrongTournamentWinner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::WrongTournamentWinner) + } + WrongTournamentWinner + }, + { + fn ChildTournamentNotFinished( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::ChildTournamentNotFinished) + } + ChildTournamentNotFinished + }, + { + fn EliminateByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonLeafTournamentErrors::EliminateByTimeout) + } + EliminateByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::ChildTournamentNotFinished(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::EliminateByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::IncorrectAgreeState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongChildren(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongTournamentWinner(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::ChildTournamentNotFinished(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::EliminateByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAgreeState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongChildren(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongTournamentWinner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`NonLeafTournament`](self) events. + pub enum NonLeafTournamentEvents { + commitmentJoined(commitmentJoined), + matchAdvanced(matchAdvanced), + matchCreated(matchCreated), + newInnerTournament(newInnerTournament), + } + #[automatically_derived] + impl NonLeafTournamentEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 22u8, + 107u8, + 120u8, + 103u8, + 0u8, + 166u8, + 68u8, + 220u8, + 236u8, + 150u8, + 170u8, + 132u8, + 169u8, + 44u8, + 38u8, + 236u8, + 254u8, + 225u8, + 27u8, + 80u8, + 149u8, + 100u8, + 9u8, + 200u8, + 204u8, + 131u8, + 97u8, + 96u8, + 66u8, + 41u8, + 13u8, + 121u8, + ], + [ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ], + [ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ], + [ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for NonLeafTournamentEvents { + const NAME: &'static str = "NonLeafTournamentEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::commitmentJoined) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchAdvanced) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchCreated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::newInnerTournament) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NonLeafTournamentEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::newInnerTournament(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::newInnerTournament(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`NonLeafTournament`](self) contract instance. + +See the [wrapper's documentation](`NonLeafTournamentInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> NonLeafTournamentInstance { + NonLeafTournamentInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + NonLeafTournamentInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + NonLeafTournamentInstance::::deploy_builder(provider) + } + /**A [`NonLeafTournament`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`NonLeafTournament`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct NonLeafTournamentInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for NonLeafTournamentInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("NonLeafTournamentInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonLeafTournamentInstance { + /**Creates a new wrapper around an on-chain [`NonLeafTournament`](self) contract instance. + +See the [wrapper's documentation](`NonLeafTournamentInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl NonLeafTournamentInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> NonLeafTournamentInstance { + NonLeafTournamentInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonLeafTournamentInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`advanceMatch`] function. + pub fn advanceMatch( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + _newLeftNode: ::RustType, + _newRightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &advanceMatchCall { + _matchId, + _leftNode, + _rightNode, + _newLeftNode, + _newRightNode, + }, + ) + } + ///Creates a new call builder for the [`canWinMatchByTimeout`] function. + pub fn canWinMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &canWinMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`eliminateMatchByTimeout`] function. + pub fn eliminateMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &eliminateMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`getCommitment`] function. + pub fn getCommitment( + &self, + _commitmentRoot: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &getCommitmentCall { + _commitmentRoot, + }, + ) + } + ///Creates a new call builder for the [`getMatch`] function. + pub fn getMatch( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCall { _matchIdHash }) + } + ///Creates a new call builder for the [`getMatchCycle`] function. + pub fn getMatchCycle( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCycleCall { _matchIdHash }) + } + ///Creates a new call builder for the [`joinTournament`] function. + pub fn joinTournament( + &self, + _finalState: ::RustType, + _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &joinTournamentCall { + _finalState, + _proof, + _leftNode, + _rightNode, + }, + ) + } + ///Creates a new call builder for the [`sealInnerMatchAndCreateInnerTournament`] function. + pub fn sealInnerMatchAndCreateInnerTournament( + &self, + _matchId: ::RustType, + _leftLeaf: ::RustType, + _rightLeaf: ::RustType, + _agreeHash: ::RustType, + _agreeHashProof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + sealInnerMatchAndCreateInnerTournamentCall, + N, + > { + self.call_builder( + &sealInnerMatchAndCreateInnerTournamentCall { + _matchId, + _leftLeaf, + _rightLeaf, + _agreeHash, + _agreeHashProof, + }, + ) + } + ///Creates a new call builder for the [`tournamentLevelConstants`] function. + pub fn tournamentLevelConstants( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tournamentLevelConstantsCall {}) + } + ///Creates a new call builder for the [`winInnerMatch`] function. + pub fn winInnerMatch( + &self, + _childTournament: alloy::sol_types::private::Address, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winInnerMatchCall { + _childTournament, + _leftNode, + _rightNode, + }, + ) + } + ///Creates a new call builder for the [`winMatchByTimeout`] function. + pub fn winMatchByTimeout( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winMatchByTimeoutCall { + _matchId, + _leftNode, + _rightNode, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonLeafTournamentInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`commitmentJoined`] event. + pub fn commitmentJoined_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchAdvanced`] event. + pub fn matchAdvanced_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchCreated`] event. + pub fn matchCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`newInnerTournament`] event. + pub fn newInnerTournament_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/nonroottournament.rs b/prt/contracts/bindings-rs/src/contract/nonroottournament.rs new file mode 100644 index 00000000..aee0a81f --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/nonroottournament.rs @@ -0,0 +1,5985 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Clock { + struct State { Time.Duration allowance; Time.Instant startInstant; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Clock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity +struct State { Time.Duration allowance; Time.Instant startInstant; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub allowance: ::RustType, + pub startInstant: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Time::Duration, Time::Instant); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + (value.allowance, value.startInstant) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + allowance: tuple.0, + startInstant: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.allowance, + ), + ::tokenize( + &self.startInstant, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(uint64 allowance,uint64 startInstant)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.allowance, + ) + .0, + ::eip712_data_word( + &self.startInstant, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.allowance, + ) + + ::topic_preimage_length( + &rust.startInstant, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.allowance, + out, + ); + ::encode_topic_preimage( + &rust.startInstant, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ClockInstance { + ClockInstance::::new(address, provider) + } + /**A [`Clock`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Clock`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ClockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ClockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ClockInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ClockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ClockInstance { + ClockInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Match { + type IdHash is bytes32; + struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } + struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Match { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IdHash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl IdHash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for IdHash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for IdHash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + /**```solidity +struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Id { + pub commitmentOne: ::RustType, + pub commitmentTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Id) -> Self { + (value.commitmentOne, value.commitmentTwo) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Id { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitmentOne: tuple.0, + commitmentTwo: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Id { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Id { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.commitmentOne, + ), + ::tokenize( + &self.commitmentTwo, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Id { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Id { + const NAME: &'static str = "Id"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Id(bytes32 commitmentOne,bytes32 commitmentTwo)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.commitmentOne, + ) + .0, + ::eip712_data_word( + &self.commitmentTwo, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Id { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.commitmentOne, + ) + + ::topic_preimage_length( + &rust.commitmentTwo, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.commitmentOne, + out, + ); + ::encode_topic_preimage( + &rust.commitmentTwo, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub otherParent: ::RustType, + pub leftNode: ::RustType, + pub rightNode: ::RustType, + pub runningLeafPosition: alloy::sol_types::private::primitives::aliases::U256, + pub currentHeight: u64, + pub log2step: u64, + pub height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Tree::Node, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + u64, + u64, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + ( + value.otherParent, + value.leftNode, + value.rightNode, + value.runningLeafPosition, + value.currentHeight, + value.log2step, + value.height, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + otherParent: tuple.0, + leftNode: tuple.1, + rightNode: tuple.2, + runningLeafPosition: tuple.3, + currentHeight: tuple.4, + log2step: tuple.5, + height: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.otherParent, + ), + ::tokenize(&self.leftNode), + ::tokenize(&self.rightNode), + as alloy_sol_types::SolType>::tokenize(&self.runningLeafPosition), + as alloy_sol_types::SolType>::tokenize(&self.currentHeight), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(bytes32 otherParent,bytes32 leftNode,bytes32 rightNode,uint256 runningLeafPosition,uint64 currentHeight,uint64 log2step,uint64 height)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.otherParent, + ) + .0, + ::eip712_data_word( + &self.leftNode, + ) + .0, + ::eip712_data_word( + &self.rightNode, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.runningLeafPosition, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.currentHeight) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.otherParent, + ) + + ::topic_preimage_length( + &rust.leftNode, + ) + + ::topic_preimage_length( + &rust.rightNode, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.runningLeafPosition, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.currentHeight, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.otherParent, + out, + ); + ::encode_topic_preimage( + &rust.leftNode, + out, + ); + ::encode_topic_preimage( + &rust.rightNode, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.runningLeafPosition, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.currentHeight, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MatchInstance { + MatchInstance::::new(address, provider) + } + /**A [`Match`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Match`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MatchInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MatchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MatchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MatchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MatchInstance { + MatchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; + type Instant is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Instant(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Instant { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Instant { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Instant { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Clock { + struct State { + Time.Duration allowance; + Time.Instant startInstant; + } +} + +library Machine { + type Hash is bytes32; +} + +library Match { + type IdHash is bytes32; + struct Id { + Tree.Node commitmentOne; + Tree.Node commitmentTwo; + } + struct State { + Tree.Node otherParent; + Tree.Node leftNode; + Tree.Node rightNode; + uint256 runningLeafPosition; + uint64 currentHeight; + uint64 log2step; + uint64 height; + } +} + +library Time { + type Duration is uint64; + type Instant is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface NonRootTournament { + error EliminateByTimeout(); + error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); + error TournamentIsClosed(); + error TournamentIsFinished(); + error WinByTimeout(); + error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); + + event commitmentJoined(Tree.Node root); + event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); + event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); + + function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; + function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); + function eliminateMatchByTimeout(Match.Id memory _matchId) external; + function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); + function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); + function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); + function innerTournamentWinner() external view returns (bool, Tree.Node, Tree.Node); + function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; + function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); + function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "advanceMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newLeftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newRightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canWinMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eliminateMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCommitment", + "inputs": [ + { + "name": "_commitmentRoot", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Clock.State", + "components": [ + { + "name": "allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "startInstant", + "type": "uint64", + "internalType": "Time.Instant" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatch", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Match.State", + "components": [ + { + "name": "otherParent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "runningLeafPosition", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentHeight", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatchCycle", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "innerTournamentWinner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "joinTournament", + "inputs": [ + { + "name": "_finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_proof", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "tournamentLevelConstants", + "inputs": [], + "outputs": [ + { + "name": "_max_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_height", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "winMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "commitmentJoined", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchAdvanced", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": true, + "internalType": "Match.IdHash" + }, + { + "name": "parent", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchCreated", + "inputs": [ + { + "name": "one", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "two", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "leftOfTwo", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "EliminateByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidContestedFinalState", + "inputs": [ + { + "name": "contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "TournamentIsClosed", + "inputs": [] + }, + { + "type": "error", + "name": "TournamentIsFinished", + "inputs": [] + }, + { + "type": "error", + "name": "WinByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "WrongChildren", + "inputs": [ + { + "name": "commitment", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "parent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "right", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod NonRootTournament { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `EliminateByTimeout()` and selector `0xf42e4c1c`. +```solidity +error EliminateByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct EliminateByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EliminateByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EliminateByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EliminateByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EliminateByTimeout()"; + const SELECTOR: [u8; 4] = [244u8, 46u8, 76u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidContestedFinalState(bytes32,bytes32,bytes32)` and selector `0xca5aceb3`. +```solidity +error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidContestedFinalState { + pub contestedFinalStateOne: ::RustType, + pub contestedFinalStateTwo: ::RustType, + pub finalState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: InvalidContestedFinalState) -> Self { + ( + value.contestedFinalStateOne, + value.contestedFinalStateTwo, + value.finalState, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for InvalidContestedFinalState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + contestedFinalStateOne: tuple.0, + contestedFinalStateTwo: tuple.1, + finalState: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidContestedFinalState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidContestedFinalState(bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [202u8, 90u8, 206u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.contestedFinalStateOne, + ), + ::tokenize( + &self.contestedFinalStateTwo, + ), + ::tokenize( + &self.finalState, + ), + ) + } + } + }; + /**Custom error with signature `TournamentIsClosed()` and selector `0xac57beef`. +```solidity +error TournamentIsClosed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsClosed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsClosed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsClosed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsClosed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsClosed()"; + const SELECTOR: [u8; 4] = [172u8, 87u8, 190u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `TournamentIsFinished()` and selector `0x95ddf153`. +```solidity +error TournamentIsFinished(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsFinished {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsFinished) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsFinished { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsFinished { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsFinished()"; + const SELECTOR: [u8; 4] = [149u8, 221u8, 241u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WinByTimeout()` and selector `0x9a8d5646`. +```solidity +error WinByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WinByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WinByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WinByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WinByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WinByTimeout()"; + const SELECTOR: [u8; 4] = [154u8, 141u8, 86u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WrongChildren(uint256,bytes32,bytes32,bytes32)` and selector `0x75af4da6`. +```solidity +error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongChildren { + pub commitment: alloy::sol_types::private::primitives::aliases::U256, + pub parent: ::RustType, + pub left: ::RustType, + pub right: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongChildren) -> Self { + (value.commitment, value.parent, value.left, value.right) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongChildren { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitment: tuple.0, + parent: tuple.1, + left: tuple.2, + right: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongChildren { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongChildren(uint256,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [117u8, 175u8, 77u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commitment), + ::tokenize(&self.parent), + ::tokenize(&self.left), + ::tokenize(&self.right), + ) + } + } + }; + /**Event with signature `commitmentJoined(bytes32)` and selector `0xe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262`. +```solidity +event commitmentJoined(Tree.Node root); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct commitmentJoined { + #[allow(missing_docs)] + pub root: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for commitmentJoined { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "commitmentJoined(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { root: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.root),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for commitmentJoined { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&commitmentJoined> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &commitmentJoined) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchAdvanced(bytes32,bytes32,bytes32)` and selector `0x29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb369941378`. +```solidity +event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchAdvanced { + #[allow(missing_docs)] + pub _0: ::RustType, + #[allow(missing_docs)] + pub parent: ::RustType, + #[allow(missing_docs)] + pub left: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchAdvanced { + type DataTuple<'a> = (Tree::Node, Tree::Node); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>, Match::IdHash); + const SIGNATURE: &'static str = "matchAdvanced(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _0: topics.1, + parent: data.0, + left: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.parent), + ::tokenize(&self.left), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._0.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._0, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchAdvanced { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchAdvanced> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchAdvanced) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchCreated(bytes32,bytes32,bytes32)` and selector `0x32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e`. +```solidity +event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchCreated { + #[allow(missing_docs)] + pub one: ::RustType, + #[allow(missing_docs)] + pub two: ::RustType, + #[allow(missing_docs)] + pub leftOfTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchCreated { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + Tree::Node, + Tree::Node, + ); + const SIGNATURE: &'static str = "matchCreated(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + one: topics.1, + two: topics.2, + leftOfTwo: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.leftOfTwo),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.one.clone(), self.two.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.one, + ); + out[2usize] = ::encode_topic( + &self.two, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)` and selector `0xfcc85391`. +```solidity +function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + pub _newLeftNode: ::RustType, + pub _newRightNode: ::RustType, + } + ///Container type for the return parameters of the [`advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)`](advanceMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchCall) -> Self { + ( + value._matchId, + value._leftNode, + value._rightNode, + value._newLeftNode, + value._newRightNode, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + _newLeftNode: tuple.3, + _newRightNode: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for advanceMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = advanceMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 200u8, 83u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ::tokenize( + &self._newLeftNode, + ), + ::tokenize( + &self._newRightNode, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `canWinMatchByTimeout((bytes32,bytes32))` and selector `0x6a1a140d`. +```solidity +function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`canWinMatchByTimeout((bytes32,bytes32))`](canWinMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canWinMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canWinMatchByTimeoutReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canWinMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [106u8, 26u8, 20u8, 13u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `eliminateMatchByTimeout((bytes32,bytes32))` and selector `0x9a9b4b2b`. +```solidity +function eliminateMatchByTimeout(Match.Id memory _matchId) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`eliminateMatchByTimeout((bytes32,bytes32))`](eliminateMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eliminateMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eliminateMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eliminateMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [154u8, 155u8, 75u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCommitment(bytes32)` and selector `0x7795820c`. +```solidity +function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentCall { + pub _commitmentRoot: ::RustType, + } + ///Container type for the return parameters of the [`getCommitment(bytes32)`](getCommitmentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentReturn { + pub _0: ::RustType, + pub _1: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentCall) -> Self { + (value._commitmentRoot,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _commitmentRoot: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Clock::State, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCommitmentCall { + type Parameters<'a> = (Tree::Node,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCommitmentReturn; + type ReturnTuple<'a> = (Clock::State, Machine::Hash); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCommitment(bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 149u8, 130u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._commitmentRoot, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatch(bytes32)` and selector `0xfcc6077d`. +```solidity +function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatch(bytes32)`](getMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::State,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchReturn; + type ReturnTuple<'a> = (Match::State,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatch(bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 198u8, 7u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatchCycle(bytes32)` and selector `0x8acc802d`. +```solidity +function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatchCycle(bytes32)`](getMatchCycleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCycleCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchCycleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatchCycle(bytes32)"; + const SELECTOR: [u8; 4] = [138u8, 204u8, 128u8, 45u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `innerTournamentWinner()` and selector `0x5145236f`. +```solidity +function innerTournamentWinner() external view returns (bool, Tree.Node, Tree.Node); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct innerTournamentWinnerCall {} + ///Container type for the return parameters of the [`innerTournamentWinner()`](innerTournamentWinnerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct innerTournamentWinnerReturn { + pub _0: bool, + pub _1: ::RustType, + pub _2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: innerTournamentWinnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for innerTournamentWinnerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + bool, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: innerTournamentWinnerReturn) -> Self { + (value._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for innerTournamentWinnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for innerTournamentWinnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = innerTournamentWinnerReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + Tree::Node, + Tree::Node, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "innerTournamentWinner()"; + const SELECTOR: [u8; 4] = [81u8, 69u8, 35u8, 111u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `joinTournament(bytes32,bytes32[],bytes32,bytes32)` and selector `0x1d5bf796`. +```solidity +function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentCall { + pub _finalState: ::RustType, + pub _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`joinTournament(bytes32,bytes32[],bytes32,bytes32)`](joinTournamentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentCall) -> Self { + (value._finalState, value._proof, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for joinTournamentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _finalState: tuple.0, + _proof: tuple.1, + _leftNode: tuple.2, + _rightNode: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for joinTournamentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for joinTournamentCall { + type Parameters<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = joinTournamentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "joinTournament(bytes32,bytes32[],bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [29u8, 91u8, 247u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._finalState, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._proof), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tournamentLevelConstants()` and selector `0xa1af906b`. +```solidity +function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsCall {} + ///Container type for the return parameters of the [`tournamentLevelConstants()`](tournamentLevelConstantsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsReturn { + pub _max_level: u64, + pub _level: u64, + pub _log2step: u64, + pub _height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, u64, u64, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsReturn) -> Self { + (value._max_level, value._level, value._log2step, value._height) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _max_level: tuple.0, + _level: tuple.1, + _log2step: tuple.2, + _height: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tournamentLevelConstantsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tournamentLevelConstantsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tournamentLevelConstants()"; + const SELECTOR: [u8; 4] = [161u8, 175u8, 144u8, 107u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)` and selector `0xff78e0ee`. +```solidity +function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)`](winMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id, Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutCall) -> Self { + (value._matchId, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winMatchByTimeoutCall { + type Parameters<'a> = (Match::Id, Tree::Node, Tree::Node); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [255u8, 120u8, 224u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`NonRootTournament`](self) function calls. + pub enum NonRootTournamentCalls { + advanceMatch(advanceMatchCall), + canWinMatchByTimeout(canWinMatchByTimeoutCall), + eliminateMatchByTimeout(eliminateMatchByTimeoutCall), + getCommitment(getCommitmentCall), + getMatch(getMatchCall), + getMatchCycle(getMatchCycleCall), + innerTournamentWinner(innerTournamentWinnerCall), + joinTournament(joinTournamentCall), + tournamentLevelConstants(tournamentLevelConstantsCall), + winMatchByTimeout(winMatchByTimeoutCall), + } + #[automatically_derived] + impl NonRootTournamentCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [29u8, 91u8, 247u8, 150u8], + [81u8, 69u8, 35u8, 111u8], + [106u8, 26u8, 20u8, 13u8], + [119u8, 149u8, 130u8, 12u8], + [138u8, 204u8, 128u8, 45u8], + [154u8, 155u8, 75u8, 43u8], + [161u8, 175u8, 144u8, 107u8], + [252u8, 198u8, 7u8, 125u8], + [252u8, 200u8, 83u8, 145u8], + [255u8, 120u8, 224u8, 238u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for NonRootTournamentCalls { + const NAME: &'static str = "NonRootTournamentCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::advanceMatch(_) => { + ::SELECTOR + } + Self::canWinMatchByTimeout(_) => { + ::SELECTOR + } + Self::eliminateMatchByTimeout(_) => { + ::SELECTOR + } + Self::getCommitment(_) => { + ::SELECTOR + } + Self::getMatch(_) => ::SELECTOR, + Self::getMatchCycle(_) => { + ::SELECTOR + } + Self::innerTournamentWinner(_) => { + ::SELECTOR + } + Self::joinTournament(_) => { + ::SELECTOR + } + Self::tournamentLevelConstants(_) => { + ::SELECTOR + } + Self::winMatchByTimeout(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn joinTournament( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::joinTournament) + } + joinTournament + }, + { + fn innerTournamentWinner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::innerTournamentWinner) + } + innerTournamentWinner + }, + { + fn canWinMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::canWinMatchByTimeout) + } + canWinMatchByTimeout + }, + { + fn getCommitment( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::getCommitment) + } + getCommitment + }, + { + fn getMatchCycle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::getMatchCycle) + } + getMatchCycle + }, + { + fn eliminateMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::eliminateMatchByTimeout) + } + eliminateMatchByTimeout + }, + { + fn tournamentLevelConstants( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::tournamentLevelConstants) + } + tournamentLevelConstants + }, + { + fn getMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::getMatch) + } + getMatch + }, + { + fn advanceMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::advanceMatch) + } + advanceMatch + }, + { + fn winMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentCalls::winMatchByTimeout) + } + winMatchByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::advanceMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCommitment(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMatch(inner) => { + ::abi_encoded_size(inner) + } + Self::getMatchCycle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::innerTournamentWinner(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::joinTournament(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::advanceMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCommitment(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatchCycle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::innerTournamentWinner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::joinTournament(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`NonRootTournament`](self) custom errors. + pub enum NonRootTournamentErrors { + EliminateByTimeout(EliminateByTimeout), + InvalidContestedFinalState(InvalidContestedFinalState), + TournamentIsClosed(TournamentIsClosed), + TournamentIsFinished(TournamentIsFinished), + WinByTimeout(WinByTimeout), + WrongChildren(WrongChildren), + } + #[automatically_derived] + impl NonRootTournamentErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [117u8, 175u8, 77u8, 166u8], + [149u8, 221u8, 241u8, 83u8], + [154u8, 141u8, 86u8, 70u8], + [172u8, 87u8, 190u8, 239u8], + [202u8, 90u8, 206u8, 179u8], + [244u8, 46u8, 76u8, 28u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for NonRootTournamentErrors { + const NAME: &'static str = "NonRootTournamentErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::EliminateByTimeout(_) => { + ::SELECTOR + } + Self::InvalidContestedFinalState(_) => { + ::SELECTOR + } + Self::TournamentIsClosed(_) => { + ::SELECTOR + } + Self::TournamentIsFinished(_) => { + ::SELECTOR + } + Self::WinByTimeout(_) => { + ::SELECTOR + } + Self::WrongChildren(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn WrongChildren( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentErrors::WrongChildren) + } + WrongChildren + }, + { + fn TournamentIsFinished( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentErrors::TournamentIsFinished) + } + TournamentIsFinished + }, + { + fn WinByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentErrors::WinByTimeout) + } + WinByTimeout + }, + { + fn TournamentIsClosed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentErrors::TournamentIsClosed) + } + TournamentIsClosed + }, + { + fn InvalidContestedFinalState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentErrors::InvalidContestedFinalState) + } + InvalidContestedFinalState + }, + { + fn EliminateByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonRootTournamentErrors::EliminateByTimeout) + } + EliminateByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongChildren(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongChildren(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`NonRootTournament`](self) events. + pub enum NonRootTournamentEvents { + commitmentJoined(commitmentJoined), + matchAdvanced(matchAdvanced), + matchCreated(matchCreated), + } + #[automatically_derived] + impl NonRootTournamentEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ], + [ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ], + [ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for NonRootTournamentEvents { + const NAME: &'static str = "NonRootTournamentEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::commitmentJoined) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchAdvanced) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchCreated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NonRootTournamentEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`NonRootTournament`](self) contract instance. + +See the [wrapper's documentation](`NonRootTournamentInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> NonRootTournamentInstance { + NonRootTournamentInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + NonRootTournamentInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + NonRootTournamentInstance::::deploy_builder(provider) + } + /**A [`NonRootTournament`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`NonRootTournament`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct NonRootTournamentInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for NonRootTournamentInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("NonRootTournamentInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonRootTournamentInstance { + /**Creates a new wrapper around an on-chain [`NonRootTournament`](self) contract instance. + +See the [wrapper's documentation](`NonRootTournamentInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl NonRootTournamentInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> NonRootTournamentInstance { + NonRootTournamentInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonRootTournamentInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`advanceMatch`] function. + pub fn advanceMatch( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + _newLeftNode: ::RustType, + _newRightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &advanceMatchCall { + _matchId, + _leftNode, + _rightNode, + _newLeftNode, + _newRightNode, + }, + ) + } + ///Creates a new call builder for the [`canWinMatchByTimeout`] function. + pub fn canWinMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &canWinMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`eliminateMatchByTimeout`] function. + pub fn eliminateMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &eliminateMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`getCommitment`] function. + pub fn getCommitment( + &self, + _commitmentRoot: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &getCommitmentCall { + _commitmentRoot, + }, + ) + } + ///Creates a new call builder for the [`getMatch`] function. + pub fn getMatch( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCall { _matchIdHash }) + } + ///Creates a new call builder for the [`getMatchCycle`] function. + pub fn getMatchCycle( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCycleCall { _matchIdHash }) + } + ///Creates a new call builder for the [`innerTournamentWinner`] function. + pub fn innerTournamentWinner( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&innerTournamentWinnerCall {}) + } + ///Creates a new call builder for the [`joinTournament`] function. + pub fn joinTournament( + &self, + _finalState: ::RustType, + _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &joinTournamentCall { + _finalState, + _proof, + _leftNode, + _rightNode, + }, + ) + } + ///Creates a new call builder for the [`tournamentLevelConstants`] function. + pub fn tournamentLevelConstants( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tournamentLevelConstantsCall {}) + } + ///Creates a new call builder for the [`winMatchByTimeout`] function. + pub fn winMatchByTimeout( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winMatchByTimeoutCall { + _matchId, + _leftNode, + _rightNode, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonRootTournamentInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`commitmentJoined`] event. + pub fn commitmentJoined_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchAdvanced`] event. + pub fn matchAdvanced_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchCreated`] event. + pub fn matchCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/roottournament.rs b/prt/contracts/bindings-rs/src/contract/roottournament.rs new file mode 100644 index 00000000..ca1a34a8 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/roottournament.rs @@ -0,0 +1,5985 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Clock { + struct State { Time.Duration allowance; Time.Instant startInstant; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Clock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity +struct State { Time.Duration allowance; Time.Instant startInstant; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub allowance: ::RustType, + pub startInstant: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Time::Duration, Time::Instant); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + (value.allowance, value.startInstant) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + allowance: tuple.0, + startInstant: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.allowance, + ), + ::tokenize( + &self.startInstant, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(uint64 allowance,uint64 startInstant)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.allowance, + ) + .0, + ::eip712_data_word( + &self.startInstant, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.allowance, + ) + + ::topic_preimage_length( + &rust.startInstant, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.allowance, + out, + ); + ::encode_topic_preimage( + &rust.startInstant, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ClockInstance { + ClockInstance::::new(address, provider) + } + /**A [`Clock`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Clock`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ClockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ClockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ClockInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ClockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ClockInstance { + ClockInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Match { + type IdHash is bytes32; + struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } + struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Match { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IdHash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl IdHash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for IdHash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for IdHash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + /**```solidity +struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Id { + pub commitmentOne: ::RustType, + pub commitmentTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Id) -> Self { + (value.commitmentOne, value.commitmentTwo) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Id { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitmentOne: tuple.0, + commitmentTwo: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Id { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Id { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.commitmentOne, + ), + ::tokenize( + &self.commitmentTwo, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Id { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Id { + const NAME: &'static str = "Id"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Id(bytes32 commitmentOne,bytes32 commitmentTwo)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.commitmentOne, + ) + .0, + ::eip712_data_word( + &self.commitmentTwo, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Id { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.commitmentOne, + ) + + ::topic_preimage_length( + &rust.commitmentTwo, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.commitmentOne, + out, + ); + ::encode_topic_preimage( + &rust.commitmentTwo, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub otherParent: ::RustType, + pub leftNode: ::RustType, + pub rightNode: ::RustType, + pub runningLeafPosition: alloy::sol_types::private::primitives::aliases::U256, + pub currentHeight: u64, + pub log2step: u64, + pub height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Tree::Node, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + u64, + u64, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + ( + value.otherParent, + value.leftNode, + value.rightNode, + value.runningLeafPosition, + value.currentHeight, + value.log2step, + value.height, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + otherParent: tuple.0, + leftNode: tuple.1, + rightNode: tuple.2, + runningLeafPosition: tuple.3, + currentHeight: tuple.4, + log2step: tuple.5, + height: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.otherParent, + ), + ::tokenize(&self.leftNode), + ::tokenize(&self.rightNode), + as alloy_sol_types::SolType>::tokenize(&self.runningLeafPosition), + as alloy_sol_types::SolType>::tokenize(&self.currentHeight), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(bytes32 otherParent,bytes32 leftNode,bytes32 rightNode,uint256 runningLeafPosition,uint64 currentHeight,uint64 log2step,uint64 height)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.otherParent, + ) + .0, + ::eip712_data_word( + &self.leftNode, + ) + .0, + ::eip712_data_word( + &self.rightNode, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.runningLeafPosition, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.currentHeight) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.otherParent, + ) + + ::topic_preimage_length( + &rust.leftNode, + ) + + ::topic_preimage_length( + &rust.rightNode, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.runningLeafPosition, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.currentHeight, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.otherParent, + out, + ); + ::encode_topic_preimage( + &rust.leftNode, + out, + ); + ::encode_topic_preimage( + &rust.rightNode, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.runningLeafPosition, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.currentHeight, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MatchInstance { + MatchInstance::::new(address, provider) + } + /**A [`Match`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Match`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MatchInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MatchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MatchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MatchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MatchInstance { + MatchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; + type Instant is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Instant(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Instant { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Instant { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Instant { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Clock { + struct State { + Time.Duration allowance; + Time.Instant startInstant; + } +} + +library Machine { + type Hash is bytes32; +} + +library Match { + type IdHash is bytes32; + struct Id { + Tree.Node commitmentOne; + Tree.Node commitmentTwo; + } + struct State { + Tree.Node otherParent; + Tree.Node leftNode; + Tree.Node rightNode; + uint256 runningLeafPosition; + uint64 currentHeight; + uint64 log2step; + uint64 height; + } +} + +library Time { + type Duration is uint64; + type Instant is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface RootTournament { + error EliminateByTimeout(); + error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); + error TournamentIsClosed(); + error TournamentIsFinished(); + error WinByTimeout(); + error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); + + event commitmentJoined(Tree.Node root); + event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); + event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); + + function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; + function arbitrationResult() external view returns (bool, Tree.Node, Machine.Hash); + function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); + function eliminateMatchByTimeout(Match.Id memory _matchId) external; + function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); + function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); + function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); + function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; + function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); + function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "advanceMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newLeftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newRightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "arbitrationResult", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "canWinMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eliminateMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCommitment", + "inputs": [ + { + "name": "_commitmentRoot", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Clock.State", + "components": [ + { + "name": "allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "startInstant", + "type": "uint64", + "internalType": "Time.Instant" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatch", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Match.State", + "components": [ + { + "name": "otherParent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "runningLeafPosition", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentHeight", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatchCycle", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "joinTournament", + "inputs": [ + { + "name": "_finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_proof", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "tournamentLevelConstants", + "inputs": [], + "outputs": [ + { + "name": "_max_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_height", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "winMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "commitmentJoined", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchAdvanced", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": true, + "internalType": "Match.IdHash" + }, + { + "name": "parent", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchCreated", + "inputs": [ + { + "name": "one", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "two", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "leftOfTwo", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "EliminateByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidContestedFinalState", + "inputs": [ + { + "name": "contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "TournamentIsClosed", + "inputs": [] + }, + { + "type": "error", + "name": "TournamentIsFinished", + "inputs": [] + }, + { + "type": "error", + "name": "WinByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "WrongChildren", + "inputs": [ + { + "name": "commitment", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "parent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "right", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod RootTournament { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `EliminateByTimeout()` and selector `0xf42e4c1c`. +```solidity +error EliminateByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct EliminateByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EliminateByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EliminateByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EliminateByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EliminateByTimeout()"; + const SELECTOR: [u8; 4] = [244u8, 46u8, 76u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidContestedFinalState(bytes32,bytes32,bytes32)` and selector `0xca5aceb3`. +```solidity +error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidContestedFinalState { + pub contestedFinalStateOne: ::RustType, + pub contestedFinalStateTwo: ::RustType, + pub finalState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: InvalidContestedFinalState) -> Self { + ( + value.contestedFinalStateOne, + value.contestedFinalStateTwo, + value.finalState, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for InvalidContestedFinalState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + contestedFinalStateOne: tuple.0, + contestedFinalStateTwo: tuple.1, + finalState: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidContestedFinalState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidContestedFinalState(bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [202u8, 90u8, 206u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.contestedFinalStateOne, + ), + ::tokenize( + &self.contestedFinalStateTwo, + ), + ::tokenize( + &self.finalState, + ), + ) + } + } + }; + /**Custom error with signature `TournamentIsClosed()` and selector `0xac57beef`. +```solidity +error TournamentIsClosed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsClosed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsClosed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsClosed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsClosed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsClosed()"; + const SELECTOR: [u8; 4] = [172u8, 87u8, 190u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `TournamentIsFinished()` and selector `0x95ddf153`. +```solidity +error TournamentIsFinished(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsFinished {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsFinished) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsFinished { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsFinished { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsFinished()"; + const SELECTOR: [u8; 4] = [149u8, 221u8, 241u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WinByTimeout()` and selector `0x9a8d5646`. +```solidity +error WinByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WinByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WinByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WinByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WinByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WinByTimeout()"; + const SELECTOR: [u8; 4] = [154u8, 141u8, 86u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WrongChildren(uint256,bytes32,bytes32,bytes32)` and selector `0x75af4da6`. +```solidity +error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongChildren { + pub commitment: alloy::sol_types::private::primitives::aliases::U256, + pub parent: ::RustType, + pub left: ::RustType, + pub right: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongChildren) -> Self { + (value.commitment, value.parent, value.left, value.right) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongChildren { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitment: tuple.0, + parent: tuple.1, + left: tuple.2, + right: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongChildren { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongChildren(uint256,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [117u8, 175u8, 77u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commitment), + ::tokenize(&self.parent), + ::tokenize(&self.left), + ::tokenize(&self.right), + ) + } + } + }; + /**Event with signature `commitmentJoined(bytes32)` and selector `0xe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262`. +```solidity +event commitmentJoined(Tree.Node root); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct commitmentJoined { + #[allow(missing_docs)] + pub root: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for commitmentJoined { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "commitmentJoined(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { root: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.root),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for commitmentJoined { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&commitmentJoined> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &commitmentJoined) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchAdvanced(bytes32,bytes32,bytes32)` and selector `0x29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb369941378`. +```solidity +event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchAdvanced { + #[allow(missing_docs)] + pub _0: ::RustType, + #[allow(missing_docs)] + pub parent: ::RustType, + #[allow(missing_docs)] + pub left: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchAdvanced { + type DataTuple<'a> = (Tree::Node, Tree::Node); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>, Match::IdHash); + const SIGNATURE: &'static str = "matchAdvanced(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _0: topics.1, + parent: data.0, + left: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.parent), + ::tokenize(&self.left), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._0.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._0, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchAdvanced { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchAdvanced> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchAdvanced) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchCreated(bytes32,bytes32,bytes32)` and selector `0x32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e`. +```solidity +event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchCreated { + #[allow(missing_docs)] + pub one: ::RustType, + #[allow(missing_docs)] + pub two: ::RustType, + #[allow(missing_docs)] + pub leftOfTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchCreated { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + Tree::Node, + Tree::Node, + ); + const SIGNATURE: &'static str = "matchCreated(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + one: topics.1, + two: topics.2, + leftOfTwo: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.leftOfTwo),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.one.clone(), self.two.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.one, + ); + out[2usize] = ::encode_topic( + &self.two, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)` and selector `0xfcc85391`. +```solidity +function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + pub _newLeftNode: ::RustType, + pub _newRightNode: ::RustType, + } + ///Container type for the return parameters of the [`advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)`](advanceMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchCall) -> Self { + ( + value._matchId, + value._leftNode, + value._rightNode, + value._newLeftNode, + value._newRightNode, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + _newLeftNode: tuple.3, + _newRightNode: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for advanceMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = advanceMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 200u8, 83u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ::tokenize( + &self._newLeftNode, + ), + ::tokenize( + &self._newRightNode, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `arbitrationResult()` and selector `0xcb2773db`. +```solidity +function arbitrationResult() external view returns (bool, Tree.Node, Machine.Hash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct arbitrationResultCall {} + ///Container type for the return parameters of the [`arbitrationResult()`](arbitrationResultCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct arbitrationResultReturn { + pub _0: bool, + pub _1: ::RustType, + pub _2: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: arbitrationResultCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for arbitrationResultCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + Tree::Node, + Machine::Hash, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + bool, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: arbitrationResultReturn) -> Self { + (value._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for arbitrationResultReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for arbitrationResultCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = arbitrationResultReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + Tree::Node, + Machine::Hash, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "arbitrationResult()"; + const SELECTOR: [u8; 4] = [203u8, 39u8, 115u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `canWinMatchByTimeout((bytes32,bytes32))` and selector `0x6a1a140d`. +```solidity +function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`canWinMatchByTimeout((bytes32,bytes32))`](canWinMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canWinMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canWinMatchByTimeoutReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canWinMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [106u8, 26u8, 20u8, 13u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `eliminateMatchByTimeout((bytes32,bytes32))` and selector `0x9a9b4b2b`. +```solidity +function eliminateMatchByTimeout(Match.Id memory _matchId) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`eliminateMatchByTimeout((bytes32,bytes32))`](eliminateMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eliminateMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eliminateMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eliminateMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [154u8, 155u8, 75u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCommitment(bytes32)` and selector `0x7795820c`. +```solidity +function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentCall { + pub _commitmentRoot: ::RustType, + } + ///Container type for the return parameters of the [`getCommitment(bytes32)`](getCommitmentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentReturn { + pub _0: ::RustType, + pub _1: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentCall) -> Self { + (value._commitmentRoot,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _commitmentRoot: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Clock::State, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCommitmentCall { + type Parameters<'a> = (Tree::Node,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCommitmentReturn; + type ReturnTuple<'a> = (Clock::State, Machine::Hash); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCommitment(bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 149u8, 130u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._commitmentRoot, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatch(bytes32)` and selector `0xfcc6077d`. +```solidity +function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatch(bytes32)`](getMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::State,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchReturn; + type ReturnTuple<'a> = (Match::State,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatch(bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 198u8, 7u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatchCycle(bytes32)` and selector `0x8acc802d`. +```solidity +function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatchCycle(bytes32)`](getMatchCycleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCycleCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchCycleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatchCycle(bytes32)"; + const SELECTOR: [u8; 4] = [138u8, 204u8, 128u8, 45u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `joinTournament(bytes32,bytes32[],bytes32,bytes32)` and selector `0x1d5bf796`. +```solidity +function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentCall { + pub _finalState: ::RustType, + pub _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`joinTournament(bytes32,bytes32[],bytes32,bytes32)`](joinTournamentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentCall) -> Self { + (value._finalState, value._proof, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for joinTournamentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _finalState: tuple.0, + _proof: tuple.1, + _leftNode: tuple.2, + _rightNode: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for joinTournamentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for joinTournamentCall { + type Parameters<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = joinTournamentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "joinTournament(bytes32,bytes32[],bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [29u8, 91u8, 247u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._finalState, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._proof), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tournamentLevelConstants()` and selector `0xa1af906b`. +```solidity +function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsCall {} + ///Container type for the return parameters of the [`tournamentLevelConstants()`](tournamentLevelConstantsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsReturn { + pub _max_level: u64, + pub _level: u64, + pub _log2step: u64, + pub _height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, u64, u64, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsReturn) -> Self { + (value._max_level, value._level, value._log2step, value._height) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _max_level: tuple.0, + _level: tuple.1, + _log2step: tuple.2, + _height: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tournamentLevelConstantsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tournamentLevelConstantsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tournamentLevelConstants()"; + const SELECTOR: [u8; 4] = [161u8, 175u8, 144u8, 107u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)` and selector `0xff78e0ee`. +```solidity +function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)`](winMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id, Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutCall) -> Self { + (value._matchId, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winMatchByTimeoutCall { + type Parameters<'a> = (Match::Id, Tree::Node, Tree::Node); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [255u8, 120u8, 224u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`RootTournament`](self) function calls. + pub enum RootTournamentCalls { + advanceMatch(advanceMatchCall), + arbitrationResult(arbitrationResultCall), + canWinMatchByTimeout(canWinMatchByTimeoutCall), + eliminateMatchByTimeout(eliminateMatchByTimeoutCall), + getCommitment(getCommitmentCall), + getMatch(getMatchCall), + getMatchCycle(getMatchCycleCall), + joinTournament(joinTournamentCall), + tournamentLevelConstants(tournamentLevelConstantsCall), + winMatchByTimeout(winMatchByTimeoutCall), + } + #[automatically_derived] + impl RootTournamentCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [29u8, 91u8, 247u8, 150u8], + [106u8, 26u8, 20u8, 13u8], + [119u8, 149u8, 130u8, 12u8], + [138u8, 204u8, 128u8, 45u8], + [154u8, 155u8, 75u8, 43u8], + [161u8, 175u8, 144u8, 107u8], + [203u8, 39u8, 115u8, 219u8], + [252u8, 198u8, 7u8, 125u8], + [252u8, 200u8, 83u8, 145u8], + [255u8, 120u8, 224u8, 238u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RootTournamentCalls { + const NAME: &'static str = "RootTournamentCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::advanceMatch(_) => { + ::SELECTOR + } + Self::arbitrationResult(_) => { + ::SELECTOR + } + Self::canWinMatchByTimeout(_) => { + ::SELECTOR + } + Self::eliminateMatchByTimeout(_) => { + ::SELECTOR + } + Self::getCommitment(_) => { + ::SELECTOR + } + Self::getMatch(_) => ::SELECTOR, + Self::getMatchCycle(_) => { + ::SELECTOR + } + Self::joinTournament(_) => { + ::SELECTOR + } + Self::tournamentLevelConstants(_) => { + ::SELECTOR + } + Self::winMatchByTimeout(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn joinTournament( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::joinTournament) + } + joinTournament + }, + { + fn canWinMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::canWinMatchByTimeout) + } + canWinMatchByTimeout + }, + { + fn getCommitment( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::getCommitment) + } + getCommitment + }, + { + fn getMatchCycle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::getMatchCycle) + } + getMatchCycle + }, + { + fn eliminateMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::eliminateMatchByTimeout) + } + eliminateMatchByTimeout + }, + { + fn tournamentLevelConstants( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::tournamentLevelConstants) + } + tournamentLevelConstants + }, + { + fn arbitrationResult( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::arbitrationResult) + } + arbitrationResult + }, + { + fn getMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::getMatch) + } + getMatch + }, + { + fn advanceMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::advanceMatch) + } + advanceMatch + }, + { + fn winMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentCalls::winMatchByTimeout) + } + winMatchByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::advanceMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::arbitrationResult(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCommitment(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMatch(inner) => { + ::abi_encoded_size(inner) + } + Self::getMatchCycle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::joinTournament(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::advanceMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::arbitrationResult(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCommitment(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatchCycle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::joinTournament(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`RootTournament`](self) custom errors. + pub enum RootTournamentErrors { + EliminateByTimeout(EliminateByTimeout), + InvalidContestedFinalState(InvalidContestedFinalState), + TournamentIsClosed(TournamentIsClosed), + TournamentIsFinished(TournamentIsFinished), + WinByTimeout(WinByTimeout), + WrongChildren(WrongChildren), + } + #[automatically_derived] + impl RootTournamentErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [117u8, 175u8, 77u8, 166u8], + [149u8, 221u8, 241u8, 83u8], + [154u8, 141u8, 86u8, 70u8], + [172u8, 87u8, 190u8, 239u8], + [202u8, 90u8, 206u8, 179u8], + [244u8, 46u8, 76u8, 28u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RootTournamentErrors { + const NAME: &'static str = "RootTournamentErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::EliminateByTimeout(_) => { + ::SELECTOR + } + Self::InvalidContestedFinalState(_) => { + ::SELECTOR + } + Self::TournamentIsClosed(_) => { + ::SELECTOR + } + Self::TournamentIsFinished(_) => { + ::SELECTOR + } + Self::WinByTimeout(_) => { + ::SELECTOR + } + Self::WrongChildren(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn WrongChildren( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentErrors::WrongChildren) + } + WrongChildren + }, + { + fn TournamentIsFinished( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentErrors::TournamentIsFinished) + } + TournamentIsFinished + }, + { + fn WinByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentErrors::WinByTimeout) + } + WinByTimeout + }, + { + fn TournamentIsClosed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentErrors::TournamentIsClosed) + } + TournamentIsClosed + }, + { + fn InvalidContestedFinalState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentErrors::InvalidContestedFinalState) + } + InvalidContestedFinalState + }, + { + fn EliminateByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RootTournamentErrors::EliminateByTimeout) + } + EliminateByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongChildren(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongChildren(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`RootTournament`](self) events. + pub enum RootTournamentEvents { + commitmentJoined(commitmentJoined), + matchAdvanced(matchAdvanced), + matchCreated(matchCreated), + } + #[automatically_derived] + impl RootTournamentEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ], + [ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ], + [ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for RootTournamentEvents { + const NAME: &'static str = "RootTournamentEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::commitmentJoined) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchAdvanced) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchCreated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RootTournamentEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`RootTournament`](self) contract instance. + +See the [wrapper's documentation](`RootTournamentInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> RootTournamentInstance { + RootTournamentInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + RootTournamentInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + RootTournamentInstance::::deploy_builder(provider) + } + /**A [`RootTournament`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`RootTournament`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct RootTournamentInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for RootTournamentInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("RootTournamentInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RootTournamentInstance { + /**Creates a new wrapper around an on-chain [`RootTournament`](self) contract instance. + +See the [wrapper's documentation](`RootTournamentInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl RootTournamentInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> RootTournamentInstance { + RootTournamentInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RootTournamentInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`advanceMatch`] function. + pub fn advanceMatch( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + _newLeftNode: ::RustType, + _newRightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &advanceMatchCall { + _matchId, + _leftNode, + _rightNode, + _newLeftNode, + _newRightNode, + }, + ) + } + ///Creates a new call builder for the [`arbitrationResult`] function. + pub fn arbitrationResult( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&arbitrationResultCall {}) + } + ///Creates a new call builder for the [`canWinMatchByTimeout`] function. + pub fn canWinMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &canWinMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`eliminateMatchByTimeout`] function. + pub fn eliminateMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &eliminateMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`getCommitment`] function. + pub fn getCommitment( + &self, + _commitmentRoot: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &getCommitmentCall { + _commitmentRoot, + }, + ) + } + ///Creates a new call builder for the [`getMatch`] function. + pub fn getMatch( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCall { _matchIdHash }) + } + ///Creates a new call builder for the [`getMatchCycle`] function. + pub fn getMatchCycle( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCycleCall { _matchIdHash }) + } + ///Creates a new call builder for the [`joinTournament`] function. + pub fn joinTournament( + &self, + _finalState: ::RustType, + _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &joinTournamentCall { + _finalState, + _proof, + _leftNode, + _rightNode, + }, + ) + } + ///Creates a new call builder for the [`tournamentLevelConstants`] function. + pub fn tournamentLevelConstants( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tournamentLevelConstantsCall {}) + } + ///Creates a new call builder for the [`winMatchByTimeout`] function. + pub fn winMatchByTimeout( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winMatchByTimeoutCall { + _matchId, + _leftNode, + _rightNode, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RootTournamentInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`commitmentJoined`] event. + pub fn commitmentJoined_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchAdvanced`] event. + pub fn matchAdvanced_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchCreated`] event. + pub fn matchCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/tournament.rs b/prt/contracts/bindings-rs/src/contract/tournament.rs new file mode 100644 index 00000000..aed67ca4 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/tournament.rs @@ -0,0 +1,5786 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Clock { + struct State { Time.Duration allowance; Time.Instant startInstant; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Clock { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity +struct State { Time.Duration allowance; Time.Instant startInstant; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub allowance: ::RustType, + pub startInstant: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Time::Duration, Time::Instant); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + (value.allowance, value.startInstant) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + allowance: tuple.0, + startInstant: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.allowance, + ), + ::tokenize( + &self.startInstant, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(uint64 allowance,uint64 startInstant)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.allowance, + ) + .0, + ::eip712_data_word( + &self.startInstant, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.allowance, + ) + + ::topic_preimage_length( + &rust.startInstant, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.allowance, + out, + ); + ::encode_topic_preimage( + &rust.startInstant, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ClockInstance { + ClockInstance::::new(address, provider) + } + /**A [`Clock`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Clock`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ClockInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ClockInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ClockInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /**Creates a new wrapper around an on-chain [`Clock`](self) contract instance. + +See the [wrapper's documentation](`ClockInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ClockInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ClockInstance { + ClockInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ClockInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Match { + type IdHash is bytes32; + struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } + struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Match { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IdHash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl IdHash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for IdHash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for IdHash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + /**```solidity +struct Id { Tree.Node commitmentOne; Tree.Node commitmentTwo; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Id { + pub commitmentOne: ::RustType, + pub commitmentTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Id) -> Self { + (value.commitmentOne, value.commitmentTwo) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Id { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitmentOne: tuple.0, + commitmentTwo: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Id { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Id { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.commitmentOne, + ), + ::tokenize( + &self.commitmentTwo, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Id { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Id { + const NAME: &'static str = "Id"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Id(bytes32 commitmentOne,bytes32 commitmentTwo)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.commitmentOne, + ) + .0, + ::eip712_data_word( + &self.commitmentTwo, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Id { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.commitmentOne, + ) + + ::topic_preimage_length( + &rust.commitmentTwo, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.commitmentOne, + out, + ); + ::encode_topic_preimage( + &rust.commitmentTwo, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct State { Tree.Node otherParent; Tree.Node leftNode; Tree.Node rightNode; uint256 runningLeafPosition; uint64 currentHeight; uint64 log2step; uint64 height; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct State { + pub otherParent: ::RustType, + pub leftNode: ::RustType, + pub rightNode: ::RustType, + pub runningLeafPosition: alloy::sol_types::private::primitives::aliases::U256, + pub currentHeight: u64, + pub log2step: u64, + pub height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Tree::Node, + Tree::Node, + Tree::Node, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + u64, + u64, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: State) -> Self { + ( + value.otherParent, + value.leftNode, + value.rightNode, + value.runningLeafPosition, + value.currentHeight, + value.log2step, + value.height, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for State { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + otherParent: tuple.0, + leftNode: tuple.1, + rightNode: tuple.2, + runningLeafPosition: tuple.3, + currentHeight: tuple.4, + log2step: tuple.5, + height: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for State { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for State { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.otherParent, + ), + ::tokenize(&self.leftNode), + ::tokenize(&self.rightNode), + as alloy_sol_types::SolType>::tokenize(&self.runningLeafPosition), + as alloy_sol_types::SolType>::tokenize(&self.currentHeight), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for State { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for State { + const NAME: &'static str = "State"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "State(bytes32 otherParent,bytes32 leftNode,bytes32 rightNode,uint256 runningLeafPosition,uint64 currentHeight,uint64 log2step,uint64 height)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.otherParent, + ) + .0, + ::eip712_data_word( + &self.leftNode, + ) + .0, + ::eip712_data_word( + &self.rightNode, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.runningLeafPosition, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.currentHeight) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for State { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.otherParent, + ) + + ::topic_preimage_length( + &rust.leftNode, + ) + + ::topic_preimage_length( + &rust.rightNode, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.runningLeafPosition, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.currentHeight, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.otherParent, + out, + ); + ::encode_topic_preimage( + &rust.leftNode, + out, + ); + ::encode_topic_preimage( + &rust.rightNode, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.runningLeafPosition, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.currentHeight, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MatchInstance { + MatchInstance::::new(address, provider) + } + /**A [`Match`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Match`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MatchInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MatchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MatchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /**Creates a new wrapper around an on-chain [`Match`](self) contract instance. + +See the [wrapper's documentation](`MatchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MatchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MatchInstance { + MatchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MatchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; + type Instant is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Instant(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Instant { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Instant { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Instant { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Clock { + struct State { + Time.Duration allowance; + Time.Instant startInstant; + } +} + +library Machine { + type Hash is bytes32; +} + +library Match { + type IdHash is bytes32; + struct Id { + Tree.Node commitmentOne; + Tree.Node commitmentTwo; + } + struct State { + Tree.Node otherParent; + Tree.Node leftNode; + Tree.Node rightNode; + uint256 runningLeafPosition; + uint64 currentHeight; + uint64 log2step; + uint64 height; + } +} + +library Time { + type Duration is uint64; + type Instant is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface Tournament { + error EliminateByTimeout(); + error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); + error TournamentIsClosed(); + error TournamentIsFinished(); + error WinByTimeout(); + error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); + + event commitmentJoined(Tree.Node root); + event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); + event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); + + function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; + function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); + function eliminateMatchByTimeout(Match.Id memory _matchId) external; + function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); + function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); + function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); + function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; + function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); + function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "advanceMatch", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newLeftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_newRightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canWinMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eliminateMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCommitment", + "inputs": [ + { + "name": "_commitmentRoot", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Clock.State", + "components": [ + { + "name": "allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "startInstant", + "type": "uint64", + "internalType": "Time.Instant" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatch", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Match.State", + "components": [ + { + "name": "otherParent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "runningLeafPosition", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentHeight", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMatchCycle", + "inputs": [ + { + "name": "_matchIdHash", + "type": "bytes32", + "internalType": "Match.IdHash" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "joinTournament", + "inputs": [ + { + "name": "_finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_proof", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "tournamentLevelConstants", + "inputs": [], + "outputs": [ + { + "name": "_max_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_height", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "winMatchByTimeout", + "inputs": [ + { + "name": "_matchId", + "type": "tuple", + "internalType": "struct Match.Id", + "components": [ + { + "name": "commitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "commitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + }, + { + "name": "_leftNode", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_rightNode", + "type": "bytes32", + "internalType": "Tree.Node" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "commitmentJoined", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchAdvanced", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": true, + "internalType": "Match.IdHash" + }, + { + "name": "parent", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "matchCreated", + "inputs": [ + { + "name": "one", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "two", + "type": "bytes32", + "indexed": true, + "internalType": "Tree.Node" + }, + { + "name": "leftOfTwo", + "type": "bytes32", + "indexed": false, + "internalType": "Tree.Node" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "EliminateByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidContestedFinalState", + "inputs": [ + { + "name": "contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "finalState", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ] + }, + { + "type": "error", + "name": "TournamentIsClosed", + "inputs": [] + }, + { + "type": "error", + "name": "TournamentIsFinished", + "inputs": [] + }, + { + "type": "error", + "name": "WinByTimeout", + "inputs": [] + }, + { + "type": "error", + "name": "WrongChildren", + "inputs": [ + { + "name": "commitment", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "parent", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "left", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "right", + "type": "bytes32", + "internalType": "Tree.Node" + } + ] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tournament { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `EliminateByTimeout()` and selector `0xf42e4c1c`. +```solidity +error EliminateByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct EliminateByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EliminateByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EliminateByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EliminateByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EliminateByTimeout()"; + const SELECTOR: [u8; 4] = [244u8, 46u8, 76u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidContestedFinalState(bytes32,bytes32,bytes32)` and selector `0xca5aceb3`. +```solidity +error InvalidContestedFinalState(Machine.Hash contestedFinalStateOne, Machine.Hash contestedFinalStateTwo, Machine.Hash finalState); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidContestedFinalState { + pub contestedFinalStateOne: ::RustType, + pub contestedFinalStateTwo: ::RustType, + pub finalState: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Machine::Hash, Machine::Hash, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: InvalidContestedFinalState) -> Self { + ( + value.contestedFinalStateOne, + value.contestedFinalStateTwo, + value.finalState, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for InvalidContestedFinalState { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + contestedFinalStateOne: tuple.0, + contestedFinalStateTwo: tuple.1, + finalState: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidContestedFinalState { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidContestedFinalState(bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [202u8, 90u8, 206u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.contestedFinalStateOne, + ), + ::tokenize( + &self.contestedFinalStateTwo, + ), + ::tokenize( + &self.finalState, + ), + ) + } + } + }; + /**Custom error with signature `TournamentIsClosed()` and selector `0xac57beef`. +```solidity +error TournamentIsClosed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsClosed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsClosed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsClosed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsClosed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsClosed()"; + const SELECTOR: [u8; 4] = [172u8, 87u8, 190u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `TournamentIsFinished()` and selector `0x95ddf153`. +```solidity +error TournamentIsFinished(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentIsFinished {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentIsFinished) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentIsFinished { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentIsFinished { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentIsFinished()"; + const SELECTOR: [u8; 4] = [149u8, 221u8, 241u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WinByTimeout()` and selector `0x9a8d5646`. +```solidity +error WinByTimeout(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WinByTimeout {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WinByTimeout) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WinByTimeout { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WinByTimeout { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WinByTimeout()"; + const SELECTOR: [u8; 4] = [154u8, 141u8, 86u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `WrongChildren(uint256,bytes32,bytes32,bytes32)` and selector `0x75af4da6`. +```solidity +error WrongChildren(uint256 commitment, Tree.Node parent, Tree.Node left, Tree.Node right); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WrongChildren { + pub commitment: alloy::sol_types::private::primitives::aliases::U256, + pub parent: ::RustType, + pub left: ::RustType, + pub right: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WrongChildren) -> Self { + (value.commitment, value.parent, value.left, value.right) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WrongChildren { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commitment: tuple.0, + parent: tuple.1, + left: tuple.2, + right: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for WrongChildren { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WrongChildren(uint256,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [117u8, 175u8, 77u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commitment), + ::tokenize(&self.parent), + ::tokenize(&self.left), + ::tokenize(&self.right), + ) + } + } + }; + /**Event with signature `commitmentJoined(bytes32)` and selector `0xe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262`. +```solidity +event commitmentJoined(Tree.Node root); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct commitmentJoined { + #[allow(missing_docs)] + pub root: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for commitmentJoined { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "commitmentJoined(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { root: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.root),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for commitmentJoined { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&commitmentJoined> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &commitmentJoined) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchAdvanced(bytes32,bytes32,bytes32)` and selector `0x29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb369941378`. +```solidity +event matchAdvanced(Match.IdHash indexed, Tree.Node parent, Tree.Node left); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchAdvanced { + #[allow(missing_docs)] + pub _0: ::RustType, + #[allow(missing_docs)] + pub parent: ::RustType, + #[allow(missing_docs)] + pub left: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchAdvanced { + type DataTuple<'a> = (Tree::Node, Tree::Node); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>, Match::IdHash); + const SIGNATURE: &'static str = "matchAdvanced(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _0: topics.1, + parent: data.0, + left: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.parent), + ::tokenize(&self.left), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._0.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._0, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchAdvanced { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchAdvanced> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchAdvanced) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `matchCreated(bytes32,bytes32,bytes32)` and selector `0x32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e`. +```solidity +event matchCreated(Tree.Node indexed one, Tree.Node indexed two, Tree.Node leftOfTwo); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct matchCreated { + #[allow(missing_docs)] + pub one: ::RustType, + #[allow(missing_docs)] + pub two: ::RustType, + #[allow(missing_docs)] + pub leftOfTwo: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for matchCreated { + type DataTuple<'a> = (Tree::Node,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + Tree::Node, + Tree::Node, + ); + const SIGNATURE: &'static str = "matchCreated(bytes32,bytes32,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + one: topics.1, + two: topics.2, + leftOfTwo: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize(&self.leftOfTwo),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.one.clone(), self.two.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.one, + ); + out[2usize] = ::encode_topic( + &self.two, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for matchCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&matchCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &matchCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)` and selector `0xfcc85391`. +```solidity +function advanceMatch(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode, Tree.Node _newLeftNode, Tree.Node _newRightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + pub _newLeftNode: ::RustType, + pub _newRightNode: ::RustType, + } + ///Container type for the return parameters of the [`advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)`](advanceMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct advanceMatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchCall) -> Self { + ( + value._matchId, + value._leftNode, + value._rightNode, + value._newLeftNode, + value._newRightNode, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + _newLeftNode: tuple.3, + _newRightNode: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: advanceMatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for advanceMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for advanceMatchCall { + type Parameters<'a> = ( + Match::Id, + Tree::Node, + Tree::Node, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = advanceMatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "advanceMatch((bytes32,bytes32),bytes32,bytes32,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 200u8, 83u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ::tokenize( + &self._newLeftNode, + ), + ::tokenize( + &self._newRightNode, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `canWinMatchByTimeout((bytes32,bytes32))` and selector `0x6a1a140d`. +```solidity +function canWinMatchByTimeout(Match.Id memory _matchId) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`canWinMatchByTimeout((bytes32,bytes32))`](canWinMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canWinMatchByTimeoutReturn { + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: canWinMatchByTimeoutReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for canWinMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canWinMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canWinMatchByTimeoutReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canWinMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [106u8, 26u8, 20u8, 13u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `eliminateMatchByTimeout((bytes32,bytes32))` and selector `0x9a9b4b2b`. +```solidity +function eliminateMatchByTimeout(Match.Id memory _matchId) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutCall { + pub _matchId: ::RustType, + } + ///Container type for the return parameters of the [`eliminateMatchByTimeout((bytes32,bytes32))`](eliminateMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct eliminateMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutCall) -> Self { + (value._matchId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: eliminateMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for eliminateMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eliminateMatchByTimeoutCall { + type Parameters<'a> = (Match::Id,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eliminateMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eliminateMatchByTimeout((bytes32,bytes32))"; + const SELECTOR: [u8; 4] = [154u8, 155u8, 75u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._matchId),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCommitment(bytes32)` and selector `0x7795820c`. +```solidity +function getCommitment(Tree.Node _commitmentRoot) external view returns (Clock.State memory, Machine.Hash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentCall { + pub _commitmentRoot: ::RustType, + } + ///Container type for the return parameters of the [`getCommitment(bytes32)`](getCommitmentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCommitmentReturn { + pub _0: ::RustType, + pub _1: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Tree::Node,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentCall) -> Self { + (value._commitmentRoot,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _commitmentRoot: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Clock::State, Machine::Hash); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCommitmentReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCommitmentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCommitmentCall { + type Parameters<'a> = (Tree::Node,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCommitmentReturn; + type ReturnTuple<'a> = (Clock::State, Machine::Hash); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCommitment(bytes32)"; + const SELECTOR: [u8; 4] = [119u8, 149u8, 130u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._commitmentRoot, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatch(bytes32)` and selector `0xfcc6077d`. +```solidity +function getMatch(Match.IdHash _matchIdHash) external view returns (Match.State memory); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatch(bytes32)`](getMatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchReturn { + pub _0: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::State,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchReturn; + type ReturnTuple<'a> = (Match::State,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatch(bytes32)"; + const SELECTOR: [u8; 4] = [252u8, 198u8, 7u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getMatchCycle(bytes32)` and selector `0x8acc802d`. +```solidity +function getMatchCycle(Match.IdHash _matchIdHash) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleCall { + pub _matchIdHash: ::RustType, + } + ///Container type for the return parameters of the [`getMatchCycle(bytes32)`](getMatchCycleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getMatchCycleReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::IdHash,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleCall) -> Self { + (value._matchIdHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _matchIdHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMatchCycleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMatchCycleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMatchCycleCall { + type Parameters<'a> = (Match::IdHash,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMatchCycleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getMatchCycle(bytes32)"; + const SELECTOR: [u8; 4] = [138u8, 204u8, 128u8, 45u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchIdHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `joinTournament(bytes32,bytes32[],bytes32,bytes32)` and selector `0x1d5bf796`. +```solidity +function joinTournament(Machine.Hash _finalState, bytes32[] memory _proof, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentCall { + pub _finalState: ::RustType, + pub _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`joinTournament(bytes32,bytes32[],bytes32,bytes32)`](joinTournamentCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct joinTournamentReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentCall) -> Self { + (value._finalState, value._proof, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for joinTournamentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _finalState: tuple.0, + _proof: tuple.1, + _leftNode: tuple.2, + _rightNode: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: joinTournamentReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for joinTournamentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for joinTournamentCall { + type Parameters<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + >, + Tree::Node, + Tree::Node, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = joinTournamentReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "joinTournament(bytes32,bytes32[],bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [29u8, 91u8, 247u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._finalState, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self._proof), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tournamentLevelConstants()` and selector `0xa1af906b`. +```solidity +function tournamentLevelConstants() external view returns (uint64 _max_level, uint64 _level, uint64 _log2step, uint64 _height); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsCall {} + ///Container type for the return parameters of the [`tournamentLevelConstants()`](tournamentLevelConstantsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct tournamentLevelConstantsReturn { + pub _max_level: u64, + pub _level: u64, + pub _log2step: u64, + pub _height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, u64, u64, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tournamentLevelConstantsReturn) -> Self { + (value._max_level, value._level, value._log2step, value._height) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tournamentLevelConstantsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _max_level: tuple.0, + _level: tuple.1, + _log2step: tuple.2, + _height: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tournamentLevelConstantsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tournamentLevelConstantsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tournamentLevelConstants()"; + const SELECTOR: [u8; 4] = [161u8, 175u8, 144u8, 107u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)` and selector `0xff78e0ee`. +```solidity +function winMatchByTimeout(Match.Id memory _matchId, Tree.Node _leftNode, Tree.Node _rightNode) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutCall { + pub _matchId: ::RustType, + pub _leftNode: ::RustType, + pub _rightNode: ::RustType, + } + ///Container type for the return parameters of the [`winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)`](winMatchByTimeoutCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct winMatchByTimeoutReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Match::Id, Tree::Node, Tree::Node); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutCall) -> Self { + (value._matchId, value._leftNode, value._rightNode) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchId: tuple.0, + _leftNode: tuple.1, + _rightNode: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: winMatchByTimeoutReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for winMatchByTimeoutReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for winMatchByTimeoutCall { + type Parameters<'a> = (Match::Id, Tree::Node, Tree::Node); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = winMatchByTimeoutReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "winMatchByTimeout((bytes32,bytes32),bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [255u8, 120u8, 224u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._matchId), + ::tokenize(&self._leftNode), + ::tokenize(&self._rightNode), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`Tournament`](self) function calls. + pub enum TournamentCalls { + advanceMatch(advanceMatchCall), + canWinMatchByTimeout(canWinMatchByTimeoutCall), + eliminateMatchByTimeout(eliminateMatchByTimeoutCall), + getCommitment(getCommitmentCall), + getMatch(getMatchCall), + getMatchCycle(getMatchCycleCall), + joinTournament(joinTournamentCall), + tournamentLevelConstants(tournamentLevelConstantsCall), + winMatchByTimeout(winMatchByTimeoutCall), + } + #[automatically_derived] + impl TournamentCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [29u8, 91u8, 247u8, 150u8], + [106u8, 26u8, 20u8, 13u8], + [119u8, 149u8, 130u8, 12u8], + [138u8, 204u8, 128u8, 45u8], + [154u8, 155u8, 75u8, 43u8], + [161u8, 175u8, 144u8, 107u8], + [252u8, 198u8, 7u8, 125u8], + [252u8, 200u8, 83u8, 145u8], + [255u8, 120u8, 224u8, 238u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for TournamentCalls { + const NAME: &'static str = "TournamentCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::advanceMatch(_) => { + ::SELECTOR + } + Self::canWinMatchByTimeout(_) => { + ::SELECTOR + } + Self::eliminateMatchByTimeout(_) => { + ::SELECTOR + } + Self::getCommitment(_) => { + ::SELECTOR + } + Self::getMatch(_) => ::SELECTOR, + Self::getMatchCycle(_) => { + ::SELECTOR + } + Self::joinTournament(_) => { + ::SELECTOR + } + Self::tournamentLevelConstants(_) => { + ::SELECTOR + } + Self::winMatchByTimeout(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn joinTournament( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::joinTournament) + } + joinTournament + }, + { + fn canWinMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::canWinMatchByTimeout) + } + canWinMatchByTimeout + }, + { + fn getCommitment( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::getCommitment) + } + getCommitment + }, + { + fn getMatchCycle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::getMatchCycle) + } + getMatchCycle + }, + { + fn eliminateMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::eliminateMatchByTimeout) + } + eliminateMatchByTimeout + }, + { + fn tournamentLevelConstants( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::tournamentLevelConstants) + } + tournamentLevelConstants + }, + { + fn getMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::getMatch) + } + getMatch + }, + { + fn advanceMatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::advanceMatch) + } + advanceMatch + }, + { + fn winMatchByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentCalls::winMatchByTimeout) + } + winMatchByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::advanceMatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCommitment(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMatch(inner) => { + ::abi_encoded_size(inner) + } + Self::getMatchCycle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::joinTournament(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::advanceMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::canWinMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eliminateMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCommitment(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMatchCycle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::joinTournament(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tournamentLevelConstants(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::winMatchByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`Tournament`](self) custom errors. + pub enum TournamentErrors { + EliminateByTimeout(EliminateByTimeout), + InvalidContestedFinalState(InvalidContestedFinalState), + TournamentIsClosed(TournamentIsClosed), + TournamentIsFinished(TournamentIsFinished), + WinByTimeout(WinByTimeout), + WrongChildren(WrongChildren), + } + #[automatically_derived] + impl TournamentErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [117u8, 175u8, 77u8, 166u8], + [149u8, 221u8, 241u8, 83u8], + [154u8, 141u8, 86u8, 70u8], + [172u8, 87u8, 190u8, 239u8], + [202u8, 90u8, 206u8, 179u8], + [244u8, 46u8, 76u8, 28u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for TournamentErrors { + const NAME: &'static str = "TournamentErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::EliminateByTimeout(_) => { + ::SELECTOR + } + Self::InvalidContestedFinalState(_) => { + ::SELECTOR + } + Self::TournamentIsClosed(_) => { + ::SELECTOR + } + Self::TournamentIsFinished(_) => { + ::SELECTOR + } + Self::WinByTimeout(_) => { + ::SELECTOR + } + Self::WrongChildren(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn WrongChildren( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentErrors::WrongChildren) + } + WrongChildren + }, + { + fn TournamentIsFinished( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentErrors::TournamentIsFinished) + } + TournamentIsFinished + }, + { + fn WinByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentErrors::WinByTimeout) + } + WinByTimeout + }, + { + fn TournamentIsClosed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentErrors::TournamentIsClosed) + } + TournamentIsClosed + }, + { + fn InvalidContestedFinalState( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentErrors::InvalidContestedFinalState) + } + InvalidContestedFinalState + }, + { + fn EliminateByTimeout( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TournamentErrors::EliminateByTimeout) + } + EliminateByTimeout + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encoded_size(inner) + } + Self::WrongChildren(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::EliminateByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidContestedFinalState(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsClosed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentIsFinished(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WinByTimeout(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WrongChildren(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`Tournament`](self) events. + pub enum TournamentEvents { + commitmentJoined(commitmentJoined), + matchAdvanced(matchAdvanced), + matchCreated(matchCreated), + } + #[automatically_derived] + impl TournamentEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 41u8, + 255u8, + 57u8, + 60u8, + 89u8, + 195u8, + 127u8, + 145u8, + 233u8, + 48u8, + 250u8, + 212u8, + 216u8, + 132u8, + 71u8, + 239u8, + 197u8, + 140u8, + 245u8, + 215u8, + 192u8, + 72u8, + 73u8, + 158u8, + 31u8, + 32u8, + 237u8, + 179u8, + 105u8, + 148u8, + 19u8, + 120u8, + ], + [ + 50u8, + 145u8, + 16u8, + 1u8, + 0u8, + 125u8, + 140u8, + 152u8, + 121u8, + 182u8, + 8u8, + 86u8, + 107u8, + 232u8, + 172u8, + 194u8, + 24u8, + 69u8, + 146u8, + 240u8, + 164u8, + 55u8, + 6u8, + 248u8, + 4u8, + 242u8, + 133u8, + 69u8, + 91u8, + 176u8, + 245u8, + 46u8, + ], + [ + 229u8, + 53u8, + 55u8, + 242u8, + 2u8, + 145u8, + 29u8, + 55u8, + 109u8, + 110u8, + 40u8, + 88u8, + 53u8, + 178u8, + 162u8, + 1u8, + 110u8, + 131u8, + 233u8, + 159u8, + 190u8, + 132u8, + 160u8, + 89u8, + 212u8, + 69u8, + 204u8, + 43u8, + 228u8, + 128u8, + 114u8, + 98u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for TournamentEvents { + const NAME: &'static str = "TournamentEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::commitmentJoined) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchAdvanced) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::matchCreated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TournamentEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::commitmentJoined(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchAdvanced(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::matchCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tournament`](self) contract instance. + +See the [wrapper's documentation](`TournamentInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> TournamentInstance { + TournamentInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + TournamentInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + TournamentInstance::::deploy_builder(provider) + } + /**A [`Tournament`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tournament`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TournamentInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TournamentInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TournamentInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TournamentInstance { + /**Creates a new wrapper around an on-chain [`Tournament`](self) contract instance. + +See the [wrapper's documentation](`TournamentInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TournamentInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TournamentInstance { + TournamentInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TournamentInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`advanceMatch`] function. + pub fn advanceMatch( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + _newLeftNode: ::RustType, + _newRightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &advanceMatchCall { + _matchId, + _leftNode, + _rightNode, + _newLeftNode, + _newRightNode, + }, + ) + } + ///Creates a new call builder for the [`canWinMatchByTimeout`] function. + pub fn canWinMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &canWinMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`eliminateMatchByTimeout`] function. + pub fn eliminateMatchByTimeout( + &self, + _matchId: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &eliminateMatchByTimeoutCall { + _matchId, + }, + ) + } + ///Creates a new call builder for the [`getCommitment`] function. + pub fn getCommitment( + &self, + _commitmentRoot: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &getCommitmentCall { + _commitmentRoot, + }, + ) + } + ///Creates a new call builder for the [`getMatch`] function. + pub fn getMatch( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCall { _matchIdHash }) + } + ///Creates a new call builder for the [`getMatchCycle`] function. + pub fn getMatchCycle( + &self, + _matchIdHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getMatchCycleCall { _matchIdHash }) + } + ///Creates a new call builder for the [`joinTournament`] function. + pub fn joinTournament( + &self, + _finalState: ::RustType, + _proof: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &joinTournamentCall { + _finalState, + _proof, + _leftNode, + _rightNode, + }, + ) + } + ///Creates a new call builder for the [`tournamentLevelConstants`] function. + pub fn tournamentLevelConstants( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tournamentLevelConstantsCall {}) + } + ///Creates a new call builder for the [`winMatchByTimeout`] function. + pub fn winMatchByTimeout( + &self, + _matchId: ::RustType, + _leftNode: ::RustType, + _rightNode: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &winMatchByTimeoutCall { + _matchId, + _leftNode, + _rightNode, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TournamentInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`commitmentJoined`] event. + pub fn commitmentJoined_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchAdvanced`] event. + pub fn matchAdvanced_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`matchCreated`] event. + pub fn matchCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contract-bindings/src/lib.rs b/prt/contracts/bindings-rs/src/lib.rs similarity index 100% rename from prt/contract-bindings/src/lib.rs rename to prt/contracts/bindings-rs/src/lib.rs diff --git a/prt/contracts/justfile b/prt/contracts/justfile new file mode 100644 index 00000000..fe113081 --- /dev/null +++ b/prt/contracts/justfile @@ -0,0 +1,20 @@ +BINDINGS_DIR := "./bindings-rs/src/contract" +SRC_DIR := "." +BINDINGS_FILTER := "^[^I].+TournamentFactory|LeafTournament|RootTournament|^Tournament$" + +default: help + +help: + echo " clean - clean the generated bindings" + echo " bind - generate Rust bindings from Solidity code" + +build: + forge build + +clean-bindings: + rm -rf {{BINDINGS_DIR}} + +bind: clean-bindings + forge bind --alloy --select "{{BINDINGS_FILTER}}" \ + --module --bindings-path {{BINDINGS_DIR}} \ + --root {{SRC_DIR}} diff --git a/prt/contracts/src/ITournament.sol b/prt/contracts/src/ITournament.sol index 9593ed5e..875b0a6e 100644 --- a/prt/contracts/src/ITournament.sol +++ b/prt/contracts/src/ITournament.sol @@ -10,5 +10,9 @@ interface ITournament { function arbitrationResult() external view - returns (bool, Tree.Node, Machine.Hash); + returns ( + bool finished, + Tree.Node winnerCommitment, + Machine.Hash finalState + ); } diff --git a/prt/tests/compute-rs/Cargo.lock b/prt/tests/compute-rs/Cargo.lock index 8f5b5d37..9e53fcf0 100644 --- a/prt/tests/compute-rs/Cargo.lock +++ b/prt/tests/compute-rs/Cargo.lock @@ -24,6 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "getrandom", "once_cell", "version_check", "zerocopy", @@ -46,9 +47,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8367891bf380210abb0d6aa30c5f85a9080cb4a066c4d5c5acadad630823751b" +checksum = "e7e1758e5d759c0114140152ae72032eafcfdd7b599e995ebbc8eeafa2b4c977" dependencies = [ "alloy-consensus", "alloy-contract", @@ -77,23 +78,40 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" +checksum = "a205d0cbb7bfdf9f4fd4b0ec842bc4c5f926e8c14ec3072d3fd75dd363baf1e0" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", + "alloy-trie", + "auto_impl", "c-kzg", + "derive_more", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993c34090a3f281cb746fd1604520cf21f8407ffbeb006aaa34c0556bffa718e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", "serde", ] [[package]] name = "alloy-contract" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" +checksum = "aec7945dff98ba68489aa6da455bf66f6c0fee8157df06747fbae7cb03c368e2" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -106,26 +124,27 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 2.0.7", ] [[package]] name = "alloy-core" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b095eb0533144b4497e84a9cc3e44a5c2e3754a3983c0376a55a2f9183a53e" +checksum = "c618bd382f0bc2ac26a7e4bfae01c9b015ca8f21b37ca40059ae35a7e62b3dc6" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-primitives", + "alloy-rlp", "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4004925bff5ba0a11739ae84dbb6601a981ea692f3bd45b626935ee90a6b8471" +checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -151,20 +170,21 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d319bb544ca6caeab58c39cea8921c55d924d4f68f2c60f24f914673f9a74a" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ "alloy-primitives", "alloy-rlp", + "derive_more", "serde", ] [[package]] name = "alloy-eips" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" +checksum = "d1d9907c29ce622946759bf4fd3418166bfeae76c1c544b8081c7be3acd9b4be" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -180,20 +200,21 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" +checksum = "68f13f7405a8eb8021258994ed1beab490c3e509ebbe2c18e1c24ae10749d56b" dependencies = [ "alloy-primitives", "alloy-serde", + "alloy-trie", "serde", ] [[package]] name = "alloy-json-abi" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9996daf962fd0a90d3c93b388033228865953b92de7bb1959b891d78750a4091" +checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -203,29 +224,31 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" +checksum = "39a786ce6bc7539dc30cabac6b7875644247c9e7d780e71a9f254d42ebdc013c" dependencies = [ "alloy-primitives", "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 2.0.7", "tracing", ] [[package]] name = "alloy-network" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" +checksum = "99051f82f77159d5bee06108f33cffee02849e2861fc500bf74213aa2ae8a26e" dependencies = [ "alloy-consensus", + "alloy-consensus-any", "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", "alloy-primitives", + "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", @@ -233,15 +256,18 @@ dependencies = [ "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "serde", + "serde_json", + "thiserror 2.0.7", ] [[package]] name = "alloy-network-primitives" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" +checksum = "d2aff127863f8279921397be8af0ac3f05a8757d5c4c972b491c278518fa07c7" dependencies = [ + "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-serde", @@ -250,31 +276,37 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411aff151f2a73124ee473708e82ed51b2535f68928b6a1caa8bc1246ae6f7cd" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more", + "foldhash", + "hashbrown 0.15.2", "hex-literal", + "indexmap", "itoa", "k256", "keccak-asm", + "paste", "proptest", "rand", "ruint", + "rustc-hash 2.0.0", "serde", + "sha3", "tiny-keccak", ] [[package]] name = "alloy-provider" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" +checksum = "0280a4f68e0cefde9449ee989a248230efbe3f95255299d2a7a92009e154629d" dependencies = [ "alloy-chains", "alloy-consensus", @@ -294,21 +326,24 @@ dependencies = [ "futures", "futures-utils-wasm", "lru", + "parking_lot", "pin-project", "reqwest", + "schnellru", "serde", "serde_json", - "thiserror", + "thiserror 2.0.7", "tokio", "tracing", "url", + "wasmtimer", ] [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -317,22 +352,23 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "alloy-rpc-client" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" +checksum = "b6fc8b0f68619cfab3a2e15dca7b80ab266f78430bb4353dec546528e04b7449" dependencies = [ "alloy-json-rpc", + "alloy-primitives", "alloy-transport", "alloy-transport-http", "futures", @@ -345,24 +381,35 @@ dependencies = [ "tower 0.5.1", "tracing", "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e3aa433d3657b42e98e257ee6fa201f5c853245648a33da8fbb7497a5008bf" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", ] [[package]] name = "alloy-rpc-types-eth" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" +checksum = "0643cc497a71941f526454fe4fecb47e9307d3a7b6c05f70718a0341643bcc79" dependencies = [ "alloy-consensus", + "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", "alloy-primitives", "alloy-rlp", "alloy-serde", "alloy-sol-types", - "cfg-if", "derive_more", - "hashbrown", "itertools 0.13.0", "serde", "serde_json", @@ -370,9 +417,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" +checksum = "ea61b049d7ecc66a29f107970dae493d0908e366048f7484a1ca9b02c85f9b2b" dependencies = [ "alloy-primitives", "serde", @@ -381,23 +428,23 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" +checksum = "93461b0e79c2ddd791fec5f369ab5c2686a33bbb03530144972edf5248f8a2c7" dependencies = [ "alloy-primitives", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 2.0.7", ] [[package]] name = "alloy-signer-local" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" +checksum = "6f08ec1bfa433f9e9f7c5af05af07e5cf86d27d93170de76b760e63b925f1c9c" dependencies = [ "alloy-consensus", "alloy-network", @@ -406,28 +453,28 @@ dependencies = [ "async-trait", "k256", "rand", - "thiserror", + "thiserror 2.0.7", ] [[package]] name = "alloy-sol-macro" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0458ccb02a564228fcd76efb8eb5a520521a8347becde37b402afec9a1b83859" +checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc65475025fc1e84bf86fc840f04f63fcccdcf3cf12053c99918e4054dfbc69" +checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -437,16 +484,16 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed10f0715a0b69fde3236ff3b9ae5f6f7c97db5a387747100070d3016b9266b" +checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" dependencies = [ "alloy-json-abi", "const-hex", @@ -455,15 +502,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.77", + "syn 2.0.90", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edae8ea1de519ccba896b6834dec874230f72fe695ff3c9c118e90ec7cff783" +checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" dependencies = [ "serde", "winnow", @@ -471,9 +518,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eb88e4da0a1b697ed6a9f811fdba223cf4d5c21410804fd1707836af73a462b" +checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -484,9 +531,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" +checksum = "baf656f983e14812df65b5aee37e7b37535f68a848295e6ed736b2054a405cb7" dependencies = [ "alloy-json-rpc", "base64", @@ -494,18 +541,19 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 2.0.7", "tokio", "tower 0.5.1", "tracing", "url", + "wasmtimer", ] [[package]] name = "alloy-transport-http" -version = "0.3.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" +checksum = "ec938d51a47b7953b1c0fd8ddeb89a29eb113cd4908dfc4e01c7893b252d669f" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -516,6 +564,22 @@ dependencies = [ "url", ] +[[package]] +name = "alloy-trie" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more", + "nybbles", + "serde", + "smallvec", + "tracing", +] + [[package]] name = "anstream" version = "0.6.15" @@ -700,6 +764,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "async-recursion" @@ -709,7 +776,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -731,7 +798,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -742,7 +809,7 @@ checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -753,7 +820,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -814,7 +881,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.77", + "syn 2.0.90", "which", ] @@ -926,7 +993,7 @@ dependencies = [ "hex", "ruint", "sha3", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -935,7 +1002,7 @@ version = "0.18.1" dependencies = [ "cartesi-machine-sys", "hex", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -993,7 +1060,7 @@ dependencies = [ "rusqlite_migration", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", "tokio", ] @@ -1063,7 +1130,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1080,9 +1147,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "const-hex" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -1164,7 +1231,7 @@ checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", "crossbeam-utils", - "hashbrown", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1208,7 +1275,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", "unicode-xid", ] @@ -1374,6 +1441,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -1460,7 +1533,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1544,6 +1617,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + [[package]] name = "hashbrown" version = "0.14.5" @@ -1552,6 +1631,15 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", "serde", ] @@ -1561,7 +1649,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -1765,7 +1853,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.5", + "serde", ] [[package]] @@ -1936,7 +2025,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -2061,7 +2150,20 @@ checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", +] + +[[package]] +name = "nybbles" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", ] [[package]] @@ -2102,7 +2204,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2191,7 +2293,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.63", "ucd-trie", ] @@ -2212,7 +2314,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2259,7 +2361,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2301,14 +2403,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -2352,7 +2454,7 @@ dependencies = [ "rustc-hash 2.0.0", "rustls", "socket2", - "thiserror", + "thiserror 1.0.63", "tokio", "tracing", ] @@ -2369,7 +2471,7 @@ dependencies = [ "rustc-hash 2.0.0", "rustls", "slab", - "thiserror", + "thiserror 1.0.63", "tinyvec", "tracing", ] @@ -2411,6 +2513,7 @@ dependencies = [ "libc", "rand_chacha", "rand_core", + "serde", ] [[package]] @@ -2743,6 +2846,17 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2827,7 +2941,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2935,6 +3049,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -2993,7 +3110,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3015,9 +3132,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -3026,14 +3143,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.3" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b95156f8b577cb59dc0b1df15c6f29a10afc5f8a7ac9786b0b5c68c19149278" +checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3076,7 +3193,16 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", +] + +[[package]] +name = "thiserror" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +dependencies = [ + "thiserror-impl 2.0.7", ] [[package]] @@ -3087,7 +3213,18 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -3149,7 +3286,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3275,7 +3412,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3437,7 +3574,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", "wasm-bindgen-shared", ] @@ -3471,7 +3608,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3482,6 +3619,20 @@ version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.70" @@ -3661,7 +3812,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3681,5 +3832,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] diff --git a/prt/tests/rollups/Makefile b/prt/tests/rollups/Makefile index 2b0eb39f..7cc76b69 100644 --- a/prt/tests/rollups/Makefile +++ b/prt/tests/rollups/Makefile @@ -4,6 +4,7 @@ help: @echo ' build-echo - build echo machine image' @echo ' create-image - create `prt-rollups:test` docker image' @echo ' test-echo - run PRT rollups echo test' + @echo ' read-honest-log - read logs from PRT Rollups node, run in separate terminal after `test-echo`' build-echo: $(MAKE) -C program/echo build-echo @@ -16,6 +17,9 @@ test-echo: create-image --env MACHINE_PATH=$(ECHO_MACHINE_PATH) \ cartesi/prt-rollups:test +read-honest-log: + @docker exec prt-rollups-test-echo tail -f dave.log + .PHONY: help build-echo create-image test-echo diff --git a/prt/tests/rollups/README.md b/prt/tests/rollups/README.md index 296a1370..42abb799 100644 --- a/prt/tests/rollups/README.md +++ b/prt/tests/rollups/README.md @@ -1,7 +1,8 @@ # PRT Rollups test -This directory contains a rollups node written in Rust. -The node test will be conducted with a Lua orchestrator script spawning an honest rollups node in the background to advance the rollups states and to defend the application. The Lua orchestrator script also spawns multiple [dishonest nodes](../../../prt/tests/compute/README.md) trying to tamper with the rollups states. +This tests the rollups Rust node. +The node test will be conducted with a Lua orchestrator script spawning an honest rollups node in the background to advance the rollups states and to defend the application. +The Lua orchestrator script also spawns multiple [dishonest nodes](../compute/README.md) trying to tamper with the rollups states. Remember to either clone the repository with the flag `--recurse-submodules`, or run `git submodule update --recursive --init` after cloning. You need a docker installation to run the Dave Lua node. diff --git a/prt/tests/rollups/prt_rollups.lua b/prt/tests/rollups/prt_rollups.lua index d8335e12..4801961e 100755 --- a/prt/tests/rollups/prt_rollups.lua +++ b/prt/tests/rollups/prt_rollups.lua @@ -10,7 +10,7 @@ local FAST_FORWARD_TIME = 20 -- delay time for blockchain node to be ready local NODE_DELAY = 3 -- number of fake commitment to make -local FAKE_COMMITMENT_COUNT = 1 +local FAKE_COMMITMENT_COUNT = 5 -- number of idle players local IDLE_PLAYER_COUNT = 0 -- consensus contract address in anvil deployment @@ -53,119 +53,119 @@ local ROOT_LEAFS_QUERY = [[sqlite3 /compute_data/%s/db 'select level,base_cycle,compute_leaf_index,repetitions,HEX(compute_leaf) from compute_leafs where level=0 ORDER BY compute_leaf_index ASC']] local function build_root_commitment_from_db(machine_path, root_tournament) - local builder = MerkleBuilder:new() - local machine = Machine:new_from_path(machine_path) - local initial_state = machine:state() - - local handle = io.popen(string.format(ROOT_LEAFS_QUERY, root_tournament)) - assert(handle) - local rows = handle:read "*a" - handle:close() - - if rows:find "Error" then - error(string.format("Read leafs failed:\n%s", rows)) - end - - -- Iterate over each line in the input data - for line in rows:gmatch("[^\n]+") do - local _, _, _, repetitions, compute_leaf = line:match( - "([^|]+)|([^|]+)|([^|]+)|([^|]+)|([^|]+)") - -- Convert values to appropriate types - repetitions = tonumber(repetitions) - compute_leaf = Hash:from_digest_hex("0x" .. compute_leaf) - - builder:add(compute_leaf, repetitions) - end - - return builder:build(initial_state.root_hash) + local builder = MerkleBuilder:new() + local machine = Machine:new_from_path(machine_path) + local initial_state = machine:state() + + local handle = io.popen(string.format(ROOT_LEAFS_QUERY, root_tournament)) + assert(handle) + local rows = handle:read "*a" + handle:close() + + if rows:find "Error" then + error(string.format("Read leafs failed:\n%s", rows)) + end + + -- Iterate over each line in the input data + for line in rows:gmatch("[^\n]+") do + local _, _, _, repetitions, compute_leaf = line:match( + "([^|]+)|([^|]+)|([^|]+)|([^|]+)|([^|]+)") + -- Convert values to appropriate types + repetitions = tonumber(repetitions) + compute_leaf = Hash:from_digest_hex("0x" .. compute_leaf) + + builder:add(compute_leaf, repetitions) + end + + return builder:build(initial_state.root_hash) end local INPUTS_QUERY = [[sqlite3 /compute_data/%s/db 'select HEX(input) from inputs ORDER BY input_index ASC']] local function get_inputs_from_db(root_tournament) - local handle = io.popen(string.format(INPUTS_QUERY, root_tournament)) - assert(handle) - local rows = handle:read "*a" - handle:close() - - if rows:find "Error" then - error(string.format("Read inputs failed:\n%s", rows)) - end - - local inputs = {} - -- Iterate over each line in the input data - for line in rows:gmatch("[^\n]+") do - local input = line:match("([^|]+)") - table.insert(inputs, "0x" .. input) - end - - return inputs + local handle = io.popen(string.format(INPUTS_QUERY, root_tournament)) + assert(handle) + local rows = handle:read "*a" + handle:close() + + if rows:find "Error" then + error(string.format("Read inputs failed:\n%s", rows)) + end + + local inputs = {} + -- Iterate over each line in the input data + for line in rows:gmatch("[^\n]+") do + local input = line:match("([^|]+)") + table.insert(inputs, "0x" .. input) + end + + return inputs end -- Function to setup players local function setup_players(root_tournament, machine_path) - local player_coroutines = {} - local player_index = 1 - print("Calculating root commitment...") - local root_commitment = build_root_commitment_from_db(machine_path, root_tournament) - local inputs = get_inputs_from_db(root_tournament) - - if FAKE_COMMITMENT_COUNT > 0 then - print(string.format("Setting up dishonest player with %d fake commitments", FAKE_COMMITMENT_COUNT)) - local scoped_require = new_scoped_require(_ENV) - local start_sybil = scoped_require "runners.sybil_runner" - player_coroutines[player_index] = start_sybil(player_index + 1, machine_path, root_commitment, root_tournament, - FAKE_COMMITMENT_COUNT, inputs) - player_index = player_index + 1 + local player_coroutines = {} + local player_index = 1 + print("Calculating root commitment...") + local root_commitment = build_root_commitment_from_db(machine_path, root_tournament) + local inputs = get_inputs_from_db(root_tournament) + + if FAKE_COMMITMENT_COUNT > 0 then + print(string.format("Setting up dishonest player with %d fake commitments", FAKE_COMMITMENT_COUNT)) + local scoped_require = new_scoped_require(_ENV) + local start_sybil = scoped_require "runners.sybil_runner" + player_coroutines[player_index] = start_sybil(player_index + 1, machine_path, root_commitment, root_tournament, + FAKE_COMMITMENT_COUNT, inputs) + player_index = player_index + 1 + end + + if IDLE_PLAYER_COUNT > 0 then + print(string.format("Setting up %d idle players", IDLE_PLAYER_COUNT)) + local scoped_require = new_scoped_require(_ENV) + local start_idle = scoped_require "runners.idle_runner" + for _ = 1, IDLE_PLAYER_COUNT do + player_coroutines[player_index] = start_idle(player_index + 1, machine_path, root_tournament) + player_index = player_index + 1 end + end - if IDLE_PLAYER_COUNT > 0 then - print(string.format("Setting up %d idle players", IDLE_PLAYER_COUNT)) - local scoped_require = new_scoped_require(_ENV) - local start_idle = scoped_require "runners.idle_runner" - for _ = 1, IDLE_PLAYER_COUNT do - player_coroutines[player_index] = start_idle(player_index + 1, machine_path, root_tournament) - player_index = player_index + 1 - end - end - - return player_coroutines + return player_coroutines end -- Function to run players local function run_players(player_coroutines) - while true do - local idle = true - local has_live_coroutine = false - for i, c in ipairs(player_coroutines) do - if c then - local success, ret = coroutine.resume(c) - local status = coroutine.status(c) - - if status == "dead" then - player_coroutines[i] = false - end - if not success then - print(string.format("coroutine %d fail to resume with error: %s", i, ret)) - elseif ret then - has_live_coroutine = true - idle = idle and ret.idle - end - end + while true do + local idle = true + local has_live_coroutine = false + for i, c in ipairs(player_coroutines) do + if c then + local success, ret = coroutine.resume(c) + local status = coroutine.status(c) + + if status == "dead" then + player_coroutines[i] = false end - - if not has_live_coroutine then - print("No active players, ending attack...") - break + if not success then + print(string.format("coroutine %d fail to resume with error: %s", i, ret)) + elseif ret then + has_live_coroutine = true + idle = idle and ret.idle end + end + end - if idle then - print(string.format("All players idle, fastforward blockchain for %d seconds...", FAST_FORWARD_TIME)) - blockchain_utils.advance_time(FAST_FORWARD_TIME, blockchain_constants.endpoint) - end - time.sleep(SLEEP_TIME) + if not has_live_coroutine then + print("No active players, ending attack...") + break + end + + if idle then + print(string.format("All players idle, fastforward blockchain for %d seconds...", FAST_FORWARD_TIME)) + blockchain_utils.advance_time(FAST_FORWARD_TIME, blockchain_constants.endpoint) end + time.sleep(SLEEP_TIME) + end end -- Main Execution @@ -192,27 +192,27 @@ print("Hello from Dave rollups lua prototype!") local input_index = 1 while true do - local sealed_epochs = reader:read_epochs_sealed(CONSENSUS_ADDRESS) + local sealed_epochs = reader:read_epochs_sealed(CONSENSUS_ADDRESS) - if #sealed_epochs > 0 then - local last_sealed_epoch = sealed_epochs[#sealed_epochs] - for _ = input_index, input_index + 2 do - sender:tx_add_input(INPUT_BOX_ADDRESS, APP_ADDRESS, ECHO_MSG) - end + if #sealed_epochs > 0 then + local last_sealed_epoch = sealed_epochs[#sealed_epochs] + for _ = input_index, input_index + 2 do + sender:tx_add_input(INPUT_BOX_ADDRESS, APP_ADDRESS, ECHO_MSG) + end - -- react to last sealed epoch - local root_tournament = sealed_epochs[#sealed_epochs].tournament - local work_path = string.format("/compute_data/%s", root_tournament) - if helper.exists(work_path) then - print(string.format("sybil player attacking epoch %d", - last_sealed_epoch.epoch_number)) - local epoch_machine_path = string.format("/rollups_data/%d/0", last_sealed_epoch.epoch_number) - local player_coroutines = setup_players(root_tournament, epoch_machine_path) - run_players(player_coroutines) - end + -- react to last sealed epoch + local root_tournament = sealed_epochs[#sealed_epochs].tournament + local work_path = string.format("/compute_data/%s", root_tournament) + if helper.exists(work_path) then + print(string.format("sybil player attacking epoch %d", + last_sealed_epoch.epoch_number)) + local epoch_machine_path = string.format("/rollups_data/%d/0", last_sealed_epoch.epoch_number) + local player_coroutines = setup_players(root_tournament, epoch_machine_path) + run_players(player_coroutines) end - -- blockchain_utils.advance_time(EPOCH_TIME, blockchain_constants.endpoint) - time.sleep(SLEEP_TIME) + end + -- blockchain_utils.advance_time(EPOCH_TIME, blockchain_constants.endpoint) + time.sleep(SLEEP_TIME) end print("Good-bye, world!") diff --git a/test/Dockerfile b/test/Dockerfile new file mode 100644 index 00000000..2fd56abd --- /dev/null +++ b/test/Dockerfile @@ -0,0 +1,39 @@ +FROM rust:1.83 AS base + +RUN \ + --mount=type=cache,target=$CARGO_HOME/registry,sharing=locked \ + --mount=type=cache,target=$CARGO_HOME/git,sharing=locked \ + cargo install just +RUN \ + --mount=type=cache,target=$CARGO_HOME/registry,sharing=locked \ + --mount=type=cache,target=$CARGO_HOME/git,sharing=locked \ + cargo install --git https://github.com/foundry-rs/foundry \ + anvil cast chisel forge --locked + + +ENV DEBIAN_FRONTEND=noninteractive +RUN \ + --mount=target=/var/lib/apt/lists,type=cache,sharing=locked \ + --mount=target=/var/cache/apt,type=cache,sharing=locked \ + rm -f /etc/apt/apt.conf.d/docker-clean \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential git wget libboost1.81-dev liblua5.4-dev libslirp-dev lua5.4 \ + libclang-dev docker.io + +WORKDIR /emulator +COPY machine/emulator . +RUN make +RUN make install PREFIX=/usr/local + +WORKDIR /app +COPY . . + +ENV SVM_ROOT=/root/.svm + +RUN \ + --mount=type=cache,target=target,sharing=locked \ + --mount=type=cache,target=$CARGO_HOME/registry,sharing=locked \ + --mount=type=cache,target=$CARGO_HOME/git,sharing=locked \ + --mount=type=cache,target=$SVM_ROOT,sharing=locked \ + just build