diff --git a/Cargo.lock b/Cargo.lock index 11aae955..88099c53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,16 +18,16 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "cipher", "cpufeatures", ] [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -40,9 +40,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.14" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +checksum = "1b9ebac8ff9c2f07667e1803dc777304337e160ce5153335beb45e8ec0751808" dependencies = [ "alloy-primitives", "num_enum", @@ -51,9 +51,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0dd3ed764953a6b20458b2b7abbfdc93d20d14b38babe1a70fe631a443a9f1" +checksum = "2e318e25fb719e747a7e8db1654170fc185024f3ed5b10f86c08d448a912f6e2" dependencies = [ "alloy-eips", "alloy-primitives", @@ -62,8 +62,9 @@ dependencies = [ "alloy-trie", "alloy-tx-macros", "auto_impl 1.3.0", + "borsh", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "k256 0.13.4", "once_cell", @@ -77,9 +78,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9556182afa73cddffa91e64a5aa9508d5e8c912b3a15f26998d2388a824d2c7b" +checksum = "364380a845193a317bcb7a5398fc86cdb66c47ebe010771dde05f6869bf9e64a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -91,9 +92,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19d7092c96defc3d132ee0d8969ca1b79ef512b5eda5c66e3065266b253adf2" +checksum = "08d39c80ffc806f27a76ed42f3351a455f3dc4f81d6ff92c8aad2cf36b7d3a34" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -142,32 +143,34 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fa99b538ca7006b0c03cfed24ec6d82beda67aac857ef4714be24231d15e6" +checksum = "a4c4d7c5839d9f3a467900c625416b24328450c65702eb3d8caff8813e4d1d33" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -176,8 +179,9 @@ dependencies = [ "alloy-rlp", "alloy-serde", "auto_impl 1.3.0", + "borsh", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "serde", "serde_with", @@ -199,13 +203,13 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91676d242c0ced99c0dd6d0096d7337babe9457cc43407d26aa6367fcf90553" +checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0" dependencies = [ "alloy-primitives", "alloy-sol-types", - "http 1.3.1", + "http 1.4.0", "serde", "serde_json", "thiserror 2.0.17", @@ -214,9 +218,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f82150116b30ba92f588b87f08fa97a46a1bd5ffc0d0597efdf0843d36bfda" +checksum = "12aeb37b6f2e61b93b1c3d34d01ee720207c76fe447e2a2c217e433ac75b17f5" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -231,7 +235,7 @@ dependencies = [ "alloy-sol-types", "async-trait", "auto_impl 1.3.0", - "derive_more 2.0.1", + "derive_more 2.1.0", "futures-utils-wasm", "serde", "serde_json", @@ -240,9 +244,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223612259a080160ce839a4e5df0125ca403a1d5e7206cc911cea54af5d769aa" +checksum = "abd29ace62872083e30929cd9b282d82723196d196db589f3ceda67edcc05552" dependencies = [ "alloy-consensus", "alloy-eips", @@ -259,12 +263,12 @@ checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "bytes", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "const-hex", - "derive_more 2.0.1", + "derive_more 2.1.0", "foldhash 0.2.0", - "hashbrown 0.16.0", - "indexmap 2.11.4", + "hashbrown 0.16.1", + "indexmap 2.12.1", "itoa", "k256 0.13.4", "keccak-asm", @@ -280,9 +284,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7283b81b6f136100b152e699171bc7ed8184a58802accbc91a7df4ebb944445" +checksum = "9b710636d7126e08003b8217e24c09f0cca0b46d62f650a841736891b1ed1fc1" dependencies = [ "alloy-chains", "alloy-consensus", @@ -337,14 +341,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "alloy-rpc-client" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1154b12d470bef59951c62676e106f4ce5de73b987d86b9faa935acebb138ded" +checksum = "d0882e72d2c1c0c79dcf4ab60a67472d3f009a949f774d4c17d0bdb669cfde05" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -365,9 +369,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ab76bf97648a1c6ad8fb00f0d594618942b5a9e008afbfb5c8a8fca800d574" +checksum = "39cf1398cb33aacb139a960fa3d8cf8b1202079f320e77e952a0b95967bf7a9f" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -378,9 +382,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cc57ee0c1ac9fb14854195fc249494da7416591dc4a4d981ddfd5dd93b9bce" +checksum = "6a63fb40ed24e4c92505f488f9dd256e2afaed17faa1b7a221086ebba74f4122" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -389,16 +393,16 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9d173854879bcf26c7d71c1c3911972a3314df526f4349ffe488e676af577d" +checksum = "4c60bdce3be295924122732b7ecd0b2495ce4790bedc5370ca7019c08ad3f26e" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "derive_more 2.0.1", + "derive_more 2.1.0", "jsonwebtoken", "rand 0.8.5", "serde", @@ -407,9 +411,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7d47bca1a2a1541e4404aa38b7e262bb4dffd9ac23b4f178729a4ddc5a5caa" +checksum = "9eae0c7c40da20684548cbc8577b6b7447f7bf4ddbac363df95e3da220e41e72" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -428,9 +432,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8468f1a7f9ee3bae73c24eead0239abea720dbf7779384b9c7e20d51bfb6b0" +checksum = "c0df1987ed0ff2d0159d76b52e7ddfc4e4fbddacc54d2fbee765e0d14d7c01b5" dependencies = [ "alloy-primitives", "serde", @@ -439,9 +443,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33387c90b0a5021f45a5a77c2ce6c49b8f6980e66a318181468fb24cea771670" +checksum = "6ff69deedee7232d7ce5330259025b868c5e6a52fa8dffda2c861fb3a5889b24" dependencies = [ "alloy-primitives", "async-trait", @@ -463,7 +467,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -476,11 +480,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.11.4", + "indexmap 2.12.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "syn-solidity", "tiny-keccak", ] @@ -499,7 +503,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.111", "syn-solidity", ] @@ -527,15 +531,14 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702002659778d89a94cd4ff2044f6b505460df6c162e2f47d1857573845b0ace" +checksum = "be98b07210d24acf5b793c99b759e9a696e4a2e67593aec0487ae3b3e1a2478c" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl 1.3.0", "base64 0.22.1", - "derive_more 2.0.1", + "derive_more 2.1.0", "futures", "futures-utils-wasm", "parking_lot 0.12.5", @@ -551,9 +554,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6bdc0830e5e8f08a4c70a4c791d400a86679c694a3b4b986caf26fad680438" +checksum = "4198a1ee82e562cab85e7f3d5921aab725d9bd154b6ad5017f82df1695877c97" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -573,7 +576,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec 0.7.6", - "derive_more 2.0.1", + "derive_more 2.1.0", "nybbles", "serde", "smallvec", @@ -582,15 +585,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.38" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bf39928a5e70c9755d6811a2928131b53ba785ad37c8bf85c90175b5d43b818" +checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" dependencies = [ - "alloy-primitives", "darling", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -693,7 +695,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -731,7 +733,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -837,7 +839,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -854,7 +856,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -894,7 +896,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -973,9 +975,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" [[package]] name = "bech32" @@ -1009,15 +1011,15 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitcoin-io" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" [[package]] name = "bitcoin_hashes" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" dependencies = [ "bitcoin-io", "hex-conservative", @@ -1031,9 +1033,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -1134,7 +1136,7 @@ dependencies = [ "arrayref", "arrayvec 0.7.6", "cc", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "constant_time_eq 0.3.1", ] @@ -1157,7 +1159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding 0.2.1", - "generic-array 0.14.9", + "generic-array 0.14.7", ] [[package]] @@ -1166,7 +1168,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", ] [[package]] @@ -1196,6 +1198,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "bs58" version = "0.4.0" @@ -1237,9 +1262,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] @@ -1293,9 +1318,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.41" +version = "1.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" dependencies = [ "find-msvc-tools", "shlex", @@ -1309,9 +1334,15 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" @@ -1393,7 +1424,7 @@ dependencies = [ "bech32", "blake2", "digest 0.10.7", - "generic-array 0.14.9", + "generic-array 0.14.7", "hex", "ripemd", "serde", @@ -1409,7 +1440,7 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "cpufeatures", "proptest", "serde_core", @@ -1468,6 +1499,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -1504,9 +1544,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] @@ -1535,7 +1575,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", "rand_core 0.6.4", "subtle", "zeroize", @@ -1547,7 +1587,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", "rand_core 0.6.4", "subtle", "zeroize", @@ -1555,11 +1595,11 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", "typenum", ] @@ -1569,7 +1609,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", "subtle", ] @@ -1582,6 +1622,29 @@ dependencies = [ "cipher", ] +[[package]] +name = "dao-agent" +version = "0.9.1" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-sol-types", + "anyhow", + "hex", + "mockall", + "serde", + "serde_json", + "tiny-keccak", + "wavs-llm", + "wavs-wasi-utils", + "wit-bindgen-rt 0.44.0", + "wstd", +] + [[package]] name = "darling" version = "0.21.3" @@ -1604,7 +1667,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1615,7 +1678,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1624,7 +1687,7 @@ version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "crossbeam-utils", "hashbrown 0.14.5", "lock_api", @@ -1655,7 +1718,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1680,9 +1743,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", "serde_core", @@ -1710,11 +1773,11 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" dependencies = [ - "derive_more-impl 2.0.1", + "derive_more-impl 2.1.0", ] [[package]] @@ -1725,18 +1788,20 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" dependencies = [ + "convert_case 0.10.0", "proc-macro2", "quote", - "syn 2.0.106", + "rustc_version 0.4.1", + "syn 2.0.111", "unicode-xid", ] @@ -1761,7 +1826,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", ] [[package]] @@ -1784,7 +1849,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1841,7 +1906,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1864,7 +1929,7 @@ dependencies = [ "der 0.6.1", "digest 0.10.7", "ff 0.12.1", - "generic-array 0.14.9", + "generic-array 0.14.7", "group 0.12.1", "pkcs8 0.9.0", "rand_core 0.6.4", @@ -1883,7 +1948,7 @@ dependencies = [ "crypto-bigint 0.5.5", "digest 0.10.7", "ff 0.13.1", - "generic-array 0.14.9", + "generic-array 0.14.7", "group 0.13.0", "pkcs8 0.10.2", "rand_core 0.6.4", @@ -1899,27 +1964,27 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", ] [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -2061,7 +2126,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d4e5ad46aede34901f71afdb7bb555710ed9613d88d644245c657dc371aa228" dependencies = [ "Inflector", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "dunce", "ethers-core", "eyre", @@ -2104,10 +2169,10 @@ dependencies = [ "bytes", "cargo_metadata", "chrono", - "convert_case", + "convert_case 0.6.0", "elliptic-curve 0.12.3", "ethabi", - "generic-array 0.14.9", + "generic-array 0.14.7", "hex", "k256 0.11.6", "once_cell", @@ -2287,9 +2352,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixed-hash" @@ -2432,7 +2497,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -2497,9 +2562,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.9" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -2512,7 +2577,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -2525,7 +2590,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "libc", "r-efi", "wasip2", @@ -2571,7 +2636,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap 2.12.1", "slab", "tokio", "tokio-util", @@ -2603,12 +2668,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash 0.2.0", "serde", + "serde_core", ] [[package]] @@ -2646,9 +2712,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-conservative" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" dependencies = [ "arrayvec 0.7.6", ] @@ -2675,12 +2741,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -2702,7 +2767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http 1.4.0", ] [[package]] @@ -2713,7 +2778,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "pin-project-lite", ] @@ -2756,15 +2821,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "httparse", "itoa", @@ -2797,7 +2862,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.1", "hyper-util", "native-tls", "tokio", @@ -2807,18 +2872,18 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", - "hyper 1.7.0", + "hyper 1.8.1", "ipnet", "libc", "percent-encoding", @@ -2855,9 +2920,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -2868,9 +2933,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -2881,11 +2946,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -2896,42 +2960,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -3007,7 +3067,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3029,12 +3089,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "serde", "serde_core", ] @@ -3045,7 +3105,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", ] [[package]] @@ -3054,7 +3114,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "js-sys", "wasm-bindgen", "web-sys", @@ -3077,9 +3137,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -3129,9 +3189,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -3158,7 +3218,7 @@ version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "ecdsa 0.14.8", "elliptic-curve 0.12.3", "sha2 0.10.9", @@ -3171,7 +3231,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "ecdsa 0.16.9", "elliptic-curve 0.13.8", "once_cell", @@ -3212,9 +3272,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libm" @@ -3230,9 +3290,35 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "llm-attester" +version = "0.9.1" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-sol-macro", + "alloy-sol-types", + "anyhow", + "hex", + "mockall", + "schemars 1.1.0", + "serde", + "serde_json", + "tiny-keccak", + "wavs-eas", + "wavs-llm", + "wavs-wasi-utils", + "wit-bindgen-rt 0.44.0", + "wstd", +] [[package]] name = "lock_api" @@ -3245,9 +3331,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lru" @@ -3266,7 +3352,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3323,13 +3409,13 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mio" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3338,7 +3424,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "downcast", "fragile", "lazy_static", @@ -3353,7 +3439,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "proc-macro2", "quote", "syn 1.0.109", @@ -3381,7 +3467,7 @@ dependencies = [ "blake2s_simd 0.5.11", "blake3 0.3.8", "digest 0.9.0", - "generic-array 0.14.9", + "generic-array 0.14.7", "multihash-derive 0.7.2", "sha2 0.9.9", "sha3 0.9.1", @@ -3503,9 +3589,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -3513,13 +3599,13 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3529,7 +3615,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" dependencies = [ "alloy-rlp", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "proptest", "ruint", "serde", @@ -3581,12 +3667,12 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", - "cfg-if 1.0.3", + "bitflags 2.10.0", + "cfg-if 1.0.4", "foreign-types", "libc", "once_cell", @@ -3602,7 +3688,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3613,9 +3699,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -3667,7 +3753,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3697,7 +3783,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "instant", "libc", "redox_syscall 0.2.16", @@ -3711,7 +3797,7 @@ version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "libc", "redox_syscall 0.5.18", "smallvec", @@ -3765,9 +3851,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.3" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" dependencies = [ "memchr", "ucd-trie", @@ -3800,7 +3886,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3843,9 +3929,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -3902,7 +3988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3981,28 +4067,27 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -4021,9 +4106,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -4132,7 +4217,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -4152,7 +4237,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -4245,10 +4330,10 @@ dependencies = [ "base64 0.22.1", "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.7.0", + "hyper 1.8.1", "hyper-tls", "hyper-util", "js-sys", @@ -4300,7 +4385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "getrandom 0.2.16", "libc", "untrusted", @@ -4407,7 +4492,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", @@ -4437,9 +4522,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" dependencies = [ "zeroize", ] @@ -4502,7 +4587,7 @@ version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", @@ -4517,7 +4602,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -4543,16 +4628,29 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", + "schemars_derive", "serde", "serde_json", ] +[[package]] +name = "schemars_derive" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.111", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -4589,7 +4687,7 @@ checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ "base16ct 0.1.1", "der 0.6.1", - "generic-array 0.14.9", + "generic-array 0.14.7", "pkcs8 0.9.0", "subtle", "zeroize", @@ -4603,7 +4701,7 @@ checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct 0.2.0", "der 0.7.10", - "generic-array 0.14.9", + "generic-array 0.14.7", "pkcs8 0.10.2", "serdect", "subtle", @@ -4637,7 +4735,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation", "core-foundation-sys", "libc", @@ -4736,7 +4834,18 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -4766,17 +4875,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.1", "schemars 0.9.0", - "schemars 1.0.4", + "schemars 1.1.0", "serde_core", "serde_json", "serde_with_macros", @@ -4785,14 +4894,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -4824,7 +4933,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.1", @@ -4836,7 +4945,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "cpufeatures", "digest 0.10.7", ] @@ -4870,7 +4979,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", - "cfg-if 1.0.3", + "cfg-if 1.0.4", ] [[package]] @@ -5024,7 +5133,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5046,9 +5155,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -5064,7 +5173,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5102,7 +5211,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5186,7 +5295,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5197,7 +5306,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5251,9 +5360,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -5297,7 +5406,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5334,9 +5443,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -5365,11 +5474,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.23.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "toml_datetime", "toml_parser", "winnow", @@ -5401,14 +5510,14 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "iri-string", "pin-project-lite", @@ -5431,9 +5540,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -5442,20 +5551,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", ] @@ -5550,9 +5659,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-segmentation" @@ -5678,38 +5787,24 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "once_cell", "rustversion", "wasm-bindgen-macro", "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "js-sys", "once_cell", "wasm-bindgen", @@ -5718,9 +5813,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5728,22 +5823,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -5765,7 +5860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" dependencies = [ "anyhow", - "indexmap 2.11.4", + "indexmap 2.12.1", "wasm-encoder", "wasmparser", ] @@ -5791,9 +5886,9 @@ version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "hashbrown 0.15.5", - "indexmap 2.11.4", + "indexmap 2.12.1", "semver 1.0.27", ] @@ -5814,7 +5909,7 @@ dependencies = [ [[package]] name = "wavs-eas" version = "0.6.0-alpha.1" -source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=cd1c4271deb7686a7d995b5b41bc226d8185df6e#cd1c4271deb7686a7d995b5b41bc226d8185df6e" +source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404#5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -5878,7 +5973,7 @@ dependencies = [ [[package]] name = "wavs-indexer-api" version = "0.6.0-alpha.1" -source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=cd1c4271deb7686a7d995b5b41bc226d8185df6e#cd1c4271deb7686a7d995b5b41bc226d8185df6e" +source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404#5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404" dependencies = [ "alloy-contract", "alloy-dyn-abi", @@ -5903,7 +5998,7 @@ dependencies = [ [[package]] name = "wavs-ipfs" version = "0.6.0-alpha.1" -source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=cd1c4271deb7686a7d995b5b41bc226d8185df6e#cd1c4271deb7686a7d995b5b41bc226d8185df6e" +source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404#5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404" dependencies = [ "anyhow", "bs58 0.5.1", @@ -5915,10 +6010,36 @@ dependencies = [ "wstd", ] +[[package]] +name = "wavs-llm" +version = "0.6.0-alpha.1" +source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404#5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-sol-types", + "anyhow", + "base64 0.22.1", + "hex", + "schemars 1.1.0", + "serde", + "serde_json", + "thiserror 1.0.69", + "tiny-keccak", + "wavs-wasi-utils", + "wit-bindgen 0.43.0", + "wit-bindgen-rt 0.43.0", + "wstd", +] + [[package]] name = "wavs-merkle-sources" version = "0.6.0-alpha.1" -source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=cd1c4271deb7686a7d995b5b41bc226d8185df6e#cd1c4271deb7686a7d995b5b41bc226d8185df6e" +source = "git+https://github.com/Lay3rLabs/wavs-tools?rev=5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404#5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404" dependencies = [ "alloy-contract", "alloy-dyn-abi", @@ -5976,9 +6097,9 @@ dependencies = [ "alloy-transport", "alloy-transport-http", "anyhow", - "cfg-if 1.0.3", + "cfg-if 1.0.4", "futures-utils-wasm", - "http 1.3.1", + "http 1.4.0", "serde", "serde_json", "tower-service", @@ -5988,9 +6109,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -6054,7 +6175,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6065,7 +6186,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6110,15 +6231,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -6325,9 +6437,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -6338,7 +6450,7 @@ version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "cfg-if 1.0.3", + "cfg-if 1.0.4", "windows-sys 0.48.0", ] @@ -6358,7 +6470,7 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -6378,7 +6490,7 @@ version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fd734226eac1fd7c450956964e3a9094c9cee65e9dafdf126feef8c0096db65" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "futures", "once_cell", ] @@ -6389,7 +6501,7 @@ version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "653c85dd7aee6fe6f4bded0d242406deadae9819029ce6f7d258c920c384358a" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "futures", "once_cell", ] @@ -6402,9 +6514,9 @@ checksum = "531ebfcec48e56473805285febdb450e270fa75b2dacb92816861d0473b4c15f" dependencies = [ "anyhow", "heck 0.5.0", - "indexmap 2.11.4", + "indexmap 2.12.1", "prettyplease", - "syn 2.0.106", + "syn 2.0.111", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -6420,7 +6532,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -6432,8 +6544,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64a57a11109cc553396f89f3a38a158a97d0b1adaec113bd73e0f64d30fb601f" dependencies = [ "anyhow", - "bitflags 2.9.4", - "indexmap 2.11.4", + "bitflags 2.10.0", + "indexmap 2.12.1", "log", "serde", "serde_derive", @@ -6452,7 +6564,7 @@ checksum = "0a1f95a87d03a33e259af286b857a95911eb46236a0f726cbaec1227b3dfc67a" dependencies = [ "anyhow", "id-arena", - "indexmap 2.11.4", + "indexmap 2.12.1", "log", "semver 1.0.27", "serde", @@ -6464,9 +6576,9 @@ dependencies = [ [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "ws_stream_wasm" @@ -6494,7 +6606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0736607b57fcb58dd3148cf34d6a6ca63ba041fde8a12ab3f2c48ddf6d11877" dependencies = [ "async-task", - "http 1.3.1", + "http 1.4.0", "itoa", "pin-project-lite", "serde", @@ -6511,7 +6623,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb142608f932022fa7d155d8ed99649d02c56a50532e71913a5a03c7c4e288d3" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6525,11 +6637,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -6537,34 +6648,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6584,7 +6695,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "synstructure 0.13.2", ] @@ -6605,14 +6716,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -6621,9 +6732,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -6632,11 +6743,11 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] diff --git a/Cargo.toml b/Cargo.toml index 04f70e85..96746b3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,11 +19,11 @@ wasi = "0.14.2" wavs-wasi-utils = "=1.2.0" # WAVS (https://github.com/Lay3rLabs/wavs-tools/pull/123) -wavs-llm = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "cd1c4271deb7686a7d995b5b41bc226d8185df6e", package = "wavs-llm"} -wavs-eas = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "cd1c4271deb7686a7d995b5b41bc226d8185df6e", package = "wavs-eas" } -wavs-indexer-api = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "cd1c4271deb7686a7d995b5b41bc226d8185df6e", package = "wavs-indexer-api" } -wavs-merkle-sources = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "cd1c4271deb7686a7d995b5b41bc226d8185df6e", package = "wavs-merkle-sources" } -wavs-ipfs = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "cd1c4271deb7686a7d995b5b41bc226d8185df6e", package = "wavs-ipfs"} +wavs-llm = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404", package = "wavs-llm"} +wavs-eas = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404", package = "wavs-eas" } +wavs-indexer-api = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404", package = "wavs-indexer-api" } +wavs-merkle-sources = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404", package = "wavs-merkle-sources" } +wavs-ipfs = { git = "https://github.com/Lay3rLabs/wavs-tools", rev = "5cba6bb758a6c64bbae4b58cbf22ab5f91ed2404", package = "wavs-ipfs"} # Local packages wavs-merkler = { path = "packages/wavs-merkler" } diff --git a/PLAN.md b/PLAN.md index c5324f1c..45327236 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,52 +1,15 @@ # The Plan -Figma: https://www.figma.com/proto/uGHgh87RIFS0GUlLR68hCs/TrustGraph-Wireframes?node-id=20-134 -Copy: https://www.notion.so/opencivics/TrustGraph-Copy-28606d2570f2805a8f08dfa3e64c559e?source=copy_link - -TODO: explore configuration... - -- Network overview on network page -- Add copy, new landing page -- Make network info config with copy - -- Contact support button -- update site metadata -- need a graph visualization - -Needs discussion: -- Calibrate math so scores are right? (open questions about this) - -Potential Bugs (need testing): -- Don't allow self-attestations, these shouldn't account -- Handle multiple attestations from the same account to the same account -- Set max 100 on confidence level - -Test: -- ENS support - -# Deploying -- Deploy somewhere so people can try -- Clean git history -- Open Source -- Deploy on Celo -- Publish WAVS packages - - -# Clean up -- formatVotingPower is baddly named (kill, it's just using BigInt, there must be a function in one of our packages) -- Remove followers logic from ponder indexer -- Rename component from merkler to trust graph -- Documentation for merkler component -- Refactor to consume upstream packages from WAVS tools -- Docs so people unfamiliar with WAVS can run it -- Make sure tasks are named appropriately +- Rename dao-agent -> actor +- Fix deployment +- Trigger actor based on cron # Governance extra credit +- A DAO needs to be able to update it's own service configuration (related to Gyser?) - Experimental notice on governance page - create proposal doesn't submit amount as big int (it's in wei) - Add threshold to Merkle Gov Module contract - Implement and document the fallback mechanism for governance (this should be fairly straightforward with Zodiac hopefully) -- A DAO needs to be able to update it's own service configuration (related to Gyser?) - Conduct AI audit of contracts - Add Gov Paper diff --git a/README.md b/README.md index da1e65ae..326e8374 100644 --- a/README.md +++ b/README.md @@ -127,3 +127,26 @@ task forge:claim-rewards task forge:query-rewards-balance ``` + + +### LLM Attester Demo + +Trigger LLM attester: +```bash +task eas:trigger \ + TRIGGER_ADDRESS="$(task config:eas-attest-trigger-addr)" \ + SCHEMA_UID="$(task config:statement-schema-id)" \ + RECIPIENT="$(task config:wallet-address)" \ + MESSAGE="Your statement message here" +``` + +Query LLM attester attestations: +```bash +task eas:query \ + INDEXER_ADDRESS="$(task config:indexer-address)" \ + EAS_ADDRESS="$(task config:eas-addr)" \ + SCHEMA_UID="$(task config:like-schema-id)" \ + RECIPIENT="$(task config:wallet-address)" +``` + +### Agent Demo diff --git a/components/actor/Cargo.toml b/components/actor/Cargo.toml new file mode 100644 index 00000000..4695653e --- /dev/null +++ b/components/actor/Cargo.toml @@ -0,0 +1,42 @@ +[package] +name = "dao-agent" +edition.workspace = true +version.workspace = true +authors.workspace = true +rust-version.workspace = true +repository.workspace = true + +[dependencies] +wavs-llm = { workspace = true } +wavs-wasi-utils = { workspace = true } +wstd = { workspace = true } +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } +anyhow = { workspace = true } +wit-bindgen-rt = { workspace = true, features = ["bitflags"] } +alloy-sol-types = { workspace = true } +alloy-primitives = { workspace = true } +alloy-json-abi = { workspace = true } +alloy-dyn-abi = { workspace = true } +alloy-network = { workspace = true } +alloy-provider = { workspace = true } +alloy-rpc-types = { workspace = true } +hex = { workspace = true } +tiny-keccak = { workspace = true } + +[dev-dependencies] +mockall = { workspace = true } + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "s" +debug = false +strip = true +lto = true + +[package.metadata.component] +package = "component:dao-agent" +target = "wavs:operator@=1.3.0" diff --git a/components/actor/Makefile b/components/actor/Makefile new file mode 100644 index 00000000..36e9a7b7 --- /dev/null +++ b/components/actor/Makefile @@ -0,0 +1,9 @@ +OUTPUT_DIR?=../../compiled + + +## wasi-build: building the WAVS wasi component(s) +wasi-build: + @cargo component build --release; cargo fmt + @mkdir -p $(OUTPUT_DIR) + @cp ../../target/wasm32-wasip1/release/*.wasm $(OUTPUT_DIR) +.PHONY: wasi-build diff --git a/components/actor/README.md b/components/actor/README.md new file mode 100644 index 00000000..b47bf31c --- /dev/null +++ b/components/actor/README.md @@ -0,0 +1,171 @@ +# DAO Agent Component + +A WASI-based agent that controls a Gnosis Safe Module. This component uses an LLM to make financial decisions and execute transactions on behalf of a DAO. + +## Overview + +The DAO Agent acts as an AI-powered financial controller for a Gnosis Safe wallet. It can: + +- Process natural language instructions about financial transactions +- Send ETH to allowlisted addresses +- Transfer ERC20 tokens (e.g., USDC) to allowlisted addresses +- Interact with smart contracts +- Validate transactions based on security rules + +## Configuration + +The DAO Agent can be configured via a JSON configuration file, which can be loaded from: + +- HTTP/HTTPS URLs +- IPFS URLs (using the format `ipfs://HASH`) + +The configuration can be passed via the `config_uri` key-value pair when deploying the service: + +```bash +SERVICE_CONFIG='{"fuel_limit":100000000,"max_gas":5000000,"host_envs":["WAVS_ENV_OPENAI_API_KEY", "WAVS_ENV_OPENAI_API_URL", "WAVS_ENV_IPFS_GATEWAY_URL", "WAVS_ENV_OLLAMA_API_URL"],"kv":[["config_uri", "ipfs://bafkreigflglas3bfv2qe5dik3lwag5lyuotwzbp5p6fw5cd73ibr5qczc4"]],"workflow_id":"default","component_id":"default"}' +``` + +If no configuration is provided, the component will use the default settings defined in `context.rs`. + +### Configuration Format + +The configuration file should follow this structure: + +```json +{ + "account_address": "0x47937d0d01b7d71201ca10138ebc14d22618ebce", + "allowlisted_addresses": ["0xDf3679681B87fAE75CE185e4f01d98b64Ddb64a3"], + "supported_tokens": [ + { + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "decimals": 18, + "description": "Native Ethereum token" + }, + { + "address": "0xb7278a61aa25c888815afc32ad3cc52ff24fe575", + "symbol": "USDC", + "decimals": 6, + "description": "USD Coin - a stablecoin pegged to the US Dollar" + } + ], + "llm_context": { + "model": "llama3.2", + "llm_config": { + "temperature": 0.0, + "top_p": 1.0, + "seed": 42, + "max_tokens": 500, + "context_window": 4096 + }, + "messages": [ + { + "role": "system", + "content": "You are a DAO agent responsible for making and executing financial decisions through a Gnosis Safe Module..." + } + ], + "contracts": [ + { + "name": "USDC", + "address": "0xb7278a61aa25c888815afc32ad3cc52ff24fe575", + "abi": "[{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"}]", + "description": "USDC is a stablecoin pegged to the US Dollar" + } + ], + "config": [] + } +} +``` + +See `agent-config.example.json` for a full example. + +## Environment Variables + +The DAO Agent requires the following environment variables: + +- `WAVS_ENV_OPENAI_API_KEY`: OpenAI API key for LLM access +- `WAVS_ENV_OPENAI_API_URL`: OpenAI API endpoint (default: "https://api.openai.com/v1/chat/completions") +- `WAVS_ENV_IPFS_GATEWAY_URL`: IPFS gateway URL for loading configurations (default: "https://gateway.lighthouse.storage") +- `WAVS_ENV_OLLAMA_API_URL`: Ollama Server API endpoint (default: "http://localhost:localhost:11434") + +## Building and Running + +### Build the Component + +```bash +cd components/dao-agent +cargo component build --release +``` + +Or use the project-level build command: + +```bash +make wasi-build +``` + +### Run Locally + +You can test the DAO Agent locally with: + +```bash +COMPONENT_FILENAME="dao_agent.wasm" PROMPT='We should donate 1 ETH to 0xDf3679681B87fAE75CE185e4f01d98b64Ddb64a3.' SERVICE_CONFIG='{"fuel_limit":100000000,"max_gas":5000000,"host_envs":["WAVS_ENV_OPENAI_API_KEY", "WAVS_ENV_OPENAI_API_URL", "WAVS_ENV_IPFS_GATEWAY_URL", "WAVS_ENV_OLLAMA_API_URL"],"kv":[["config_uri", "ipfs://bafkreigflglas3bfv2qe5dik3lwag5lyuotwzbp5p6fw5cd73ibr5qczc4"]],"workflow_id":"default","component_id":"default"}' make wasi-exec +``` + +## Security Considerations + +The DAO Agent includes several security measures: + +1. **Allowlisted Addresses**: Only addresses in the allowlist can receive funds +2. **Supported Tokens**: Only explicitly supported tokens can be transferred +3. **Token Amount Limits**: Transfers are limited to prevent large, unauthorized moves +4. **Decimal Handling**: Careful handling of token decimals to avoid mistakes +5. **Balance Checks**: Transactions that would spend more than the current balance are rejected +6. **Suspicious Request Detection**: The agent is programmed to reject unclear or suspicious requests + +## Technical Implementation + +### Dynamic Balance Fetching + +The agent can query current token balances on-chain to verify transactions: + +```rust +// Query all supported token balances +let balances = context.query_all_token_balances()?; +``` + +### Smart Contract Interactions + +The agent can interact with smart contracts using their ABIs: + +```rust +// Execute a USDC transfer +let transfer_call = ... // Create transfer call from ABI +let transaction = ... // Build transaction +let result = provider.send_transaction(transaction).await?; +``` + +### Token Decimal Handling + +The agent automatically handles token decimal conversion: + +- ETH: 18 decimals (1 ETH = 10^18 wei) +- USDC: 6 decimals (1 USDC = 10^6 base units) + +All human-readable amounts are converted to the correct base units before transactions are executed. + +## Extending the Agent + +To add support for new tokens or contracts: + +1. Add the token to the `supported_tokens` array in your configuration +2. Add the contract ABI to the `contracts` array +3. Update the system prompt to include instructions for the new token/contract + +## Limitations + +This is a demonstration agent and has several limitations: + +- Limited to pre-defined token types +- No complex DeFi operations +- No governance capabilities +- Simple security rules diff --git a/components/actor/src/bindings.rs b/components/actor/src/bindings.rs new file mode 100644 index 00000000..f4e5123d --- /dev/null +++ b/components/actor/src/bindings.rs @@ -0,0 +1,20517 @@ +// Generated by `wit-bindgen` 0.41.0. DO NOT EDIT! +// Options used: +// * runtime_path: "wit_bindgen_rt" +pub type TriggerAction = wavs::operator::input::TriggerAction; +pub type WasmResponse = wavs::operator::output::WasmResponse; +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_run_cabi(arg0: *mut u8) -> *mut u8 { + #[cfg(target_arch = "wasm32")] + _rt::run_ctors_once(); + let l0 = *arg0.add(0).cast::<*mut u8>(); + let l1 = *arg0.add(::core::mem::size_of::<*const u8>()).cast::(); + let len2 = l1; + let bytes2 = _rt::Vec::from_raw_parts(l0.cast(), len2, len2); + let l3 = *arg0.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l4 = *arg0.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = i32::from(*arg0.add(4 * ::core::mem::size_of::<*const u8>()).cast::()); + use wavs::types::service::Trigger as V41; + let v41 = match l6 { + 0 => { + let e41 = { + let l7 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l8 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len9 = l8; + let l10 = *arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l11 = *arg0.add(8 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + let l13 = *arg0.add(8 + 8 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l14 = *arg0.add(8 + 9 * ::core::mem::size_of::<*const u8>()).cast::(); + let len15 = l14; + wavs::types::service::TriggerEvmContractEvent { + address: wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l7.cast(), len9, len9), + }, + chain: _rt::string_lift(bytes12), + event_hash: _rt::Vec::from_raw_parts(l13.cast(), len15, len15), + } + }; + V41::EvmContractEvent(e41) + } + 1 => { + let e41 = { + let l16 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l17 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts(l16.cast(), len18, len18); + let l19 = *arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let l20 = *arg0.add(8 + 7 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l21 = *arg0.add(8 + 8 * ::core::mem::size_of::<*const u8>()).cast::(); + let len22 = l21; + let bytes22 = _rt::Vec::from_raw_parts(l20.cast(), len22, len22); + let l23 = *arg0.add(8 + 9 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l24 = *arg0.add(8 + 10 * ::core::mem::size_of::<*const u8>()).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts(l23.cast(), len25, len25); + wavs::types::service::TriggerCosmosContractEvent { + address: wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes18), + prefix_len: l19 as u32, + }, + chain: _rt::string_lift(bytes22), + event_type: _rt::string_lift(bytes25), + } + }; + V41::CosmosContractEvent(e41) + } + 2 => { + let e41 = { + let l26 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l27 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len28 = l27; + let bytes28 = _rt::Vec::from_raw_parts(l26.cast(), len28, len28); + let l29 = *arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let l30 = + i32::from(*arg0.add(16 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + let l32 = + i32::from(*arg0.add(32 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + wavs::types::service::TriggerBlockInterval { + chain: _rt::string_lift(bytes28), + n_blocks: l29 as u32, + start_block: match l30 { + 0 => None, + 1 => { + let e = { + let l31 = *arg0 + .add(24 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l31 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_block: match l32 { + 0 => None, + 1 => { + let e = { + let l33 = *arg0 + .add(40 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l33 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V41::BlockInterval(e41) + } + 3 => { + let e41 = { + let l34 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l35 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts(l34.cast(), len36, len36); + let l37 = + i32::from(*arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + let l39 = + i32::from(*arg0.add(24 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + wavs::types::service::TriggerCron { + schedule: _rt::string_lift(bytes36), + start_time: match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *arg0 + .add(16 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + wavs::types::core::Timestamp { nanos: l38 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_time: match l39 { + 0 => None, + 1 => { + let e = { + let l40 = *arg0 + .add(32 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + wavs::types::core::Timestamp { nanos: l40 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V41::Cron(e41) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + V41::Manual + } + }; + let l42 = i32::from(*arg0.add(48 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + use wavs::types::events::TriggerData as V98; + let v98 = match l42 { + 0 => { + let e98 = { + let l43 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l44 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len45 = l44; + let bytes45 = _rt::Vec::from_raw_parts(l43.cast(), len45, len45); + let l46 = *arg0.add(56 + 8 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l47 = *arg0.add(56 + 9 * ::core::mem::size_of::<*const u8>()).cast::(); + let len48 = l47; + let l49 = + *arg0.add(56 + 10 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l50 = *arg0.add(56 + 11 * ::core::mem::size_of::<*const u8>()).cast::(); + let base54 = l49; + let len54 = l50; + let mut result54 = _rt::Vec::with_capacity(len54); + for i in 0..len54 { + let base = base54.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e54 = { + let l51 = *base.add(0).cast::<*mut u8>(); + let l52 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len53 = l52; + _rt::Vec::from_raw_parts(l51.cast(), len53, len53) + }; + result54.push(e54); + } + _rt::cabi_dealloc( + base54, + len54 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l55 = + *arg0.add(56 + 12 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l56 = *arg0.add(56 + 13 * ::core::mem::size_of::<*const u8>()).cast::(); + let len57 = l56; + let l58 = + *arg0.add(56 + 14 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l59 = *arg0.add(56 + 15 * ::core::mem::size_of::<*const u8>()).cast::(); + let len60 = l59; + let l61 = *arg0.add(56 + 16 * ::core::mem::size_of::<*const u8>()).cast::(); + let l62 = *arg0.add(64 + 16 * ::core::mem::size_of::<*const u8>()).cast::(); + let l63 = + *arg0.add(72 + 16 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l64 = *arg0.add(72 + 17 * ::core::mem::size_of::<*const u8>()).cast::(); + let len65 = l64; + let l66 = i32::from( + *arg0.add(72 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l68 = *arg0.add(88 + 18 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataEvmContractEvent { + chain: _rt::string_lift(bytes45), + log: wavs::types::chain::EvmEventLog { + address: wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l46.cast(), len48, len48), + }, + data: wavs::types::chain::EvmEventLogData { + topics: result54, + data: _rt::Vec::from_raw_parts(l55.cast(), len57, len57), + }, + tx_hash: _rt::Vec::from_raw_parts(l58.cast(), len60, len60), + block_number: l61 as u64, + log_index: l62 as u64, + block_hash: _rt::Vec::from_raw_parts(l63.cast(), len65, len65), + block_timestamp: match l66 { + 0 => None, + 1 => { + let e = { + let l67 = *arg0 + .add(80 + 18 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l67 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + tx_index: l68 as u64, + }, + } + }; + V98::EvmContractEvent(e98) + } + 1 => { + let e98 = { + let l69 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l70 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len71 = l70; + let bytes71 = _rt::Vec::from_raw_parts(l69.cast(), len71, len71); + let l72 = *arg0.add(56 + 8 * ::core::mem::size_of::<*const u8>()).cast::(); + let l73 = *arg0.add(56 + 9 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l74 = *arg0.add(56 + 10 * ::core::mem::size_of::<*const u8>()).cast::(); + let len75 = l74; + let bytes75 = _rt::Vec::from_raw_parts(l73.cast(), len75, len75); + let l76 = + *arg0.add(56 + 11 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l77 = *arg0.add(56 + 12 * ::core::mem::size_of::<*const u8>()).cast::(); + let len78 = l77; + let bytes78 = _rt::Vec::from_raw_parts(l76.cast(), len78, len78); + let l79 = + *arg0.add(56 + 13 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l80 = *arg0.add(56 + 14 * ::core::mem::size_of::<*const u8>()).cast::(); + let base87 = l79; + let len87 = l80; + let mut result87 = _rt::Vec::with_capacity(len87); + for i in 0..len87 { + let base = base87.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e87 = { + let l81 = *base.add(0).cast::<*mut u8>(); + let l82 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts(l81.cast(), len83, len83); + let l84 = + *base.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l85 = + *base.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts(l84.cast(), len86, len86); + (_rt::string_lift(bytes83), _rt::string_lift(bytes86)) + }; + result87.push(e87); + } + _rt::cabi_dealloc( + base87, + len87 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l88 = *arg0.add(64 + 14 * ::core::mem::size_of::<*const u8>()).cast::(); + let l89 = *arg0.add(72 + 14 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataCosmosContractEvent { + contract_address: wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes71), + prefix_len: l72 as u32, + }, + chain: _rt::string_lift(bytes75), + event: wavs::types::chain::CosmosEvent { + ty: _rt::string_lift(bytes78), + attributes: result87, + }, + event_index: l88 as u64, + block_height: l89 as u64, + } + }; + V98::CosmosContractEvent(e98) + } + 2 => { + let e98 = { + let l90 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l91 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len92 = l91; + let bytes92 = _rt::Vec::from_raw_parts(l90.cast(), len92, len92); + let l93 = *arg0.add(56 + 8 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataBlockInterval { + chain: _rt::string_lift(bytes92), + block_height: l93 as u64, + } + }; + V98::BlockInterval(e98) + } + 3 => { + let e98 = { + let l94 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataCron { + trigger_time: wavs::types::core::Timestamp { nanos: l94 as u64 }, + } + }; + V98::Cron(e98) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + let e98 = { + let l95 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l96 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len97 = l96; + _rt::Vec::from_raw_parts(l95.cast(), len97, len97) + }; + V98::Raw(e98) + } + }; + let result99 = T::run(wavs::operator::input::TriggerAction { + config: wavs::operator::input::TriggerConfig { + service_id: _rt::string_lift(bytes2), + workflow_id: _rt::string_lift(bytes5), + trigger: v41, + }, + data: v98, + }); + _rt::cabi_dealloc(arg0, 96 + 18 * ::core::mem::size_of::<*const u8>(), 8); + let ptr100 = (&raw mut _RET_AREA.0).cast::(); + match result99 { + Ok(e) => { + *ptr100.add(0).cast::() = (0i32) as u8; + match e { + Some(e) => { + *ptr100.add(8).cast::() = (1i32) as u8; + let wavs::operator::output::WasmResponse { + payload: payload101, + ordering: ordering101, + } = e; + let vec102 = (payload101).into_boxed_slice(); + let ptr102 = vec102.as_ptr().cast::(); + let len102 = vec102.len(); + ::core::mem::forget(vec102); + *ptr100.add(16 + 1 * ::core::mem::size_of::<*const u8>()).cast::() = + len102; + *ptr100.add(16).cast::<*mut u8>() = ptr102.cast_mut(); + match ordering101 { + Some(e) => { + *ptr100 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (1i32) as u8; + *ptr100 + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = _rt::as_i64(e); + } + None => { + *ptr100 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (0i32) as u8; + } + }; + } + None => { + *ptr100.add(8).cast::() = (0i32) as u8; + } + }; + } + Err(e) => { + *ptr100.add(0).cast::() = (1i32) as u8; + let vec103 = (e.into_bytes()).into_boxed_slice(); + let ptr103 = vec103.as_ptr().cast::(); + let len103 = vec103.len(); + ::core::mem::forget(vec103); + *ptr100.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::() = len103; + *ptr100.add(8).cast::<*mut u8>() = ptr103.cast_mut(); + } + }; + ptr100 +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn __post_return_run(arg0: *mut u8) { + let l0 = i32::from(*arg0.add(0).cast::()); + match l0 { + 0 => { + let l1 = i32::from(*arg0.add(8).cast::()); + match l1 { + 0 => {} + _ => { + let l2 = *arg0.add(16).cast::<*mut u8>(); + let l3 = + *arg0.add(16 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let base4 = l2; + let len4 = l3; + _rt::cabi_dealloc(base4, len4 * 1, 1); + } + } + } + _ => { + let l5 = *arg0.add(8).cast::<*mut u8>(); + let l6 = *arg0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + _rt::cabi_dealloc(l5, l6, 1); + } + } +} +pub trait Guest { + fn run(trigger_action: TriggerAction) -> Result, _rt::String>; +} +#[doc(hidden)] +macro_rules! __export_world_wavs_world_cabi { + ($ty:ident with_types_in $($path_to_types:tt)*) => { + const _ : () = { #[unsafe (export_name = "run")] unsafe extern "C" fn + export_run(arg0 : * mut u8,) -> * mut u8 { unsafe { $($path_to_types)*:: + _export_run_cabi::<$ty > (arg0) } } #[unsafe (export_name = "cabi_post_run")] + unsafe extern "C" fn _post_return_run(arg0 : * mut u8,) { unsafe { + $($path_to_types)*:: __post_return_run::<$ty > (arg0) } } }; + }; +} +#[doc(hidden)] +pub(crate) use __export_world_wavs_world_cabi; +#[repr(align(8))] +struct _RetArea([::core::mem::MaybeUninit; 32 + 2 * ::core::mem::size_of::<*const u8>()]); +static mut _RET_AREA: _RetArea = + _RetArea([::core::mem::MaybeUninit::uninit(); 32 + 2 * ::core::mem::size_of::<*const u8>()]); +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] +pub mod wasi { + pub mod cli { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod environment { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[allow(unused_unsafe, clippy::all)] + pub fn get_environment() -> _rt::Vec<(_rt::String, _rt::String)> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/environment@0.2.0")] + unsafe extern "C" { + #[link_name = "get-environment"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base10 = l2; + let len10 = l3; + let mut result10 = _rt::Vec::with_capacity(len10); + for i in 0..len10 { + let base = base10 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e10 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l8 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + (_rt::string_lift(bytes6), _rt::string_lift(bytes9)) + }; + result10.push(e10); + } + _rt::cabi_dealloc( + base10, + len10 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result11 = result10; + result11 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_arguments() -> _rt::Vec<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/environment@0.2.0")] + unsafe extern "C" { + #[link_name = "get-arguments"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base7 = l2; + let len7 = l3; + let mut result7 = _rt::Vec::with_capacity(len7); + for i in 0..len7 { + let base = base7 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e7 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + _rt::string_lift(bytes6) + }; + result7.push(e7); + } + _rt::cabi_dealloc( + base7, + len7 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result8 = result7; + result8 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn initial_cwd() -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/environment@0.2.0")] + unsafe extern "C" { + #[link_name = "initial-cwd"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod exit { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[allow(unused_unsafe, clippy::all)] + pub fn exit(status: Result<(), ()>) -> () { + unsafe { + let result0 = match status { + Ok(_) => 0i32, + Err(_) => 1i32, + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/exit@0.2.0")] + unsafe extern "C" { + #[link_name = "exit"] + fn wit_import1(_: i32); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32) { + unreachable!() + } + unsafe { wit_import1(result0) }; + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod stdin { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + #[allow(unused_unsafe, clippy::all)] + pub fn get_stdin() -> InputStream { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/stdin@0.2.0")] + unsafe extern "C" { + #[link_name = "get-stdin"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod stdout { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + #[allow(unused_unsafe, clippy::all)] + pub fn get_stdout() -> OutputStream { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/stdout@0.2.0")] + unsafe extern "C" { + #[link_name = "get-stdout"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod stderr { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + #[allow(unused_unsafe, clippy::all)] + pub fn get_stderr() -> OutputStream { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/stderr@0.2.0")] + unsafe extern "C" { + #[link_name = "get-stderr"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_input { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct TerminalInput { + handle: _rt::Resource, + } + impl TerminalInput { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for TerminalInput { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:cli/terminal-input@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]terminal-input"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_output { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct TerminalOutput { + handle: _rt::Resource, + } + impl TerminalOutput { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for TerminalOutput { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:cli/terminal-output@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]terminal-output"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_stdin { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type TerminalInput = super::super::super::wasi::cli::terminal_input::TerminalInput; + #[allow(unused_unsafe, clippy::all)] + pub fn get_terminal_stdin() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/terminal-stdin@0.2.0")] + unsafe extern "C" { + #[link_name = "get-terminal-stdin"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::cli::terminal_input::TerminalInput::from_handle( + l3 as u32, + ) + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_stdout { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type TerminalOutput = super::super::super::wasi::cli::terminal_output::TerminalOutput; + #[allow(unused_unsafe, clippy::all)] + pub fn get_terminal_stdout() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/terminal-stdout@0.2.0")] + unsafe extern "C" { + #[link_name = "get-terminal-stdout"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::cli::terminal_output::TerminalOutput::from_handle( + l3 as u32, + ) + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_stderr { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type TerminalOutput = super::super::super::wasi::cli::terminal_output::TerminalOutput; + #[allow(unused_unsafe, clippy::all)] + pub fn get_terminal_stderr() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/terminal-stderr@0.2.0")] + unsafe extern "C" { + #[link_name = "get-terminal-stderr"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::cli::terminal_output::TerminalOutput::from_handle( + l3 as u32, + ) + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + } + pub mod clocks { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod monotonic_clock { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Instant = u64; + pub type Duration = u64; + #[allow(unused_unsafe, clippy::all)] + pub fn now() -> Instant { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "now"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn resolution() -> Duration { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "resolution"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe_instant(when: Instant) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "subscribe-instant"] + fn wit_import0(_: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i64) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0(_rt::as_i64(when)) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe_duration(when: Duration) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "subscribe-duration"] + fn wit_import0(_: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i64) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0(_rt::as_i64(when)) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod wall_clock { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Datetime { + pub seconds: u64, + pub nanoseconds: u32, + } + impl ::core::fmt::Debug for Datetime { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Datetime") + .field("seconds", &self.seconds) + .field("nanoseconds", &self.nanoseconds) + .finish() + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn now() -> Datetime { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 16]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/wall-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "now"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::(); + let l3 = *ptr0.add(8).cast::(); + let result4 = Datetime { + seconds: l2 as u64, + nanoseconds: l3 as u32, + }; + result4 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn resolution() -> Datetime { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 16]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/wall-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "resolution"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::(); + let l3 = *ptr0.add(8).cast::(); + let result4 = Datetime { + seconds: l2 as u64, + nanoseconds: l3 as u32, + }; + result4 + } + } + } + } + pub mod filesystem { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod types { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + pub type Error = super::super::super::wasi::io::streams::Error; + pub type Datetime = super::super::super::wasi::clocks::wall_clock::Datetime; + pub type Filesize = u64; + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum DescriptorType { + Unknown, + BlockDevice, + CharacterDevice, + Directory, + Fifo, + SymbolicLink, + RegularFile, + Socket, + } + impl ::core::fmt::Debug for DescriptorType { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + DescriptorType::Unknown => { + f.debug_tuple("DescriptorType::Unknown").finish() + } + DescriptorType::BlockDevice => { + f.debug_tuple("DescriptorType::BlockDevice").finish() + } + DescriptorType::CharacterDevice => { + f.debug_tuple("DescriptorType::CharacterDevice").finish() + } + DescriptorType::Directory => { + f.debug_tuple("DescriptorType::Directory").finish() + } + DescriptorType::Fifo => { + f.debug_tuple("DescriptorType::Fifo").finish() + } + DescriptorType::SymbolicLink => { + f.debug_tuple("DescriptorType::SymbolicLink").finish() + } + DescriptorType::RegularFile => { + f.debug_tuple("DescriptorType::RegularFile").finish() + } + DescriptorType::Socket => { + f.debug_tuple("DescriptorType::Socket").finish() + } + } + } + } + impl DescriptorType { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> DescriptorType { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => DescriptorType::Unknown, + 1 => DescriptorType::BlockDevice, + 2 => DescriptorType::CharacterDevice, + 3 => DescriptorType::Directory, + 4 => DescriptorType::Fifo, + 5 => DescriptorType::SymbolicLink, + 6 => DescriptorType::RegularFile, + 7 => DescriptorType::Socket, + _ => panic!("invalid enum discriminant"), + } + } + } + wit_bindgen_rt::bitflags::bitflags! { + #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] pub + struct DescriptorFlags : u8 { const READ = 1 << 0; const WRITE = 1 << 1; + const FILE_INTEGRITY_SYNC = 1 << 2; const DATA_INTEGRITY_SYNC = 1 << 3; + const REQUESTED_WRITE_SYNC = 1 << 4; const MUTATE_DIRECTORY = 1 << 5; } + } + wit_bindgen_rt::bitflags::bitflags! { + #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] pub + struct PathFlags : u8 { const SYMLINK_FOLLOW = 1 << 0; } + } + wit_bindgen_rt::bitflags::bitflags! { + #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] pub + struct OpenFlags : u8 { const CREATE = 1 << 0; const DIRECTORY = 1 << 1; + const EXCLUSIVE = 1 << 2; const TRUNCATE = 1 << 3; } + } + pub type LinkCount = u64; + #[repr(C)] + #[derive(Clone, Copy)] + pub struct DescriptorStat { + pub type_: DescriptorType, + pub link_count: LinkCount, + pub size: Filesize, + pub data_access_timestamp: Option, + pub data_modification_timestamp: Option, + pub status_change_timestamp: Option, + } + impl ::core::fmt::Debug for DescriptorStat { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("DescriptorStat") + .field("type", &self.type_) + .field("link-count", &self.link_count) + .field("size", &self.size) + .field("data-access-timestamp", &self.data_access_timestamp) + .field( + "data-modification-timestamp", + &self.data_modification_timestamp, + ) + .field("status-change-timestamp", &self.status_change_timestamp) + .finish() + } + } + #[derive(Clone, Copy)] + pub enum NewTimestamp { + NoChange, + Now, + Timestamp(Datetime), + } + impl ::core::fmt::Debug for NewTimestamp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + NewTimestamp::NoChange => { + f.debug_tuple("NewTimestamp::NoChange").finish() + } + NewTimestamp::Now => f.debug_tuple("NewTimestamp::Now").finish(), + NewTimestamp::Timestamp(e) => { + f.debug_tuple("NewTimestamp::Timestamp").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct DirectoryEntry { + pub type_: DescriptorType, + pub name: _rt::String, + } + impl ::core::fmt::Debug for DirectoryEntry { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("DirectoryEntry") + .field("type", &self.type_) + .field("name", &self.name) + .finish() + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum ErrorCode { + Access, + WouldBlock, + Already, + BadDescriptor, + Busy, + Deadlock, + Quota, + Exist, + FileTooLarge, + IllegalByteSequence, + InProgress, + Interrupted, + Invalid, + Io, + IsDirectory, + Loop, + TooManyLinks, + MessageSize, + NameTooLong, + NoDevice, + NoEntry, + NoLock, + InsufficientMemory, + InsufficientSpace, + NotDirectory, + NotEmpty, + NotRecoverable, + Unsupported, + NoTty, + NoSuchDevice, + Overflow, + NotPermitted, + Pipe, + ReadOnly, + InvalidSeek, + TextFileBusy, + CrossDevice, + } + impl ErrorCode { + pub fn name(&self) -> &'static str { + match self { + ErrorCode::Access => "access", + ErrorCode::WouldBlock => "would-block", + ErrorCode::Already => "already", + ErrorCode::BadDescriptor => "bad-descriptor", + ErrorCode::Busy => "busy", + ErrorCode::Deadlock => "deadlock", + ErrorCode::Quota => "quota", + ErrorCode::Exist => "exist", + ErrorCode::FileTooLarge => "file-too-large", + ErrorCode::IllegalByteSequence => "illegal-byte-sequence", + ErrorCode::InProgress => "in-progress", + ErrorCode::Interrupted => "interrupted", + ErrorCode::Invalid => "invalid", + ErrorCode::Io => "io", + ErrorCode::IsDirectory => "is-directory", + ErrorCode::Loop => "loop", + ErrorCode::TooManyLinks => "too-many-links", + ErrorCode::MessageSize => "message-size", + ErrorCode::NameTooLong => "name-too-long", + ErrorCode::NoDevice => "no-device", + ErrorCode::NoEntry => "no-entry", + ErrorCode::NoLock => "no-lock", + ErrorCode::InsufficientMemory => "insufficient-memory", + ErrorCode::InsufficientSpace => "insufficient-space", + ErrorCode::NotDirectory => "not-directory", + ErrorCode::NotEmpty => "not-empty", + ErrorCode::NotRecoverable => "not-recoverable", + ErrorCode::Unsupported => "unsupported", + ErrorCode::NoTty => "no-tty", + ErrorCode::NoSuchDevice => "no-such-device", + ErrorCode::Overflow => "overflow", + ErrorCode::NotPermitted => "not-permitted", + ErrorCode::Pipe => "pipe", + ErrorCode::ReadOnly => "read-only", + ErrorCode::InvalidSeek => "invalid-seek", + ErrorCode::TextFileBusy => "text-file-busy", + ErrorCode::CrossDevice => "cross-device", + } + } + pub fn message(&self) -> &'static str { + match self { + ErrorCode::Access => "", + ErrorCode::WouldBlock => "", + ErrorCode::Already => "", + ErrorCode::BadDescriptor => "", + ErrorCode::Busy => "", + ErrorCode::Deadlock => "", + ErrorCode::Quota => "", + ErrorCode::Exist => "", + ErrorCode::FileTooLarge => "", + ErrorCode::IllegalByteSequence => "", + ErrorCode::InProgress => "", + ErrorCode::Interrupted => "", + ErrorCode::Invalid => "", + ErrorCode::Io => "", + ErrorCode::IsDirectory => "", + ErrorCode::Loop => "", + ErrorCode::TooManyLinks => "", + ErrorCode::MessageSize => "", + ErrorCode::NameTooLong => "", + ErrorCode::NoDevice => "", + ErrorCode::NoEntry => "", + ErrorCode::NoLock => "", + ErrorCode::InsufficientMemory => "", + ErrorCode::InsufficientSpace => "", + ErrorCode::NotDirectory => "", + ErrorCode::NotEmpty => "", + ErrorCode::NotRecoverable => "", + ErrorCode::Unsupported => "", + ErrorCode::NoTty => "", + ErrorCode::NoSuchDevice => "", + ErrorCode::Overflow => "", + ErrorCode::NotPermitted => "", + ErrorCode::Pipe => "", + ErrorCode::ReadOnly => "", + ErrorCode::InvalidSeek => "", + ErrorCode::TextFileBusy => "", + ErrorCode::CrossDevice => "", + } + } + } + impl ::core::fmt::Debug for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ErrorCode") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{} (error {})", self.name(), * self as i32) + } + } + impl std::error::Error for ErrorCode {} + impl ErrorCode { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> ErrorCode { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => ErrorCode::Access, + 1 => ErrorCode::WouldBlock, + 2 => ErrorCode::Already, + 3 => ErrorCode::BadDescriptor, + 4 => ErrorCode::Busy, + 5 => ErrorCode::Deadlock, + 6 => ErrorCode::Quota, + 7 => ErrorCode::Exist, + 8 => ErrorCode::FileTooLarge, + 9 => ErrorCode::IllegalByteSequence, + 10 => ErrorCode::InProgress, + 11 => ErrorCode::Interrupted, + 12 => ErrorCode::Invalid, + 13 => ErrorCode::Io, + 14 => ErrorCode::IsDirectory, + 15 => ErrorCode::Loop, + 16 => ErrorCode::TooManyLinks, + 17 => ErrorCode::MessageSize, + 18 => ErrorCode::NameTooLong, + 19 => ErrorCode::NoDevice, + 20 => ErrorCode::NoEntry, + 21 => ErrorCode::NoLock, + 22 => ErrorCode::InsufficientMemory, + 23 => ErrorCode::InsufficientSpace, + 24 => ErrorCode::NotDirectory, + 25 => ErrorCode::NotEmpty, + 26 => ErrorCode::NotRecoverable, + 27 => ErrorCode::Unsupported, + 28 => ErrorCode::NoTty, + 29 => ErrorCode::NoSuchDevice, + 30 => ErrorCode::Overflow, + 31 => ErrorCode::NotPermitted, + 32 => ErrorCode::Pipe, + 33 => ErrorCode::ReadOnly, + 34 => ErrorCode::InvalidSeek, + 35 => ErrorCode::TextFileBusy, + 36 => ErrorCode::CrossDevice, + _ => panic!("invalid enum discriminant"), + } + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum Advice { + Normal, + Sequential, + Random, + WillNeed, + DontNeed, + NoReuse, + } + impl ::core::fmt::Debug for Advice { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Advice::Normal => f.debug_tuple("Advice::Normal").finish(), + Advice::Sequential => { + f.debug_tuple("Advice::Sequential").finish() + } + Advice::Random => f.debug_tuple("Advice::Random").finish(), + Advice::WillNeed => f.debug_tuple("Advice::WillNeed").finish(), + Advice::DontNeed => f.debug_tuple("Advice::DontNeed").finish(), + Advice::NoReuse => f.debug_tuple("Advice::NoReuse").finish(), + } + } + } + impl Advice { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> Advice { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => Advice::Normal, + 1 => Advice::Sequential, + 2 => Advice::Random, + 3 => Advice::WillNeed, + 4 => Advice::DontNeed, + 5 => Advice::NoReuse, + _ => panic!("invalid enum discriminant"), + } + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct MetadataHashValue { + pub lower: u64, + pub upper: u64, + } + impl ::core::fmt::Debug for MetadataHashValue { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("MetadataHashValue") + .field("lower", &self.lower) + .field("upper", &self.upper) + .finish() + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct Descriptor { + handle: _rt::Resource, + } + impl Descriptor { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Descriptor { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]descriptor"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct DirectoryEntryStream { + handle: _rt::Resource, + } + impl DirectoryEntryStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for DirectoryEntryStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]directory-entry-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn read_via_stream( + &self, + offset: Filesize, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.read-via-stream"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(offset), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn write_via_stream( + &self, + offset: Filesize, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.write-via-stream"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(offset), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn append_via_stream(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.append-via-stream"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn advise( + &self, + offset: Filesize, + length: Filesize, + advice: Advice, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.advise"] + fn wit_import1(_: i32, _: i64, _: i64, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i64, + _: i64, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(offset), + _rt::as_i64(length), + advice.clone() as i32, + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn sync_data(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.sync-data"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn get_flags(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.get-flags"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + DescriptorFlags::empty() + | DescriptorFlags::from_bits_retain(((l3 as u8) << 0) as _) + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn get_type(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.get-type"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + DescriptorType::_lift(l3 as u8) + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn set_size(&self, size: Filesize) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.set-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(size), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn set_times( + &self, + data_access_timestamp: NewTimestamp, + data_modification_timestamp: NewTimestamp, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let (result1_0, result1_1, result1_2) = match data_access_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds0, + nanoseconds: nanoseconds0, + } = e; + (2i32, _rt::as_i64(seconds0), _rt::as_i32(nanoseconds0)) + } + }; + let (result3_0, result3_1, result3_2) = match data_modification_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds2, + nanoseconds: nanoseconds2, + } = e; + (2i32, _rt::as_i64(seconds2), _rt::as_i32(nanoseconds2)) + } + }; + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.set-times"] + fn wit_import5( + _: i32, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: i32, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import5( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + result3_0, + result3_1, + result3_2, + ptr4, + ) + }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result8 = match l6 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from(*ptr4.add(1).cast::()); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn read( + &self, + length: Filesize, + offset: Filesize, + ) -> Result<(_rt::Vec, bool), ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.read"] + fn wit_import1(_: i32, _: i64, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i64, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(length), + _rt::as_i64(offset), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result8 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let l6 = i32::from( + *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + ( + _rt::Vec::from_raw_parts(l3.cast(), len5, len5), + _rt::bool_lift(l6 as u8), + ) + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn write( + &self, + buffer: &[u8], + offset: Filesize, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let vec0 = buffer; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.write"] + fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: i64, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + _rt::as_i64(offset), + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result6 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(8).cast::(); + l4 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(8).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn read_directory(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.read-directory"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { DirectoryEntryStream::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn sync(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.sync"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn create_directory_at(&self, path: &str) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.create-directory-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result5 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn stat(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 104]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 104], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.stat"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result16 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + let l4 = *ptr0.add(16).cast::(); + let l5 = *ptr0.add(24).cast::(); + let l6 = i32::from(*ptr0.add(32).cast::()); + let l9 = i32::from(*ptr0.add(56).cast::()); + let l12 = i32::from(*ptr0.add(80).cast::()); + DescriptorStat { + type_: DescriptorType::_lift(l3 as u8), + link_count: l4 as u64, + size: l5 as u64, + data_access_timestamp: match l6 { + 0 => None, + 1 => { + let e = { + let l7 = *ptr0.add(40).cast::(); + let l8 = *ptr0.add(48).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l7 as u64, + nanoseconds: l8 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + data_modification_timestamp: match l9 { + 0 => None, + 1 => { + let e = { + let l10 = *ptr0.add(64).cast::(); + let l11 = *ptr0.add(72).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l10 as u64, + nanoseconds: l11 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + status_change_timestamp: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = *ptr0.add(88).cast::(); + let l14 = *ptr0.add(96).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l13 as u64, + nanoseconds: l14 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Ok(e) + } + 1 => { + let e = { + let l15 = i32::from(*ptr0.add(8).cast::()); + ErrorCode::_lift(l15 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result16 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn stat_at( + &self, + path_flags: PathFlags, + path: &str, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 104]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 104], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.stat-at"] + fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result18 = match l4 { + 0 => { + let e = { + let l5 = i32::from(*ptr2.add(8).cast::()); + let l6 = *ptr2.add(16).cast::(); + let l7 = *ptr2.add(24).cast::(); + let l8 = i32::from(*ptr2.add(32).cast::()); + let l11 = i32::from(*ptr2.add(56).cast::()); + let l14 = i32::from(*ptr2.add(80).cast::()); + DescriptorStat { + type_: DescriptorType::_lift(l5 as u8), + link_count: l6 as u64, + size: l7 as u64, + data_access_timestamp: match l8 { + 0 => None, + 1 => { + let e = { + let l9 = *ptr2.add(40).cast::(); + let l10 = *ptr2.add(48).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l9 as u64, + nanoseconds: l10 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + data_modification_timestamp: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = *ptr2.add(64).cast::(); + let l13 = *ptr2.add(72).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l12 as u64, + nanoseconds: l13 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + status_change_timestamp: match l14 { + 0 => None, + 1 => { + let e = { + let l15 = *ptr2.add(88).cast::(); + let l16 = *ptr2.add(96).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l15 as u64, + nanoseconds: l16 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Ok(e) + } + 1 => { + let e = { + let l17 = i32::from(*ptr2.add(8).cast::()); + ErrorCode::_lift(l17 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result18 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn set_times_at( + &self, + path_flags: PathFlags, + path: &str, + data_access_timestamp: NewTimestamp, + data_modification_timestamp: NewTimestamp, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match data_access_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds2, + nanoseconds: nanoseconds2, + } = e; + (2i32, _rt::as_i64(seconds2), _rt::as_i32(nanoseconds2)) + } + }; + let (result5_0, result5_1, result5_2) = match data_modification_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds4, + nanoseconds: nanoseconds4, + } = e; + (2i32, _rt::as_i64(seconds4), _rt::as_i32(nanoseconds4)) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.set-times-at"] + fn wit_import7( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result5_0, + result5_1, + result5_2, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + ErrorCode::_lift(l9 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn link_at( + &self, + old_path_flags: PathFlags, + old_path: &str, + new_descriptor: &Descriptor, + new_path: &str, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let flags0 = old_path_flags; + let vec1 = old_path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let vec2 = new_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let ptr3 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.link-at"] + fn wit_import4( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import4( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import4( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + (new_descriptor).handle() as i32, + ptr2.cast_mut(), + len2, + ptr3, + ) + }; + let l5 = i32::from(*ptr3.add(0).cast::()); + let result7 = match l5 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr3.add(1).cast::()); + ErrorCode::_lift(l6 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn open_at( + &self, + path_flags: PathFlags, + path: &str, + open_flags: OpenFlags, + flags: DescriptorFlags, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let flags2 = open_flags; + let flags3 = flags; + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.open-at"] + fn wit_import5( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import5( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + (flags2.bits() >> 0) as i32, + (flags3.bits() >> 0) as i32, + ptr4, + ) + }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result9 = match l6 { + 0 => { + let e = { + let l7 = *ptr4.add(4).cast::(); + unsafe { Descriptor::from_handle(l7 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from(*ptr4.add(4).cast::()); + ErrorCode::_lift(l8 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn readlink_at(&self, path: &str) -> Result<_rt::String, ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.readlink-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result8 = match l3 { + 0 => { + let e = { + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + _rt::string_lift(bytes6) + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn remove_directory_at(&self, path: &str) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.remove-directory-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result5 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn rename_at( + &self, + old_path: &str, + new_descriptor: &Descriptor, + new_path: &str, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = old_path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = new_path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.rename-at"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + (new_descriptor).handle() as i32, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result6 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr2.add(1).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn symlink_at( + &self, + old_path: &str, + new_path: &str, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = old_path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = new_path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.symlink-at"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result6 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr2.add(1).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn unlink_file_at(&self, path: &str) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.unlink-file-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result5 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn is_same_object(&self, other: &Descriptor) -> bool { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.is-same-object"] + fn wit_import0(_: i32, _: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32, _: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((self).handle() as i32, (other).handle() as i32) + }; + _rt::bool_lift(ret as u8) + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn metadata_hash(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.metadata-hash"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + let l4 = *ptr0.add(16).cast::(); + MetadataHashValue { + lower: l3 as u64, + upper: l4 as u64, + } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr0.add(8).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn metadata_hash_at( + &self, + path_flags: PathFlags, + path: &str, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.metadata-hash-at"] + fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result8 = match l4 { + 0 => { + let e = { + let l5 = *ptr2.add(8).cast::(); + let l6 = *ptr2.add(16).cast::(); + MetadataHashValue { + lower: l5 as u64, + upper: l6 as u64, + } + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from(*ptr2.add(8).cast::()); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl DirectoryEntryStream { + #[allow(unused_unsafe, clippy::all)] + pub fn read_directory_entry( + &self, + ) -> Result, ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 5 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 5 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]directory-entry-stream.read-directory-entry"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result9 = match l2 { + 0 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + match l3 { + 0 => None, + 1 => { + let e = { + let l4 = i32::from( + *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr0 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + DirectoryEntry { + type_: DescriptorType::_lift(l4 as u8), + name: _rt::string_lift(bytes7), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + ErrorCode::_lift(l8 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn filesystem_error_code(err: &Error) -> Option { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 2]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "filesystem-error-code"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((err).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod preopens { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Descriptor = super::super::super::wasi::filesystem::types::Descriptor; + #[allow(unused_unsafe, clippy::all)] + pub fn get_directories() -> _rt::Vec<(Descriptor, _rt::String)> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/preopens@0.2.0")] + unsafe extern "C" { + #[link_name = "get-directories"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base8 = l2; + let len8 = l3; + let mut result8 = _rt::Vec::with_capacity(len8); + for i in 0..len8 { + let base = base8 + .add(i * (3 * ::core::mem::size_of::<*const u8>())); + let e8 = { + let l4 = *base.add(0).cast::(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts(l5.cast(), len7, len7); + ( + unsafe { + super::super::super::wasi::filesystem::types::Descriptor::from_handle( + l4 as u32, + ) + }, + _rt::string_lift(bytes7), + ) + }; + result8.push(e8); + } + _rt::cabi_dealloc( + base8, + len8 * (3 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result9 = result8; + result9 + } + } + } + } + pub mod http { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod types { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Duration = super::super::super::wasi::clocks::monotonic_clock::Duration; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + pub type IoError = super::super::super::wasi::io::error::Error; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + #[derive(Clone)] + pub enum Method { + Get, + Head, + Post, + Put, + Delete, + Connect, + Options, + Trace, + Patch, + Other(_rt::String), + } + impl ::core::fmt::Debug for Method { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Method::Get => f.debug_tuple("Method::Get").finish(), + Method::Head => f.debug_tuple("Method::Head").finish(), + Method::Post => f.debug_tuple("Method::Post").finish(), + Method::Put => f.debug_tuple("Method::Put").finish(), + Method::Delete => f.debug_tuple("Method::Delete").finish(), + Method::Connect => f.debug_tuple("Method::Connect").finish(), + Method::Options => f.debug_tuple("Method::Options").finish(), + Method::Trace => f.debug_tuple("Method::Trace").finish(), + Method::Patch => f.debug_tuple("Method::Patch").finish(), + Method::Other(e) => { + f.debug_tuple("Method::Other").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub enum Scheme { + Http, + Https, + Other(_rt::String), + } + impl ::core::fmt::Debug for Scheme { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Scheme::Http => f.debug_tuple("Scheme::Http").finish(), + Scheme::Https => f.debug_tuple("Scheme::Https").finish(), + Scheme::Other(e) => { + f.debug_tuple("Scheme::Other").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct DnsErrorPayload { + pub rcode: Option<_rt::String>, + pub info_code: Option, + } + impl ::core::fmt::Debug for DnsErrorPayload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("DnsErrorPayload") + .field("rcode", &self.rcode) + .field("info-code", &self.info_code) + .finish() + } + } + #[derive(Clone)] + pub struct TlsAlertReceivedPayload { + pub alert_id: Option, + pub alert_message: Option<_rt::String>, + } + impl ::core::fmt::Debug for TlsAlertReceivedPayload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TlsAlertReceivedPayload") + .field("alert-id", &self.alert_id) + .field("alert-message", &self.alert_message) + .finish() + } + } + #[derive(Clone)] + pub struct FieldSizePayload { + pub field_name: Option<_rt::String>, + pub field_size: Option, + } + impl ::core::fmt::Debug for FieldSizePayload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("FieldSizePayload") + .field("field-name", &self.field_name) + .field("field-size", &self.field_size) + .finish() + } + } + #[derive(Clone)] + pub enum ErrorCode { + DnsTimeout, + DnsError(DnsErrorPayload), + DestinationNotFound, + DestinationUnavailable, + DestinationIpProhibited, + DestinationIpUnroutable, + ConnectionRefused, + ConnectionTerminated, + ConnectionTimeout, + ConnectionReadTimeout, + ConnectionWriteTimeout, + ConnectionLimitReached, + TlsProtocolError, + TlsCertificateError, + TlsAlertReceived(TlsAlertReceivedPayload), + HttpRequestDenied, + HttpRequestLengthRequired, + HttpRequestBodySize(Option), + HttpRequestMethodInvalid, + HttpRequestUriInvalid, + HttpRequestUriTooLong, + HttpRequestHeaderSectionSize(Option), + HttpRequestHeaderSize(Option), + HttpRequestTrailerSectionSize(Option), + HttpRequestTrailerSize(FieldSizePayload), + HttpResponseIncomplete, + HttpResponseHeaderSectionSize(Option), + HttpResponseHeaderSize(FieldSizePayload), + HttpResponseBodySize(Option), + HttpResponseTrailerSectionSize(Option), + HttpResponseTrailerSize(FieldSizePayload), + HttpResponseTransferCoding(Option<_rt::String>), + HttpResponseContentCoding(Option<_rt::String>), + HttpResponseTimeout, + HttpUpgradeFailed, + HttpProtocolError, + LoopDetected, + ConfigurationError, + InternalError(Option<_rt::String>), + } + impl ::core::fmt::Debug for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ErrorCode::DnsTimeout => { + f.debug_tuple("ErrorCode::DnsTimeout").finish() + } + ErrorCode::DnsError(e) => { + f.debug_tuple("ErrorCode::DnsError").field(e).finish() + } + ErrorCode::DestinationNotFound => { + f.debug_tuple("ErrorCode::DestinationNotFound").finish() + } + ErrorCode::DestinationUnavailable => { + f.debug_tuple("ErrorCode::DestinationUnavailable").finish() + } + ErrorCode::DestinationIpProhibited => { + f.debug_tuple("ErrorCode::DestinationIpProhibited").finish() + } + ErrorCode::DestinationIpUnroutable => { + f.debug_tuple("ErrorCode::DestinationIpUnroutable").finish() + } + ErrorCode::ConnectionRefused => { + f.debug_tuple("ErrorCode::ConnectionRefused").finish() + } + ErrorCode::ConnectionTerminated => { + f.debug_tuple("ErrorCode::ConnectionTerminated").finish() + } + ErrorCode::ConnectionTimeout => { + f.debug_tuple("ErrorCode::ConnectionTimeout").finish() + } + ErrorCode::ConnectionReadTimeout => { + f.debug_tuple("ErrorCode::ConnectionReadTimeout").finish() + } + ErrorCode::ConnectionWriteTimeout => { + f.debug_tuple("ErrorCode::ConnectionWriteTimeout").finish() + } + ErrorCode::ConnectionLimitReached => { + f.debug_tuple("ErrorCode::ConnectionLimitReached").finish() + } + ErrorCode::TlsProtocolError => { + f.debug_tuple("ErrorCode::TlsProtocolError").finish() + } + ErrorCode::TlsCertificateError => { + f.debug_tuple("ErrorCode::TlsCertificateError").finish() + } + ErrorCode::TlsAlertReceived(e) => { + f.debug_tuple("ErrorCode::TlsAlertReceived") + .field(e) + .finish() + } + ErrorCode::HttpRequestDenied => { + f.debug_tuple("ErrorCode::HttpRequestDenied").finish() + } + ErrorCode::HttpRequestLengthRequired => { + f.debug_tuple("ErrorCode::HttpRequestLengthRequired") + .finish() + } + ErrorCode::HttpRequestBodySize(e) => { + f.debug_tuple("ErrorCode::HttpRequestBodySize") + .field(e) + .finish() + } + ErrorCode::HttpRequestMethodInvalid => { + f.debug_tuple("ErrorCode::HttpRequestMethodInvalid").finish() + } + ErrorCode::HttpRequestUriInvalid => { + f.debug_tuple("ErrorCode::HttpRequestUriInvalid").finish() + } + ErrorCode::HttpRequestUriTooLong => { + f.debug_tuple("ErrorCode::HttpRequestUriTooLong").finish() + } + ErrorCode::HttpRequestHeaderSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestHeaderSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpRequestHeaderSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestHeaderSize") + .field(e) + .finish() + } + ErrorCode::HttpRequestTrailerSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestTrailerSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpRequestTrailerSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestTrailerSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseIncomplete => { + f.debug_tuple("ErrorCode::HttpResponseIncomplete").finish() + } + ErrorCode::HttpResponseHeaderSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseHeaderSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseHeaderSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseHeaderSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseBodySize(e) => { + f.debug_tuple("ErrorCode::HttpResponseBodySize") + .field(e) + .finish() + } + ErrorCode::HttpResponseTrailerSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseTrailerSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseTrailerSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseTrailerSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseTransferCoding(e) => { + f.debug_tuple("ErrorCode::HttpResponseTransferCoding") + .field(e) + .finish() + } + ErrorCode::HttpResponseContentCoding(e) => { + f.debug_tuple("ErrorCode::HttpResponseContentCoding") + .field(e) + .finish() + } + ErrorCode::HttpResponseTimeout => { + f.debug_tuple("ErrorCode::HttpResponseTimeout").finish() + } + ErrorCode::HttpUpgradeFailed => { + f.debug_tuple("ErrorCode::HttpUpgradeFailed").finish() + } + ErrorCode::HttpProtocolError => { + f.debug_tuple("ErrorCode::HttpProtocolError").finish() + } + ErrorCode::LoopDetected => { + f.debug_tuple("ErrorCode::LoopDetected").finish() + } + ErrorCode::ConfigurationError => { + f.debug_tuple("ErrorCode::ConfigurationError").finish() + } + ErrorCode::InternalError(e) => { + f.debug_tuple("ErrorCode::InternalError").field(e).finish() + } + } + } + } + impl ::core::fmt::Display for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for ErrorCode {} + #[derive(Clone, Copy)] + pub enum HeaderError { + InvalidSyntax, + Forbidden, + Immutable, + } + impl ::core::fmt::Debug for HeaderError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + HeaderError::InvalidSyntax => { + f.debug_tuple("HeaderError::InvalidSyntax").finish() + } + HeaderError::Forbidden => { + f.debug_tuple("HeaderError::Forbidden").finish() + } + HeaderError::Immutable => { + f.debug_tuple("HeaderError::Immutable").finish() + } + } + } + } + impl ::core::fmt::Display for HeaderError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for HeaderError {} + pub type FieldKey = _rt::String; + pub type FieldValue = _rt::Vec; + #[derive(Debug)] + #[repr(transparent)] + pub struct Fields { + handle: _rt::Resource, + } + impl Fields { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Fields { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]fields"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + pub type Headers = Fields; + pub type Trailers = Fields; + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingRequest { + handle: _rt::Resource, + } + impl IncomingRequest { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingRequest { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-request"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingRequest { + handle: _rt::Resource, + } + impl OutgoingRequest { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingRequest { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-request"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct RequestOptions { + handle: _rt::Resource, + } + impl RequestOptions { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for RequestOptions { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]request-options"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct ResponseOutparam { + handle: _rt::Resource, + } + impl ResponseOutparam { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for ResponseOutparam { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]response-outparam"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + pub type StatusCode = u16; + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingResponse { + handle: _rt::Resource, + } + impl IncomingResponse { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingResponse { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-response"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingBody { + handle: _rt::Resource, + } + impl IncomingBody { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingBody { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-body"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct FutureTrailers { + handle: _rt::Resource, + } + impl FutureTrailers { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for FutureTrailers { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]future-trailers"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingResponse { + handle: _rt::Resource, + } + impl OutgoingResponse { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingResponse { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-response"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingBody { + handle: _rt::Resource, + } + impl OutgoingBody { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingBody { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-body"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct FutureIncomingResponse { + handle: _rt::Resource, + } + impl FutureIncomingResponse { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for FutureIncomingResponse { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]future-incoming-response"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn new() -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]fields"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn from_list( + entries: &[(FieldKey, FieldValue)], + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let vec3 = entries; + let len3 = vec3.len(); + let layout3 = _rt::alloc::Layout::from_size_align_unchecked( + vec3.len() * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result3 = if layout3.size() != 0 { + let ptr = _rt::alloc::alloc(layout3).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout3); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec3.into_iter().enumerate() { + let base = result3 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + { + let (t0_0, t0_1) = e; + let vec1 = t0_0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + let vec2 = t0_1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::() = len2; + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>() = ptr2.cast_mut(); + } + } + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]fields.from-list"] + fn wit_import5(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { wit_import5(result3, len3, ptr4) }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result10 = match l6 { + 0 => { + let e = { + let l7 = *ptr4.add(4).cast::(); + unsafe { Fields::from_handle(l7 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from(*ptr4.add(4).cast::()); + let v9 = match l8 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout3.size() != 0 { + _rt::alloc::dealloc(result3.cast(), layout3); + } + result10 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn get(&self, name: &str) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.get"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = *ptr1.add(0).cast::<*mut u8>(); + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base8 = l3; + let len8 = l4; + let mut result8 = _rt::Vec::with_capacity(len8); + for i in 0..len8 { + let base = base8 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e8 = { + let l5 = *base.add(0).cast::<*mut u8>(); + let l6 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + _rt::Vec::from_raw_parts(l5.cast(), len7, len7) + }; + result8.push(e8); + } + _rt::cabi_dealloc( + base8, + len8 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result9 = result8; + result9 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn has(&self, name: &str) -> bool { + unsafe { + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.has"] + fn wit_import1(_: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, ptr0.cast_mut(), len0) + }; + _rt::bool_lift(ret as u8) + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn set( + &self, + name: &str, + value: &[FieldValue], + ) -> Result<(), HeaderError> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec2 = value; + let len2 = vec2.len(); + let layout2 = _rt::alloc::Layout::from_size_align_unchecked( + vec2.len() * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result2 = if layout2.size() != 0 { + let ptr = _rt::alloc::alloc(layout2).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout2); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec2.into_iter().enumerate() { + let base = result2 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + { + let vec1 = e; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + } + } + let ptr3 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.set"] + fn wit_import4( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import4( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import4( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + result2, + len2, + ptr3, + ) + }; + let l5 = i32::from(*ptr3.add(0).cast::()); + let result8 = match l5 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr3.add(1).cast::()); + let v7 = match l6 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v7 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout2.size() != 0 { + _rt::alloc::dealloc(result2.cast(), layout2); + } + result8 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn delete(&self, name: &str) -> Result<(), HeaderError> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.delete"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result6 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + let v5 = match l4 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn append( + &self, + name: &str, + value: &[u8], + ) -> Result<(), HeaderError> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = value; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.append"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result7 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr2.add(1).cast::()); + let v6 = match l5 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn entries(&self) -> _rt::Vec<(FieldKey, FieldValue)> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.entries"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base10 = l2; + let len10 = l3; + let mut result10 = _rt::Vec::with_capacity(len10); + for i in 0..len10 { + let base = base10 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e10 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l8 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + ( + _rt::string_lift(bytes6), + _rt::Vec::from_raw_parts(l7.cast(), len9, len9), + ) + }; + result10.push(e10); + } + _rt::cabi_dealloc( + base10, + len10 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result11 = result10; + result11 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn clone(&self) -> Fields { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.clone"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn method(&self) -> Method { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.method"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let v6 = match l2 { + 0 => Method::Get, + 1 => Method::Head, + 2 => Method::Post, + 3 => Method::Put, + 4 => Method::Delete, + 5 => Method::Connect, + 6 => Method::Options, + 7 => Method::Trace, + 8 => Method::Patch, + n => { + debug_assert_eq!(n, 9, "invalid enum discriminant"); + let e6 = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Method::Other(e6) + } + }; + let result7 = v6; + result7 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn path_with_query(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.path-with-query"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn scheme(&self) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.scheme"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result8 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v7 = match l3 { + 0 => Scheme::Http, + 1 => Scheme::Https, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e7 = { + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + _rt::string_lift(bytes6) + }; + Scheme::Other(e7) + } + }; + v7 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn authority(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.authority"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn consume(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.consume"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { IncomingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn new(headers: Headers) -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]outgoing-request"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((&headers).take_handle() as i32) + }; + unsafe { OutgoingRequest::from_handle(ret as u32) } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn body(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.body"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { OutgoingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn method(&self) -> Method { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.method"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let v6 = match l2 { + 0 => Method::Get, + 1 => Method::Head, + 2 => Method::Post, + 3 => Method::Put, + 4 => Method::Delete, + 5 => Method::Connect, + 6 => Method::Options, + 7 => Method::Trace, + 8 => Method::Patch, + n => { + debug_assert_eq!(n, 9, "invalid enum discriminant"); + let e6 = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Method::Other(e6) + } + }; + let result7 = v6; + result7 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_method(&self, method: &Method) -> Result<(), ()> { + unsafe { + let (result1_0, result1_1, result1_2) = match method { + Method::Get => (0i32, ::core::ptr::null_mut(), 0usize), + Method::Head => (1i32, ::core::ptr::null_mut(), 0usize), + Method::Post => (2i32, ::core::ptr::null_mut(), 0usize), + Method::Put => (3i32, ::core::ptr::null_mut(), 0usize), + Method::Delete => (4i32, ::core::ptr::null_mut(), 0usize), + Method::Connect => (5i32, ::core::ptr::null_mut(), 0usize), + Method::Options => (6i32, ::core::ptr::null_mut(), 0usize), + Method::Trace => (7i32, ::core::ptr::null_mut(), 0usize), + Method::Patch => (8i32, ::core::ptr::null_mut(), 0usize), + Method::Other(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (9i32, ptr0.cast_mut(), len0) + } + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-method"] + fn wit_import2(_: i32, _: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import2( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn path_with_query(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.path-with-query"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_path_with_query( + &self, + path_with_query: Option<&str>, + ) -> Result<(), ()> { + unsafe { + let (result1_0, result1_1, result1_2) = match path_with_query { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-path-with-query"] + fn wit_import2(_: i32, _: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import2( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn scheme(&self) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.scheme"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result8 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v7 = match l3 { + 0 => Scheme::Http, + 1 => Scheme::Https, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e7 = { + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + _rt::string_lift(bytes6) + }; + Scheme::Other(e7) + } + }; + v7 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_scheme(&self, scheme: Option<&Scheme>) -> Result<(), ()> { + unsafe { + let (result2_0, result2_1, result2_2, result2_3) = match scheme { + Some(e) => { + let (result1_0, result1_1, result1_2) = match e { + Scheme::Http => (0i32, ::core::ptr::null_mut(), 0usize), + Scheme::Https => (1i32, ::core::ptr::null_mut(), 0usize), + Scheme::Other(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (2i32, ptr0.cast_mut(), len0) + } + }; + (1i32, result1_0, result1_1, result1_2) + } + None => (0i32, 0i32, ::core::ptr::null_mut(), 0usize), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-scheme"] + fn wit_import3( + _: i32, + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import3( + (self).handle() as i32, + result2_0, + result2_1, + result2_2, + result2_3, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn authority(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.authority"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_authority(&self, authority: Option<&str>) -> Result<(), ()> { + unsafe { + let (result1_0, result1_1, result1_2) = match authority { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-authority"] + fn wit_import2(_: i32, _: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import2( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn new() -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]request-options"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { RequestOptions::from_handle(ret as u32) } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn connect_timeout(&self) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.connect-timeout"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn set_connect_timeout( + &self, + duration: Option, + ) -> Result<(), ()> { + unsafe { + let (result0_0, result0_1) = match duration { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.set-connect-timeout"] + fn wit_import1(_: i32, _: i32, _: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: i64) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, result0_0, result0_1) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn first_byte_timeout(&self) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.first-byte-timeout"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn set_first_byte_timeout( + &self, + duration: Option, + ) -> Result<(), ()> { + unsafe { + let (result0_0, result0_1) = match duration { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.set-first-byte-timeout"] + fn wit_import1(_: i32, _: i32, _: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: i64) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, result0_0, result0_1) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn between_bytes_timeout(&self) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.between-bytes-timeout"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn set_between_bytes_timeout( + &self, + duration: Option, + ) -> Result<(), ()> { + unsafe { + let (result0_0, result0_1) = match duration { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.set-between-bytes-timeout"] + fn wit_import1(_: i32, _: i32, _: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: i64) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, result0_0, result0_1) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl ResponseOutparam { + #[allow(unused_unsafe, clippy::all)] + pub fn set( + param: ResponseOutparam, + response: Result, + ) -> () { + unsafe { + let ( + result38_0, + result38_1, + result38_2, + result38_3, + result38_4, + result38_5, + result38_6, + result38_7, + ) = match &response { + Ok(e) => { + ( + 0i32, + (e).take_handle() as i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + Err(e) => { + let ( + result37_0, + result37_1, + result37_2, + result37_3, + result37_4, + result37_5, + result37_6, + ) = match e { + ErrorCode::DnsTimeout => { + ( + 0i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DnsError(e) => { + let DnsErrorPayload { + rcode: rcode0, + info_code: info_code0, + } = e; + let (result2_0, result2_1, result2_2) = match rcode0 { + Some(e) => { + let vec1 = e; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + (1i32, ptr1.cast_mut(), len1) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result3_0, result3_1) = match info_code0 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 1i32, + result2_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result2_1); + t + }, + result2_2 as *mut u8, + result3_0 as *mut u8, + result3_1 as usize, + 0i32, + ) + } + ErrorCode::DestinationNotFound => { + ( + 2i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DestinationUnavailable => { + ( + 3i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DestinationIpProhibited => { + ( + 4i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DestinationIpUnroutable => { + ( + 5i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionRefused => { + ( + 6i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionTerminated => { + ( + 7i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionTimeout => { + ( + 8i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionReadTimeout => { + ( + 9i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionWriteTimeout => { + ( + 10i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionLimitReached => { + ( + 11i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::TlsProtocolError => { + ( + 12i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::TlsCertificateError => { + ( + 13i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::TlsAlertReceived(e) => { + let TlsAlertReceivedPayload { + alert_id: alert_id4, + alert_message: alert_message4, + } = e; + let (result5_0, result5_1) = match alert_id4 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + let (result7_0, result7_1, result7_2) = match alert_message4 { + Some(e) => { + let vec6 = e; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + (1i32, ptr6.cast_mut(), len6) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 14i32, + result5_0, + ::core::mem::MaybeUninit::new(i64::from(result5_1) as u64), + result7_0 as *mut u8, + result7_1, + result7_2, + 0i32, + ) + } + ErrorCode::HttpRequestDenied => { + ( + 15i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestLengthRequired => { + ( + 16i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestBodySize(e) => { + let (result8_0, result8_1) = match e { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + ( + 17i32, + result8_0, + ::core::mem::MaybeUninit::new(result8_1 as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestMethodInvalid => { + ( + 18i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestUriInvalid => { + ( + 19i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestUriTooLong => { + ( + 20i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestHeaderSectionSize(e) => { + let (result9_0, result9_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 21i32, + result9_0, + ::core::mem::MaybeUninit::new(i64::from(result9_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestHeaderSize(e) => { + let ( + result14_0, + result14_1, + result14_2, + result14_3, + result14_4, + result14_5, + ) = match e { + Some(e) => { + let FieldSizePayload { + field_name: field_name10, + field_size: field_size10, + } = e; + let (result12_0, result12_1, result12_2) = match field_name10 { + Some(e) => { + let vec11 = e; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + (1i32, ptr11.cast_mut(), len11) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result13_0, result13_1) = match field_size10 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 1i32, + result12_0, + result12_1, + result12_2, + result13_0, + result13_1, + ) + } + None => { + (0i32, 0i32, ::core::ptr::null_mut(), 0usize, 0i32, 0i32) + } + }; + ( + 22i32, + result14_0, + ::core::mem::MaybeUninit::new(i64::from(result14_1) as u64), + result14_2, + result14_3 as *mut u8, + result14_4 as usize, + result14_5, + ) + } + ErrorCode::HttpRequestTrailerSectionSize(e) => { + let (result15_0, result15_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 23i32, + result15_0, + ::core::mem::MaybeUninit::new(i64::from(result15_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestTrailerSize(e) => { + let FieldSizePayload { + field_name: field_name16, + field_size: field_size16, + } = e; + let (result18_0, result18_1, result18_2) = match field_name16 { + Some(e) => { + let vec17 = e; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + (1i32, ptr17.cast_mut(), len17) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result19_0, result19_1) = match field_size16 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 24i32, + result18_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result18_1); + t + }, + result18_2 as *mut u8, + result19_0 as *mut u8, + result19_1 as usize, + 0i32, + ) + } + ErrorCode::HttpResponseIncomplete => { + ( + 25i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseHeaderSectionSize(e) => { + let (result20_0, result20_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 26i32, + result20_0, + ::core::mem::MaybeUninit::new(i64::from(result20_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseHeaderSize(e) => { + let FieldSizePayload { + field_name: field_name21, + field_size: field_size21, + } = e; + let (result23_0, result23_1, result23_2) = match field_name21 { + Some(e) => { + let vec22 = e; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + (1i32, ptr22.cast_mut(), len22) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result24_0, result24_1) = match field_size21 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 27i32, + result23_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result23_1); + t + }, + result23_2 as *mut u8, + result24_0 as *mut u8, + result24_1 as usize, + 0i32, + ) + } + ErrorCode::HttpResponseBodySize(e) => { + let (result25_0, result25_1) = match e { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + ( + 28i32, + result25_0, + ::core::mem::MaybeUninit::new(result25_1 as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseTrailerSectionSize(e) => { + let (result26_0, result26_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 29i32, + result26_0, + ::core::mem::MaybeUninit::new(i64::from(result26_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseTrailerSize(e) => { + let FieldSizePayload { + field_name: field_name27, + field_size: field_size27, + } = e; + let (result29_0, result29_1, result29_2) = match field_name27 { + Some(e) => { + let vec28 = e; + let ptr28 = vec28.as_ptr().cast::(); + let len28 = vec28.len(); + (1i32, ptr28.cast_mut(), len28) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result30_0, result30_1) = match field_size27 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 30i32, + result29_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result29_1); + t + }, + result29_2 as *mut u8, + result30_0 as *mut u8, + result30_1 as usize, + 0i32, + ) + } + ErrorCode::HttpResponseTransferCoding(e) => { + let (result32_0, result32_1, result32_2) = match e { + Some(e) => { + let vec31 = e; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + (1i32, ptr31.cast_mut(), len31) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 31i32, + result32_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result32_1); + t + }, + result32_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseContentCoding(e) => { + let (result34_0, result34_1, result34_2) = match e { + Some(e) => { + let vec33 = e; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + (1i32, ptr33.cast_mut(), len33) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 32i32, + result34_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result34_1); + t + }, + result34_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseTimeout => { + ( + 33i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpUpgradeFailed => { + ( + 34i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpProtocolError => { + ( + 35i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::LoopDetected => { + ( + 36i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConfigurationError => { + ( + 37i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::InternalError(e) => { + let (result36_0, result36_1, result36_2) = match e { + Some(e) => { + let vec35 = e; + let ptr35 = vec35.as_ptr().cast::(); + let len35 = vec35.len(); + (1i32, ptr35.cast_mut(), len35) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 38i32, + result36_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result36_1); + t + }, + result36_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + }; + ( + 1i32, + result37_0, + result37_1, + result37_2, + result37_3, + result37_4, + result37_5, + result37_6, + ) + } + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]response-outparam.set"] + fn wit_import39( + _: i32, + _: i32, + _: i32, + _: i32, + _: ::core::mem::MaybeUninit, + _: *mut u8, + _: *mut u8, + _: usize, + _: i32, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import39( + _: i32, + _: i32, + _: i32, + _: i32, + _: ::core::mem::MaybeUninit, + _: *mut u8, + _: *mut u8, + _: usize, + _: i32, + ) { + unreachable!() + } + unsafe { + wit_import39( + (¶m).take_handle() as i32, + result38_0, + result38_1, + result38_2, + result38_3, + result38_4, + result38_5, + result38_6, + result38_7, + ) + }; + } + } + } + impl IncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn status(&self) -> StatusCode { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-response.status"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + ret as u16 + } + } + } + impl IncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-response.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl IncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn consume(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-response.consume"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { IncomingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl IncomingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn stream(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-body.stream"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl IncomingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn finish(this: IncomingBody) -> FutureTrailers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]incoming-body.finish"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((&this).take_handle() as i32) }; + unsafe { FutureTrailers::from_handle(ret as u32) } + } + } + } + impl FutureTrailers { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-trailers.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl FutureTrailers { + #[allow(unused_unsafe, clippy::all)] + pub fn get( + &self, + ) -> Option, ErrorCode>, ()>> { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 40 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 40 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-trailers.get"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result70 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + match l3 { + 0 => { + let e = { + let l4 = i32::from(*ptr0.add(16).cast::()); + match l4 { + 0 => { + let e = { + let l5 = i32::from(*ptr0.add(24).cast::()); + match l5 { + 0 => None, + 1 => { + let e = { + let l6 = *ptr0.add(28).cast::(); + unsafe { Fields::from_handle(l6 as u32) } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from(*ptr0.add(24).cast::()); + let v69 = match l7 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e69 = { + let l8 = i32::from(*ptr0.add(32).cast::()); + let l12 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l8 { + 0 => None, + 1 => { + let e = { + let l9 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l10 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + _rt::string_lift(bytes11) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = i32::from( + *ptr0 + .add(34 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l13 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e69) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e69 = { + let l14 = i32::from(*ptr0.add(32).cast::()); + let l16 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l14 { + 0 => None, + 1 => { + let e = { + let l15 = i32::from(*ptr0.add(33).cast::()); + l15 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l18 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len19 = l18; + let bytes19 = _rt::Vec::from_raw_parts( + l17.cast(), + len19, + len19, + ); + _rt::string_lift(bytes19) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e69) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e69 = { + let l20 = i32::from(*ptr0.add(32).cast::()); + match l20 { + 0 => None, + 1 => { + let e = { + let l21 = *ptr0.add(40).cast::(); + l21 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e69) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e69 = { + let l22 = i32::from(*ptr0.add(32).cast::()); + match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *ptr0.add(36).cast::(); + l23 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e69) + } + 22 => { + let e69 = { + let l24 = i32::from(*ptr0.add(32).cast::()); + match l24 { + 0 => None, + 1 => { + let e = { + let l25 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l29 = i32::from( + *ptr0 + .add(32 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l25 { + 0 => None, + 1 => { + let e = { + let l26 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l27 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len28 = l27; + let bytes28 = _rt::Vec::from_raw_parts( + l26.cast(), + len28, + len28, + ); + _rt::string_lift(bytes28) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l29 { + 0 => None, + 1 => { + let e = { + let l30 = *ptr0 + .add(36 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l30 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e69) + } + 23 => { + let e69 = { + let l31 = i32::from(*ptr0.add(32).cast::()); + match l31 { + 0 => None, + 1 => { + let e = { + let l32 = *ptr0.add(36).cast::(); + l32 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e69) + } + 24 => { + let e69 = { + let l33 = i32::from(*ptr0.add(32).cast::()); + let l37 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l33 { + 0 => None, + 1 => { + let e = { + let l34 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l35 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + _rt::string_lift(bytes36) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l38 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e69) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e69 = { + let l39 = i32::from(*ptr0.add(32).cast::()); + match l39 { + 0 => None, + 1 => { + let e = { + let l40 = *ptr0.add(36).cast::(); + l40 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e69) + } + 27 => { + let e69 = { + let l41 = i32::from(*ptr0.add(32).cast::()); + let l45 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l41 { + 0 => None, + 1 => { + let e = { + let l42 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l43 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len44 = l43; + let bytes44 = _rt::Vec::from_raw_parts( + l42.cast(), + len44, + len44, + ); + _rt::string_lift(bytes44) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l46 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e69) + } + 28 => { + let e69 = { + let l47 = i32::from(*ptr0.add(32).cast::()); + match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(40).cast::(); + l48 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e69) + } + 29 => { + let e69 = { + let l49 = i32::from(*ptr0.add(32).cast::()); + match l49 { + 0 => None, + 1 => { + let e = { + let l50 = *ptr0.add(36).cast::(); + l50 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e69) + } + 30 => { + let e69 = { + let l51 = i32::from(*ptr0.add(32).cast::()); + let l55 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l51 { + 0 => None, + 1 => { + let e = { + let l52 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l53 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + _rt::string_lift(bytes54) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l55 { + 0 => None, + 1 => { + let e = { + let l56 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l56 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e69) + } + 31 => { + let e69 = { + let l57 = i32::from(*ptr0.add(32).cast::()); + match l57 { + 0 => None, + 1 => { + let e = { + let l58 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l59 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + _rt::string_lift(bytes60) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e69) + } + 32 => { + let e69 = { + let l61 = i32::from(*ptr0.add(32).cast::()); + match l61 { + 0 => None, + 1 => { + let e = { + let l62 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l63 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + _rt::string_lift(bytes64) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e69) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e69 = { + let l65 = i32::from(*ptr0.add(32).cast::()); + match l65 { + 0 => None, + 1 => { + let e = { + let l66 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l67 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len68 = l67; + let bytes68 = _rt::Vec::from_raw_parts( + l66.cast(), + len68, + len68, + ); + _rt::string_lift(bytes68) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e69) + } + }; + v69 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result70 + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn new(headers: Headers) -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]outgoing-response"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((&headers).take_handle() as i32) + }; + unsafe { OutgoingResponse::from_handle(ret as u32) } + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn status_code(&self) -> StatusCode { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.status-code"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + ret as u16 + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn set_status_code( + &self, + status_code: StatusCode, + ) -> Result<(), ()> { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.set-status-code"] + fn wit_import0(_: i32, _: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32, _: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((self).handle() as i32, _rt::as_i32(status_code)) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn body(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.body"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { OutgoingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn write(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-body.write"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn finish( + this: OutgoingBody, + trailers: Option, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 24 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let (result0_0, result0_1) = match &trailers { + Some(e) => (1i32, (e).take_handle() as i32), + None => (0i32, 0i32), + }; + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]outgoing-body.finish"] + fn wit_import2(_: i32, _: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (&this).take_handle() as i32, + result0_0, + result0_1, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result67 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(8).cast::()); + let v66 = match l4 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e66 = { + let l5 = i32::from(*ptr1.add(16).cast::()); + let l9 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l5 { + 0 => None, + 1 => { + let e = { + let l6 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l9 { + 0 => None, + 1 => { + let e = { + let l10 = i32::from( + *ptr1 + .add(18 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l10 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e66) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e66 = { + let l11 = i32::from(*ptr1.add(16).cast::()); + let l13 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = i32::from(*ptr1.add(17).cast::()); + l12 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l13 { + 0 => None, + 1 => { + let e = { + let l14 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l15 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len16 = l15; + let bytes16 = _rt::Vec::from_raw_parts( + l14.cast(), + len16, + len16, + ); + _rt::string_lift(bytes16) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e66) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e66 = { + let l17 = i32::from(*ptr1.add(16).cast::()); + match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *ptr1.add(24).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e66) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e66 = { + let l19 = i32::from(*ptr1.add(16).cast::()); + match l19 { + 0 => None, + 1 => { + let e = { + let l20 = *ptr1.add(20).cast::(); + l20 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e66) + } + 22 => { + let e66 = { + let l21 = i32::from(*ptr1.add(16).cast::()); + match l21 { + 0 => None, + 1 => { + let e = { + let l22 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l26 = i32::from( + *ptr1 + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l24 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l26 { + 0 => None, + 1 => { + let e = { + let l27 = *ptr1 + .add(20 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l27 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e66) + } + 23 => { + let e66 = { + let l28 = i32::from(*ptr1.add(16).cast::()); + match l28 { + 0 => None, + 1 => { + let e = { + let l29 = *ptr1.add(20).cast::(); + l29 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e66) + } + 24 => { + let e66 = { + let l30 = i32::from(*ptr1.add(16).cast::()); + let l34 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l30 { + 0 => None, + 1 => { + let e = { + let l31 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l32 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + _rt::string_lift(bytes33) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l34 { + 0 => None, + 1 => { + let e = { + let l35 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l35 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e66) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e66 = { + let l36 = i32::from(*ptr1.add(16).cast::()); + match l36 { + 0 => None, + 1 => { + let e = { + let l37 = *ptr1.add(20).cast::(); + l37 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e66) + } + 27 => { + let e66 = { + let l38 = i32::from(*ptr1.add(16).cast::()); + let l42 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l40 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + _rt::string_lift(bytes41) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l42 { + 0 => None, + 1 => { + let e = { + let l43 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l43 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e66) + } + 28 => { + let e66 = { + let l44 = i32::from(*ptr1.add(16).cast::()); + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = *ptr1.add(24).cast::(); + l45 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e66) + } + 29 => { + let e66 = { + let l46 = i32::from(*ptr1.add(16).cast::()); + match l46 { + 0 => None, + 1 => { + let e = { + let l47 = *ptr1.add(20).cast::(); + l47 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e66) + } + 30 => { + let e66 = { + let l48 = i32::from(*ptr1.add(16).cast::()); + let l52 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l48 { + 0 => None, + 1 => { + let e = { + let l49 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l50 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + _rt::string_lift(bytes51) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l52 { + 0 => None, + 1 => { + let e = { + let l53 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l53 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e66) + } + 31 => { + let e66 = { + let l54 = i32::from(*ptr1.add(16).cast::()); + match l54 { + 0 => None, + 1 => { + let e = { + let l55 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l56 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + _rt::string_lift(bytes57) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e66) + } + 32 => { + let e66 = { + let l58 = i32::from(*ptr1.add(16).cast::()); + match l58 { + 0 => None, + 1 => { + let e = { + let l59 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l60 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + _rt::string_lift(bytes61) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e66) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e66 = { + let l62 = i32::from(*ptr1.add(16).cast::()); + match l62 { + 0 => None, + 1 => { + let e = { + let l63 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l64 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len65 = l64; + let bytes65 = _rt::Vec::from_raw_parts( + l63.cast(), + len65, + len65, + ); + _rt::string_lift(bytes65) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e66) + } + }; + v66 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result67 + } + } + } + impl FutureIncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-incoming-response.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl FutureIncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn get( + &self, + ) -> Option, ()>> { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 40 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 40 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-incoming-response.get"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result69 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + match l3 { + 0 => { + let e = { + let l4 = i32::from(*ptr0.add(16).cast::()); + match l4 { + 0 => { + let e = { + let l5 = *ptr0.add(24).cast::(); + unsafe { IncomingResponse::from_handle(l5 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr0.add(24).cast::()); + let v68 = match l6 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e68 = { + let l7 = i32::from(*ptr0.add(32).cast::()); + let l11 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l7 { + 0 => None, + 1 => { + let e = { + let l8 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + _rt::string_lift(bytes10) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = i32::from( + *ptr0 + .add(34 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l12 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e68) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e68 = { + let l13 = i32::from(*ptr0.add(32).cast::()); + let l15 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l13 { + 0 => None, + 1 => { + let e = { + let l14 = i32::from(*ptr0.add(33).cast::()); + l14 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l15 { + 0 => None, + 1 => { + let e = { + let l16 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts( + l16.cast(), + len18, + len18, + ); + _rt::string_lift(bytes18) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e68) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e68 = { + let l19 = i32::from(*ptr0.add(32).cast::()); + match l19 { + 0 => None, + 1 => { + let e = { + let l20 = *ptr0.add(40).cast::(); + l20 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e68) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e68 = { + let l21 = i32::from(*ptr0.add(32).cast::()); + match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(36).cast::(); + l22 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e68) + } + 22 => { + let e68 = { + let l23 = i32::from(*ptr0.add(32).cast::()); + match l23 { + 0 => None, + 1 => { + let e = { + let l24 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l28 = i32::from( + *ptr0 + .add(32 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l24 { + 0 => None, + 1 => { + let e = { + let l25 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l26 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len27 = l26; + let bytes27 = _rt::Vec::from_raw_parts( + l25.cast(), + len27, + len27, + ); + _rt::string_lift(bytes27) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l28 { + 0 => None, + 1 => { + let e = { + let l29 = *ptr0 + .add(36 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l29 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e68) + } + 23 => { + let e68 = { + let l30 = i32::from(*ptr0.add(32).cast::()); + match l30 { + 0 => None, + 1 => { + let e = { + let l31 = *ptr0.add(36).cast::(); + l31 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e68) + } + 24 => { + let e68 = { + let l32 = i32::from(*ptr0.add(32).cast::()); + let l36 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l32 { + 0 => None, + 1 => { + let e = { + let l33 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l34 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + _rt::string_lift(bytes35) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l36 { + 0 => None, + 1 => { + let e = { + let l37 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l37 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e68) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e68 = { + let l38 = i32::from(*ptr0.add(32).cast::()); + match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr0.add(36).cast::(); + l39 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e68) + } + 27 => { + let e68 = { + let l40 = i32::from(*ptr0.add(32).cast::()); + let l44 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l40 { + 0 => None, + 1 => { + let e = { + let l41 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l42 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len43 = l42; + let bytes43 = _rt::Vec::from_raw_parts( + l41.cast(), + len43, + len43, + ); + _rt::string_lift(bytes43) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l44 { + 0 => None, + 1 => { + let e = { + let l45 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l45 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e68) + } + 28 => { + let e68 = { + let l46 = i32::from(*ptr0.add(32).cast::()); + match l46 { + 0 => None, + 1 => { + let e = { + let l47 = *ptr0.add(40).cast::(); + l47 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e68) + } + 29 => { + let e68 = { + let l48 = i32::from(*ptr0.add(32).cast::()); + match l48 { + 0 => None, + 1 => { + let e = { + let l49 = *ptr0.add(36).cast::(); + l49 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e68) + } + 30 => { + let e68 = { + let l50 = i32::from(*ptr0.add(32).cast::()); + let l54 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l50 { + 0 => None, + 1 => { + let e = { + let l51 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l52 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + _rt::string_lift(bytes53) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l54 { + 0 => None, + 1 => { + let e = { + let l55 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l55 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e68) + } + 31 => { + let e68 = { + let l56 = i32::from(*ptr0.add(32).cast::()); + match l56 { + 0 => None, + 1 => { + let e = { + let l57 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l58 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len59 = l58; + let bytes59 = _rt::Vec::from_raw_parts( + l57.cast(), + len59, + len59, + ); + _rt::string_lift(bytes59) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e68) + } + 32 => { + let e68 = { + let l60 = i32::from(*ptr0.add(32).cast::()); + match l60 { + 0 => None, + 1 => { + let e = { + let l61 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l62 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + _rt::string_lift(bytes63) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e68) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e68 = { + let l64 = i32::from(*ptr0.add(32).cast::()); + match l64 { + 0 => None, + 1 => { + let e = { + let l65 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l66 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + _rt::string_lift(bytes67) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e68) + } + }; + v68 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result69 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn http_error_code(err: &IoError) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 24 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "http-error-code"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((err).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result66 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + let v65 = match l3 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e65 = { + let l4 = i32::from(*ptr0.add(16).cast::()); + let l8 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l4 { + 0 => None, + 1 => { + let e = { + let l5 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + _rt::string_lift(bytes7) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l8 { + 0 => None, + 1 => { + let e = { + let l9 = i32::from( + *ptr0 + .add(18 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l9 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e65) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e65 = { + let l10 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from( + *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l10 { + 0 => None, + 1 => { + let e = { + let l11 = i32::from(*ptr0.add(17).cast::()); + l11 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l14 = *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + _rt::string_lift(bytes15) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e65) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e65 = { + let l16 = i32::from(*ptr0.add(16).cast::()); + match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(24).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e65) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e65 = { + let l18 = i32::from(*ptr0.add(16).cast::()); + match l18 { + 0 => None, + 1 => { + let e = { + let l19 = *ptr0.add(20).cast::(); + l19 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e65) + } + 22 => { + let e65 = { + let l20 = i32::from(*ptr0.add(16).cast::()); + match l20 { + 0 => None, + 1 => { + let e = { + let l21 = i32::from( + *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l25 = i32::from( + *ptr0 + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l23 = *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l25 { + 0 => None, + 1 => { + let e = { + let l26 = *ptr0 + .add(20 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l26 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e65) + } + 23 => { + let e65 = { + let l27 = i32::from(*ptr0.add(16).cast::()); + match l27 { + 0 => None, + 1 => { + let e = { + let l28 = *ptr0.add(20).cast::(); + l28 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e65) + } + 24 => { + let e65 = { + let l29 = i32::from(*ptr0.add(16).cast::()); + let l33 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l29 { + 0 => None, + 1 => { + let e = { + let l30 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l31 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + _rt::string_lift(bytes32) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l33 { + 0 => None, + 1 => { + let e = { + let l34 = *ptr0 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l34 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e65) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e65 = { + let l35 = i32::from(*ptr0.add(16).cast::()); + match l35 { + 0 => None, + 1 => { + let e = { + let l36 = *ptr0.add(20).cast::(); + l36 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e65) + } + 27 => { + let e65 = { + let l37 = i32::from(*ptr0.add(16).cast::()); + let l41 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l39 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len40 = l39; + let bytes40 = _rt::Vec::from_raw_parts( + l38.cast(), + len40, + len40, + ); + _rt::string_lift(bytes40) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l41 { + 0 => None, + 1 => { + let e = { + let l42 = *ptr0 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l42 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e65) + } + 28 => { + let e65 = { + let l43 = i32::from(*ptr0.add(16).cast::()); + match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr0.add(24).cast::(); + l44 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e65) + } + 29 => { + let e65 = { + let l45 = i32::from(*ptr0.add(16).cast::()); + match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *ptr0.add(20).cast::(); + l46 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e65) + } + 30 => { + let e65 = { + let l47 = i32::from(*ptr0.add(16).cast::()); + let l51 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l49 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l51 { + 0 => None, + 1 => { + let e = { + let l52 = *ptr0 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l52 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e65) + } + 31 => { + let e65 = { + let l53 = i32::from(*ptr0.add(16).cast::()); + match l53 { + 0 => None, + 1 => { + let e = { + let l54 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l55 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len56 = l55; + let bytes56 = _rt::Vec::from_raw_parts( + l54.cast(), + len56, + len56, + ); + _rt::string_lift(bytes56) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e65) + } + 32 => { + let e65 = { + let l57 = i32::from(*ptr0.add(16).cast::()); + match l57 { + 0 => None, + 1 => { + let e = { + let l58 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l59 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + _rt::string_lift(bytes60) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e65) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e65 = { + let l61 = i32::from(*ptr0.add(16).cast::()); + match l61 { + 0 => None, + 1 => { + let e = { + let l62 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l63 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + _rt::string_lift(bytes64) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e65) + } + }; + v65 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result66 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod outgoing_handler { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type OutgoingRequest = super::super::super::wasi::http::types::OutgoingRequest; + pub type RequestOptions = super::super::super::wasi::http::types::RequestOptions; + pub type FutureIncomingResponse = super::super::super::wasi::http::types::FutureIncomingResponse; + pub type ErrorCode = super::super::super::wasi::http::types::ErrorCode; + #[allow(unused_unsafe, clippy::all)] + pub fn handle( + request: OutgoingRequest, + options: Option, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 24 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let (result0_0, result0_1) = match &options { + Some(e) => (1i32, (e).take_handle() as i32), + None => (0i32, 0i32), + }; + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/outgoing-handler@0.2.0")] + unsafe extern "C" { + #[link_name = "handle"] + fn wit_import2(_: i32, _: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (&request).take_handle() as i32, + result0_0, + result0_1, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result68 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(8).cast::(); + unsafe { + super::super::super::wasi::http::types::FutureIncomingResponse::from_handle( + l4 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(8).cast::()); + use super::super::super::wasi::http::types::ErrorCode as V67; + let v67 = match l5 { + 0 => V67::DnsTimeout, + 1 => { + let e67 = { + let l6 = i32::from(*ptr1.add(16).cast::()); + let l10 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::DnsErrorPayload { + rcode: match l6 { + 0 => None, + 1 => { + let e = { + let l7 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l8 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + _rt::string_lift(bytes9) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l10 { + 0 => None, + 1 => { + let e = { + let l11 = i32::from( + *ptr1 + .add(18 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l11 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::DnsError(e67) + } + 2 => V67::DestinationNotFound, + 3 => V67::DestinationUnavailable, + 4 => V67::DestinationIpProhibited, + 5 => V67::DestinationIpUnroutable, + 6 => V67::ConnectionRefused, + 7 => V67::ConnectionTerminated, + 8 => V67::ConnectionTimeout, + 9 => V67::ConnectionReadTimeout, + 10 => V67::ConnectionWriteTimeout, + 11 => V67::ConnectionLimitReached, + 12 => V67::TlsProtocolError, + 13 => V67::TlsCertificateError, + 14 => { + let e67 = { + let l12 = i32::from(*ptr1.add(16).cast::()); + let l14 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::TlsAlertReceivedPayload { + alert_id: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = i32::from(*ptr1.add(17).cast::()); + l13 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l14 { + 0 => None, + 1 => { + let e = { + let l15 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l16 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + _rt::string_lift(bytes17) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::TlsAlertReceived(e67) + } + 15 => V67::HttpRequestDenied, + 16 => V67::HttpRequestLengthRequired, + 17 => { + let e67 = { + let l18 = i32::from(*ptr1.add(16).cast::()); + match l18 { + 0 => None, + 1 => { + let e = { + let l19 = *ptr1.add(24).cast::(); + l19 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestBodySize(e67) + } + 18 => V67::HttpRequestMethodInvalid, + 19 => V67::HttpRequestUriInvalid, + 20 => V67::HttpRequestUriTooLong, + 21 => { + let e67 = { + let l20 = i32::from(*ptr1.add(16).cast::()); + match l20 { + 0 => None, + 1 => { + let e = { + let l21 = *ptr1.add(20).cast::(); + l21 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestHeaderSectionSize(e67) + } + 22 => { + let e67 = { + let l22 = i32::from(*ptr1.add(16).cast::()); + match l22 { + 0 => None, + 1 => { + let e = { + let l23 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l27 = i32::from( + *ptr1 + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l23 { + 0 => None, + 1 => { + let e = { + let l24 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l25 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + _rt::string_lift(bytes26) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l27 { + 0 => None, + 1 => { + let e = { + let l28 = *ptr1 + .add(20 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l28 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestHeaderSize(e67) + } + 23 => { + let e67 = { + let l29 = i32::from(*ptr1.add(16).cast::()); + match l29 { + 0 => None, + 1 => { + let e = { + let l30 = *ptr1.add(20).cast::(); + l30 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestTrailerSectionSize(e67) + } + 24 => { + let e67 = { + let l31 = i32::from(*ptr1.add(16).cast::()); + let l35 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l31 { + 0 => None, + 1 => { + let e = { + let l32 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l33 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len34 = l33; + let bytes34 = _rt::Vec::from_raw_parts( + l32.cast(), + len34, + len34, + ); + _rt::string_lift(bytes34) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l35 { + 0 => None, + 1 => { + let e = { + let l36 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l36 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::HttpRequestTrailerSize(e67) + } + 25 => V67::HttpResponseIncomplete, + 26 => { + let e67 = { + let l37 = i32::from(*ptr1.add(16).cast::()); + match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *ptr1.add(20).cast::(); + l38 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseHeaderSectionSize(e67) + } + 27 => { + let e67 = { + let l39 = i32::from(*ptr1.add(16).cast::()); + let l43 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l39 { + 0 => None, + 1 => { + let e = { + let l40 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l41 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + _rt::string_lift(bytes42) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l44 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::HttpResponseHeaderSize(e67) + } + 28 => { + let e67 = { + let l45 = i32::from(*ptr1.add(16).cast::()); + match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *ptr1.add(24).cast::(); + l46 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseBodySize(e67) + } + 29 => { + let e67 = { + let l47 = i32::from(*ptr1.add(16).cast::()); + match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr1.add(20).cast::(); + l48 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseTrailerSectionSize(e67) + } + 30 => { + let e67 = { + let l49 = i32::from(*ptr1.add(16).cast::()); + let l53 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l49 { + 0 => None, + 1 => { + let e = { + let l50 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l51 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len52 = l51; + let bytes52 = _rt::Vec::from_raw_parts( + l50.cast(), + len52, + len52, + ); + _rt::string_lift(bytes52) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l53 { + 0 => None, + 1 => { + let e = { + let l54 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l54 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::HttpResponseTrailerSize(e67) + } + 31 => { + let e67 = { + let l55 = i32::from(*ptr1.add(16).cast::()); + match l55 { + 0 => None, + 1 => { + let e = { + let l56 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l57 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + _rt::string_lift(bytes58) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseTransferCoding(e67) + } + 32 => { + let e67 = { + let l59 = i32::from(*ptr1.add(16).cast::()); + match l59 { + 0 => None, + 1 => { + let e = { + let l60 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l61 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len62 = l61; + let bytes62 = _rt::Vec::from_raw_parts( + l60.cast(), + len62, + len62, + ); + _rt::string_lift(bytes62) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseContentCoding(e67) + } + 33 => V67::HttpResponseTimeout, + 34 => V67::HttpUpgradeFailed, + 35 => V67::HttpProtocolError, + 36 => V67::LoopDetected, + 37 => V67::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e67 = { + let l63 = i32::from(*ptr1.add(16).cast::()); + match l63 { + 0 => None, + 1 => { + let e = { + let l64 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l65 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len66 = l65; + let bytes66 = _rt::Vec::from_raw_parts( + l64.cast(), + len66, + len66, + ); + _rt::string_lift(bytes66) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::InternalError(e67) + } + }; + v67 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result68 + } + } + } + } + pub mod io { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod poll { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct Pollable { + handle: _rt::Resource, + } + impl Pollable { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Pollable { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]pollable"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Pollable { + #[allow(unused_unsafe, clippy::all)] + pub fn ready(&self) -> bool { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]pollable.ready"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + _rt::bool_lift(ret as u8) + } + } + } + impl Pollable { + #[allow(unused_unsafe, clippy::all)] + pub fn block(&self) -> () { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]pollable.block"] + fn wit_import0(_: i32); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) { + unreachable!() + } + unsafe { wit_import0((self).handle() as i32) }; + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn poll(in_: &[&Pollable]) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = in_; + let len0 = vec0.len(); + let layout0 = _rt::alloc::Layout::from_size_align_unchecked( + vec0.len() * 4, + 4, + ); + let result0 = if layout0.size() != 0 { + let ptr = _rt::alloc::alloc(layout0).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout0); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec0.into_iter().enumerate() { + let base = result0.add(i * 4); + { + *base.add(0).cast::() = (e).handle() as i32; + } + } + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "poll"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(result0, len0, ptr1) }; + let l3 = *ptr1.add(0).cast::<*mut u8>(); + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let result6 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + if layout0.size() != 0 { + _rt::alloc::dealloc(result0.cast(), layout0); + } + result6 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod error { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct Error { + handle: _rt::Resource, + } + impl Error { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Error { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/error@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]error"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Error { + #[allow(unused_unsafe, clippy::all)] + pub fn to_debug_string(&self) -> _rt::String { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/error@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]error.to-debug-string"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + let result5 = _rt::string_lift(bytes4); + result5 + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod streams { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Error = super::super::super::wasi::io::error::Error; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub enum StreamError { + LastOperationFailed(Error), + Closed, + } + impl ::core::fmt::Debug for StreamError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + StreamError::LastOperationFailed(e) => { + f.debug_tuple("StreamError::LastOperationFailed") + .field(e) + .finish() + } + StreamError::Closed => { + f.debug_tuple("StreamError::Closed").finish() + } + } + } + } + impl ::core::fmt::Display for StreamError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for StreamError {} + #[derive(Debug)] + #[repr(transparent)] + pub struct InputStream { + handle: _rt::Resource, + } + impl InputStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for InputStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]input-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutputStream { + handle: _rt::Resource, + } + impl OutputStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutputStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]output-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn read(&self, len: u64) -> Result<_rt::Vec, StreamError> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.read"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result9 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + _rt::Vec::from_raw_parts(l3.cast(), len5, len5) + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v8 = match l6 { + 0 => { + let e8 = { + let l7 = *ptr0 + .add(4 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l7 as u32, + ) + } + }; + StreamError::LastOperationFailed(e8) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v8 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_read( + &self, + len: u64, + ) -> Result<_rt::Vec, StreamError> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.blocking-read"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result9 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + _rt::Vec::from_raw_parts(l3.cast(), len5, len5) + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v8 = match l6 { + 0 => { + let e8 = { + let l7 = *ptr0 + .add(4 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l7 as u32, + ) + } + }; + StreamError::LastOperationFailed(e8) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v8 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn skip(&self, len: u64) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.skip"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_skip(&self, len: u64) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.blocking-skip"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn check_write(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.check-write"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn write(&self, contents: &[u8]) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let vec0 = contents; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.write"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result7 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(4).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr1.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_write_and_flush( + &self, + contents: &[u8], + ) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let vec0 = contents; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-write-and-flush"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result7 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(4).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr1.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn flush(&self) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.flush"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_flush(&self) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-flush"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn write_zeroes(&self, len: u64) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.write-zeroes"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_write_zeroes_and_flush( + &self, + len: u64, + ) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-write-zeroes-and-flush"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn splice( + &self, + src: &InputStream, + len: u64, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.splice"] + fn wit_import1(_: i32, _: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i32, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + (src).handle() as i32, + _rt::as_i64(&len), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_splice( + &self, + src: &InputStream, + len: u64, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-splice"] + fn wit_import1(_: i32, _: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i32, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + (src).handle() as i32, + _rt::as_i64(&len), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + } + } + pub mod keyvalue { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod store { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Clone)] + pub enum Error { + NoSuchStore, + AccessDenied, + Other(_rt::String), + } + impl ::core::fmt::Debug for Error { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Error::NoSuchStore => { + f.debug_tuple("Error::NoSuchStore").finish() + } + Error::AccessDenied => { + f.debug_tuple("Error::AccessDenied").finish() + } + Error::Other(e) => { + f.debug_tuple("Error::Other").field(e).finish() + } + } + } + } + impl ::core::fmt::Display for Error { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for Error {} + #[derive(Clone)] + pub struct KeyResponse { + pub keys: _rt::Vec<_rt::String>, + pub cursor: Option<_rt::String>, + } + impl ::core::fmt::Debug for KeyResponse { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("KeyResponse") + .field("keys", &self.keys) + .field("cursor", &self.cursor) + .finish() + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct Bucket { + handle: _rt::Resource, + } + impl Bucket { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Bucket { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[resource-drop]bucket"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn get(&self, key: &str) -> Result>, Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.get"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result13 = match l3 { + 0 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + match l4 { + 0 => None, + 1 => { + let e = { + let l5 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + _rt::Vec::from_raw_parts(l5.cast(), len7, len7) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v12 = match l8 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e12 = { + let l9 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l10 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + _rt::string_lift(bytes11) + }; + Error::Other(e12) + } + }; + v12 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result13 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn set(&self, key: &str, value: &[u8]) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = value; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.set"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result10 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v9 = match l5 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Error::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn delete(&self, key: &str) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.delete"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result9 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v8 = match l4 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e8 = { + let l5 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + _rt::string_lift(bytes7) + }; + Error::Other(e8) + } + }; + v8 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn exists(&self, key: &str) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.exists"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + _rt::bool_lift(l4 as u8) + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v9 = match l5 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Error::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn list_keys( + &self, + cursor: Option<&str>, + ) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 6 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 6 + * ::core::mem::size_of::<*const u8>()], + ); + let (result1_0, result1_1, result1_2) = match cursor { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.list-keys"] + fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result20 = match l4 { + 0 => { + let e = { + let l5 = *ptr2 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base10 = l5; + let len10 = l6; + let mut result10 = _rt::Vec::with_capacity(len10); + for i in 0..len10 { + let base = base10 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e10 = { + let l7 = *base.add(0).cast::<*mut u8>(); + let l8 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + _rt::string_lift(bytes9) + }; + result10.push(e10); + } + _rt::cabi_dealloc( + base10, + len10 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l11 = i32::from( + *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + KeyResponse { + keys: result10, + cursor: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = *ptr2 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l13 = *ptr2 + .add(5 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + _rt::string_lift(bytes14) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Ok(e) + } + 1 => { + let e = { + let l15 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v19 = match l15 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e19 = { + let l16 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts( + l16.cast(), + len18, + len18, + ); + _rt::string_lift(bytes18) + }; + Error::Other(e19) + } + }; + v19 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result20 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn open(identifier: &str) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = identifier; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "open"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { Bucket::from_handle(l4 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v9 = match l5 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Error::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod atomics { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Bucket = super::super::super::wasi::keyvalue::store::Bucket; + pub type Error = super::super::super::wasi::keyvalue::store::Error; + #[derive(Debug)] + #[repr(transparent)] + pub struct Cas { + handle: _rt::Resource, + } + impl Cas { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Cas { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link( + wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2" + )] + unsafe extern "C" { + #[link_name = "[resource-drop]cas"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + pub enum CasError { + StoreError(Error), + CasFailed(Cas), + } + impl ::core::fmt::Debug for CasError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + CasError::StoreError(e) => { + f.debug_tuple("CasError::StoreError").field(e).finish() + } + CasError::CasFailed(e) => { + f.debug_tuple("CasError::CasFailed").field(e).finish() + } + } + } + } + impl ::core::fmt::Display for CasError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for CasError {} + impl Cas { + #[allow(unused_unsafe, clippy::all)] + pub fn new(bucket: &Bucket, key: &str) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link( + wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2" + )] + unsafe extern "C" { + #[link_name = "[static]cas.new"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (bucket).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { Cas::from_handle(l4 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Cas { + #[allow(unused_unsafe, clippy::all)] + pub fn current(&self) -> Result>, Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link( + wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2" + )] + unsafe extern "C" { + #[link_name = "[method]cas.current"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result12 = match l2 { + 0 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + _rt::Vec::from_raw_parts(l4.cast(), len6, len6) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V11; + let v11 = match l7 { + 0 => V11::NoSuchStore, + 1 => V11::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e11 = { + let l8 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + _rt::string_lift(bytes10) + }; + V11::Other(e11) + } + }; + v11 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result12 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn increment( + bucket: &Bucket, + key: &str, + delta: i64, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 16 + 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16 + + 2 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "increment"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (bucket).handle() as i32, + ptr0.cast_mut(), + len0, + _rt::as_i64(&delta), + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(8).cast::(); + l4 + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(8).cast::()); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(8 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn swap(cas: Cas, value: &[u8]) -> Result<(), CasError> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 5 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 5 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = value; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "swap"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (&cas).take_handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result12 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v11 = match l4 { + 0 => { + let e11 = { + let l5 = i32::from( + *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + CasError::StoreError(e11) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e11 = { + let l10 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { Cas::from_handle(l10 as u32) } + }; + CasError::CasFailed(e11) + } + }; + v11 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result12 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod batch { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Bucket = super::super::super::wasi::keyvalue::store::Bucket; + pub type Error = super::super::super::wasi::keyvalue::store::Error; + #[allow(unused_unsafe, clippy::all)] + pub fn get_many( + bucket: &Bucket, + keys: &[_rt::String], + ) -> Result<_rt::Vec)>>, Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec1 = keys; + let len1 = vec1.len(); + let layout1 = _rt::alloc::Layout::from_size_align_unchecked( + vec1.len() * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result1 = if layout1.size() != 0 { + let ptr = _rt::alloc::alloc(layout1).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout1); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec1.into_iter().enumerate() { + let base = result1 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len0; + *base.add(0).cast::<*mut u8>() = ptr0.cast_mut(); + } + } + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/batch@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "get-many"] + fn wit_import3(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3((bucket).handle() as i32, result1, len1, ptr2) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result20 = match l4 { + 0 => { + let e = { + let l5 = *ptr2 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base14 = l5; + let len14 = l6; + let mut result14 = _rt::Vec::with_capacity(len14); + for i in 0..len14 { + let base = base14 + .add(i * (5 * ::core::mem::size_of::<*const u8>())); + let e14 = { + let l7 = i32::from(*base.add(0).cast::()); + match l7 { + 0 => None, + 1 => { + let e = { + let l8 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l12 = *base + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len13 = l12; + ( + _rt::string_lift(bytes10), + _rt::Vec::from_raw_parts(l11.cast(), len13, len13), + ) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + result14.push(e14); + } + _rt::cabi_dealloc( + base14, + len14 * (5 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result14 + }; + Ok(e) + } + 1 => { + let e = { + let l15 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V19; + let v19 = match l15 { + 0 => V19::NoSuchStore, + 1 => V19::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e19 = { + let l16 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts( + l16.cast(), + len18, + len18, + ); + _rt::string_lift(bytes18) + }; + V19::Other(e19) + } + }; + v19 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout1.size() != 0 { + _rt::alloc::dealloc(result1.cast(), layout1); + } + result20 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_many( + bucket: &Bucket, + key_values: &[(_rt::String, _rt::Vec)], + ) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec3 = key_values; + let len3 = vec3.len(); + let layout3 = _rt::alloc::Layout::from_size_align_unchecked( + vec3.len() * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result3 = if layout3.size() != 0 { + let ptr = _rt::alloc::alloc(layout3).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout3); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec3.into_iter().enumerate() { + let base = result3 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + { + let (t0_0, t0_1) = e; + let vec1 = t0_0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + let vec2 = t0_1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::() = len2; + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>() = ptr2.cast_mut(); + } + } + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/batch@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "set-many"] + fn wit_import5(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import5((bucket).handle() as i32, result3, len3, ptr4) + }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result12 = match l6 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr4.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V11; + let v11 = match l7 { + 0 => V11::NoSuchStore, + 1 => V11::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e11 = { + let l8 = *ptr4 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr4 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + _rt::string_lift(bytes10) + }; + V11::Other(e11) + } + }; + v11 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout3.size() != 0 { + _rt::alloc::dealloc(result3.cast(), layout3); + } + result12 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn delete_many( + bucket: &Bucket, + keys: &[_rt::String], + ) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec1 = keys; + let len1 = vec1.len(); + let layout1 = _rt::alloc::Layout::from_size_align_unchecked( + vec1.len() * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result1 = if layout1.size() != 0 { + let ptr = _rt::alloc::alloc(layout1).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout1); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec1.into_iter().enumerate() { + let base = result1 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len0; + *base.add(0).cast::<*mut u8>() = ptr0.cast_mut(); + } + } + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/batch@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "delete-many"] + fn wit_import3(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3((bucket).handle() as i32, result1, len1, ptr2) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result10 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout1.size() != 0 { + _rt::alloc::dealloc(result1.cast(), layout1); + } + result10 + } + } + } + } + pub mod random { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod random { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[allow(unused_unsafe, clippy::all)] + pub fn get_random_bytes(len: u64) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/random@0.2.0")] + unsafe extern "C" { + #[link_name = "get-random-bytes"] + fn wit_import1(_: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i64, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(_rt::as_i64(&len), ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len4 = l3; + let result5 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + result5 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_random_u64() -> u64 { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/random@0.2.0")] + unsafe extern "C" { + #[link_name = "get-random-u64"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod insecure { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[allow(unused_unsafe, clippy::all)] + pub fn get_insecure_random_bytes(len: u64) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/insecure@0.2.0")] + unsafe extern "C" { + #[link_name = "get-insecure-random-bytes"] + fn wit_import1(_: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i64, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(_rt::as_i64(&len), ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len4 = l3; + let result5 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + result5 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_insecure_random_u64() -> u64 { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/insecure@0.2.0")] + unsafe extern "C" { + #[link_name = "get-insecure-random-u64"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod insecure_seed { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[allow(unused_unsafe, clippy::all)] + pub fn insecure_seed() -> (u64, u64) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 16]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/insecure-seed@0.2.0")] + unsafe extern "C" { + #[link_name = "insecure-seed"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::(); + let l3 = *ptr0.add(8).cast::(); + let result4 = (l2 as u64, l3 as u64); + result4 + } + } + } + } + pub mod sockets { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod network { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct Network { + handle: _rt::Resource, + } + impl Network { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Network { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/network@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]network"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum ErrorCode { + Unknown, + AccessDenied, + NotSupported, + InvalidArgument, + OutOfMemory, + Timeout, + ConcurrencyConflict, + NotInProgress, + WouldBlock, + InvalidState, + NewSocketLimit, + AddressNotBindable, + AddressInUse, + RemoteUnreachable, + ConnectionRefused, + ConnectionReset, + ConnectionAborted, + DatagramTooLarge, + NameUnresolvable, + TemporaryResolverFailure, + PermanentResolverFailure, + } + impl ErrorCode { + pub fn name(&self) -> &'static str { + match self { + ErrorCode::Unknown => "unknown", + ErrorCode::AccessDenied => "access-denied", + ErrorCode::NotSupported => "not-supported", + ErrorCode::InvalidArgument => "invalid-argument", + ErrorCode::OutOfMemory => "out-of-memory", + ErrorCode::Timeout => "timeout", + ErrorCode::ConcurrencyConflict => "concurrency-conflict", + ErrorCode::NotInProgress => "not-in-progress", + ErrorCode::WouldBlock => "would-block", + ErrorCode::InvalidState => "invalid-state", + ErrorCode::NewSocketLimit => "new-socket-limit", + ErrorCode::AddressNotBindable => "address-not-bindable", + ErrorCode::AddressInUse => "address-in-use", + ErrorCode::RemoteUnreachable => "remote-unreachable", + ErrorCode::ConnectionRefused => "connection-refused", + ErrorCode::ConnectionReset => "connection-reset", + ErrorCode::ConnectionAborted => "connection-aborted", + ErrorCode::DatagramTooLarge => "datagram-too-large", + ErrorCode::NameUnresolvable => "name-unresolvable", + ErrorCode::TemporaryResolverFailure => { + "temporary-resolver-failure" + } + ErrorCode::PermanentResolverFailure => { + "permanent-resolver-failure" + } + } + } + pub fn message(&self) -> &'static str { + match self { + ErrorCode::Unknown => "", + ErrorCode::AccessDenied => "", + ErrorCode::NotSupported => "", + ErrorCode::InvalidArgument => "", + ErrorCode::OutOfMemory => "", + ErrorCode::Timeout => "", + ErrorCode::ConcurrencyConflict => "", + ErrorCode::NotInProgress => "", + ErrorCode::WouldBlock => "", + ErrorCode::InvalidState => "", + ErrorCode::NewSocketLimit => "", + ErrorCode::AddressNotBindable => "", + ErrorCode::AddressInUse => "", + ErrorCode::RemoteUnreachable => "", + ErrorCode::ConnectionRefused => "", + ErrorCode::ConnectionReset => "", + ErrorCode::ConnectionAborted => "", + ErrorCode::DatagramTooLarge => "", + ErrorCode::NameUnresolvable => "", + ErrorCode::TemporaryResolverFailure => "", + ErrorCode::PermanentResolverFailure => "", + } + } + } + impl ::core::fmt::Debug for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ErrorCode") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{} (error {})", self.name(), * self as i32) + } + } + impl std::error::Error for ErrorCode {} + impl ErrorCode { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> ErrorCode { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => ErrorCode::Unknown, + 1 => ErrorCode::AccessDenied, + 2 => ErrorCode::NotSupported, + 3 => ErrorCode::InvalidArgument, + 4 => ErrorCode::OutOfMemory, + 5 => ErrorCode::Timeout, + 6 => ErrorCode::ConcurrencyConflict, + 7 => ErrorCode::NotInProgress, + 8 => ErrorCode::WouldBlock, + 9 => ErrorCode::InvalidState, + 10 => ErrorCode::NewSocketLimit, + 11 => ErrorCode::AddressNotBindable, + 12 => ErrorCode::AddressInUse, + 13 => ErrorCode::RemoteUnreachable, + 14 => ErrorCode::ConnectionRefused, + 15 => ErrorCode::ConnectionReset, + 16 => ErrorCode::ConnectionAborted, + 17 => ErrorCode::DatagramTooLarge, + 18 => ErrorCode::NameUnresolvable, + 19 => ErrorCode::TemporaryResolverFailure, + 20 => ErrorCode::PermanentResolverFailure, + _ => panic!("invalid enum discriminant"), + } + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum IpAddressFamily { + Ipv4, + Ipv6, + } + impl ::core::fmt::Debug for IpAddressFamily { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + IpAddressFamily::Ipv4 => { + f.debug_tuple("IpAddressFamily::Ipv4").finish() + } + IpAddressFamily::Ipv6 => { + f.debug_tuple("IpAddressFamily::Ipv6").finish() + } + } + } + } + impl IpAddressFamily { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> IpAddressFamily { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => IpAddressFamily::Ipv4, + 1 => IpAddressFamily::Ipv6, + _ => panic!("invalid enum discriminant"), + } + } + } + pub type Ipv4Address = (u8, u8, u8, u8); + pub type Ipv6Address = (u16, u16, u16, u16, u16, u16, u16, u16); + #[derive(Clone, Copy)] + pub enum IpAddress { + Ipv4(Ipv4Address), + Ipv6(Ipv6Address), + } + impl ::core::fmt::Debug for IpAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + IpAddress::Ipv4(e) => { + f.debug_tuple("IpAddress::Ipv4").field(e).finish() + } + IpAddress::Ipv6(e) => { + f.debug_tuple("IpAddress::Ipv6").field(e).finish() + } + } + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Ipv4SocketAddress { + pub port: u16, + pub address: Ipv4Address, + } + impl ::core::fmt::Debug for Ipv4SocketAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Ipv4SocketAddress") + .field("port", &self.port) + .field("address", &self.address) + .finish() + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Ipv6SocketAddress { + pub port: u16, + pub flow_info: u32, + pub address: Ipv6Address, + pub scope_id: u32, + } + impl ::core::fmt::Debug for Ipv6SocketAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Ipv6SocketAddress") + .field("port", &self.port) + .field("flow-info", &self.flow_info) + .field("address", &self.address) + .field("scope-id", &self.scope_id) + .finish() + } + } + #[derive(Clone, Copy)] + pub enum IpSocketAddress { + Ipv4(Ipv4SocketAddress), + Ipv6(Ipv6SocketAddress), + } + impl ::core::fmt::Debug for IpSocketAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + IpSocketAddress::Ipv4(e) => { + f.debug_tuple("IpSocketAddress::Ipv4").field(e).finish() + } + IpSocketAddress::Ipv6(e) => { + f.debug_tuple("IpSocketAddress::Ipv6").field(e).finish() + } + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod instance_network { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type Network = super::super::super::wasi::sockets::network::Network; + #[allow(unused_unsafe, clippy::all)] + pub fn instance_network() -> Network { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/instance-network@0.2.0")] + unsafe extern "C" { + #[link_name = "instance-network"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::sockets::network::Network::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod udp { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Network = super::super::super::wasi::sockets::network::Network; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpSocketAddress = super::super::super::wasi::sockets::network::IpSocketAddress; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + #[derive(Clone)] + pub struct IncomingDatagram { + pub data: _rt::Vec, + pub remote_address: IpSocketAddress, + } + impl ::core::fmt::Debug for IncomingDatagram { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("IncomingDatagram") + .field("data", &self.data) + .field("remote-address", &self.remote_address) + .finish() + } + } + #[derive(Clone)] + pub struct OutgoingDatagram { + pub data: _rt::Vec, + pub remote_address: Option, + } + impl ::core::fmt::Debug for OutgoingDatagram { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("OutgoingDatagram") + .field("data", &self.data) + .field("remote-address", &self.remote_address) + .finish() + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct UdpSocket { + handle: _rt::Resource, + } + impl UdpSocket { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for UdpSocket { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]udp-socket"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingDatagramStream { + handle: _rt::Resource, + } + impl IncomingDatagramStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingDatagramStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-datagram-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingDatagramStream { + handle: _rt::Resource, + } + impl OutgoingDatagramStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingDatagramStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-datagram-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_bind( + &self, + network: &Network, + local_address: IpSocketAddress, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match local_address { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.start-bind"] + fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (network).handle() as i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l9 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_bind(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.finish-bind"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn stream( + &self, + remote_address: Option, + ) -> Result< + (IncomingDatagramStream, OutgoingDatagramStream), + ErrorCode, + > { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ( + result6_0, + result6_1, + result6_2, + result6_3, + result6_4, + result6_5, + result6_6, + result6_7, + result6_8, + result6_9, + result6_10, + result6_11, + result6_12, + ) = match remote_address { + Some(e) => { + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match e { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + ( + 1i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) + } + None => { + ( + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + }; + let ptr7 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.stream"] + fn wit_import8( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import8( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import8( + (self).handle() as i32, + result6_0, + result6_1, + result6_2, + result6_3, + result6_4, + result6_5, + result6_6, + result6_7, + result6_8, + result6_9, + result6_10, + result6_11, + result6_12, + ptr7, + ) + }; + let l9 = i32::from(*ptr7.add(0).cast::()); + let result13 = match l9 { + 0 => { + let e = { + let l10 = *ptr7.add(4).cast::(); + let l11 = *ptr7.add(8).cast::(); + ( + unsafe { IncomingDatagramStream::from_handle(l10 as u32) }, + unsafe { OutgoingDatagramStream::from_handle(l11 as u32) }, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l12 = i32::from(*ptr7.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l12 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result13 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn local_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.local-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn remote_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.remote-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn address_family(&self) -> IpAddressFamily { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.address-family"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + super::super::super::wasi::sockets::network::IpAddressFamily::_lift( + ret as u8, + ) + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn unicast_hop_limit(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.unicast-hop-limit"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + l3 as u8 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_unicast_hop_limit(&self, value: u8) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.set-unicast-hop-limit"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i32(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn receive_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.receive-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_receive_buffer_size( + &self, + value: u64, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.set-receive-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn send_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.send-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_send_buffer_size(&self, value: u64) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.set-send-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl IncomingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn receive( + &self, + max_results: u64, + ) -> Result<_rt::Vec, ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-datagram-stream.receive"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&max_results), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result28 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base26 = l3; + let len26 = l4; + let mut result26 = _rt::Vec::with_capacity(len26); + for i in 0..len26 { + let base = base26 + .add(i * (32 + 2 * ::core::mem::size_of::<*const u8>())); + let e26 = { + let l5 = *base.add(0).cast::<*mut u8>(); + let l6 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let l8 = i32::from( + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V25; + let v25 = match l8 { + 0 => { + let e25 = { + let l9 = i32::from( + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l10 = i32::from( + *base + .add(6 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l11 = i32::from( + *base + .add(7 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l12 = i32::from( + *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l13 = i32::from( + *base + .add(9 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l9 as u16, + address: (l10 as u8, l11 as u8, l12 as u8, l13 as u8), + } + }; + V25::Ipv4(e25) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e25 = { + let l14 = i32::from( + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l15 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let l16 = i32::from( + *base + .add(12 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l17 = i32::from( + *base + .add(14 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l18 = i32::from( + *base + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l19 = i32::from( + *base + .add(18 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l20 = i32::from( + *base + .add(20 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l21 = i32::from( + *base + .add(22 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l22 = i32::from( + *base + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l23 = i32::from( + *base + .add(26 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l24 = *base + .add(28 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l14 as u16, + flow_info: l15 as u32, + address: ( + l16 as u16, + l17 as u16, + l18 as u16, + l19 as u16, + l20 as u16, + l21 as u16, + l22 as u16, + l23 as u16, + ), + scope_id: l24 as u32, + } + }; + V25::Ipv6(e25) + } + }; + IncomingDatagram { + data: _rt::Vec::from_raw_parts(l5.cast(), len7, len7), + remote_address: v25, + } + }; + result26.push(e26); + } + _rt::cabi_dealloc( + base26, + len26 * (32 + 2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result26 + }; + Ok(e) + } + 1 => { + let e = { + let l27 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l27 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result28 + } + } + } + impl IncomingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-datagram-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl OutgoingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn check_send(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-datagram-stream.check-send"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl OutgoingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn send( + &self, + datagrams: &[OutgoingDatagram], + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let vec7 = datagrams; + let len7 = vec7.len(); + let layout7 = _rt::alloc::Layout::from_size_align_unchecked( + vec7.len() * (32 + 3 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result7 = if layout7.size() != 0 { + let ptr = _rt::alloc::alloc(layout7).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout7); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec7.into_iter().enumerate() { + let base = result7 + .add(i * (32 + 3 * ::core::mem::size_of::<*const u8>())); + { + let OutgoingDatagram { + data: data0, + remote_address: remote_address0, + } = e; + let vec1 = data0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + match remote_address0 { + Some(e) => { + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (1i32) as u8; + use super::super::super::wasi::sockets::network::IpSocketAddress as V6; + match e { + V6::Ipv4(e) => { + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (0i32) as u8; + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port2, + address: address2, + } = e; + *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(port2)) as u16; + let (t3_0, t3_1, t3_2, t3_3) = address2; + *base + .add(10 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_0)) as u8; + *base + .add(11 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_1)) as u8; + *base + .add(12 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_2)) as u8; + *base + .add(13 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_3)) as u8; + } + V6::Ipv6(e) => { + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (1i32) as u8; + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port4, + flow_info: flow_info4, + address: address4, + scope_id: scope_id4, + } = e; + *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(port4)) as u16; + *base + .add(12 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = _rt::as_i32(flow_info4); + let (t5_0, t5_1, t5_2, t5_3, t5_4, t5_5, t5_6, t5_7) = address4; + *base + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_0)) as u16; + *base + .add(18 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_1)) as u16; + *base + .add(20 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_2)) as u16; + *base + .add(22 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_3)) as u16; + *base + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_4)) as u16; + *base + .add(26 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_5)) as u16; + *base + .add(28 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_6)) as u16; + *base + .add(30 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_7)) as u16; + *base + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = _rt::as_i32(scope_id4); + } + } + } + None => { + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (0i32) as u8; + } + }; + } + } + let ptr8 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-datagram-stream.send"] + fn wit_import9(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import9( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import9((self).handle() as i32, result7, len7, ptr8) + }; + let l10 = i32::from(*ptr8.add(0).cast::()); + let result13 = match l10 { + 0 => { + let e = { + let l11 = *ptr8.add(8).cast::(); + l11 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l12 = i32::from(*ptr8.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l12 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout7.size() != 0 { + _rt::alloc::dealloc(result7.cast(), layout7); + } + result13 + } + } + } + impl OutgoingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-datagram-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod udp_create_socket { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + pub type UdpSocket = super::super::super::wasi::sockets::udp::UdpSocket; + #[allow(unused_unsafe, clippy::all)] + pub fn create_udp_socket( + address_family: IpAddressFamily, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp-create-socket@0.2.0")] + unsafe extern "C" { + #[link_name = "create-udp-socket"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(address_family.clone() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::sockets::udp::UdpSocket::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod tcp { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Duration = super::super::super::wasi::clocks::monotonic_clock::Duration; + pub type Network = super::super::super::wasi::sockets::network::Network; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpSocketAddress = super::super::super::wasi::sockets::network::IpSocketAddress; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum ShutdownType { + Receive, + Send, + Both, + } + impl ::core::fmt::Debug for ShutdownType { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ShutdownType::Receive => { + f.debug_tuple("ShutdownType::Receive").finish() + } + ShutdownType::Send => { + f.debug_tuple("ShutdownType::Send").finish() + } + ShutdownType::Both => { + f.debug_tuple("ShutdownType::Both").finish() + } + } + } + } + impl ShutdownType { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> ShutdownType { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => ShutdownType::Receive, + 1 => ShutdownType::Send, + 2 => ShutdownType::Both, + _ => panic!("invalid enum discriminant"), + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct TcpSocket { + handle: _rt::Resource, + } + impl TcpSocket { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for TcpSocket { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]tcp-socket"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_bind( + &self, + network: &Network, + local_address: IpSocketAddress, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match local_address { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.start-bind"] + fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (network).handle() as i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l9 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_bind(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.finish-bind"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_connect( + &self, + network: &Network, + remote_address: IpSocketAddress, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match remote_address { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.start-connect"] + fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (network).handle() as i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l9 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_connect( + &self, + ) -> Result<(InputStream, OutputStream), ErrorCode> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.finish-connect"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + let l4 = *ptr0.add(8).cast::(); + ( + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l3 as u32, + ) + }, + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l4 as u32, + ) + }, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l5 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_listen(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.start-listen"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_listen(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.finish-listen"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn accept( + &self, + ) -> Result<(TcpSocket, InputStream, OutputStream), ErrorCode> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.accept"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + let l4 = *ptr0.add(8).cast::(); + let l5 = *ptr0.add(12).cast::(); + ( + unsafe { TcpSocket::from_handle(l3 as u32) }, + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l4 as u32, + ) + }, + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l5 as u32, + ) + }, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l6 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn local_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.local-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn remote_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.remote-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn is_listening(&self) -> bool { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.is-listening"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + _rt::bool_lift(ret as u8) + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn address_family(&self) -> IpAddressFamily { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.address-family"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + super::super::super::wasi::sockets::network::IpAddressFamily::_lift( + ret as u8, + ) + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_listen_backlog_size( + &self, + value: u64, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-listen-backlog-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_enabled(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-enabled"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + _rt::bool_lift(l3 as u8) + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_enabled( + &self, + value: bool, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-enabled"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + match &value { + true => 1, + false => 0, + }, + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_idle_time(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-idle-time"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_idle_time( + &self, + value: Duration, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-idle-time"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(value), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_interval(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-interval"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_interval( + &self, + value: Duration, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-interval"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(value), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_count(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-count"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + l3 as u32 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_count(&self, value: u32) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-count"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i32(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn hop_limit(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.hop-limit"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + l3 as u8 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_hop_limit(&self, value: u8) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-hop-limit"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i32(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn receive_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.receive-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_receive_buffer_size( + &self, + value: u64, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-receive-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn send_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.send-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_send_buffer_size(&self, value: u64) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-send-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn shutdown( + &self, + shutdown_type: ShutdownType, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.shutdown"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + shutdown_type.clone() as i32, + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod tcp_create_socket { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + pub type TcpSocket = super::super::super::wasi::sockets::tcp::TcpSocket; + #[allow(unused_unsafe, clippy::all)] + pub fn create_tcp_socket( + address_family: IpAddressFamily, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp-create-socket@0.2.0")] + unsafe extern "C" { + #[link_name = "create-tcp-socket"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(address_family.clone() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::sockets::tcp::TcpSocket::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod ip_name_lookup { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Network = super::super::super::wasi::sockets::network::Network; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpAddress = super::super::super::wasi::sockets::network::IpAddress; + #[derive(Debug)] + #[repr(transparent)] + pub struct ResolveAddressStream { + handle: _rt::Resource, + } + impl ResolveAddressStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for ResolveAddressStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]resolve-address-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl ResolveAddressStream { + #[allow(unused_unsafe, clippy::all)] + pub fn resolve_next_address( + &self, + ) -> Result, ErrorCode> { + unsafe { + #[repr(align(2))] + struct RetArea([::core::mem::MaybeUninit; 22]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 22], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]resolve-address-stream.resolve-next-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result19 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(2).cast::()); + match l3 { + 0 => None, + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpAddress as V17; + let v17 = match l4 { + 0 => { + let e17 = { + let l5 = i32::from(*ptr0.add(6).cast::()); + let l6 = i32::from(*ptr0.add(7).cast::()); + let l7 = i32::from(*ptr0.add(8).cast::()); + let l8 = i32::from(*ptr0.add(9).cast::()); + (l5 as u8, l6 as u8, l7 as u8, l8 as u8) + }; + V17::Ipv4(e17) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e17 = { + let l9 = i32::from(*ptr0.add(6).cast::()); + let l10 = i32::from(*ptr0.add(8).cast::()); + let l11 = i32::from(*ptr0.add(10).cast::()); + let l12 = i32::from(*ptr0.add(12).cast::()); + let l13 = i32::from(*ptr0.add(14).cast::()); + let l14 = i32::from(*ptr0.add(16).cast::()); + let l15 = i32::from(*ptr0.add(18).cast::()); + let l16 = i32::from(*ptr0.add(20).cast::()); + ( + l9 as u16, + l10 as u16, + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + ) + }; + V17::Ipv6(e17) + } + }; + v17 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l18 = i32::from(*ptr0.add(2).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l18 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result19 + } + } + } + impl ResolveAddressStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]resolve-address-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn resolve_addresses( + network: &Network, + name: &str, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "resolve-addresses"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (network).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result6 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(4).cast::(); + unsafe { ResolveAddressStream::from_handle(l4 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l5 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + } +} +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] +pub mod wavs { + pub mod operator { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod input { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type ServiceId = super::super::super::wavs::types::service::ServiceId; + pub type WorkflowId = super::super::super::wavs::types::service::WorkflowId; + pub type Trigger = super::super::super::wavs::types::service::Trigger; + pub type TriggerData = super::super::super::wavs::types::events::TriggerData; + #[derive(Clone)] + pub struct TriggerConfig { + pub service_id: ServiceId, + pub workflow_id: WorkflowId, + pub trigger: Trigger, + } + impl ::core::fmt::Debug for TriggerConfig { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerConfig") + .field("service-id", &self.service_id) + .field("workflow-id", &self.workflow_id) + .field("trigger", &self.trigger) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerAction { + pub config: TriggerConfig, + pub data: TriggerData, + } + impl ::core::fmt::Debug for TriggerAction { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerAction") + .field("config", &self.config) + .field("data", &self.data) + .finish() + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod output { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Clone)] + pub struct WasmResponse { + pub payload: _rt::Vec, + pub ordering: Option, + } + impl ::core::fmt::Debug for WasmResponse { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("WasmResponse") + .field("payload", &self.payload) + .field("ordering", &self.ordering) + .finish() + } + } + } + } + pub mod types { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod core { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Digest = _rt::String; + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Timestamp { + pub nanos: u64, + } + impl ::core::fmt::Debug for Timestamp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Timestamp").field("nanos", &self.nanos).finish() + } + } + #[derive(Clone, Copy)] + pub enum LogLevel { + Error, + Warn, + Info, + Debug, + Trace, + } + impl ::core::fmt::Debug for LogLevel { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + LogLevel::Error => f.debug_tuple("LogLevel::Error").finish(), + LogLevel::Warn => f.debug_tuple("LogLevel::Warn").finish(), + LogLevel::Info => f.debug_tuple("LogLevel::Info").finish(), + LogLevel::Debug => f.debug_tuple("LogLevel::Debug").finish(), + LogLevel::Trace => f.debug_tuple("LogLevel::Trace").finish(), + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod chain { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ChainKey = _rt::String; + pub type EvmTxHash = _rt::Vec; + #[derive(Clone)] + pub struct CosmosAddress { + pub bech32_addr: _rt::String, + pub prefix_len: u32, + } + impl ::core::fmt::Debug for CosmosAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("CosmosAddress") + .field("bech32-addr", &self.bech32_addr) + .field("prefix-len", &self.prefix_len) + .finish() + } + } + #[derive(Clone)] + pub struct CosmosEvent { + pub ty: _rt::String, + pub attributes: _rt::Vec<(_rt::String, _rt::String)>, + } + impl ::core::fmt::Debug for CosmosEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("CosmosEvent") + .field("ty", &self.ty) + .field("attributes", &self.attributes) + .finish() + } + } + #[derive(Clone)] + pub struct CosmosChainConfig { + pub chain_id: _rt::String, + pub rpc_endpoint: Option<_rt::String>, + pub grpc_endpoint: Option<_rt::String>, + pub grpc_web_endpoint: Option<_rt::String>, + pub gas_price: f32, + pub gas_denom: _rt::String, + pub bech32_prefix: _rt::String, + } + impl ::core::fmt::Debug for CosmosChainConfig { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("CosmosChainConfig") + .field("chain-id", &self.chain_id) + .field("rpc-endpoint", &self.rpc_endpoint) + .field("grpc-endpoint", &self.grpc_endpoint) + .field("grpc-web-endpoint", &self.grpc_web_endpoint) + .field("gas-price", &self.gas_price) + .field("gas-denom", &self.gas_denom) + .field("bech32-prefix", &self.bech32_prefix) + .finish() + } + } + #[derive(Clone)] + pub struct EvmAddress { + pub raw_bytes: _rt::Vec, + } + impl ::core::fmt::Debug for EvmAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmAddress") + .field("raw-bytes", &self.raw_bytes) + .finish() + } + } + #[derive(Clone)] + pub struct EvmEventLogData { + pub topics: _rt::Vec<_rt::Vec>, + pub data: _rt::Vec, + } + impl ::core::fmt::Debug for EvmEventLogData { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmEventLogData") + .field("topics", &self.topics) + .field("data", &self.data) + .finish() + } + } + #[derive(Clone)] + pub struct EvmEventLog { + pub address: EvmAddress, + pub data: EvmEventLogData, + pub tx_hash: EvmTxHash, + pub block_number: u64, + pub log_index: u64, + pub block_hash: _rt::Vec, + pub block_timestamp: Option, + pub tx_index: u64, + } + impl ::core::fmt::Debug for EvmEventLog { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmEventLog") + .field("address", &self.address) + .field("data", &self.data) + .field("tx-hash", &self.tx_hash) + .field("block-number", &self.block_number) + .field("log-index", &self.log_index) + .field("block-hash", &self.block_hash) + .field("block-timestamp", &self.block_timestamp) + .field("tx-index", &self.tx_index) + .finish() + } + } + #[derive(Clone)] + pub struct EvmChainConfig { + pub chain_id: _rt::String, + pub ws_endpoints: _rt::Vec<_rt::String>, + pub http_endpoint: Option<_rt::String>, + } + impl ::core::fmt::Debug for EvmChainConfig { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmChainConfig") + .field("chain-id", &self.chain_id) + .field("ws-endpoints", &self.ws_endpoints) + .field("http-endpoint", &self.http_endpoint) + .finish() + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod service { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Digest = super::super::super::wavs::types::core::Digest; + pub type Timestamp = super::super::super::wavs::types::core::Timestamp; + pub type ChainKey = super::super::super::wavs::types::chain::ChainKey; + pub type EvmAddress = super::super::super::wavs::types::chain::EvmAddress; + pub type CosmosAddress = super::super::super::wavs::types::chain::CosmosAddress; + pub type ServiceId = _rt::String; + pub type WorkflowId = _rt::String; + pub type PackageRef = _rt::String; + pub type SemverVersion = _rt::String; + #[derive(Clone, Copy)] + pub enum ServiceStatus { + Active, + Paused, + } + impl ::core::fmt::Debug for ServiceStatus { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ServiceStatus::Active => { + f.debug_tuple("ServiceStatus::Active").finish() + } + ServiceStatus::Paused => { + f.debug_tuple("ServiceStatus::Paused").finish() + } + } + } + } + #[derive(Clone)] + pub struct EvmManager { + pub chain: ChainKey, + pub address: EvmAddress, + } + impl ::core::fmt::Debug for EvmManager { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmManager") + .field("chain", &self.chain) + .field("address", &self.address) + .finish() + } + } + #[derive(Clone)] + pub enum ServiceManager { + Evm(EvmManager), + } + impl ::core::fmt::Debug for ServiceManager { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ServiceManager::Evm(e) => { + f.debug_tuple("ServiceManager::Evm").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct ComponentSourceDownload { + pub uri: _rt::String, + pub digest: Digest, + } + impl ::core::fmt::Debug for ComponentSourceDownload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ComponentSourceDownload") + .field("uri", &self.uri) + .field("digest", &self.digest) + .finish() + } + } + #[derive(Clone)] + pub struct Registry { + pub digest: Digest, + pub domain: Option<_rt::String>, + pub version: Option, + pub pkg: PackageRef, + } + impl ::core::fmt::Debug for Registry { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Registry") + .field("digest", &self.digest) + .field("domain", &self.domain) + .field("version", &self.version) + .field("pkg", &self.pkg) + .finish() + } + } + #[derive(Clone)] + pub enum ComponentSource { + Download(ComponentSourceDownload), + Registry(Registry), + Digest(Digest), + } + impl ::core::fmt::Debug for ComponentSource { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ComponentSource::Download(e) => { + f.debug_tuple("ComponentSource::Download").field(e).finish() + } + ComponentSource::Registry(e) => { + f.debug_tuple("ComponentSource::Registry").field(e).finish() + } + ComponentSource::Digest(e) => { + f.debug_tuple("ComponentSource::Digest").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub enum AllowedHostPermission { + All, + Only(_rt::Vec<_rt::String>), + None, + } + impl ::core::fmt::Debug for AllowedHostPermission { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + AllowedHostPermission::All => { + f.debug_tuple("AllowedHostPermission::All").finish() + } + AllowedHostPermission::Only(e) => { + f.debug_tuple("AllowedHostPermission::Only") + .field(e) + .finish() + } + AllowedHostPermission::None => { + f.debug_tuple("AllowedHostPermission::None").finish() + } + } + } + } + #[derive(Clone)] + pub struct Permissions { + pub allowed_http_hosts: AllowedHostPermission, + pub file_system: bool, + } + impl ::core::fmt::Debug for Permissions { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Permissions") + .field("allowed-http-hosts", &self.allowed_http_hosts) + .field("file-system", &self.file_system) + .finish() + } + } + #[derive(Clone)] + pub struct Component { + pub source: ComponentSource, + pub permissions: Permissions, + pub fuel_limit: Option, + pub time_limit_seconds: Option, + pub config: _rt::Vec<(_rt::String, _rt::String)>, + pub env_keys: _rt::Vec<_rt::String>, + } + impl ::core::fmt::Debug for Component { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Component") + .field("source", &self.source) + .field("permissions", &self.permissions) + .field("fuel-limit", &self.fuel_limit) + .field("time-limit-seconds", &self.time_limit_seconds) + .field("config", &self.config) + .field("env-keys", &self.env_keys) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerEvmContractEvent { + pub address: EvmAddress, + pub chain: ChainKey, + pub event_hash: _rt::Vec, + } + impl ::core::fmt::Debug for TriggerEvmContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerEvmContractEvent") + .field("address", &self.address) + .field("chain", &self.chain) + .field("event-hash", &self.event_hash) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerCosmosContractEvent { + pub address: CosmosAddress, + pub chain: ChainKey, + pub event_type: _rt::String, + } + impl ::core::fmt::Debug for TriggerCosmosContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerCosmosContractEvent") + .field("address", &self.address) + .field("chain", &self.chain) + .field("event-type", &self.event_type) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerBlockInterval { + pub chain: ChainKey, + pub n_blocks: u32, + pub start_block: Option, + pub end_block: Option, + } + impl ::core::fmt::Debug for TriggerBlockInterval { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerBlockInterval") + .field("chain", &self.chain) + .field("n-blocks", &self.n_blocks) + .field("start-block", &self.start_block) + .field("end-block", &self.end_block) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerCron { + pub schedule: _rt::String, + pub start_time: Option, + pub end_time: Option, + } + impl ::core::fmt::Debug for TriggerCron { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerCron") + .field("schedule", &self.schedule) + .field("start-time", &self.start_time) + .field("end-time", &self.end_time) + .finish() + } + } + #[derive(Clone)] + pub enum Trigger { + EvmContractEvent(TriggerEvmContractEvent), + CosmosContractEvent(TriggerCosmosContractEvent), + BlockInterval(TriggerBlockInterval), + Cron(TriggerCron), + Manual, + } + impl ::core::fmt::Debug for Trigger { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Trigger::EvmContractEvent(e) => { + f.debug_tuple("Trigger::EvmContractEvent").field(e).finish() + } + Trigger::CosmosContractEvent(e) => { + f.debug_tuple("Trigger::CosmosContractEvent") + .field(e) + .finish() + } + Trigger::BlockInterval(e) => { + f.debug_tuple("Trigger::BlockInterval").field(e).finish() + } + Trigger::Cron(e) => { + f.debug_tuple("Trigger::Cron").field(e).finish() + } + Trigger::Manual => f.debug_tuple("Trigger::Manual").finish(), + } + } + } + #[derive(Clone, Copy)] + pub enum SignatureAlgorithm { + Secp256k1, + } + impl ::core::fmt::Debug for SignatureAlgorithm { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SignatureAlgorithm::Secp256k1 => { + f.debug_tuple("SignatureAlgorithm::Secp256k1").finish() + } + } + } + } + #[derive(Clone, Copy)] + pub enum SignaturePrefix { + Eip191, + } + impl ::core::fmt::Debug for SignaturePrefix { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SignaturePrefix::Eip191 => { + f.debug_tuple("SignaturePrefix::Eip191").finish() + } + } + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct SignatureKind { + pub algorithm: SignatureAlgorithm, + pub prefix: Option, + } + impl ::core::fmt::Debug for SignatureKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignatureKind") + .field("algorithm", &self.algorithm) + .field("prefix", &self.prefix) + .finish() + } + } + #[derive(Clone)] + pub struct AggregatorSubmit { + pub url: _rt::String, + pub component: Component, + pub signature_kind: SignatureKind, + } + impl ::core::fmt::Debug for AggregatorSubmit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("AggregatorSubmit") + .field("url", &self.url) + .field("component", &self.component) + .field("signature-kind", &self.signature_kind) + .finish() + } + } + #[derive(Clone)] + pub enum Submit { + None, + Aggregator(AggregatorSubmit), + } + impl ::core::fmt::Debug for Submit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Submit::None => f.debug_tuple("Submit::None").finish(), + Submit::Aggregator(e) => { + f.debug_tuple("Submit::Aggregator").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct Workflow { + pub trigger: Trigger, + pub component: Component, + pub submit: Submit, + } + impl ::core::fmt::Debug for Workflow { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Workflow") + .field("trigger", &self.trigger) + .field("component", &self.component) + .field("submit", &self.submit) + .finish() + } + } + #[derive(Clone)] + pub struct Service { + pub name: _rt::String, + pub workflows: _rt::Vec<(WorkflowId, Workflow)>, + pub status: ServiceStatus, + pub manager: ServiceManager, + } + impl ::core::fmt::Debug for Service { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Service") + .field("name", &self.name) + .field("workflows", &self.workflows) + .field("status", &self.status) + .field("manager", &self.manager) + .finish() + } + } + #[derive(Clone)] + pub struct ServiceAndWorkflowId { + pub service: Service, + pub workflow_id: WorkflowId, + } + impl ::core::fmt::Debug for ServiceAndWorkflowId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ServiceAndWorkflowId") + .field("service", &self.service) + .field("workflow-id", &self.workflow_id) + .finish() + } + } + #[derive(Clone)] + pub struct WorkflowAndWorkflowId { + pub workflow: Workflow, + pub workflow_id: WorkflowId, + } + impl ::core::fmt::Debug for WorkflowAndWorkflowId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("WorkflowAndWorkflowId") + .field("workflow", &self.workflow) + .field("workflow-id", &self.workflow_id) + .finish() + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod events { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ChainKey = super::super::super::wavs::types::chain::ChainKey; + pub type EvmEventLog = super::super::super::wavs::types::chain::EvmEventLog; + pub type CosmosAddress = super::super::super::wavs::types::chain::CosmosAddress; + pub type CosmosEvent = super::super::super::wavs::types::chain::CosmosEvent; + pub type Timestamp = super::super::super::wavs::types::core::Timestamp; + pub type EventId = _rt::Vec; + #[derive(Clone)] + pub struct TriggerDataEvmContractEvent { + pub chain: ChainKey, + pub log: EvmEventLog, + } + impl ::core::fmt::Debug for TriggerDataEvmContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataEvmContractEvent") + .field("chain", &self.chain) + .field("log", &self.log) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerDataCosmosContractEvent { + pub contract_address: CosmosAddress, + pub chain: ChainKey, + pub event: CosmosEvent, + pub event_index: u64, + pub block_height: u64, + } + impl ::core::fmt::Debug for TriggerDataCosmosContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataCosmosContractEvent") + .field("contract-address", &self.contract_address) + .field("chain", &self.chain) + .field("event", &self.event) + .field("event-index", &self.event_index) + .field("block-height", &self.block_height) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerDataBlockInterval { + pub chain: ChainKey, + pub block_height: u64, + } + impl ::core::fmt::Debug for TriggerDataBlockInterval { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataBlockInterval") + .field("chain", &self.chain) + .field("block-height", &self.block_height) + .finish() + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct TriggerDataCron { + pub trigger_time: Timestamp, + } + impl ::core::fmt::Debug for TriggerDataCron { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataCron") + .field("trigger-time", &self.trigger_time) + .finish() + } + } + #[derive(Clone)] + pub enum TriggerData { + EvmContractEvent(TriggerDataEvmContractEvent), + CosmosContractEvent(TriggerDataCosmosContractEvent), + BlockInterval(TriggerDataBlockInterval), + Cron(TriggerDataCron), + Raw(_rt::Vec), + } + impl ::core::fmt::Debug for TriggerData { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + TriggerData::EvmContractEvent(e) => { + f.debug_tuple("TriggerData::EvmContractEvent") + .field(e) + .finish() + } + TriggerData::CosmosContractEvent(e) => { + f.debug_tuple("TriggerData::CosmosContractEvent") + .field(e) + .finish() + } + TriggerData::BlockInterval(e) => { + f.debug_tuple("TriggerData::BlockInterval").field(e).finish() + } + TriggerData::Cron(e) => { + f.debug_tuple("TriggerData::Cron").field(e).finish() + } + TriggerData::Raw(e) => { + f.debug_tuple("TriggerData::Raw").field(e).finish() + } + } + } + } + } + } +} +#[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] +pub mod host { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::__link_custom_section_describing_imports; + use super::_rt; + pub type EvmChainConfig = super::wavs::types::chain::EvmChainConfig; + pub type CosmosChainConfig = super::wavs::types::chain::CosmosChainConfig; + pub type ServiceAndWorkflowId = super::wavs::types::service::ServiceAndWorkflowId; + pub type WorkflowAndWorkflowId = super::wavs::types::service::WorkflowAndWorkflowId; + pub type LogLevel = super::wavs::types::core::LogLevel; + pub type EventId = super::wavs::types::events::EventId; + #[allow(unused_unsafe, clippy::all)] + pub fn get_evm_chain_config(chain_key: &str) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea([::core::mem::MaybeUninit; 8 * ::core::mem::size_of::<*const u8>()]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = chain_key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-evm-chain-config"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result17 = match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr1.add(::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l5 = *ptr1.add(2 * ::core::mem::size_of::<*const u8>()).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = + *ptr1.add(3 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l8 = *ptr1.add(4 * ::core::mem::size_of::<*const u8>()).cast::(); + let base12 = l7; + let len12 = l8; + let mut result12 = _rt::Vec::with_capacity(len12); + for i in 0..len12 { + let base = base12.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e12 = { + let l9 = *base.add(0).cast::<*mut u8>(); + let l10 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts(l9.cast(), len11, len11); + _rt::string_lift(bytes11) + }; + result12.push(e12); + } + _rt::cabi_dealloc( + base12, + len12 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l13 = i32::from( + *ptr1.add(5 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::chain::EvmChainConfig { + chain_id: _rt::string_lift(bytes6), + ws_endpoints: result12, + http_endpoint: match l13 { + 0 => None, + 1 => { + let e = { + let l14 = *ptr1 + .add(6 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l15 = *ptr1 + .add(7 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len16 = l15; + let bytes16 = + _rt::Vec::from_raw_parts(l14.cast(), len16, len16); + _rt::string_lift(bytes16) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result17 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_cosmos_chain_config(chain_key: &str) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit; 17 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 17 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = chain_key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-cosmos-chain-config"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result26 = match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr1.add(::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l5 = *ptr1.add(2 * ::core::mem::size_of::<*const u8>()).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = i32::from( + *ptr1.add(3 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l11 = i32::from( + *ptr1.add(6 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l15 = i32::from( + *ptr1.add(9 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l19 = *ptr1.add(12 * ::core::mem::size_of::<*const u8>()).cast::(); + let l20 = + *ptr1.add(13 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l21 = + *ptr1.add(14 * ::core::mem::size_of::<*const u8>()).cast::(); + let len22 = l21; + let bytes22 = _rt::Vec::from_raw_parts(l20.cast(), len22, len22); + let l23 = + *ptr1.add(15 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l24 = + *ptr1.add(16 * ::core::mem::size_of::<*const u8>()).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts(l23.cast(), len25, len25); + super::wavs::types::chain::CosmosChainConfig { + chain_id: _rt::string_lift(bytes6), + rpc_endpoint: match l7 { + 0 => None, + 1 => { + let e = { + let l8 = *ptr1 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr1 + .add(5 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = + _rt::Vec::from_raw_parts(l8.cast(), len10, len10); + _rt::string_lift(bytes10) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + grpc_endpoint: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = *ptr1 + .add(7 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l13 = *ptr1 + .add(8 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len14 = l13; + let bytes14 = + _rt::Vec::from_raw_parts(l12.cast(), len14, len14); + _rt::string_lift(bytes14) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + grpc_web_endpoint: match l15 { + 0 => None, + 1 => { + let e = { + let l16 = *ptr1 + .add(10 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr1 + .add(11 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = + _rt::Vec::from_raw_parts(l16.cast(), len18, len18); + _rt::string_lift(bytes18) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + gas_price: l19, + gas_denom: _rt::string_lift(bytes22), + bech32_prefix: _rt::string_lift(bytes25), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result26 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn config_var(key: &str) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea([::core::mem::MaybeUninit; 3 * ::core::mem::size_of::<*const u8>()]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "config-var"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result7 = match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr1.add(::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l5 = *ptr1.add(2 * ::core::mem::size_of::<*const u8>()).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + _rt::string_lift(bytes6) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn log(level: LogLevel, message: &str) -> () { + unsafe { + use super::wavs::types::core::LogLevel as V0; + let result1 = match level { + V0::Error => 0i32, + V0::Warn => 1i32, + V0::Info => 2i32, + V0::Debug => 3i32, + V0::Trace => 4i32, + }; + let vec2 = message; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "log"] + fn wit_import3(_: i32, _: *mut u8, _: usize); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3(_: i32, _: *mut u8, _: usize) { + unreachable!() + } + unsafe { wit_import3(result1, ptr2.cast_mut(), len2) }; + } + } + #[allow(unused_unsafe, clippy::all)] + /// gets the service and workflow id that called this component + pub fn get_service() -> ServiceAndWorkflowId { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit; 12 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-service"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + let l5 = *ptr0.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l6 = *ptr0.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let base162 = l5; + let len162 = l6; + let mut result162 = _rt::Vec::with_capacity(len162); + for i in 0..len162 { + let base = base162.add(i * (144 + 42 * ::core::mem::size_of::<*const u8>())); + let e162 = { + let l7 = *base.add(0).cast::<*mut u8>(); + let l8 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = + i32::from(*base.add(2 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::Trigger as V45; + let v45 = match l10 { + 0 => { + let e45 = { + let l11 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l12 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len13 = l12; + let l14 = *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l15 = *base + .add(8 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len16 = l15; + let bytes16 = _rt::Vec::from_raw_parts(l14.cast(), len16, len16); + let l17 = *base + .add(8 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l18 = *base + .add(8 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len19 = l18; + super::wavs::types::service::TriggerEvmContractEvent { + address: super::wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ), + }, + chain: _rt::string_lift(bytes16), + event_hash: _rt::Vec::from_raw_parts(l17.cast(), len19, len19), + } + }; + V45::EvmContractEvent(e45) + } + 1 => { + let e45 = { + let l20 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l21 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len22 = l21; + let bytes22 = _rt::Vec::from_raw_parts(l20.cast(), len22, len22); + let l23 = *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let l24 = *base + .add(8 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l25 = *base + .add(8 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts(l24.cast(), len26, len26); + let l27 = *base + .add(8 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l28 = *base + .add(8 + 8 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts(l27.cast(), len29, len29); + super::wavs::types::service::TriggerCosmosContractEvent { + address: super::wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes22), + prefix_len: l23 as u32, + }, + chain: _rt::string_lift(bytes26), + event_type: _rt::string_lift(bytes29), + } + }; + V45::CosmosContractEvent(e45) + } + 2 => { + let e45 = { + let l30 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l31 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts(l30.cast(), len32, len32); + let l33 = *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let l34 = i32::from( + *base + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l36 = i32::from( + *base + .add(32 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::wavs::types::service::TriggerBlockInterval { + chain: _rt::string_lift(bytes32), + n_blocks: l33 as u32, + start_block: match l34 { + 0 => None, + 1 => { + let e = { + let l35 = *base + .add( + 24 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l35 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_block: match l36 { + 0 => None, + 1 => { + let e = { + let l37 = *base + .add( + 40 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l37 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V45::BlockInterval(e45) + } + 3 => { + let e45 = { + let l38 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l39 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len40 = l39; + let bytes40 = _rt::Vec::from_raw_parts(l38.cast(), len40, len40); + let l41 = i32::from( + *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l43 = i32::from( + *base + .add(24 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::wavs::types::service::TriggerCron { + schedule: _rt::string_lift(bytes40), + start_time: match l41 { + 0 => None, + 1 => { + let e = { + let l42 = *base + .add( + 16 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + super::wavs::types::core::Timestamp { + nanos: l42 as u64, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_time: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *base + .add( + 32 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + super::wavs::types::core::Timestamp { + nanos: l44 as u64, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V45::Cron(e45) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + V45::Manual + } + }; + let l46 = i32::from( + *base.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::ComponentSource as V70; + let v70 = match l46 { + 0 => { + let e70 = { + let l47 = *base + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l48 = *base + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len49 = l48; + let bytes49 = _rt::Vec::from_raw_parts(l47.cast(), len49, len49); + let l50 = *base + .add(48 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l51 = *base + .add(48 + 8 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len52 = l51; + let bytes52 = _rt::Vec::from_raw_parts(l50.cast(), len52, len52); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes49), + digest: _rt::string_lift(bytes52), + } + }; + V70::Download(e70) + } + 1 => { + let e70 = { + let l53 = *base + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l54 = *base + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts(l53.cast(), len55, len55); + let l56 = i32::from( + *base + .add(48 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l60 = i32::from( + *base + .add(48 + 10 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l64 = *base + .add(48 + 13 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l65 = *base + .add(48 + 14 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len66 = l65; + let bytes66 = _rt::Vec::from_raw_parts(l64.cast(), len66, len66); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes55), + domain: match l56 { + 0 => None, + 1 => { + let e = { + let l57 = *base + .add( + 48 + 8 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::<*mut u8>(); + let l58 = *base + .add( + 48 + 9 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + let len59 = l58; + let bytes59 = _rt::Vec::from_raw_parts( + l57.cast(), + len59, + len59, + ); + _rt::string_lift(bytes59) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l60 { + 0 => None, + 1 => { + let e = { + let l61 = *base + .add( + 48 + 11 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::<*mut u8>(); + let l62 = *base + .add( + 48 + 12 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + _rt::string_lift(bytes63) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes66), + } + }; + V70::Registry(e70) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e70 = { + let l67 = *base + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l68 = *base + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len69 = l68; + let bytes69 = _rt::Vec::from_raw_parts(l67.cast(), len69, len69); + _rt::string_lift(bytes69) + }; + V70::Digest(e70) + } + }; + let l71 = i32::from( + *base.add(48 + 15 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::AllowedHostPermission as V78; + let v78 = match l71 { + 0 => V78::All, + 1 => { + let e78 = { + let l72 = *base + .add(48 + 16 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l73 = *base + .add(48 + 17 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base77 = l72; + let len77 = l73; + let mut result77 = _rt::Vec::with_capacity(len77); + for i in 0..len77 { + let base = + base77.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e77 = { + let l74 = *base.add(0).cast::<*mut u8>(); + let l75 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len76 = l75; + let bytes76 = + _rt::Vec::from_raw_parts(l74.cast(), len76, len76); + _rt::string_lift(bytes76) + }; + result77.push(e77); + } + _rt::cabi_dealloc( + base77, + len77 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result77 + }; + V78::Only(e78) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V78::None + } + }; + let l79 = i32::from( + *base.add(48 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l80 = i32::from( + *base.add(56 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l82 = i32::from( + *base.add(72 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l84 = + *base.add(88 + 18 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l85 = + *base.add(88 + 19 * ::core::mem::size_of::<*const u8>()).cast::(); + let base92 = l84; + let len92 = l85; + let mut result92 = _rt::Vec::with_capacity(len92); + for i in 0..len92 { + let base = base92.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e92 = { + let l86 = *base.add(0).cast::<*mut u8>(); + let l87 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len88 = l87; + let bytes88 = _rt::Vec::from_raw_parts(l86.cast(), len88, len88); + let l89 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l90 = + *base.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len91 = l90; + let bytes91 = _rt::Vec::from_raw_parts(l89.cast(), len91, len91); + (_rt::string_lift(bytes88), _rt::string_lift(bytes91)) + }; + result92.push(e92); + } + _rt::cabi_dealloc( + base92, + len92 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l93 = + *base.add(88 + 20 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l94 = + *base.add(88 + 21 * ::core::mem::size_of::<*const u8>()).cast::(); + let base98 = l93; + let len98 = l94; + let mut result98 = _rt::Vec::with_capacity(len98); + for i in 0..len98 { + let base = base98.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e98 = { + let l95 = *base.add(0).cast::<*mut u8>(); + let l96 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts(l95.cast(), len97, len97); + _rt::string_lift(bytes97) + }; + result98.push(e98); + } + _rt::cabi_dealloc( + base98, + len98 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l99 = i32::from( + *base.add(88 + 22 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::Submit as V161; + let v161 = match l99 { + 0 => V161::None, + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e161 = { + let l100 = *base + .add(96 + 22 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l101 = *base + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len102 = l101; + let bytes102 = + _rt::Vec::from_raw_parts(l100.cast(), len102, len102); + let l103 = i32::from( + *base + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::wavs::types::service::ComponentSource as V127; + let v127 = match l103 { + 0 => { + let e127 = { + let l104 = *base + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l105 = *base + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len106 = l105; + let bytes106 = _rt::Vec::from_raw_parts( + l104.cast(), + len106, + len106, + ); + let l107 = *base + .add(96 + 27 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l108 = *base + .add(96 + 28 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len109 = l108; + let bytes109 = _rt::Vec::from_raw_parts( + l107.cast(), + len109, + len109, + ); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes106), + digest: _rt::string_lift(bytes109), + } + }; + V127::Download(e127) + } + 1 => { + let e127 = { + let l110 = *base + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l111 = *base + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len112 = l111; + let bytes112 = _rt::Vec::from_raw_parts( + l110.cast(), + len112, + len112, + ); + let l113 = i32::from( + *base + .add( + 96 + 27 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(), + ); + let l117 = i32::from( + *base + .add( + 96 + 30 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(), + ); + let l121 = *base + .add(96 + 33 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l122 = *base + .add(96 + 34 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes112), + domain: match l113 { + 0 => None, + 1 => { + let e = { + let l114 = *base + .add( + 96 + 28 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::<*mut u8>(); + let l115 = *base + .add( + 96 + 29 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::(); + let len116 = l115; + let bytes116 = _rt::Vec::from_raw_parts( + l114.cast(), + len116, + len116, + ); + _rt::string_lift(bytes116) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l117 { + 0 => None, + 1 => { + let e = { + let l118 = *base + .add( + 96 + 31 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::<*mut u8>(); + let l119 = *base + .add( + 96 + 32 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::(); + let len120 = l119; + let bytes120 = _rt::Vec::from_raw_parts( + l118.cast(), + len120, + len120, + ); + _rt::string_lift(bytes120) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes123), + } + }; + V127::Registry(e127) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e127 = { + let l124 = *base + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l125 = *base + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len126 = l125; + let bytes126 = _rt::Vec::from_raw_parts( + l124.cast(), + len126, + len126, + ); + _rt::string_lift(bytes126) + }; + V127::Digest(e127) + } + }; + let l128 = i32::from( + *base + .add(96 + 35 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::wavs::types::service::AllowedHostPermission as V135; + let v135 = match l128 { + 0 => V135::All, + 1 => { + let e135 = { + let l129 = *base + .add(96 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l130 = *base + .add(96 + 37 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base134 = l129; + let len134 = l130; + let mut result134 = _rt::Vec::with_capacity(len134); + for i in 0..len134 { + let base = base134.add( + i * (2 * ::core::mem::size_of::<*const u8>()), + ); + let e134 = { + let l131 = *base.add(0).cast::<*mut u8>(); + let l132 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + _rt::string_lift(bytes133) + }; + result134.push(e134); + } + _rt::cabi_dealloc( + base134, + len134 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result134 + }; + V135::Only(e135) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V135::None + } + }; + let l136 = i32::from( + *base + .add(96 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l137 = i32::from( + *base + .add(104 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l139 = i32::from( + *base + .add(120 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l141 = *base + .add(136 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l142 = *base + .add(136 + 39 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base149 = l141; + let len149 = l142; + let mut result149 = _rt::Vec::with_capacity(len149); + for i in 0..len149 { + let base = + base149.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e149 = { + let l143 = *base.add(0).cast::<*mut u8>(); + let l144 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len145 = l144; + let bytes145 = + _rt::Vec::from_raw_parts(l143.cast(), len145, len145); + let l146 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l147 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len148 = l147; + let bytes148 = + _rt::Vec::from_raw_parts(l146.cast(), len148, len148); + (_rt::string_lift(bytes145), _rt::string_lift(bytes148)) + }; + result149.push(e149); + } + _rt::cabi_dealloc( + base149, + len149 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l150 = *base + .add(136 + 40 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l151 = *base + .add(136 + 41 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base155 = l150; + let len155 = l151; + let mut result155 = _rt::Vec::with_capacity(len155); + for i in 0..len155 { + let base = + base155.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e155 = { + let l152 = *base.add(0).cast::<*mut u8>(); + let l153 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len154 = l153; + let bytes154 = + _rt::Vec::from_raw_parts(l152.cast(), len154, len154); + _rt::string_lift(bytes154) + }; + result155.push(e155); + } + _rt::cabi_dealloc( + base155, + len155 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l156 = i32::from( + *base + .add(136 + 42 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::wavs::types::service::SignatureAlgorithm as V157; + let v157 = match l156 { + n => { + debug_assert_eq!(n, 0, "invalid enum discriminant"); + V157::Secp256k1 + } + }; + let l158 = i32::from( + *base + .add(137 + 42 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::wavs::types::service::AggregatorSubmit { + url: _rt::string_lift(bytes102), + component: super::wavs::types::service::Component { + source: v127, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v135, + file_system: _rt::bool_lift(l136 as u8), + }, + fuel_limit: match l137 { + 0 => None, + 1 => { + let e = { + let l138 = *base + .add( + 112 + 38 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l138 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l139 { + 0 => None, + 1 => { + let e = { + let l140 = *base + .add( + 128 + 38 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l140 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result149, + env_keys: result155, + }, + signature_kind: super::wavs::types::service::SignatureKind { + algorithm: v157, + prefix: match l158 { + 0 => None, + 1 => { + let e = { + let l159 = i32::from( + *base + .add( + 138 + 42 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::(), + ); + use super::wavs::types::service::SignaturePrefix as V160; + let v160 = match l159 { + n => { + debug_assert_eq!( + n, 0, + "invalid enum discriminant" + ); + V160::Eip191 + } + }; + v160 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + } + }; + V161::Aggregator(e161) + } + }; + ( + _rt::string_lift(bytes9), + super::wavs::types::service::Workflow { + trigger: v45, + component: super::wavs::types::service::Component { + source: v70, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v78, + file_system: _rt::bool_lift(l79 as u8), + }, + fuel_limit: match l80 { + 0 => None, + 1 => { + let e = { + let l81 = *base + .add(64 + 18 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l81 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l82 { + 0 => None, + 1 => { + let e = { + let l83 = *base + .add(80 + 18 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l83 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result92, + env_keys: result98, + }, + submit: v161, + }, + ) + }; + result162.push(e162); + } + _rt::cabi_dealloc( + base162, + len162 * (144 + 42 * ::core::mem::size_of::<*const u8>()), + 8, + ); + let l163 = i32::from(*ptr0.add(4 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::ServiceStatus as V164; + let v164 = match l163 { + 0 => V164::Active, + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + V164::Paused + } + }; + let l165 = i32::from(*ptr0.add(5 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::ServiceManager as V172; + let v172 = match l165 { + n => { + debug_assert_eq!(n, 0, "invalid enum discriminant"); + let e172 = { + let l166 = + *ptr0.add(6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l167 = + *ptr0.add(7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len168 = l167; + let bytes168 = _rt::Vec::from_raw_parts(l166.cast(), len168, len168); + let l169 = + *ptr0.add(8 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l170 = + *ptr0.add(9 * ::core::mem::size_of::<*const u8>()).cast::(); + let len171 = l170; + super::wavs::types::service::EvmManager { + chain: _rt::string_lift(bytes168), + address: super::wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l169.cast(), len171, len171), + }, + } + }; + V172::Evm(e172) + } + }; + let l173 = *ptr0.add(10 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l174 = *ptr0.add(11 * ::core::mem::size_of::<*const u8>()).cast::(); + let len175 = l174; + let bytes175 = _rt::Vec::from_raw_parts(l173.cast(), len175, len175); + let result176 = super::wavs::types::service::ServiceAndWorkflowId { + service: super::wavs::types::service::Service { + name: _rt::string_lift(bytes4), + workflows: result162, + status: v164, + manager: v172, + }, + workflow_id: _rt::string_lift(bytes175), + }; + result176 + } + } + #[allow(unused_unsafe, clippy::all)] + /// convenience function to get the workflow without having to walk service.workflows + pub fn get_workflow() -> WorkflowAndWorkflowId { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit; 144 + 42 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); + 144 + 42 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-workflow"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + use super::wavs::types::service::Trigger as V37; + let v37 = match l2 { + 0 => { + let e37 = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len5 = l4; + let l6 = *ptr0 + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = + *ptr0.add(8 + 3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *ptr0 + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l10 = + *ptr0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len11 = l10; + super::wavs::types::service::TriggerEvmContractEvent { + address: super::wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l3.cast(), len5, len5), + }, + chain: _rt::string_lift(bytes8), + event_hash: _rt::Vec::from_raw_parts(l9.cast(), len11, len11), + } + }; + V37::EvmContractEvent(e37) + } + 1 => { + let e37 = { + let l12 = *ptr0.add(8).cast::<*mut u8>(); + let l13 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts(l12.cast(), len14, len14); + let l15 = + *ptr0.add(8 + 2 * ::core::mem::size_of::<*const u8>()).cast::(); + let l16 = *ptr0 + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = + *ptr0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts(l16.cast(), len18, len18); + let l19 = *ptr0 + .add(8 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l20 = + *ptr0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let len21 = l20; + let bytes21 = _rt::Vec::from_raw_parts(l19.cast(), len21, len21); + super::wavs::types::service::TriggerCosmosContractEvent { + address: super::wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes14), + prefix_len: l15 as u32, + }, + chain: _rt::string_lift(bytes18), + event_type: _rt::string_lift(bytes21), + } + }; + V37::CosmosContractEvent(e37) + } + 2 => { + let e37 = { + let l22 = *ptr0.add(8).cast::<*mut u8>(); + let l23 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts(l22.cast(), len24, len24); + let l25 = + *ptr0.add(8 + 2 * ::core::mem::size_of::<*const u8>()).cast::(); + let l26 = i32::from( + *ptr0.add(16 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l28 = i32::from( + *ptr0.add(32 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::service::TriggerBlockInterval { + chain: _rt::string_lift(bytes24), + n_blocks: l25 as u32, + start_block: match l26 { + 0 => None, + 1 => { + let e = { + let l27 = *ptr0 + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l27 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_block: match l28 { + 0 => None, + 1 => { + let e = { + let l29 = *ptr0 + .add(40 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l29 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V37::BlockInterval(e37) + } + 3 => { + let e37 = { + let l30 = *ptr0.add(8).cast::<*mut u8>(); + let l31 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts(l30.cast(), len32, len32); + let l33 = i32::from( + *ptr0.add(8 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l35 = i32::from( + *ptr0.add(24 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::service::TriggerCron { + schedule: _rt::string_lift(bytes32), + start_time: match l33 { + 0 => None, + 1 => { + let e = { + let l34 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + super::wavs::types::core::Timestamp { nanos: l34 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_time: match l35 { + 0 => None, + 1 => { + let e = { + let l36 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + super::wavs::types::core::Timestamp { nanos: l36 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V37::Cron(e37) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + V37::Manual + } + }; + let l38 = + i32::from(*ptr0.add(48 + 2 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::ComponentSource as V62; + let v62 = match l38 { + 0 => { + let e62 = { + let l39 = *ptr0 + .add(48 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l40 = + *ptr0.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts(l39.cast(), len41, len41); + let l42 = *ptr0 + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l43 = + *ptr0.add(48 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let len44 = l43; + let bytes44 = _rt::Vec::from_raw_parts(l42.cast(), len44, len44); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes41), + digest: _rt::string_lift(bytes44), + } + }; + V62::Download(e62) + } + 1 => { + let e62 = { + let l45 = *ptr0 + .add(48 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l46 = + *ptr0.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts(l45.cast(), len47, len47); + let l48 = i32::from( + *ptr0.add(48 + 5 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l52 = i32::from( + *ptr0.add(48 + 8 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l56 = *ptr0 + .add(48 + 11 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l57 = *ptr0 + .add(48 + 12 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts(l56.cast(), len58, len58); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes47), + domain: match l48 { + 0 => None, + 1 => { + let e = { + let l49 = *ptr0 + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l50 = *ptr0 + .add(48 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len51 = l50; + let bytes51 = + _rt::Vec::from_raw_parts(l49.cast(), len51, len51); + _rt::string_lift(bytes51) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l52 { + 0 => None, + 1 => { + let e = { + let l53 = *ptr0 + .add(48 + 9 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l54 = *ptr0 + .add(48 + 10 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len55 = l54; + let bytes55 = + _rt::Vec::from_raw_parts(l53.cast(), len55, len55); + _rt::string_lift(bytes55) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes58), + } + }; + V62::Registry(e62) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e62 = { + let l59 = *ptr0 + .add(48 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l60 = + *ptr0.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts(l59.cast(), len61, len61); + _rt::string_lift(bytes61) + }; + V62::Digest(e62) + } + }; + let l63 = + i32::from(*ptr0.add(48 + 13 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::AllowedHostPermission as V70; + let v70 = match l63 { + 0 => V70::All, + 1 => { + let e70 = { + let l64 = *ptr0 + .add(48 + 14 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l65 = *ptr0 + .add(48 + 15 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base69 = l64; + let len69 = l65; + let mut result69 = _rt::Vec::with_capacity(len69); + for i in 0..len69 { + let base = base69.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e69 = { + let l66 = *base.add(0).cast::<*mut u8>(); + let l67 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len68 = l67; + let bytes68 = _rt::Vec::from_raw_parts(l66.cast(), len68, len68); + _rt::string_lift(bytes68) + }; + result69.push(e69); + } + _rt::cabi_dealloc( + base69, + len69 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result69 + }; + V70::Only(e70) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V70::None + } + }; + let l71 = + i32::from(*ptr0.add(48 + 16 * ::core::mem::size_of::<*const u8>()).cast::()); + let l72 = + i32::from(*ptr0.add(56 + 16 * ::core::mem::size_of::<*const u8>()).cast::()); + let l74 = + i32::from(*ptr0.add(72 + 16 * ::core::mem::size_of::<*const u8>()).cast::()); + let l76 = *ptr0.add(88 + 16 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l77 = *ptr0.add(88 + 17 * ::core::mem::size_of::<*const u8>()).cast::(); + let base84 = l76; + let len84 = l77; + let mut result84 = _rt::Vec::with_capacity(len84); + for i in 0..len84 { + let base = base84.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e84 = { + let l78 = *base.add(0).cast::<*mut u8>(); + let l79 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts(l78.cast(), len80, len80); + let l81 = *base.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l82 = *base.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts(l81.cast(), len83, len83); + (_rt::string_lift(bytes80), _rt::string_lift(bytes83)) + }; + result84.push(e84); + } + _rt::cabi_dealloc( + base84, + len84 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l85 = *ptr0.add(88 + 18 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l86 = *ptr0.add(88 + 19 * ::core::mem::size_of::<*const u8>()).cast::(); + let base90 = l85; + let len90 = l86; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e90 = { + let l87 = *base.add(0).cast::<*mut u8>(); + let l88 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts(l87.cast(), len89, len89); + _rt::string_lift(bytes89) + }; + result90.push(e90); + } + _rt::cabi_dealloc( + base90, + len90 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l91 = + i32::from(*ptr0.add(88 + 20 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::Submit as V153; + let v153 = match l91 { + 0 => V153::None, + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e153 = { + let l92 = *ptr0 + .add(96 + 20 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l93 = *ptr0 + .add(96 + 21 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len94 = l93; + let bytes94 = _rt::Vec::from_raw_parts(l92.cast(), len94, len94); + let l95 = i32::from( + *ptr0.add(96 + 22 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::ComponentSource as V119; + let v119 = match l95 { + 0 => { + let e119 = { + let l96 = *ptr0 + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l97 = *ptr0 + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len98 = l97; + let bytes98 = + _rt::Vec::from_raw_parts(l96.cast(), len98, len98); + let l99 = *ptr0 + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l100 = *ptr0 + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len101 = l100; + let bytes101 = + _rt::Vec::from_raw_parts(l99.cast(), len101, len101); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes98), + digest: _rt::string_lift(bytes101), + } + }; + V119::Download(e119) + } + 1 => { + let e119 = { + let l102 = *ptr0 + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l103 = *ptr0 + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len104 = l103; + let bytes104 = + _rt::Vec::from_raw_parts(l102.cast(), len104, len104); + let l105 = i32::from( + *ptr0 + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l109 = i32::from( + *ptr0 + .add(96 + 28 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l113 = *ptr0 + .add(96 + 31 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l114 = *ptr0 + .add(96 + 32 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len115 = l114; + let bytes115 = + _rt::Vec::from_raw_parts(l113.cast(), len115, len115); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes104), + domain: match l105 { + 0 => None, + 1 => { + let e = { + let l106 = *ptr0 + .add( + 96 + 26 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::<*mut u8>(); + let l107 = *ptr0 + .add( + 96 + 27 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + _rt::string_lift(bytes108) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l109 { + 0 => None, + 1 => { + let e = { + let l110 = *ptr0 + .add( + 96 + 29 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::<*mut u8>(); + let l111 = *ptr0 + .add( + 96 + 30 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + let len112 = l111; + let bytes112 = _rt::Vec::from_raw_parts( + l110.cast(), + len112, + len112, + ); + _rt::string_lift(bytes112) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes115), + } + }; + V119::Registry(e119) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e119 = { + let l116 = *ptr0 + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l117 = *ptr0 + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len118 = l117; + let bytes118 = + _rt::Vec::from_raw_parts(l116.cast(), len118, len118); + _rt::string_lift(bytes118) + }; + V119::Digest(e119) + } + }; + let l120 = i32::from( + *ptr0.add(96 + 33 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::AllowedHostPermission as V127; + let v127 = match l120 { + 0 => V127::All, + 1 => { + let e127 = { + let l121 = *ptr0 + .add(96 + 34 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l122 = *ptr0 + .add(96 + 35 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base126 = l121; + let len126 = l122; + let mut result126 = _rt::Vec::with_capacity(len126); + for i in 0..len126 { + let base = base126 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e126 = { + let l123 = *base.add(0).cast::<*mut u8>(); + let l124 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len125 = l124; + let bytes125 = _rt::Vec::from_raw_parts( + l123.cast(), + len125, + len125, + ); + _rt::string_lift(bytes125) + }; + result126.push(e126); + } + _rt::cabi_dealloc( + base126, + len126 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result126 + }; + V127::Only(e127) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V127::None + } + }; + let l128 = i32::from( + *ptr0.add(96 + 36 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l129 = i32::from( + *ptr0.add(104 + 36 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l131 = i32::from( + *ptr0.add(120 + 36 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l133 = *ptr0 + .add(136 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l134 = *ptr0 + .add(136 + 37 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base141 = l133; + let len141 = l134; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e141 = { + let l135 = *base.add(0).cast::<*mut u8>(); + let l136 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len137 = l136; + let bytes137 = + _rt::Vec::from_raw_parts(l135.cast(), len137, len137); + let l138 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l139 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len140 = l139; + let bytes140 = + _rt::Vec::from_raw_parts(l138.cast(), len140, len140); + (_rt::string_lift(bytes137), _rt::string_lift(bytes140)) + }; + result141.push(e141); + } + _rt::cabi_dealloc( + base141, + len141 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l142 = *ptr0 + .add(136 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l143 = *ptr0 + .add(136 + 39 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base147 = l142; + let len147 = l143; + let mut result147 = _rt::Vec::with_capacity(len147); + for i in 0..len147 { + let base = base147.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e147 = { + let l144 = *base.add(0).cast::<*mut u8>(); + let l145 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len146 = l145; + let bytes146 = + _rt::Vec::from_raw_parts(l144.cast(), len146, len146); + _rt::string_lift(bytes146) + }; + result147.push(e147); + } + _rt::cabi_dealloc( + base147, + len147 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l148 = i32::from( + *ptr0.add(136 + 40 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::SignatureAlgorithm as V149; + let v149 = match l148 { + n => { + debug_assert_eq!(n, 0, "invalid enum discriminant"); + V149::Secp256k1 + } + }; + let l150 = i32::from( + *ptr0.add(137 + 40 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::service::AggregatorSubmit { + url: _rt::string_lift(bytes94), + component: super::wavs::types::service::Component { + source: v119, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v127, + file_system: _rt::bool_lift(l128 as u8), + }, + fuel_limit: match l129 { + 0 => None, + 1 => { + let e = { + let l130 = *ptr0 + .add(112 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l130 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l131 { + 0 => None, + 1 => { + let e = { + let l132 = *ptr0 + .add(128 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l132 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result141, + env_keys: result147, + }, + signature_kind: super::wavs::types::service::SignatureKind { + algorithm: v149, + prefix: match l150 { + 0 => None, + 1 => { + let e = { + let l151 = i32::from( + *ptr0 + .add( + 138 + 40 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(), + ); + use super::wavs::types::service::SignaturePrefix as V152; + let v152 = match l151 { + n => { + debug_assert_eq!( + n, 0, + "invalid enum discriminant" + ); + V152::Eip191 + } + }; + v152 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + } + }; + V153::Aggregator(e153) + } + }; + let l154 = *ptr0.add(144 + 40 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l155 = *ptr0.add(144 + 41 * ::core::mem::size_of::<*const u8>()).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts(l154.cast(), len156, len156); + let result157 = super::wavs::types::service::WorkflowAndWorkflowId { + workflow: super::wavs::types::service::Workflow { + trigger: v37, + component: super::wavs::types::service::Component { + source: v62, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v70, + file_system: _rt::bool_lift(l71 as u8), + }, + fuel_limit: match l72 { + 0 => None, + 1 => { + let e = { + let l73 = *ptr0 + .add(64 + 16 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l73 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l74 { + 0 => None, + 1 => { + let e = { + let l75 = *ptr0 + .add(80 + 16 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l75 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result84, + env_keys: result90, + }, + submit: v153, + }, + workflow_id: _rt::string_lift(bytes156), + }; + result157 + } + } + #[allow(unused_unsafe, clippy::all)] + /// convenience function to get the event-id + pub fn get_event_id() -> EventId { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea([::core::mem::MaybeUninit; 2 * ::core::mem::size_of::<*const u8>()]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-event-id"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(); + let len4 = l3; + let result5 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + result5 + } + } +} +#[rustfmt::skip] +mod _rt { + #![allow(dead_code, clippy::all)] + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + use core::fmt; + use core::marker; + use core::sync::atomic::{AtomicU32, Ordering::Relaxed}; + /// A type which represents a component model resource, either imported or + /// exported into this component. + /// + /// This is a low-level wrapper which handles the lifetime of the resource + /// (namely this has a destructor). The `T` provided defines the component model + /// intrinsics that this wrapper uses. + /// + /// One of the chief purposes of this type is to provide `Deref` implementations + /// to access the underlying data when it is owned. + /// + /// This type is primarily used in generated code for exported and imported + /// resources. + #[repr(transparent)] + pub struct Resource { + handle: AtomicU32, + _marker: marker::PhantomData, + } + /// A trait which all wasm resources implement, namely providing the ability to + /// drop a resource. + /// + /// This generally is implemented by generated code, not user-facing code. + #[allow(clippy::missing_safety_doc)] + pub unsafe trait WasmResource { + /// Invokes the `[resource-drop]...` intrinsic. + unsafe fn drop(handle: u32); + } + impl Resource { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + debug_assert!(handle != u32::MAX); + Self { + handle: AtomicU32::new(handle), + _marker: marker::PhantomData, + } + } + /// Takes ownership of the handle owned by `resource`. + /// + /// Note that this ideally would be `into_handle` taking `Resource` by + /// ownership. The code generator does not enable that in all situations, + /// unfortunately, so this is provided instead. + /// + /// Also note that `take_handle` is in theory only ever called on values + /// owned by a generated function. For example a generated function might + /// take `Resource` as an argument but then call `take_handle` on a + /// reference to that argument. In that sense the dynamic nature of + /// `take_handle` should only be exposed internally to generated code, not + /// to user code. + #[doc(hidden)] + pub fn take_handle(resource: &Resource) -> u32 { + resource.handle.swap(u32::MAX, Relaxed) + } + #[doc(hidden)] + pub fn handle(resource: &Resource) -> u32 { + resource.handle.load(Relaxed) + } + } + impl fmt::Debug for Resource { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Resource").field("handle", &self.handle).finish() + } + } + impl Drop for Resource { + fn drop(&mut self) { + unsafe { + match self.handle.load(Relaxed) { + u32::MAX => {} + other => T::drop(other), + } + } + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if cfg!(debug_assertions) { + match val { + 0 => false, + 1 => true, + _ => panic!("invalid bool discriminant"), + } + } else { + val != 0 + } + } + pub use alloc_crate::alloc; + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if cfg!(debug_assertions) { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if cfg!(debug_assertions) { + panic!("invalid enum discriminant") + } else { + unsafe { core::hint::unreachable_unchecked() } + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + #[cfg(target_arch = "wasm32")] + pub fn run_ctors_once() { + wit_bindgen_rt::run_ctors_once(); + } + extern crate alloc as alloc_crate; +} +/// Generates `#[unsafe(no_mangle)]` functions to export the specified type as +/// the root implementation of all generated traits. +/// +/// For more information see the documentation of `wit_bindgen::generate!`. +/// +/// ```rust +/// # macro_rules! export{ ($($t:tt)*) => (); } +/// # trait Guest {} +/// struct MyType; +/// +/// impl Guest for MyType { +/// // ... +/// } +/// +/// export!(MyType); +/// ``` +#[allow(unused_macros)] +#[doc(hidden)] +macro_rules! __export_wavs_world_impl { + ($ty:ident) => { + self::export!($ty with_types_in self); + }; + ($ty:ident with_types_in $($path_to_types_root:tt)*) => { + $($path_to_types_root)*:: __export_world_wavs_world_cabi!($ty with_types_in + $($path_to_types_root)*); + }; +} +#[doc(inline)] +pub(crate) use __export_wavs_world_impl as export; +#[cfg(target_arch = "wasm32")] +#[unsafe(link_section = "component-type:wit-bindgen:0.41.0:wavs:operator@1.3.0:wavs-world:encoded world")] +#[doc(hidden)] +#[allow(clippy::octal_escapes)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 20564] = *b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\xd2\x9f\x01\x01A\x02\ +\x01A~\x01B\x0b\x01s\x04\0\x06digest\x03\0\0\x01r\x01\x05nanosw\x04\0\x09timesta\ +mp\x03\0\x02\x01r\x01\x04secsw\x04\0\x08duration\x03\0\x04\x01o\x02ww\x01r\x01\x05\ +value\x06\x04\0\x04u128\x03\0\x07\x01q\x05\x05error\0\0\x04warn\0\0\x04info\0\0\x05\ +debug\0\0\x05trace\0\0\x04\0\x09log-level\x03\0\x09\x03\0\x15wavs:types/core@1.3\ +.0\x05\0\x01B\x1d\x01s\x04\0\x09chain-key\x03\0\0\x01p}\x04\0\x0bevm-tx-hash\x03\ +\0\x02\x01s\x04\0\x0ecosmos-tx-hash\x03\0\x04\x01q\x02\x03evm\x01\x03\0\x06cosmo\ +s\x01\x05\0\x04\0\x0bany-tx-hash\x03\0\x06\x01r\x02\x0bbech32-addrs\x0aprefix-le\ +ny\x04\0\x0ecosmos-address\x03\0\x08\x01o\x02ss\x01p\x0a\x01r\x02\x02tys\x0aattr\ +ibutes\x0b\x04\0\x0ccosmos-event\x03\0\x0c\x01ks\x01r\x07\x08chain-ids\x0crpc-en\ +dpoint\x0e\x0dgrpc-endpoint\x0e\x11grpc-web-endpoint\x0e\x09gas-pricev\x09gas-de\ +noms\x0dbech32-prefixs\x04\0\x13cosmos-chain-config\x03\0\x0f\x01p}\x01r\x01\x09\ +raw-bytes\x11\x04\0\x0bevm-address\x03\0\x12\x01p\x11\x01r\x02\x06topics\x14\x04\ +data\x11\x04\0\x12evm-event-log-data\x03\0\x15\x01kw\x01r\x08\x07address\x13\x04\ +data\x16\x07tx-hash\x03\x0cblock-numberw\x09log-indexw\x0ablock-hash\x11\x0fbloc\ +k-timestamp\x17\x08tx-indexw\x04\0\x0devm-event-log\x03\0\x18\x01ps\x01r\x03\x08\ +chain-ids\x0cws-endpoints\x1a\x0dhttp-endpoint\x0e\x04\0\x10evm-chain-config\x03\ +\0\x1b\x03\0\x16wavs:types/chain@1.3.0\x05\x01\x02\x03\0\0\x06digest\x02\x03\0\0\ +\x09timestamp\x02\x03\0\x01\x09chain-key\x02\x03\0\x01\x0bevm-address\x02\x03\0\x01\ +\x0ecosmos-address\x01BO\x02\x03\x02\x01\x02\x04\0\x06digest\x03\0\0\x02\x03\x02\ +\x01\x03\x04\0\x09timestamp\x03\0\x02\x02\x03\x02\x01\x04\x04\0\x09chain-key\x03\ +\0\x04\x02\x03\x02\x01\x05\x04\0\x0bevm-address\x03\0\x06\x02\x03\x02\x01\x06\x04\ +\0\x0ecosmos-address\x03\0\x08\x01s\x04\0\x0aservice-id\x03\0\x0a\x01s\x04\0\x0b\ +workflow-id\x03\0\x0c\x01s\x04\0\x0bpackage-ref\x03\0\x0e\x01s\x04\0\x0esemver-v\ +ersion\x03\0\x10\x01q\x02\x06active\0\0\x06paused\0\0\x04\0\x0eservice-status\x03\ +\0\x12\x01r\x02\x05chain\x05\x07address\x07\x04\0\x0bevm-manager\x03\0\x14\x01q\x01\ +\x03evm\x01\x15\0\x04\0\x0fservice-manager\x03\0\x16\x01r\x02\x03uris\x06digest\x01\ +\x04\0\x19component-source-download\x03\0\x18\x01ks\x01k\x11\x01r\x04\x06digest\x01\ +\x06domain\x1a\x07version\x1b\x03pkg\x0f\x04\0\x08registry\x03\0\x1c\x01q\x03\x08\ +download\x01\x19\0\x08registry\x01\x1d\0\x06digest\x01\x01\0\x04\0\x10component-\ +source\x03\0\x1e\x01ps\x01q\x03\x03all\0\0\x04only\x01\x20\0\x04none\0\0\x04\0\x17\ +allowed-host-permission\x03\0!\x01r\x02\x12allowed-http-hosts\"\x0bfile-system\x7f\ +\x04\0\x0bpermissions\x03\0#\x01kw\x01o\x02ss\x01p&\x01r\x06\x06source\x1f\x0bpe\ +rmissions$\x0afuel-limit%\x12time-limit-seconds%\x06config'\x08env-keys\x20\x04\0\ +\x09component\x03\0(\x01p}\x01r\x03\x07address\x07\x05chain\x05\x0aevent-hash*\x04\ +\0\x1atrigger-evm-contract-event\x03\0+\x01r\x03\x07address\x09\x05chain\x05\x0a\ +event-types\x04\0\x1dtrigger-cosmos-contract-event\x03\0-\x01r\x04\x05chain\x05\x08\ +n-blocksy\x0bstart-block%\x09end-block%\x04\0\x16trigger-block-interval\x03\0/\x01\ +k\x03\x01r\x03\x08schedules\x0astart-time1\x08end-time1\x04\0\x0ctrigger-cron\x03\ +\02\x01q\x05\x12evm-contract-event\x01,\0\x15cosmos-contract-event\x01.\0\x0eblo\ +ck-interval\x010\0\x04cron\x013\0\x06manual\0\0\x04\0\x07trigger\x03\04\x01q\x01\ +\x09secp256k1\0\0\x04\0\x13signature-algorithm\x03\06\x01q\x01\x06eip191\0\0\x04\ +\0\x10signature-prefix\x03\08\x01k9\x01r\x02\x09algorithm7\x06prefix:\x04\0\x0es\ +ignature-kind\x03\0;\x01r\x03\x03urls\x09component)\x0esignature-kind<\x04\0\x11\ +aggregator-submit\x03\0=\x01q\x02\x04none\0\0\x0aaggregator\x01>\0\x04\0\x06subm\ +it\x03\0?\x01r\x03\x07trigger5\x09component)\x06submit\xc0\0\x04\0\x08workflow\x03\ +\0A\x01o\x02\x0d\xc2\0\x01p\xc3\0\x01r\x04\x04names\x09workflows\xc4\0\x06status\ +\x13\x07manager\x17\x04\0\x07service\x03\0E\x01r\x03\x05chain\x05\x07address\x07\ +\x07max-gas%\x04\0\x17evm-contract-submission\x03\0G\x01q\x01\x03evm\x01\xc8\0\0\ +\x04\0\x0aaggregator\x03\0I\x01r\x02\x07service\xc6\0\x0bworkflow-id\x0d\x04\0\x17\ +service-and-workflow-id\x03\0K\x01r\x02\x08workflow\xc2\0\x0bworkflow-id\x0d\x04\ +\0\x18workflow-and-workflow-id\x03\0M\x03\0\x18wavs:types/service@1.3.0\x05\x07\x02\ +\x03\0\x01\x0devm-event-log\x02\x03\0\x01\x0ccosmos-event\x01B\x19\x02\x03\x02\x01\ +\x04\x04\0\x09chain-key\x03\0\0\x02\x03\x02\x01\x05\x04\0\x0bevm-address\x03\0\x02\ +\x02\x03\x02\x01\x08\x04\0\x0devm-event-log\x03\0\x04\x02\x03\x02\x01\x06\x04\0\x0e\ +cosmos-address\x03\0\x06\x02\x03\x02\x01\x09\x04\0\x0ccosmos-event\x03\0\x08\x02\ +\x03\x02\x01\x03\x04\0\x09timestamp\x03\0\x0a\x01p}\x04\0\x08event-id\x03\0\x0c\x01\ +r\x02\x05chain\x01\x03log\x05\x04\0\x1ftrigger-data-evm-contract-event\x03\0\x0e\ +\x01r\x05\x10contract-address\x07\x05chain\x01\x05event\x09\x0bevent-indexw\x0cb\ +lock-heightw\x04\0\"trigger-data-cosmos-contract-event\x03\0\x10\x01r\x02\x05cha\ +in\x01\x0cblock-heightw\x04\0\x1btrigger-data-block-interval\x03\0\x12\x01r\x01\x0c\ +trigger-time\x0b\x04\0\x11trigger-data-cron\x03\0\x14\x01p}\x01q\x05\x12evm-cont\ +ract-event\x01\x0f\0\x15cosmos-contract-event\x01\x11\0\x0eblock-interval\x01\x13\ +\0\x04cron\x01\x15\0\x03raw\x01\x16\0\x04\0\x0ctrigger-data\x03\0\x17\x03\0\x17w\ +avs:types/events@1.3.0\x05\x0a\x02\x03\0\x02\x0aservice-id\x02\x03\0\x02\x0bwork\ +flow-id\x02\x03\0\x02\x07trigger\x02\x03\0\x03\x0ctrigger-data\x01B\x0c\x02\x03\x02\ +\x01\x0b\x04\0\x0aservice-id\x03\0\0\x02\x03\x02\x01\x0c\x04\0\x0bworkflow-id\x03\ +\0\x02\x02\x03\x02\x01\x0d\x04\0\x07trigger\x03\0\x04\x02\x03\x02\x01\x0e\x04\0\x0c\ +trigger-data\x03\0\x06\x01r\x03\x0aservice-id\x01\x0bworkflow-id\x03\x07trigger\x05\ +\x04\0\x0etrigger-config\x03\0\x08\x01r\x02\x06config\x09\x04data\x07\x04\0\x0et\ +rigger-action\x03\0\x0a\x03\0\x19wavs:operator/input@1.3.0\x05\x0f\x02\x03\0\x04\ +\x0etrigger-action\x03\0\x0etrigger-action\x03\0\x10\x01B\x04\x01p}\x01kw\x01r\x02\ +\x07payload\0\x08ordering\x01\x04\0\x0dwasm-response\x03\0\x02\x03\0\x1awavs:ope\ +rator/output@1.3.0\x05\x12\x02\x03\0\x05\x0dwasm-response\x03\0\x0dwasm-response\ +\x03\0\x13\x01B\x0a\x04\0\x08pollable\x03\x01\x01h\0\x01@\x01\x04self\x01\0\x7f\x04\ +\0\x16[method]pollable.ready\x01\x02\x01@\x01\x04self\x01\x01\0\x04\0\x16[method\ +]pollable.block\x01\x03\x01p\x01\x01py\x01@\x01\x02in\x04\0\x05\x04\0\x04poll\x01\ +\x06\x03\0\x12wasi:io/poll@0.2.0\x05\x15\x02\x03\0\x06\x08pollable\x01B\x0f\x02\x03\ +\x02\x01\x16\x04\0\x08pollable\x03\0\0\x01w\x04\0\x07instant\x03\0\x02\x01w\x04\0\ +\x08duration\x03\0\x04\x01@\0\0\x03\x04\0\x03now\x01\x06\x01@\0\0\x05\x04\0\x0ar\ +esolution\x01\x07\x01i\x01\x01@\x01\x04when\x03\0\x08\x04\0\x11subscribe-instant\ +\x01\x09\x01@\x01\x04when\x05\0\x08\x04\0\x12subscribe-duration\x01\x0a\x03\0!wa\ +si:clocks/monotonic-clock@0.2.0\x05\x17\x01B\x04\x04\0\x05error\x03\x01\x01h\0\x01\ +@\x01\x04self\x01\0s\x04\0\x1d[method]error.to-debug-string\x01\x02\x03\0\x13was\ +i:io/error@0.2.0\x05\x18\x02\x03\0\x08\x05error\x01B(\x02\x03\x02\x01\x19\x04\0\x05\ +error\x03\0\0\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\x02\x01i\x01\x01q\x02\x15\ +last-operation-failed\x01\x04\0\x06closed\0\0\x04\0\x0cstream-error\x03\0\x05\x04\ +\0\x0cinput-stream\x03\x01\x04\0\x0doutput-stream\x03\x01\x01h\x07\x01p}\x01j\x01\ +\x0a\x01\x06\x01@\x02\x04self\x09\x03lenw\0\x0b\x04\0\x19[method]input-stream.re\ +ad\x01\x0c\x04\0\"[method]input-stream.blocking-read\x01\x0c\x01j\x01w\x01\x06\x01\ +@\x02\x04self\x09\x03lenw\0\x0d\x04\0\x19[method]input-stream.skip\x01\x0e\x04\0\ +\"[method]input-stream.blocking-skip\x01\x0e\x01i\x03\x01@\x01\x04self\x09\0\x0f\ +\x04\0\x1e[method]input-stream.subscribe\x01\x10\x01h\x08\x01@\x01\x04self\x11\0\ +\x0d\x04\0![method]output-stream.check-write\x01\x12\x01j\0\x01\x06\x01@\x02\x04\ +self\x11\x08contents\x0a\0\x13\x04\0\x1b[method]output-stream.write\x01\x14\x04\0\ +.[method]output-stream.blocking-write-and-flush\x01\x14\x01@\x01\x04self\x11\0\x13\ +\x04\0\x1b[method]output-stream.flush\x01\x15\x04\0$[method]output-stream.blocki\ +ng-flush\x01\x15\x01@\x01\x04self\x11\0\x0f\x04\0\x1f[method]output-stream.subsc\ +ribe\x01\x16\x01@\x02\x04self\x11\x03lenw\0\x13\x04\0\"[method]output-stream.wri\ +te-zeroes\x01\x17\x04\05[method]output-stream.blocking-write-zeroes-and-flush\x01\ +\x17\x01@\x03\x04self\x11\x03src\x09\x03lenw\0\x0d\x04\0\x1c[method]output-strea\ +m.splice\x01\x18\x04\0%[method]output-stream.blocking-splice\x01\x18\x03\0\x15wa\ +si:io/streams@0.2.0\x05\x1a\x02\x03\0\x07\x08duration\x02\x03\0\x09\x0cinput-str\ +eam\x02\x03\0\x09\x0doutput-stream\x01B\xc0\x01\x02\x03\x02\x01\x1b\x04\0\x08dur\ +ation\x03\0\0\x02\x03\x02\x01\x1c\x04\0\x0cinput-stream\x03\0\x02\x02\x03\x02\x01\ +\x1d\x04\0\x0doutput-stream\x03\0\x04\x02\x03\x02\x01\x19\x04\0\x08io-error\x03\0\ +\x06\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\x08\x01q\x0a\x03get\0\0\x04head\ +\0\0\x04post\0\0\x03put\0\0\x06delete\0\0\x07connect\0\0\x07options\0\0\x05trace\ +\0\0\x05patch\0\0\x05other\x01s\0\x04\0\x06method\x03\0\x0a\x01q\x03\x04HTTP\0\0\ +\x05HTTPS\0\0\x05other\x01s\0\x04\0\x06scheme\x03\0\x0c\x01ks\x01k{\x01r\x02\x05\ +rcode\x0e\x09info-code\x0f\x04\0\x11DNS-error-payload\x03\0\x10\x01k}\x01r\x02\x08\ +alert-id\x12\x0dalert-message\x0e\x04\0\x1aTLS-alert-received-payload\x03\0\x13\x01\ +ky\x01r\x02\x0afield-name\x0e\x0afield-size\x15\x04\0\x12field-size-payload\x03\0\ +\x16\x01kw\x01k\x17\x01q'\x0bDNS-timeout\0\0\x09DNS-error\x01\x11\0\x15destinati\ +on-not-found\0\0\x17destination-unavailable\0\0\x19destination-IP-prohibited\0\0\ +\x19destination-IP-unroutable\0\0\x12connection-refused\0\0\x15connection-termin\ +ated\0\0\x12connection-timeout\0\0\x17connection-read-timeout\0\0\x18connection-\ +write-timeout\0\0\x18connection-limit-reached\0\0\x12TLS-protocol-error\0\0\x15T\ +LS-certificate-error\0\0\x12TLS-alert-received\x01\x14\0\x13HTTP-request-denied\0\ +\0\x1cHTTP-request-length-required\0\0\x16HTTP-request-body-size\x01\x18\0\x1bHT\ +TP-request-method-invalid\0\0\x18HTTP-request-URI-invalid\0\0\x19HTTP-request-UR\ +I-too-long\0\0\x20HTTP-request-header-section-size\x01\x15\0\x18HTTP-request-hea\ +der-size\x01\x19\0!HTTP-request-trailer-section-size\x01\x15\0\x19HTTP-request-t\ +railer-size\x01\x17\0\x18HTTP-response-incomplete\0\0!HTTP-response-header-secti\ +on-size\x01\x15\0\x19HTTP-response-header-size\x01\x17\0\x17HTTP-response-body-s\ +ize\x01\x18\0\"HTTP-response-trailer-section-size\x01\x15\0\x1aHTTP-response-tra\ +iler-size\x01\x17\0\x1dHTTP-response-transfer-coding\x01\x0e\0\x1cHTTP-response-\ +content-coding\x01\x0e\0\x15HTTP-response-timeout\0\0\x13HTTP-upgrade-failed\0\0\ +\x13HTTP-protocol-error\0\0\x0dloop-detected\0\0\x13configuration-error\0\0\x0ei\ +nternal-error\x01\x0e\0\x04\0\x0aerror-code\x03\0\x1a\x01q\x03\x0einvalid-syntax\ +\0\0\x09forbidden\0\0\x09immutable\0\0\x04\0\x0cheader-error\x03\0\x1c\x01s\x04\0\ +\x09field-key\x03\0\x1e\x01p}\x04\0\x0bfield-value\x03\0\x20\x04\0\x06fields\x03\ +\x01\x04\0\x07headers\x03\0\"\x04\0\x08trailers\x03\0\"\x04\0\x10incoming-reques\ +t\x03\x01\x04\0\x10outgoing-request\x03\x01\x04\0\x0frequest-options\x03\x01\x04\ +\0\x11response-outparam\x03\x01\x01{\x04\0\x0bstatus-code\x03\0)\x04\0\x11incomi\ +ng-response\x03\x01\x04\0\x0dincoming-body\x03\x01\x04\0\x0ffuture-trailers\x03\x01\ +\x04\0\x11outgoing-response\x03\x01\x04\0\x0doutgoing-body\x03\x01\x04\0\x18futu\ +re-incoming-response\x03\x01\x01i\"\x01@\0\01\x04\0\x13[constructor]fields\x012\x01\ +o\x02\x1f!\x01p3\x01j\x011\x01\x1d\x01@\x01\x07entries4\05\x04\0\x18[static]fiel\ +ds.from-list\x016\x01h\"\x01p!\x01@\x02\x04self7\x04name\x1f\08\x04\0\x12[method\ +]fields.get\x019\x01@\x02\x04self7\x04name\x1f\0\x7f\x04\0\x12[method]fields.has\ +\x01:\x01j\0\x01\x1d\x01@\x03\x04self7\x04name\x1f\x05value8\0;\x04\0\x12[method\ +]fields.set\x01<\x01@\x02\x04self7\x04name\x1f\0;\x04\0\x15[method]fields.delete\ +\x01=\x01@\x03\x04self7\x04name\x1f\x05value!\0;\x04\0\x15[method]fields.append\x01\ +>\x01@\x01\x04self7\04\x04\0\x16[method]fields.entries\x01?\x01@\x01\x04self7\01\ +\x04\0\x14[method]fields.clone\x01@\x01h%\x01@\x01\x04self\xc1\0\0\x0b\x04\0\x1f\ +[method]incoming-request.method\x01B\x01@\x01\x04self\xc1\0\0\x0e\x04\0([method]\ +incoming-request.path-with-query\x01C\x01k\x0d\x01@\x01\x04self\xc1\0\0\xc4\0\x04\ +\0\x1f[method]incoming-request.scheme\x01E\x04\0\"[method]incoming-request.autho\ +rity\x01C\x01i#\x01@\x01\x04self\xc1\0\0\xc6\0\x04\0\x20[method]incoming-request\ +.headers\x01G\x01i,\x01j\x01\xc8\0\0\x01@\x01\x04self\xc1\0\0\xc9\0\x04\0\x20[me\ +thod]incoming-request.consume\x01J\x01i&\x01@\x01\x07headers\xc6\0\0\xcb\0\x04\0\ +\x1d[constructor]outgoing-request\x01L\x01h&\x01i/\x01j\x01\xce\0\0\x01@\x01\x04\ +self\xcd\0\0\xcf\0\x04\0\x1d[method]outgoing-request.body\x01P\x01@\x01\x04self\xcd\ +\0\0\x0b\x04\0\x1f[method]outgoing-request.method\x01Q\x01j\0\0\x01@\x02\x04self\ +\xcd\0\x06method\x0b\0\xd2\0\x04\0#[method]outgoing-request.set-method\x01S\x01@\ +\x01\x04self\xcd\0\0\x0e\x04\0([method]outgoing-request.path-with-query\x01T\x01\ +@\x02\x04self\xcd\0\x0fpath-with-query\x0e\0\xd2\0\x04\0,[method]outgoing-reques\ +t.set-path-with-query\x01U\x01@\x01\x04self\xcd\0\0\xc4\0\x04\0\x1f[method]outgo\ +ing-request.scheme\x01V\x01@\x02\x04self\xcd\0\x06scheme\xc4\0\0\xd2\0\x04\0#[me\ +thod]outgoing-request.set-scheme\x01W\x04\0\"[method]outgoing-request.authority\x01\ +T\x01@\x02\x04self\xcd\0\x09authority\x0e\0\xd2\0\x04\0&[method]outgoing-request\ +.set-authority\x01X\x01@\x01\x04self\xcd\0\0\xc6\0\x04\0\x20[method]outgoing-req\ +uest.headers\x01Y\x01i'\x01@\0\0\xda\0\x04\0\x1c[constructor]request-options\x01\ +[\x01h'\x01k\x01\x01@\x01\x04self\xdc\0\0\xdd\0\x04\0'[method]request-options.co\ +nnect-timeout\x01^\x01@\x02\x04self\xdc\0\x08duration\xdd\0\0\xd2\0\x04\0+[metho\ +d]request-options.set-connect-timeout\x01_\x04\0*[method]request-options.first-b\ +yte-timeout\x01^\x04\0.[method]request-options.set-first-byte-timeout\x01_\x04\0\ +-[method]request-options.between-bytes-timeout\x01^\x04\01[method]request-option\ +s.set-between-bytes-timeout\x01_\x01i(\x01i.\x01j\x01\xe1\0\x01\x1b\x01@\x02\x05\ +param\xe0\0\x08response\xe2\0\x01\0\x04\0\x1d[static]response-outparam.set\x01c\x01\ +h+\x01@\x01\x04self\xe4\0\0*\x04\0\x20[method]incoming-response.status\x01e\x01@\ +\x01\x04self\xe4\0\0\xc6\0\x04\0![method]incoming-response.headers\x01f\x01@\x01\ +\x04self\xe4\0\0\xc9\0\x04\0![method]incoming-response.consume\x01g\x01h,\x01i\x03\ +\x01j\x01\xe9\0\0\x01@\x01\x04self\xe8\0\0\xea\0\x04\0\x1c[method]incoming-body.\ +stream\x01k\x01i-\x01@\x01\x04this\xc8\0\0\xec\0\x04\0\x1c[static]incoming-body.\ +finish\x01m\x01h-\x01i\x09\x01@\x01\x04self\xee\0\0\xef\0\x04\0![method]future-t\ +railers.subscribe\x01p\x01i$\x01k\xf1\0\x01j\x01\xf2\0\x01\x1b\x01j\x01\xf3\0\0\x01\ +k\xf4\0\x01@\x01\x04self\xee\0\0\xf5\0\x04\0\x1b[method]future-trailers.get\x01v\ +\x01@\x01\x07headers\xc6\0\0\xe1\0\x04\0\x1e[constructor]outgoing-response\x01w\x01\ +h.\x01@\x01\x04self\xf8\0\0*\x04\0%[method]outgoing-response.status-code\x01y\x01\ +@\x02\x04self\xf8\0\x0bstatus-code*\0\xd2\0\x04\0)[method]outgoing-response.set-\ +status-code\x01z\x01@\x01\x04self\xf8\0\0\xc6\0\x04\0![method]outgoing-response.\ +headers\x01{\x01@\x01\x04self\xf8\0\0\xcf\0\x04\0\x1e[method]outgoing-response.b\ +ody\x01|\x01h/\x01i\x05\x01j\x01\xfe\0\0\x01@\x01\x04self\xfd\0\0\xff\0\x04\0\x1b\ +[method]outgoing-body.write\x01\x80\x01\x01j\0\x01\x1b\x01@\x02\x04this\xce\0\x08\ +trailers\xf2\0\0\x81\x01\x04\0\x1c[static]outgoing-body.finish\x01\x82\x01\x01h0\ +\x01@\x01\x04self\x83\x01\0\xef\0\x04\0*[method]future-incoming-response.subscri\ +be\x01\x84\x01\x01i+\x01j\x01\x85\x01\x01\x1b\x01j\x01\x86\x01\0\x01k\x87\x01\x01\ +@\x01\x04self\x83\x01\0\x88\x01\x04\0$[method]future-incoming-response.get\x01\x89\ +\x01\x01h\x07\x01k\x1b\x01@\x01\x03err\x8a\x01\0\x8b\x01\x04\0\x0fhttp-error-cod\ +e\x01\x8c\x01\x03\0\x15wasi:http/types@0.2.0\x05\x1e\x02\x03\0\x0a\x10outgoing-r\ +equest\x02\x03\0\x0a\x0frequest-options\x02\x03\0\x0a\x18future-incoming-respons\ +e\x02\x03\0\x0a\x0aerror-code\x01B\x0f\x02\x03\x02\x01\x1f\x04\0\x10outgoing-req\ +uest\x03\0\0\x02\x03\x02\x01\x20\x04\0\x0frequest-options\x03\0\x02\x02\x03\x02\x01\ +!\x04\0\x18future-incoming-response\x03\0\x04\x02\x03\x02\x01\"\x04\0\x0aerror-c\ +ode\x03\0\x06\x01i\x01\x01i\x03\x01k\x09\x01i\x05\x01j\x01\x0b\x01\x07\x01@\x02\x07\ +request\x08\x07options\x0a\0\x0c\x04\0\x06handle\x01\x0d\x03\0\x20wasi:http/outg\ +oing-handler@0.2.0\x05#\x02\x03\0\x01\x10evm-chain-config\x02\x03\0\x01\x13cosmo\ +s-chain-config\x02\x03\0\x02\x17service-and-workflow-id\x02\x03\0\x02\x18workflo\ +w-and-workflow-id\x02\x03\0\0\x09log-level\x02\x03\0\x03\x08event-id\x01B\x1d\x02\ +\x03\x02\x01$\x04\0\x10evm-chain-config\x03\0\0\x02\x03\x02\x01%\x04\0\x13cosmos\ +-chain-config\x03\0\x02\x02\x03\x02\x01&\x04\0\x17service-and-workflow-id\x03\0\x04\ +\x02\x03\x02\x01'\x04\0\x18workflow-and-workflow-id\x03\0\x06\x02\x03\x02\x01(\x04\ +\0\x09log-level\x03\0\x08\x02\x03\x02\x01)\x04\0\x08event-id\x03\0\x0a\x01k\x01\x01\ +@\x01\x09chain-keys\0\x0c\x04\0\x14get-evm-chain-config\x01\x0d\x01k\x03\x01@\x01\ +\x09chain-keys\0\x0e\x04\0\x17get-cosmos-chain-config\x01\x0f\x01ks\x01@\x01\x03\ +keys\0\x10\x04\0\x0aconfig-var\x01\x11\x01@\x02\x05level\x09\x07messages\x01\0\x04\ +\0\x03log\x01\x12\x01@\0\0\x05\x04\0\x0bget-service\x01\x13\x01@\0\0\x07\x04\0\x0c\ +get-workflow\x01\x14\x01@\0\0\x0b\x04\0\x0cget-event-id\x01\x15\x03\0\x04host\x05\ +*\x01B\x0a\x01o\x02ss\x01p\0\x01@\0\0\x01\x04\0\x0fget-environment\x01\x02\x01ps\ +\x01@\0\0\x03\x04\0\x0dget-arguments\x01\x04\x01ks\x01@\0\0\x05\x04\0\x0binitial\ +-cwd\x01\x06\x03\0\x1awasi:cli/environment@0.2.0\x05+\x01B\x03\x01j\0\0\x01@\x01\ +\x06status\0\x01\0\x04\0\x04exit\x01\x01\x03\0\x13wasi:cli/exit@0.2.0\x05,\x01B\x05\ +\x02\x03\x02\x01\x1c\x04\0\x0cinput-stream\x03\0\0\x01i\x01\x01@\0\0\x02\x04\0\x09\ +get-stdin\x01\x03\x03\0\x14wasi:cli/stdin@0.2.0\x05-\x01B\x05\x02\x03\x02\x01\x1d\ +\x04\0\x0doutput-stream\x03\0\0\x01i\x01\x01@\0\0\x02\x04\0\x0aget-stdout\x01\x03\ +\x03\0\x15wasi:cli/stdout@0.2.0\x05.\x01B\x05\x02\x03\x02\x01\x1d\x04\0\x0doutpu\ +t-stream\x03\0\0\x01i\x01\x01@\0\0\x02\x04\0\x0aget-stderr\x01\x03\x03\0\x15wasi\ +:cli/stderr@0.2.0\x05/\x01B\x01\x04\0\x0eterminal-input\x03\x01\x03\0\x1dwasi:cl\ +i/terminal-input@0.2.0\x050\x01B\x01\x04\0\x0fterminal-output\x03\x01\x03\0\x1ew\ +asi:cli/terminal-output@0.2.0\x051\x02\x03\0\x12\x0eterminal-input\x01B\x06\x02\x03\ +\x02\x012\x04\0\x0eterminal-input\x03\0\0\x01i\x01\x01k\x02\x01@\0\0\x03\x04\0\x12\ +get-terminal-stdin\x01\x04\x03\0\x1dwasi:cli/terminal-stdin@0.2.0\x053\x02\x03\0\ +\x13\x0fterminal-output\x01B\x06\x02\x03\x02\x014\x04\0\x0fterminal-output\x03\0\ +\0\x01i\x01\x01k\x02\x01@\0\0\x03\x04\0\x13get-terminal-stdout\x01\x04\x03\0\x1e\ +wasi:cli/terminal-stdout@0.2.0\x055\x01B\x06\x02\x03\x02\x014\x04\0\x0fterminal-\ +output\x03\0\0\x01i\x01\x01k\x02\x01@\0\0\x03\x04\0\x13get-terminal-stderr\x01\x04\ +\x03\0\x1ewasi:cli/terminal-stderr@0.2.0\x056\x01B\x05\x01r\x02\x07secondsw\x0bn\ +anosecondsy\x04\0\x08datetime\x03\0\0\x01@\0\0\x01\x04\0\x03now\x01\x02\x04\0\x0a\ +resolution\x01\x02\x03\0\x1cwasi:clocks/wall-clock@0.2.0\x057\x02\x03\0\x09\x05e\ +rror\x02\x03\0\x17\x08datetime\x01Br\x02\x03\x02\x01\x1c\x04\0\x0cinput-stream\x03\ +\0\0\x02\x03\x02\x01\x1d\x04\0\x0doutput-stream\x03\0\x02\x02\x03\x02\x018\x04\0\ +\x05error\x03\0\x04\x02\x03\x02\x019\x04\0\x08datetime\x03\0\x06\x01w\x04\0\x08f\ +ilesize\x03\0\x08\x01m\x08\x07unknown\x0cblock-device\x10character-device\x09dir\ +ectory\x04fifo\x0dsymbolic-link\x0cregular-file\x06socket\x04\0\x0fdescriptor-ty\ +pe\x03\0\x0a\x01n\x06\x04read\x05write\x13file-integrity-sync\x13data-integrity-\ +sync\x14requested-write-sync\x10mutate-directory\x04\0\x10descriptor-flags\x03\0\ +\x0c\x01n\x01\x0esymlink-follow\x04\0\x0apath-flags\x03\0\x0e\x01n\x04\x06create\ +\x09directory\x09exclusive\x08truncate\x04\0\x0aopen-flags\x03\0\x10\x01w\x04\0\x0a\ +link-count\x03\0\x12\x01k\x07\x01r\x06\x04type\x0b\x0alink-count\x13\x04size\x09\ +\x15data-access-timestamp\x14\x1bdata-modification-timestamp\x14\x17status-chang\ +e-timestamp\x14\x04\0\x0fdescriptor-stat\x03\0\x15\x01q\x03\x09no-change\0\0\x03\ +now\0\0\x09timestamp\x01\x07\0\x04\0\x0dnew-timestamp\x03\0\x17\x01r\x02\x04type\ +\x0b\x04names\x04\0\x0fdirectory-entry\x03\0\x19\x01m%\x06access\x0bwould-block\x07\ +already\x0ebad-descriptor\x04busy\x08deadlock\x05quota\x05exist\x0efile-too-larg\ +e\x15illegal-byte-sequence\x0bin-progress\x0binterrupted\x07invalid\x02io\x0cis-\ +directory\x04loop\x0etoo-many-links\x0cmessage-size\x0dname-too-long\x09no-devic\ +e\x08no-entry\x07no-lock\x13insufficient-memory\x12insufficient-space\x0dnot-dir\ +ectory\x09not-empty\x0fnot-recoverable\x0bunsupported\x06no-tty\x0eno-such-devic\ +e\x08overflow\x0dnot-permitted\x04pipe\x09read-only\x0cinvalid-seek\x0etext-file\ +-busy\x0ccross-device\x04\0\x0aerror-code\x03\0\x1b\x01m\x06\x06normal\x0asequen\ +tial\x06random\x09will-need\x09dont-need\x08no-reuse\x04\0\x06advice\x03\0\x1d\x01\ +r\x02\x05lowerw\x05upperw\x04\0\x13metadata-hash-value\x03\0\x1f\x04\0\x0adescri\ +ptor\x03\x01\x04\0\x16directory-entry-stream\x03\x01\x01h!\x01i\x01\x01j\x01$\x01\ +\x1c\x01@\x02\x04self#\x06offset\x09\0%\x04\0\"[method]descriptor.read-via-strea\ +m\x01&\x01i\x03\x01j\x01'\x01\x1c\x01@\x02\x04self#\x06offset\x09\0(\x04\0#[meth\ +od]descriptor.write-via-stream\x01)\x01@\x01\x04self#\0(\x04\0$[method]descripto\ +r.append-via-stream\x01*\x01j\0\x01\x1c\x01@\x04\x04self#\x06offset\x09\x06lengt\ +h\x09\x06advice\x1e\0+\x04\0\x19[method]descriptor.advise\x01,\x01@\x01\x04self#\ +\0+\x04\0\x1c[method]descriptor.sync-data\x01-\x01j\x01\x0d\x01\x1c\x01@\x01\x04\ +self#\0.\x04\0\x1c[method]descriptor.get-flags\x01/\x01j\x01\x0b\x01\x1c\x01@\x01\ +\x04self#\00\x04\0\x1b[method]descriptor.get-type\x011\x01@\x02\x04self#\x04size\ +\x09\0+\x04\0\x1b[method]descriptor.set-size\x012\x01@\x03\x04self#\x15data-acce\ +ss-timestamp\x18\x1bdata-modification-timestamp\x18\0+\x04\0\x1c[method]descript\ +or.set-times\x013\x01p}\x01o\x024\x7f\x01j\x015\x01\x1c\x01@\x03\x04self#\x06len\ +gth\x09\x06offset\x09\06\x04\0\x17[method]descriptor.read\x017\x01j\x01\x09\x01\x1c\ +\x01@\x03\x04self#\x06buffer4\x06offset\x09\08\x04\0\x18[method]descriptor.write\ +\x019\x01i\"\x01j\x01:\x01\x1c\x01@\x01\x04self#\0;\x04\0![method]descriptor.rea\ +d-directory\x01<\x04\0\x17[method]descriptor.sync\x01-\x01@\x02\x04self#\x04path\ +s\0+\x04\0&[method]descriptor.create-directory-at\x01=\x01j\x01\x16\x01\x1c\x01@\ +\x01\x04self#\0>\x04\0\x17[method]descriptor.stat\x01?\x01@\x03\x04self#\x0apath\ +-flags\x0f\x04paths\0>\x04\0\x1a[method]descriptor.stat-at\x01@\x01@\x05\x04self\ +#\x0apath-flags\x0f\x04paths\x15data-access-timestamp\x18\x1bdata-modification-t\ +imestamp\x18\0+\x04\0\x1f[method]descriptor.set-times-at\x01A\x01@\x05\x04self#\x0e\ +old-path-flags\x0f\x08old-paths\x0enew-descriptor#\x08new-paths\0+\x04\0\x1a[met\ +hod]descriptor.link-at\x01B\x01i!\x01j\x01\xc3\0\x01\x1c\x01@\x05\x04self#\x0apa\ +th-flags\x0f\x04paths\x0aopen-flags\x11\x05flags\x0d\0\xc4\0\x04\0\x1a[method]de\ +scriptor.open-at\x01E\x01j\x01s\x01\x1c\x01@\x02\x04self#\x04paths\0\xc6\0\x04\0\ +\x1e[method]descriptor.readlink-at\x01G\x04\0&[method]descriptor.remove-director\ +y-at\x01=\x01@\x04\x04self#\x08old-paths\x0enew-descriptor#\x08new-paths\0+\x04\0\ +\x1c[method]descriptor.rename-at\x01H\x01@\x03\x04self#\x08old-paths\x08new-path\ +s\0+\x04\0\x1d[method]descriptor.symlink-at\x01I\x04\0![method]descriptor.unlink\ +-file-at\x01=\x01@\x02\x04self#\x05other#\0\x7f\x04\0![method]descriptor.is-same\ +-object\x01J\x01j\x01\x20\x01\x1c\x01@\x01\x04self#\0\xcb\0\x04\0\x20[method]des\ +criptor.metadata-hash\x01L\x01@\x03\x04self#\x0apath-flags\x0f\x04paths\0\xcb\0\x04\ +\0#[method]descriptor.metadata-hash-at\x01M\x01h\"\x01k\x1a\x01j\x01\xcf\0\x01\x1c\ +\x01@\x01\x04self\xce\0\0\xd0\0\x04\03[method]directory-entry-stream.read-direct\ +ory-entry\x01Q\x01h\x05\x01k\x1c\x01@\x01\x03err\xd2\0\0\xd3\0\x04\0\x15filesyst\ +em-error-code\x01T\x03\0\x1bwasi:filesystem/types@0.2.0\x05:\x02\x03\0\x18\x0ade\ +scriptor\x01B\x07\x02\x03\x02\x01;\x04\0\x0adescriptor\x03\0\0\x01i\x01\x01o\x02\ +\x02s\x01p\x03\x01@\0\0\x04\x04\0\x0fget-directories\x01\x05\x03\0\x1ewasi:files\ +ystem/preopens@0.2.0\x05<\x01B\x11\x04\0\x07network\x03\x01\x01m\x15\x07unknown\x0d\ +access-denied\x0dnot-supported\x10invalid-argument\x0dout-of-memory\x07timeout\x14\ +concurrency-conflict\x0fnot-in-progress\x0bwould-block\x0dinvalid-state\x10new-s\ +ocket-limit\x14address-not-bindable\x0eaddress-in-use\x12remote-unreachable\x12c\ +onnection-refused\x10connection-reset\x12connection-aborted\x12datagram-too-larg\ +e\x11name-unresolvable\x1atemporary-resolver-failure\x1apermanent-resolver-failu\ +re\x04\0\x0aerror-code\x03\0\x01\x01m\x02\x04ipv4\x04ipv6\x04\0\x11ip-address-fa\ +mily\x03\0\x03\x01o\x04}}}}\x04\0\x0cipv4-address\x03\0\x05\x01o\x08{{{{{{{{\x04\ +\0\x0cipv6-address\x03\0\x07\x01q\x02\x04ipv4\x01\x06\0\x04ipv6\x01\x08\0\x04\0\x0a\ +ip-address\x03\0\x09\x01r\x02\x04port{\x07address\x06\x04\0\x13ipv4-socket-addre\ +ss\x03\0\x0b\x01r\x04\x04port{\x09flow-infoy\x07address\x08\x08scope-idy\x04\0\x13\ +ipv6-socket-address\x03\0\x0d\x01q\x02\x04ipv4\x01\x0c\0\x04ipv6\x01\x0e\0\x04\0\ +\x11ip-socket-address\x03\0\x0f\x03\0\x1awasi:sockets/network@0.2.0\x05=\x02\x03\ +\0\x1a\x07network\x01B\x05\x02\x03\x02\x01>\x04\0\x07network\x03\0\0\x01i\x01\x01\ +@\0\0\x02\x04\0\x10instance-network\x01\x03\x03\0#wasi:sockets/instance-network@\ +0.2.0\x05?\x02\x03\0\x1a\x0aerror-code\x02\x03\0\x1a\x11ip-socket-address\x02\x03\ +\0\x1a\x11ip-address-family\x01BD\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\0\x02\ +\x03\x02\x01>\x04\0\x07network\x03\0\x02\x02\x03\x02\x01@\x04\0\x0aerror-code\x03\ +\0\x04\x02\x03\x02\x01A\x04\0\x11ip-socket-address\x03\0\x06\x02\x03\x02\x01B\x04\ +\0\x11ip-address-family\x03\0\x08\x01p}\x01r\x02\x04data\x0a\x0eremote-address\x07\ +\x04\0\x11incoming-datagram\x03\0\x0b\x01k\x07\x01r\x02\x04data\x0a\x0eremote-ad\ +dress\x0d\x04\0\x11outgoing-datagram\x03\0\x0e\x04\0\x0audp-socket\x03\x01\x04\0\ +\x18incoming-datagram-stream\x03\x01\x04\0\x18outgoing-datagram-stream\x03\x01\x01\ +h\x10\x01h\x03\x01j\0\x01\x05\x01@\x03\x04self\x13\x07network\x14\x0dlocal-addre\ +ss\x07\0\x15\x04\0\x1d[method]udp-socket.start-bind\x01\x16\x01@\x01\x04self\x13\ +\0\x15\x04\0\x1e[method]udp-socket.finish-bind\x01\x17\x01i\x11\x01i\x12\x01o\x02\ +\x18\x19\x01j\x01\x1a\x01\x05\x01@\x02\x04self\x13\x0eremote-address\x0d\0\x1b\x04\ +\0\x19[method]udp-socket.stream\x01\x1c\x01j\x01\x07\x01\x05\x01@\x01\x04self\x13\ +\0\x1d\x04\0\x20[method]udp-socket.local-address\x01\x1e\x04\0![method]udp-socke\ +t.remote-address\x01\x1e\x01@\x01\x04self\x13\0\x09\x04\0![method]udp-socket.add\ +ress-family\x01\x1f\x01j\x01}\x01\x05\x01@\x01\x04self\x13\0\x20\x04\0$[method]u\ +dp-socket.unicast-hop-limit\x01!\x01@\x02\x04self\x13\x05value}\0\x15\x04\0([met\ +hod]udp-socket.set-unicast-hop-limit\x01\"\x01j\x01w\x01\x05\x01@\x01\x04self\x13\ +\0#\x04\0&[method]udp-socket.receive-buffer-size\x01$\x01@\x02\x04self\x13\x05va\ +luew\0\x15\x04\0*[method]udp-socket.set-receive-buffer-size\x01%\x04\0#[method]u\ +dp-socket.send-buffer-size\x01$\x04\0'[method]udp-socket.set-send-buffer-size\x01\ +%\x01i\x01\x01@\x01\x04self\x13\0&\x04\0\x1c[method]udp-socket.subscribe\x01'\x01\ +h\x11\x01p\x0c\x01j\x01)\x01\x05\x01@\x02\x04self(\x0bmax-resultsw\0*\x04\0([met\ +hod]incoming-datagram-stream.receive\x01+\x01@\x01\x04self(\0&\x04\0*[method]inc\ +oming-datagram-stream.subscribe\x01,\x01h\x12\x01@\x01\x04self-\0#\x04\0+[method\ +]outgoing-datagram-stream.check-send\x01.\x01p\x0f\x01@\x02\x04self-\x09datagram\ +s/\0#\x04\0%[method]outgoing-datagram-stream.send\x010\x01@\x01\x04self-\0&\x04\0\ +*[method]outgoing-datagram-stream.subscribe\x011\x03\0\x16wasi:sockets/udp@0.2.0\ +\x05C\x02\x03\0\x1c\x0audp-socket\x01B\x0c\x02\x03\x02\x01>\x04\0\x07network\x03\ +\0\0\x02\x03\x02\x01@\x04\0\x0aerror-code\x03\0\x02\x02\x03\x02\x01B\x04\0\x11ip\ +-address-family\x03\0\x04\x02\x03\x02\x01D\x04\0\x0audp-socket\x03\0\x06\x01i\x07\ +\x01j\x01\x08\x01\x03\x01@\x01\x0eaddress-family\x05\0\x09\x04\0\x11create-udp-s\ +ocket\x01\x0a\x03\0$wasi:sockets/udp-create-socket@0.2.0\x05E\x01BT\x02\x03\x02\x01\ +\x1c\x04\0\x0cinput-stream\x03\0\0\x02\x03\x02\x01\x1d\x04\0\x0doutput-stream\x03\ +\0\x02\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\x04\x02\x03\x02\x01\x1b\x04\0\ +\x08duration\x03\0\x06\x02\x03\x02\x01>\x04\0\x07network\x03\0\x08\x02\x03\x02\x01\ +@\x04\0\x0aerror-code\x03\0\x0a\x02\x03\x02\x01A\x04\0\x11ip-socket-address\x03\0\ +\x0c\x02\x03\x02\x01B\x04\0\x11ip-address-family\x03\0\x0e\x01m\x03\x07receive\x04\ +send\x04both\x04\0\x0dshutdown-type\x03\0\x10\x04\0\x0atcp-socket\x03\x01\x01h\x12\ +\x01h\x09\x01j\0\x01\x0b\x01@\x03\x04self\x13\x07network\x14\x0dlocal-address\x0d\ +\0\x15\x04\0\x1d[method]tcp-socket.start-bind\x01\x16\x01@\x01\x04self\x13\0\x15\ +\x04\0\x1e[method]tcp-socket.finish-bind\x01\x17\x01@\x03\x04self\x13\x07network\ +\x14\x0eremote-address\x0d\0\x15\x04\0\x20[method]tcp-socket.start-connect\x01\x18\ +\x01i\x01\x01i\x03\x01o\x02\x19\x1a\x01j\x01\x1b\x01\x0b\x01@\x01\x04self\x13\0\x1c\ +\x04\0![method]tcp-socket.finish-connect\x01\x1d\x04\0\x1f[method]tcp-socket.sta\ +rt-listen\x01\x17\x04\0\x20[method]tcp-socket.finish-listen\x01\x17\x01i\x12\x01\ +o\x03\x1e\x19\x1a\x01j\x01\x1f\x01\x0b\x01@\x01\x04self\x13\0\x20\x04\0\x19[meth\ +od]tcp-socket.accept\x01!\x01j\x01\x0d\x01\x0b\x01@\x01\x04self\x13\0\"\x04\0\x20\ +[method]tcp-socket.local-address\x01#\x04\0![method]tcp-socket.remote-address\x01\ +#\x01@\x01\x04self\x13\0\x7f\x04\0\x1f[method]tcp-socket.is-listening\x01$\x01@\x01\ +\x04self\x13\0\x0f\x04\0![method]tcp-socket.address-family\x01%\x01@\x02\x04self\ +\x13\x05valuew\0\x15\x04\0*[method]tcp-socket.set-listen-backlog-size\x01&\x01j\x01\ +\x7f\x01\x0b\x01@\x01\x04self\x13\0'\x04\0%[method]tcp-socket.keep-alive-enabled\ +\x01(\x01@\x02\x04self\x13\x05value\x7f\0\x15\x04\0)[method]tcp-socket.set-keep-\ +alive-enabled\x01)\x01j\x01\x07\x01\x0b\x01@\x01\x04self\x13\0*\x04\0'[method]tc\ +p-socket.keep-alive-idle-time\x01+\x01@\x02\x04self\x13\x05value\x07\0\x15\x04\0\ ++[method]tcp-socket.set-keep-alive-idle-time\x01,\x04\0&[method]tcp-socket.keep-\ +alive-interval\x01+\x04\0*[method]tcp-socket.set-keep-alive-interval\x01,\x01j\x01\ +y\x01\x0b\x01@\x01\x04self\x13\0-\x04\0#[method]tcp-socket.keep-alive-count\x01.\ +\x01@\x02\x04self\x13\x05valuey\0\x15\x04\0'[method]tcp-socket.set-keep-alive-co\ +unt\x01/\x01j\x01}\x01\x0b\x01@\x01\x04self\x13\00\x04\0\x1c[method]tcp-socket.h\ +op-limit\x011\x01@\x02\x04self\x13\x05value}\0\x15\x04\0\x20[method]tcp-socket.s\ +et-hop-limit\x012\x01j\x01w\x01\x0b\x01@\x01\x04self\x13\03\x04\0&[method]tcp-so\ +cket.receive-buffer-size\x014\x04\0*[method]tcp-socket.set-receive-buffer-size\x01\ +&\x04\0#[method]tcp-socket.send-buffer-size\x014\x04\0'[method]tcp-socket.set-se\ +nd-buffer-size\x01&\x01i\x05\x01@\x01\x04self\x13\05\x04\0\x1c[method]tcp-socket\ +.subscribe\x016\x01@\x02\x04self\x13\x0dshutdown-type\x11\0\x15\x04\0\x1b[method\ +]tcp-socket.shutdown\x017\x03\0\x16wasi:sockets/tcp@0.2.0\x05F\x02\x03\0\x1e\x0a\ +tcp-socket\x01B\x0c\x02\x03\x02\x01>\x04\0\x07network\x03\0\0\x02\x03\x02\x01@\x04\ +\0\x0aerror-code\x03\0\x02\x02\x03\x02\x01B\x04\0\x11ip-address-family\x03\0\x04\ +\x02\x03\x02\x01G\x04\0\x0atcp-socket\x03\0\x06\x01i\x07\x01j\x01\x08\x01\x03\x01\ +@\x01\x0eaddress-family\x05\0\x09\x04\0\x11create-tcp-socket\x01\x0a\x03\0$wasi:\ +sockets/tcp-create-socket@0.2.0\x05H\x02\x03\0\x1a\x0aip-address\x01B\x16\x02\x03\ +\x02\x01\x16\x04\0\x08pollable\x03\0\0\x02\x03\x02\x01>\x04\0\x07network\x03\0\x02\ +\x02\x03\x02\x01@\x04\0\x0aerror-code\x03\0\x04\x02\x03\x02\x01I\x04\0\x0aip-add\ +ress\x03\0\x06\x04\0\x16resolve-address-stream\x03\x01\x01h\x08\x01k\x07\x01j\x01\ +\x0a\x01\x05\x01@\x01\x04self\x09\0\x0b\x04\03[method]resolve-address-stream.res\ +olve-next-address\x01\x0c\x01i\x01\x01@\x01\x04self\x09\0\x0d\x04\0([method]reso\ +lve-address-stream.subscribe\x01\x0e\x01h\x03\x01i\x08\x01j\x01\x10\x01\x05\x01@\ +\x02\x07network\x0f\x04names\0\x11\x04\0\x11resolve-addresses\x01\x12\x03\0!wasi\ +:sockets/ip-name-lookup@0.2.0\x05J\x01B\x05\x01p}\x01@\x01\x03lenw\0\0\x04\0\x10\ +get-random-bytes\x01\x01\x01@\0\0w\x04\0\x0eget-random-u64\x01\x02\x03\0\x18wasi\ +:random/random@0.2.0\x05K\x01B\x05\x01p}\x01@\x01\x03lenw\0\0\x04\0\x19get-insec\ +ure-random-bytes\x01\x01\x01@\0\0w\x04\0\x17get-insecure-random-u64\x01\x02\x03\0\ +\x1awasi:random/insecure@0.2.0\x05L\x01B\x03\x01o\x02ww\x01@\0\0\0\x04\0\x0dinse\ +cure-seed\x01\x01\x03\0\x1fwasi:random/insecure-seed@0.2.0\x05M\x01B\x1c\x01q\x03\ +\x0dno-such-store\0\0\x0daccess-denied\0\0\x05other\x01s\0\x04\0\x05error\x03\0\0\ +\x01ps\x01ks\x01r\x02\x04keys\x02\x06cursor\x03\x04\0\x0ckey-response\x03\0\x04\x04\ +\0\x06bucket\x03\x01\x01h\x06\x01p}\x01k\x08\x01j\x01\x09\x01\x01\x01@\x02\x04se\ +lf\x07\x03keys\0\x0a\x04\0\x12[method]bucket.get\x01\x0b\x01j\0\x01\x01\x01@\x03\ +\x04self\x07\x03keys\x05value\x08\0\x0c\x04\0\x12[method]bucket.set\x01\x0d\x01@\ +\x02\x04self\x07\x03keys\0\x0c\x04\0\x15[method]bucket.delete\x01\x0e\x01j\x01\x7f\ +\x01\x01\x01@\x02\x04self\x07\x03keys\0\x0f\x04\0\x15[method]bucket.exists\x01\x10\ +\x01j\x01\x05\x01\x01\x01@\x02\x04self\x07\x06cursor\x03\0\x11\x04\0\x18[method]\ +bucket.list-keys\x01\x12\x01i\x06\x01j\x01\x13\x01\x01\x01@\x01\x0aidentifiers\0\ +\x14\x04\0\x04open\x01\x15\x03\0\x20wasi:keyvalue/store@0.2.0-draft2\x05N\x02\x03\ +\0$\x06bucket\x02\x03\0$\x05error\x01B\x18\x02\x03\x02\x01O\x04\0\x06bucket\x03\0\ +\0\x02\x03\x02\x01P\x04\0\x05error\x03\0\x02\x04\0\x03cas\x03\x01\x01i\x04\x01q\x02\ +\x0bstore-error\x01\x03\0\x0acas-failed\x01\x05\0\x04\0\x09cas-error\x03\0\x06\x01\ +h\x01\x01j\x01\x05\x01\x03\x01@\x02\x06bucket\x08\x03keys\0\x09\x04\0\x0f[static\ +]cas.new\x01\x0a\x01h\x04\x01p}\x01k\x0c\x01j\x01\x0d\x01\x03\x01@\x01\x04self\x0b\ +\0\x0e\x04\0\x13[method]cas.current\x01\x0f\x01j\x01x\x01\x03\x01@\x03\x06bucket\ +\x08\x03keys\x05deltax\0\x10\x04\0\x09increment\x01\x11\x01j\0\x01\x07\x01@\x02\x03\ +cas\x05\x05value\x0c\0\x12\x04\0\x04swap\x01\x13\x03\0\"wasi:keyvalue/atomics@0.\ +2.0-draft2\x05Q\x01B\x13\x02\x03\x02\x01O\x04\0\x06bucket\x03\0\0\x02\x03\x02\x01\ +P\x04\0\x05error\x03\0\x02\x01h\x01\x01ps\x01p}\x01o\x02s\x06\x01k\x07\x01p\x08\x01\ +j\x01\x09\x01\x03\x01@\x02\x06bucket\x04\x04keys\x05\0\x0a\x04\0\x08get-many\x01\ +\x0b\x01p\x07\x01j\0\x01\x03\x01@\x02\x06bucket\x04\x0akey-values\x0c\0\x0d\x04\0\ +\x08set-many\x01\x0e\x01@\x02\x06bucket\x04\x04keys\x05\0\x0d\x04\0\x0bdelete-ma\ +ny\x01\x0f\x03\0\x20wasi:keyvalue/batch@0.2.0-draft2\x05R\x01k\x14\x01j\x01\xd3\0\ +\x01s\x01@\x01\x0etrigger-action\x11\0\xd4\0\x04\0\x03run\x01U\x04\0\x1ewavs:ope\ +rator/wavs-world@1.3.0\x04\0\x0b\x10\x01\0\x0awavs-world\x03\0\0\0G\x09producers\ +\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x060.41\ +.0"; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen_rt::maybe_link_cabi_realloc(); +} diff --git a/components/actor/src/context.rs b/components/actor/src/context.rs new file mode 100644 index 00000000..acc4e429 --- /dev/null +++ b/components/actor/src/context.rs @@ -0,0 +1,497 @@ +use crate::bindings::host::get_evm_chain_config; +use alloy_network::Ethereum; +use alloy_primitives::{Address, TxKind, U256}; +use alloy_provider::{Provider, RootProvider}; +use alloy_rpc_types::{eth::TransactionRequest, TransactionInput}; +use alloy_sol_types::{sol, SolCall}; +use serde::{Deserialize, Serialize}; +use std::str::FromStr; +use std::{collections::HashMap, env}; +use wavs_llm::{client::Message, config::Config, contracts::Contract, types::LlmOptions}; + +use wavs_wasi_utils::evm::new_evm_provider; +use wavs_wasi_utils::http::{fetch_json, http_request_get}; +use wstd::{http::HeaderValue, runtime::block_on}; + +// ERC20 interface definition using alloy-sol-types +sol! { + interface IERC20 { + function balanceOf(address owner) external view returns (uint256); + function decimals() external view returns (uint8); + function symbol() external view returns (string); + } +} + +/// Context for the DAO agent's decision making +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DaoContext { + pub account_address: String, + pub allowlisted_addresses: Vec, + pub supported_tokens: Vec, + pub llm_context: Config, +} + +impl DaoContext { + /// Load context from environment variable CONFIG_URI or use default + pub fn load() -> Result { + block_on(async move { + // Check if CONFIG_URI environment variable is set + if let Ok(config_uri) = env::var("config_uri") { + println!("Loading config from URI: {}", config_uri); + + Self::load_from_uri(&config_uri).await + } else { + println!("No CONFIG_URI found, using default configuration"); + Ok(Self::default()) + } + }) + } + + /// Load context from a URI + pub async fn load_from_uri(uri: &str) -> Result { + // Strip any quotation marks from the URI + let clean_uri = uri.trim_matches('"'); + + println!("Loading config from URI: {}", clean_uri); + + // Check URI scheme + if let Some(uri_with_scheme) = clean_uri.strip_prefix("ipfs://") { + // IPFS URI scheme detected + Self::load_from_ipfs(uri_with_scheme).await + } else if clean_uri.starts_with("http://") || clean_uri.starts_with("https://") { + // HTTP URI scheme detected + Self::fetch_from_uri(clean_uri).await + } else { + // Only support http/https and ipfs URIs + Err(format!("Unsupported URI scheme: {}", clean_uri)) + } + } + + /// Load configuration from IPFS + async fn load_from_ipfs(cid: &str) -> Result { + let gateway_url = std::env::var("WAVS_ENV_IPFS_GATEWAY_URL").unwrap_or_else(|_| { + println!("WAVS_ENV_IPFS_GATEWAY_URL not set, using default"); + "https://gateway.lighthouse.storage/ipfs".to_string() + }); + + // Strip any quotation marks from the gateway URL + let clean_gateway_url = gateway_url.trim_matches('"'); + + // Construct HTTP URL, avoiding duplicate /ipfs in the path + let http_url = if clean_gateway_url.ends_with("/ipfs") { + format!("{}/{}", clean_gateway_url, cid) + } else if clean_gateway_url.ends_with("/ipfs/") { + format!("{}{}", clean_gateway_url, cid) + } else if clean_gateway_url.ends_with("/") { + format!("{}ipfs/{}", clean_gateway_url, cid) + } else { + format!("{}/ipfs/{}", clean_gateway_url, cid) + }; + + println!("Fetching IPFS config from: {}", http_url); + Self::fetch_from_uri(&http_url).await + } + + /// Fetch configuration from a HTTP/HTTPS URI + async fn fetch_from_uri(uri: &str) -> Result { + // Strip any quotation marks from the URI + let clean_uri = uri.trim_matches('"'); + + println!("Creating HTTP request for URI: {}", clean_uri); + + // Create HTTP request + let mut req = http_request_get(clean_uri).map_err(|e| { + let error_msg = format!("Failed to create request: {}", e); + println!("Error: {}", error_msg); + error_msg + })?; + + // Add appropriate headers for JSON content + req.headers_mut().insert("Accept", HeaderValue::from_static("application/json")); + + println!("Sending HTTP request..."); + + // Execute HTTP request and parse response as JSON directly to DaoContext + let dao_context: DaoContext = fetch_json(req).await.unwrap(); + + println!("Successfully loaded configuration"); + Ok(dao_context) + } + + /// Create a new DaoContext from a JSON string + pub fn from_json(json_str: &str) -> Result { + // Directly deserialize the JSON to DaoContext + serde_json::from_str(json_str) + .map_err(|e| format!("Failed to parse context from JSON: {}", e)) + } + + /// Serialize the context to a JSON string + pub fn to_json(&self) -> Result { + serde_json::to_string_pretty(self) + .map_err(|e| format!("Failed to serialize context to JSON: {}", e)) + } + + /// Check if an address is in the allowed list + pub fn is_address_allowed(&self, address: &str) -> bool { + self.allowlisted_addresses.iter().any(|a| a.to_lowercase() == address.to_lowercase()) + } + + /// Get list of supported token symbols + pub fn get_supported_token_symbols(&self) -> Vec { + self.supported_tokens.iter().map(|t| t.symbol.clone()).collect() + } + + /// Query the ETH balance for this DAO's account + pub async fn query_eth_balance(&self) -> Result { + let chain_config = get_evm_chain_config("local").unwrap(); + let provider: RootProvider = + new_evm_provider::(chain_config.http_endpoint.unwrap()); + + let address = Address::from_str(&self.account_address) + .map_err(|_| format!("Invalid address format: {}", self.account_address))?; + + provider + .get_balance(address) + .await + .map_err(|e| format!("Failed to query ETH balance: {}", e)) + } + + /// Query an ERC20 token balance + pub async fn query_token_balance(&self, token_address: &str) -> Result { + let chain_config = get_evm_chain_config("local").unwrap(); + let provider: RootProvider = + new_evm_provider::(chain_config.http_endpoint.unwrap()); + // Parse addresses + let account = Address::from_str(&self.account_address) + .map_err(|_| format!("Invalid account address format: {}", self.account_address))?; + + let token = Address::from_str(token_address) + .map_err(|_| format!("Invalid token address format: {}", token_address))?; + + // Get token balance + let balance_call = IERC20::balanceOfCall { owner: account }; + let balance_tx = TransactionRequest { + to: Some(TxKind::Call(token)), + input: TransactionInput { input: Some(balance_call.abi_encode().into()), data: None }, + ..Default::default() + }; + + let balance_result = provider + .call(balance_tx) + .await + .map_err(|e| format!("Failed to query token balance: {}", e))?; + let balance = U256::from_be_slice(&balance_result); + + // Get token decimals + let decimals_call = IERC20::decimalsCall {}; + let decimals_tx = TransactionRequest { + to: Some(TxKind::Call(token)), + input: TransactionInput { input: Some(decimals_call.abi_encode().into()), data: None }, + ..Default::default() + }; + + let decimals_result = provider + .call(decimals_tx) + .await + .map_err(|e| format!("Failed to query token decimals: {}", e))?; + + // Properly decode the decimals response (uint8) + // The response should be a 32-byte value with the uint8 value in the last byte + let decimals = if decimals_result.len() >= 32 { + // Extract the last byte which contains the uint8 value + decimals_result[31] + } else { + // Default to 18 if response is not as expected + println!("Warning: Unexpected decimals response format, defaulting to 18"); + 18 + }; + + // Get token symbol + let symbol_call = IERC20::symbolCall {}; + let symbol_tx = TransactionRequest { + to: Some(TxKind::Call(token)), + input: TransactionInput { input: Some(symbol_call.abi_encode().into()), data: None }, + ..Default::default() + }; + + let symbol_result = provider + .call(symbol_tx) + .await + .map_err(|e| format!("Failed to query token symbol: {}", e))?; + + // Parse the symbol from the result bytes (ABI-encoded string) + let symbol = if symbol_result.len() > 64 { + // The first 32 bytes are the offset, the next 32 bytes are the length + let length = U256::from_be_slice(&symbol_result[32..64]).as_limbs()[0] as usize; + if length > 0 && symbol_result.len() >= 64 + length { + let symbol_bytes = &symbol_result[64..64 + length]; + String::from_utf8_lossy(symbol_bytes).to_string() + } else { + "UNKNOWN".to_string() + } + } else { + "UNKNOWN".to_string() + }; + + // Create a TokenBalance + Ok(TokenBalance { + token_address: token_address.to_string(), + symbol, + balance: balance.to_string(), + decimals, + }) + } + + /// Query all supported token balances + pub async fn query_all_token_balances(&self) -> Result, String> { + let mut balances = Vec::new(); + + // Query ETH balance + let eth_balance = self.query_eth_balance().await?; + balances.push(TokenBalance { + token_address: "0x0000000000000000000000000000000000000000".to_string(), + symbol: "ETH".to_string(), + balance: eth_balance.to_string(), + decimals: 18, + }); + + // Query each supported token + for token in &self.supported_tokens { + if token.symbol.to_uppercase() != "ETH" { + match self.query_token_balance(&token.address).await { + Ok(balance) => balances.push(balance), + Err(e) => println!("Failed to query balance for {}: {}", token.symbol, e), + } + } + } + + Ok(balances) + } + + /// Format balances for display in the prompt with dynamic balance fetching + pub async fn format_balances_dynamic(&self) -> String { + match self.query_all_token_balances().await { + Ok(balances) => { + let mut result = Vec::new(); + for balance in balances { + result.push(format!( + "{} ({}): {} raw units = {} formatted (decimals: {})", + balance.symbol, + balance.token_address, + balance.balance, + balance.formatted_balance(), + balance.decimals + )); + } + result.join("\n") + } + Err(e) => { + format!("Error fetching balances: {}", e) + } + } + } + + /// Get the context with dynamically fetched balances + pub fn get_context_with_balances(&self) -> String { + let this = self.clone(); + block_on(async move { + let supported_tokens = this.get_supported_token_symbols().join(", "); + let balances = this.format_balances_dynamic().await; + + format!( + r#" +Current DAO Context: +- Account Address: {} +- Current Balances: +{} +- Allowlisted Addresses: {} +- Supported Tokens: {} are supported. All other token requests should be rejected. + "#, + this.account_address, + balances.lines().map(|line| format!(" {}", line)).collect::>().join("\n"), + this.allowlisted_addresses.join(", "), + supported_tokens + ) + }) + } +} + +// Default implementation for testing and development +impl Default for DaoContext { + fn default() -> Self { + // Create a default LlmOptions + let llm_options = LlmOptions { + temperature: Some(0.0), + top_p: Some(1.0), + seed: Some(42), + max_tokens: Some(500), + context_window: Some(4096), + }; + + // System prompt for DAO operations + let system_prompt = r#" + You an agent responsible for helping the user execute smart contract transactions. + + You have several tools available: + - Use the send_eth tool to send ETH to addresses + - Use the contract_* tools to interact with smart contracts (including ERC20 tokens like USDC) + + TOKEN DECIMALS - CRITICAL INSTRUCTIONS: + When a user requests to transfer tokens, you MUST convert the human-readable amount to the correct base units: + + - ETH has 18 decimals: + * 1 ETH = 1000000000000000000 wei (10^18) + * 0.5 ETH = 500000000000000000 wei (5 * 10^17) + * 0.1 ETH = 100000000000000000 wei (10^17) + + - USDC has 6 decimals: + * 1 USDC = 1000000 base units (10^6) + * 100 USDC = 100000000 base units (10^8) + * 0.5 USDC = 500000 base units (5 * 10^5) + + Always multiply the human-readable amount by 10^(decimals) to get the correct token amount. + For example: + - If a user asks to "send 1 USDC," you must use "1000000" (one million) as the value + - If a user asks to "donate 0.5 ETH," you must use "500000000000000000" as the value + + EXAMPLES: + User: "Send 1 USDC to 0xDf3679681B87fAE75CE185e4f01d98b64Ddb64a3" + Action: Use contract_usdc_transfer with value="1000000" (NOT "1") + + User: "Send 0.1 ETH to 0xDf3679681B87fAE75CE185e4f01d98b64Ddb64a3" + Action: Use send_eth with value="100000000000000000" + + Security Guidelines: + - Handle decimals correctly for the user's request + - Never approve transactions that would spend more than the current balance + - Reject unclear requests + - If no action is needed or the request should be rejected, do not use any tools + "#; + + // Create basic Config + let llm_context = Config { + model: "llama3.2".to_string(), + llm_config: llm_options, + messages: vec![Message { + role: "system".into(), + content: Some(system_prompt.into()), + tool_calls: None, + tool_call_id: None, + name: None, + }], + contracts: vec![Contract { + name: "USDC".into(), + address: "0xb7278a61aa25c888815afc32ad3cc52ff24fe575".into(), + abi: r#"[{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}]"#.into(), + description: Some("USDC is a stablecoin pegged to the US Dollar".into()), + }], + config: HashMap::new(), + }; + + Self { + account_address: "0x47937d0d01b7d71201ca10138ebc14d22618ebce".to_string(), + allowlisted_addresses: vec!["0xDf3679681B87fAE75CE185e4f01d98b64Ddb64a3.".to_string()], + supported_tokens: vec![ + SupportedToken::new_with_description( + "0x0000000000000000000000000000000000000000", + "ETH", + 18, + "Native Ethereum token", + ), + SupportedToken::new_with_description( + "0xb7278a61aa25c888815afc32ad3cc52ff24fe575", + "USDC", + 6, + "USD Coin - a stablecoin pegged to the US Dollar", + ), + ], + llm_context, + } + } +} + +/// Represents a supported token in the DAO +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct SupportedToken { + pub address: String, + pub symbol: String, + pub decimals: u8, + pub description: Option, +} + +impl SupportedToken { + /// Create a new SupportedToken instance + pub fn new(address: &str, symbol: &str, decimals: u8) -> Self { + Self { + address: address.to_string(), + symbol: symbol.to_string(), + decimals, + description: None, + } + } + + /// Create a new SupportedToken instance with description + pub fn new_with_description( + address: &str, + symbol: &str, + decimals: u8, + description: &str, + ) -> Self { + Self { + address: address.to_string(), + symbol: symbol.to_string(), + decimals, + description: Some(description.to_string()), + } + } +} + +/// Represents a token balance +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TokenBalance { + pub token_address: String, + pub symbol: String, + pub balance: String, + pub decimals: u8, +} + +/// Helper methods for token balances +impl TokenBalance { + /// Create a new TokenBalance instance + pub fn new(token_address: &str, symbol: &str, balance: &str, decimals: u8) -> Self { + Self { + token_address: token_address.to_string(), + symbol: symbol.to_string(), + balance: balance.to_string(), + decimals, + } + } + + /// Format the balance for display with proper decimal places + pub fn formatted_balance(&self) -> String { + let raw_balance = self.balance.parse::().unwrap_or(0); + let divisor = 10u128.pow(self.decimals as u32); + + if divisor == 0 { + return format!("{}", raw_balance); + } + + let whole_part = raw_balance / divisor; + let decimal_part = raw_balance % divisor; + + // Format with proper decimal places + if decimal_part == 0 { + format!("{}", whole_part) + } else { + // Pad decimal part with leading zeros if needed + let decimal_str = format!("{:0width$}", decimal_part, width = self.decimals as usize); + // Trim trailing zeros + let trimmed = decimal_str.trim_end_matches('0'); + if trimmed.is_empty() { + format!("{}", whole_part) + } else { + format!("{}.{}", whole_part, trimmed) + } + } + } +} diff --git a/components/actor/src/lib.rs b/components/actor/src/lib.rs new file mode 100644 index 00000000..8d7da121 --- /dev/null +++ b/components/actor/src/lib.rs @@ -0,0 +1,287 @@ +#[allow(warnings)] +mod bindings; +pub mod context; +pub mod sol_interfaces; + +use crate::sol_interfaces::TransactionPayload; +use alloy_primitives::{Address, Bytes, U256}; +use alloy_sol_types::{SolType, SolValue}; +use bindings::WasmResponse; +use bindings::{ + export, wavs::operator::input::TriggerData, wavs::types::events::TriggerDataEvmContractEvent, + Guest, TriggerAction, +}; +use context::DaoContext; +use sol_interfaces::{Operation, Transaction}; +use std::str::FromStr; +use wavs_llm::{client, errors::AgentError, ToolCall}; +use wavs_llm::{LlmResponse, Message}; + +struct Component; + +impl Component { + /// Handle a tool call from JSON content (when LLM returns tool call as JSON in content) + fn handle_tool_call_json( + name: &str, + parameters: &serde_json::Value, + llm_context: &wavs_llm::config::Config, + ) -> Result { + println!("Processing tool call: {} with parameters: {}", name, parameters); + + match name { + "send_eth" => { + let to = parameters + .get("to") + .and_then(|v| v.as_str()) + .ok_or("Missing 'to' parameter in send_eth tool call")?; + let value = parameters + .get("value") + .and_then(|v| v.as_str()) + .ok_or("Missing 'value' parameter in send_eth tool call")?; + + let tx = wavs_llm::contracts::Transaction { + to: to.to_string(), + value: value.to_string(), + contract_call: None, + data: String::new(), // Will be populated later + description: format!("Send {} wei to {}", value, to), + }; + + println!("Created ETH transaction: to={}, value={}", to, value); + Ok(LlmResponse::Transaction(tx)) + } + // Handle contract function calls (like "contract_usdc_transfer") + name if name.starts_with("contract_") => { + // Extract contract name and function from tool name + let parts: Vec<&str> = name.split('_').collect(); + if parts.len() < 3 { + return Err(format!("Invalid contract tool call format: {}", name)); + } + + let contract_name = parts[1]; // e.g., "usdc" + let function_name = parts[2..].join("_"); // e.g., "transfer" + + // Find the contract in the config + let contract = llm_context + .contracts + .iter() + .find(|c| c.name.to_lowercase() == contract_name.to_lowercase()) + .ok_or_else(|| { + format!("Contract '{}' not found in configuration", contract_name) + })?; + + // Convert parameters to function arguments + let mut function_args = Vec::new(); + if let Some(obj) = parameters.as_object() { + for (_key, value) in obj { + function_args.push(value.clone()); + } + } + + let contract_call = wavs_llm::contracts::ContractCall { + function: function_name.clone(), + args: function_args.clone(), + }; + + let tx = wavs_llm::contracts::Transaction { + to: contract.address.clone(), + value: "0".to_string(), // Contract calls typically don't send ETH + contract_call: Some(contract_call), + data: String::new(), // Will be populated later + description: format!("Call {} on contract {}", function_name, contract_name), + }; + + println!( + "Created contract transaction: to={}, function={}, args={:?}", + contract.address, function_name, function_args + ); + Ok(LlmResponse::Transaction(tx)) + } + _ => Err(format!("Unknown tool call: {}", name)), + } + } + + /// Convert a ToolCall to a transaction (for actual tool_calls field) + fn convert_tool_call_to_transaction( + tool_call: &ToolCall, + llm_context: &wavs_llm::config::Config, + ) -> Result { + let args: serde_json::Value = serde_json::from_str(&tool_call.function.arguments) + .map_err(|e| format!("Failed to parse tool call arguments: {}", e))?; + + Self::handle_tool_call_json(&tool_call.function.name, &args, llm_context) + } +} + +impl Guest for Component { + fn run(trigger_action: TriggerAction) -> std::result::Result, String> { + let prompt = match trigger_action.data { + TriggerData::EvmContractEvent(TriggerDataEvmContractEvent { log, .. }) => { + // Decode the ABI-encoded string first + let decoded = alloy_sol_types::sol_data::String::abi_decode(&log.data.data) + .map_err(|e| format!("Failed to decode ABI string: {}", e))?; + + Ok(decoded.to_string()) + } + // Fired from a raw data event (e.g. from a CLI command or from another component). + // Note: this is just for testing ATM. + TriggerData::Raw(data) => { + let prompt = std::str::from_utf8(&data) + .map_err(|e| format!("Failed to decode prompt from bytes: {}", e))?; + Ok(prompt.to_string()) + } + _ => Err("Unsupported trigger data".to_string()), + }?; + + println!("Processing prompt: {}", prompt); + + // Get the DAO context with all our configuration + let context = DaoContext::load()?; + let mut llm_context = context.llm_context.clone(); + + // Get the current DAO state with balances + let dao_state = context.get_context_with_balances(); + + // Get the original system message to append our state + if let Some(system_msg) = llm_context.messages.iter_mut().find(|msg| msg.role == "system") { + // Append the current DAO state to the system message + if let Some(content) = &system_msg.content { + let new_content = format!("{}\n\n{}", content, dao_state); + system_msg.content = Some(new_content); + } + } else { + // If no system message exists, create one with the DAO state + llm_context.messages.push(Message::system(dao_state)); + } + + // Create LLM client implementation using the standalone constructor + let llm_client = client::LLMClient::with_config( + llm_context.model.clone(), + llm_context.llm_config.clone(), + ); + + // Get the response from the LLM and handle tool calls properly + let result = { + let response = llm_client + .chat(prompt.clone()) + .with_config(&llm_context) + .send() + .map_err(|e| e.to_string())?; + + println!( + "LLM response received. Content: {:?}, Tool calls: {:?}", + response.content, response.tool_calls + ); + + // Handle tool calls first (if they exist in the tool_calls field) + if let Some(tool_calls) = &response.tool_calls { + if !tool_calls.is_empty() { + let tool_call = &tool_calls[0]; + Self::convert_tool_call_to_transaction(tool_call, &llm_context)? + } else { + // No tool calls, check content + Self::parse_response_content(&response, &llm_context)? + } + } else { + // No tool_calls field, check content for tool call JSON or other formats + Self::parse_response_content(&response, &llm_context)? + } + }; + + // Handle the response + match result { + LlmResponse::Transaction(tx) => { + println!("Transaction to execute: {:?}", tx); + + // Parse address + let to: Address = tx + .to + .parse() + .map_err(|e| AgentError::Transaction(format!("Invalid address: {}", e)))?; + + // Parse value + let value = U256::from_str(&tx.value) + .map_err(|e| AgentError::Transaction(format!("Invalid value: {}", e)))?; + + // Handle contract calls + let data = if let Some(contract_call) = &tx.contract_call { + // Try to find the contract by address + let contract = llm_context + .contracts + .iter() + .find(|c| c.address.to_lowercase() == tx.to.to_lowercase()) + .ok_or_else(|| { + AgentError::Contract(format!( + "Cannot find contract at address {}", + tx.to + )) + })?; + + contract + .encode_function_call(&contract_call.function, &contract_call.args) + .map_err(|e| format!("Failed to encode contract call: {}", e))? + } else { + Bytes::default() + }; + + println!("Encoded transaction data: 0x{}", hex::encode(&data)); + + Ok(Some(WasmResponse { + payload: TransactionPayload { + nonce: U256::ZERO, + transactions: vec![Transaction { + target: to, + data, + value, + operation: Operation::Call, + }], + description: "DAO Agent Transaction".to_string(), + } + .abi_encode(), + ordering: None, + })) + } + LlmResponse::Text(text) => { + println!("LLM response text (no transaction): {}", text); + Ok(None) + } + } + } +} + +impl Component { + /// Parse response content for different formats + fn parse_response_content( + response: &Message, + llm_context: &wavs_llm::config::Config, + ) -> Result { + if let Some(content) = &response.content { + // Try to parse as tool call JSON first + if let Ok(tool_call_json) = serde_json::from_str::(content) { + // Check if it looks like a tool call with "name" and "parameters" fields + if let (Some(name), Some(parameters)) = ( + tool_call_json.get("name").and_then(|v| v.as_str()), + tool_call_json.get("parameters"), + ) { + println!( + "Detected tool call JSON in content: name={}, parameters={}", + name, parameters + ); + return Self::handle_tool_call_json(name, parameters, llm_context); + } + } + + // Try to parse as transaction directly + if let Ok(tx) = serde_json::from_str::(content) { + return Ok(LlmResponse::Transaction(tx)); + } + + // Otherwise, return as text + Ok(LlmResponse::Text(content.clone())) + } else { + Ok(LlmResponse::Text(String::new())) + } + } +} + +export!(Component with_types_in bindings); diff --git a/components/actor/src/sol_interfaces.rs b/components/actor/src/sol_interfaces.rs new file mode 100644 index 00000000..925b7c9e --- /dev/null +++ b/components/actor/src/sol_interfaces.rs @@ -0,0 +1,27 @@ +use alloy_sol_types::sol; + +// Define just the TransactionPayload we need for submitting to the blockchain +sol! { + #[derive(Debug)] + enum Operation { + Call, + DelegateCall + } + + /// @dev Single transaction to execute + #[derive(Debug)] + struct Transaction { + address target; // Target address for the transaction + uint256 value; // ETH value to send + bytes data; // Calldata for the transaction + Operation operation; // Operation type (Call or DelegateCall) + } + + /// @dev Main payload structure for WAVS envelope + #[derive(Debug)] + struct TransactionPayload { + uint256 nonce; // Nonce for tracking/ordering + Transaction[] transactions; // Array of transactions to execute + string description; // Optional description of the batch + } +} diff --git a/components/llm-attester/Cargo.toml b/components/llm-attester/Cargo.toml new file mode 100644 index 00000000..7b307c25 --- /dev/null +++ b/components/llm-attester/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "llm-attester" +edition.workspace = true +version.workspace = true +authors.workspace = true +rust-version.workspace = true +repository.workspace = true + +[dependencies] +wavs-llm = { workspace = true } +wavs-eas = { workspace = true } +wavs-wasi-utils = { workspace = true } +wstd = { workspace = true } +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } +schemars = { workspace = true } +anyhow = { workspace = true } +wit-bindgen-rt = { workspace = true, features = ["bitflags"] } +alloy-sol-macro = { workspace = true } +alloy-sol-types = { workspace = true } +alloy-primitives = { workspace = true } +alloy-json-abi = { workspace = true } +alloy-dyn-abi = { workspace = true } +alloy-network = { workspace = true } +alloy-provider = { workspace = true } +alloy-rpc-types = { workspace = true } +hex = { workspace = true } +tiny-keccak = { workspace = true } + +[dev-dependencies] +mockall = { workspace = true } + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "s" +debug = false +strip = true +lto = true + +[package.metadata.component] +package = "component:llm-attester" +target = "wavs:operator@=1.3.0" diff --git a/components/llm-attester/Makefile b/components/llm-attester/Makefile new file mode 100644 index 00000000..36e9a7b7 --- /dev/null +++ b/components/llm-attester/Makefile @@ -0,0 +1,9 @@ +OUTPUT_DIR?=../../compiled + + +## wasi-build: building the WAVS wasi component(s) +wasi-build: + @cargo component build --release; cargo fmt + @mkdir -p $(OUTPUT_DIR) + @cp ../../target/wasm32-wasip1/release/*.wasm $(OUTPUT_DIR) +.PHONY: wasi-build diff --git a/components/llm-attester/README.md b/components/llm-attester/README.md new file mode 100644 index 00000000..175800e0 --- /dev/null +++ b/components/llm-attester/README.md @@ -0,0 +1,214 @@ +# LLM Attester Component + +A WASI component that processes EAS (Ethereum Attestation Service) attestations using Large Language Models (LLMs) to analyze attestation data and create new attestations based on the analysis. + +## Overview + +The LLM Attester component: +1. Receives attestation events from the blockchain +2. Queries the referenced attestation data from EAS +3. Analyzes the attestation data using an LLM +4. Creates a new attestation with the LLM's analysis + +## Configuration + +The component is configured through environment variables prefixed with `WAVS_ENV_`: + +### EAS Configuration + +| Variable | Description | Default | +|----------|-------------|---------| +| `WAVS_ENV_eas_address` | EAS contract address | Base Sepolia EAS address | +| `WAVS_ENV_chain_name` | Blockchain network name | `base-sepolia` | +| `WAVS_ENV_attestation_schema_uid` | Schema UID to use for new attestations | Uses incoming schema | +| `WAVS_ENV_attestation_revocable` | Whether attestations can be revoked | `true` | +| `WAVS_ENV_attestation_expiration` | Expiration timestamp (0 = no expiration) | `0` | +| `WAVS_ENV_attestation_value` | ETH value to send with attestation | `0` | + +### LLM Configuration + +| Variable | Description | Default | +|----------|-------------|---------| +| `WAVS_ENV_llm_model` | LLM model to use | `llama3.2` | +| `WAVS_ENV_llm_temperature` | Temperature for LLM sampling (0-2) | `0.0` | +| `WAVS_ENV_llm_top_p` | Top-p sampling parameter | `1.0` | +| `WAVS_ENV_llm_seed` | Random seed for reproducibility | `42` | +| `WAVS_ENV_llm_max_tokens` | Maximum tokens in response | `100` | +| `WAVS_ENV_llm_context_window` | Context window size | `250` | +| `WAVS_ENV_llm_system_message` | System prompt for the LLM | Default analysis prompt | + +## Schema Encoding + +The component properly encodes attestation data according to EAS schema definitions using ABI encoding. + +### Supported Schema Types + +#### Simple String Schema +``` +string statement +string message +string data +``` + +For these schemas, the LLM response is ABI-encoded as a single string value. + +#### Complex Schemas (Planned) +``` +bytes32 triggerId,string data,uint256 timestamp +address creator,string content,bool verified +``` + +Complex schemas with multiple fields will be supported in future versions. + +### Encoding Examples + +#### Example 1: String Statement Schema + +**Schema Definition:** +``` +string statement +``` + +**LLM Response:** +``` +"This attestation represents a user verification" +``` + +**Encoded Data (ABI):** +``` +0x0000000000000000000000000000000000000000000000000000000000000020 // Offset to string data +0x0000000000000000000000000000000000000000000000000000000000000029 // String length (41 bytes) +0x5468697320617474657374... // UTF-8 string bytes +``` + +#### Example 2: Multiple Fields (Future) + +**Schema Definition:** +``` +bytes32 triggerId,string data,uint256 timestamp +``` + +**Data Values:** +``` +triggerId: 0x1234...5678 +data: "Analysis result" +timestamp: 1699564800 +``` + +**Encoded Data (ABI):** +``` +0x1234...5678 // bytes32 triggerId +0x0000000000000000000000000000000000000000000000000000000000000060 // Offset to string +0x00000000000000000000000000000000000000000000000000000065673a00 // uint256 timestamp +0x000000000000000000000000000000000000000000000000000000000000000f // String length +0x416e616c7973697320726573756c74... // String bytes +``` + +## Usage + +### Basic Usage + +1. Deploy the component with appropriate configuration: +```bash +# Set configuration +export WAVS_ENV_llm_model="llama3.2" +export WAVS_ENV_attestation_schema_uid="0x..." + +# Build and deploy +make wasi-build WASI_BUILD_DIR=components/llm-attester +``` + +2. The component will automatically: + - Listen for attestation events + - Query attestation data + - Process with LLM + - Create new attestations + +### Advanced Configuration + +#### Custom System Prompts + +Configure the LLM's analysis approach: + +```bash +export WAVS_ENV_llm_system_message="You are a compliance auditor. Analyze the attestation for regulatory compliance and provide a detailed assessment." +``` + +#### Schema Filtering + +Process only specific attestation schemas: + +```bash +export WAVS_ENV_attestation_schema_uid="0x1234567890abcdef..." +``` + +## Best Practices + +### 1. Schema Consistency +Always ensure the output attestation schema matches the expected encoding format. For `string statement` schemas, the LLM response will be encoded as a single ABI-encoded string. + +### 2. Error Handling +The component includes fallback mechanisms: +- If attestation query fails, uses minimal attestation data +- If schema encoding fails, defaults to simple string encoding +- Schema mismatches are logged and skipped + +### 3. Resource Management +Configure appropriate limits: +- `llm_max_tokens`: Limit response size +- `llm_context_window`: Control context size +- `attestation_expiration`: Set appropriate expiration times + +### 4. Security Considerations +- Never include sensitive data in attestations +- Use appropriate revocability settings +- Consider attestation expiration for time-sensitive data + +## Development + +### Testing Locally + +```bash +# Build the component +WASI_BUILD_DIR=components/llm-attester make wasi-build + +# Test with sample data +make wasi-exec COMPONENT_FILENAME=llm-attester.wasm INPUT_DATA='{"schemaUID":"0x...","uid":"0x...","recipient":"0x..."}' +``` + +### Validation + +```bash +# Validate component structure +make validate-component COMPONENT=llm-attester +``` + +## Troubleshooting + +### Common Issues + +1. **Schema Mismatch** + - Check `attestation_schema_uid` configuration + - Verify incoming schema matches expected format + +2. **Encoding Errors** + - Ensure LLM response fits the schema type + - Check for proper ABI encoding in logs + +3. **LLM Timeouts** + - Reduce `llm_max_tokens` + - Adjust `llm_context_window` + +## Future Enhancements + +- [ ] Support for complex multi-field schemas +- [ ] Automatic schema detection and parsing +- [ ] IPFS integration for large attestation data +- [ ] Batch attestation processing +- [ ] Custom encoding strategies per schema type + +## References + +- [EAS Documentation](https://docs.attest.sh/) +- [ABI Encoding Specification](https://docs.soliditylang.org/en/latest/abi-spec.html) +- [WAVS Component Development](../README.md) \ No newline at end of file diff --git a/components/llm-attester/config.json b/components/llm-attester/config.json new file mode 100644 index 00000000..bd313537 --- /dev/null +++ b/components/llm-attester/config.json @@ -0,0 +1,9 @@ +{ + "name": "llm-attester", + "description": "Generic EAS attestation component that receives attestation data and creates a new attestation.", + "version": "0.1.0", + "license": "MIT", + "repository": "", + "documentation": "", + "tags": ["eas", "attestation", "generic", "ethereum", "llm"] +} diff --git a/components/llm-attester/src/bindings.rs b/components/llm-attester/src/bindings.rs new file mode 100644 index 00000000..f4e5123d --- /dev/null +++ b/components/llm-attester/src/bindings.rs @@ -0,0 +1,20517 @@ +// Generated by `wit-bindgen` 0.41.0. DO NOT EDIT! +// Options used: +// * runtime_path: "wit_bindgen_rt" +pub type TriggerAction = wavs::operator::input::TriggerAction; +pub type WasmResponse = wavs::operator::output::WasmResponse; +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_run_cabi(arg0: *mut u8) -> *mut u8 { + #[cfg(target_arch = "wasm32")] + _rt::run_ctors_once(); + let l0 = *arg0.add(0).cast::<*mut u8>(); + let l1 = *arg0.add(::core::mem::size_of::<*const u8>()).cast::(); + let len2 = l1; + let bytes2 = _rt::Vec::from_raw_parts(l0.cast(), len2, len2); + let l3 = *arg0.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l4 = *arg0.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = i32::from(*arg0.add(4 * ::core::mem::size_of::<*const u8>()).cast::()); + use wavs::types::service::Trigger as V41; + let v41 = match l6 { + 0 => { + let e41 = { + let l7 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l8 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len9 = l8; + let l10 = *arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l11 = *arg0.add(8 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + let l13 = *arg0.add(8 + 8 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l14 = *arg0.add(8 + 9 * ::core::mem::size_of::<*const u8>()).cast::(); + let len15 = l14; + wavs::types::service::TriggerEvmContractEvent { + address: wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l7.cast(), len9, len9), + }, + chain: _rt::string_lift(bytes12), + event_hash: _rt::Vec::from_raw_parts(l13.cast(), len15, len15), + } + }; + V41::EvmContractEvent(e41) + } + 1 => { + let e41 = { + let l16 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l17 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts(l16.cast(), len18, len18); + let l19 = *arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let l20 = *arg0.add(8 + 7 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l21 = *arg0.add(8 + 8 * ::core::mem::size_of::<*const u8>()).cast::(); + let len22 = l21; + let bytes22 = _rt::Vec::from_raw_parts(l20.cast(), len22, len22); + let l23 = *arg0.add(8 + 9 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l24 = *arg0.add(8 + 10 * ::core::mem::size_of::<*const u8>()).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts(l23.cast(), len25, len25); + wavs::types::service::TriggerCosmosContractEvent { + address: wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes18), + prefix_len: l19 as u32, + }, + chain: _rt::string_lift(bytes22), + event_type: _rt::string_lift(bytes25), + } + }; + V41::CosmosContractEvent(e41) + } + 2 => { + let e41 = { + let l26 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l27 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len28 = l27; + let bytes28 = _rt::Vec::from_raw_parts(l26.cast(), len28, len28); + let l29 = *arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let l30 = + i32::from(*arg0.add(16 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + let l32 = + i32::from(*arg0.add(32 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + wavs::types::service::TriggerBlockInterval { + chain: _rt::string_lift(bytes28), + n_blocks: l29 as u32, + start_block: match l30 { + 0 => None, + 1 => { + let e = { + let l31 = *arg0 + .add(24 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l31 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_block: match l32 { + 0 => None, + 1 => { + let e = { + let l33 = *arg0 + .add(40 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l33 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V41::BlockInterval(e41) + } + 3 => { + let e41 = { + let l34 = *arg0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l35 = *arg0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts(l34.cast(), len36, len36); + let l37 = + i32::from(*arg0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + let l39 = + i32::from(*arg0.add(24 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + wavs::types::service::TriggerCron { + schedule: _rt::string_lift(bytes36), + start_time: match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *arg0 + .add(16 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + wavs::types::core::Timestamp { nanos: l38 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_time: match l39 { + 0 => None, + 1 => { + let e = { + let l40 = *arg0 + .add(32 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + wavs::types::core::Timestamp { nanos: l40 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V41::Cron(e41) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + V41::Manual + } + }; + let l42 = i32::from(*arg0.add(48 + 6 * ::core::mem::size_of::<*const u8>()).cast::()); + use wavs::types::events::TriggerData as V98; + let v98 = match l42 { + 0 => { + let e98 = { + let l43 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l44 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len45 = l44; + let bytes45 = _rt::Vec::from_raw_parts(l43.cast(), len45, len45); + let l46 = *arg0.add(56 + 8 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l47 = *arg0.add(56 + 9 * ::core::mem::size_of::<*const u8>()).cast::(); + let len48 = l47; + let l49 = + *arg0.add(56 + 10 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l50 = *arg0.add(56 + 11 * ::core::mem::size_of::<*const u8>()).cast::(); + let base54 = l49; + let len54 = l50; + let mut result54 = _rt::Vec::with_capacity(len54); + for i in 0..len54 { + let base = base54.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e54 = { + let l51 = *base.add(0).cast::<*mut u8>(); + let l52 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len53 = l52; + _rt::Vec::from_raw_parts(l51.cast(), len53, len53) + }; + result54.push(e54); + } + _rt::cabi_dealloc( + base54, + len54 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l55 = + *arg0.add(56 + 12 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l56 = *arg0.add(56 + 13 * ::core::mem::size_of::<*const u8>()).cast::(); + let len57 = l56; + let l58 = + *arg0.add(56 + 14 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l59 = *arg0.add(56 + 15 * ::core::mem::size_of::<*const u8>()).cast::(); + let len60 = l59; + let l61 = *arg0.add(56 + 16 * ::core::mem::size_of::<*const u8>()).cast::(); + let l62 = *arg0.add(64 + 16 * ::core::mem::size_of::<*const u8>()).cast::(); + let l63 = + *arg0.add(72 + 16 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l64 = *arg0.add(72 + 17 * ::core::mem::size_of::<*const u8>()).cast::(); + let len65 = l64; + let l66 = i32::from( + *arg0.add(72 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l68 = *arg0.add(88 + 18 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataEvmContractEvent { + chain: _rt::string_lift(bytes45), + log: wavs::types::chain::EvmEventLog { + address: wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l46.cast(), len48, len48), + }, + data: wavs::types::chain::EvmEventLogData { + topics: result54, + data: _rt::Vec::from_raw_parts(l55.cast(), len57, len57), + }, + tx_hash: _rt::Vec::from_raw_parts(l58.cast(), len60, len60), + block_number: l61 as u64, + log_index: l62 as u64, + block_hash: _rt::Vec::from_raw_parts(l63.cast(), len65, len65), + block_timestamp: match l66 { + 0 => None, + 1 => { + let e = { + let l67 = *arg0 + .add(80 + 18 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l67 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + tx_index: l68 as u64, + }, + } + }; + V98::EvmContractEvent(e98) + } + 1 => { + let e98 = { + let l69 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l70 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len71 = l70; + let bytes71 = _rt::Vec::from_raw_parts(l69.cast(), len71, len71); + let l72 = *arg0.add(56 + 8 * ::core::mem::size_of::<*const u8>()).cast::(); + let l73 = *arg0.add(56 + 9 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l74 = *arg0.add(56 + 10 * ::core::mem::size_of::<*const u8>()).cast::(); + let len75 = l74; + let bytes75 = _rt::Vec::from_raw_parts(l73.cast(), len75, len75); + let l76 = + *arg0.add(56 + 11 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l77 = *arg0.add(56 + 12 * ::core::mem::size_of::<*const u8>()).cast::(); + let len78 = l77; + let bytes78 = _rt::Vec::from_raw_parts(l76.cast(), len78, len78); + let l79 = + *arg0.add(56 + 13 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l80 = *arg0.add(56 + 14 * ::core::mem::size_of::<*const u8>()).cast::(); + let base87 = l79; + let len87 = l80; + let mut result87 = _rt::Vec::with_capacity(len87); + for i in 0..len87 { + let base = base87.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e87 = { + let l81 = *base.add(0).cast::<*mut u8>(); + let l82 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts(l81.cast(), len83, len83); + let l84 = + *base.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l85 = + *base.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts(l84.cast(), len86, len86); + (_rt::string_lift(bytes83), _rt::string_lift(bytes86)) + }; + result87.push(e87); + } + _rt::cabi_dealloc( + base87, + len87 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l88 = *arg0.add(64 + 14 * ::core::mem::size_of::<*const u8>()).cast::(); + let l89 = *arg0.add(72 + 14 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataCosmosContractEvent { + contract_address: wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes71), + prefix_len: l72 as u32, + }, + chain: _rt::string_lift(bytes75), + event: wavs::types::chain::CosmosEvent { + ty: _rt::string_lift(bytes78), + attributes: result87, + }, + event_index: l88 as u64, + block_height: l89 as u64, + } + }; + V98::CosmosContractEvent(e98) + } + 2 => { + let e98 = { + let l90 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l91 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len92 = l91; + let bytes92 = _rt::Vec::from_raw_parts(l90.cast(), len92, len92); + let l93 = *arg0.add(56 + 8 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataBlockInterval { + chain: _rt::string_lift(bytes92), + block_height: l93 as u64, + } + }; + V98::BlockInterval(e98) + } + 3 => { + let e98 = { + let l94 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + wavs::types::events::TriggerDataCron { + trigger_time: wavs::types::core::Timestamp { nanos: l94 as u64 }, + } + }; + V98::Cron(e98) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + let e98 = { + let l95 = *arg0.add(56 + 6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l96 = *arg0.add(56 + 7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len97 = l96; + _rt::Vec::from_raw_parts(l95.cast(), len97, len97) + }; + V98::Raw(e98) + } + }; + let result99 = T::run(wavs::operator::input::TriggerAction { + config: wavs::operator::input::TriggerConfig { + service_id: _rt::string_lift(bytes2), + workflow_id: _rt::string_lift(bytes5), + trigger: v41, + }, + data: v98, + }); + _rt::cabi_dealloc(arg0, 96 + 18 * ::core::mem::size_of::<*const u8>(), 8); + let ptr100 = (&raw mut _RET_AREA.0).cast::(); + match result99 { + Ok(e) => { + *ptr100.add(0).cast::() = (0i32) as u8; + match e { + Some(e) => { + *ptr100.add(8).cast::() = (1i32) as u8; + let wavs::operator::output::WasmResponse { + payload: payload101, + ordering: ordering101, + } = e; + let vec102 = (payload101).into_boxed_slice(); + let ptr102 = vec102.as_ptr().cast::(); + let len102 = vec102.len(); + ::core::mem::forget(vec102); + *ptr100.add(16 + 1 * ::core::mem::size_of::<*const u8>()).cast::() = + len102; + *ptr100.add(16).cast::<*mut u8>() = ptr102.cast_mut(); + match ordering101 { + Some(e) => { + *ptr100 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (1i32) as u8; + *ptr100 + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = _rt::as_i64(e); + } + None => { + *ptr100 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (0i32) as u8; + } + }; + } + None => { + *ptr100.add(8).cast::() = (0i32) as u8; + } + }; + } + Err(e) => { + *ptr100.add(0).cast::() = (1i32) as u8; + let vec103 = (e.into_bytes()).into_boxed_slice(); + let ptr103 = vec103.as_ptr().cast::(); + let len103 = vec103.len(); + ::core::mem::forget(vec103); + *ptr100.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::() = len103; + *ptr100.add(8).cast::<*mut u8>() = ptr103.cast_mut(); + } + }; + ptr100 +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn __post_return_run(arg0: *mut u8) { + let l0 = i32::from(*arg0.add(0).cast::()); + match l0 { + 0 => { + let l1 = i32::from(*arg0.add(8).cast::()); + match l1 { + 0 => {} + _ => { + let l2 = *arg0.add(16).cast::<*mut u8>(); + let l3 = + *arg0.add(16 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let base4 = l2; + let len4 = l3; + _rt::cabi_dealloc(base4, len4 * 1, 1); + } + } + } + _ => { + let l5 = *arg0.add(8).cast::<*mut u8>(); + let l6 = *arg0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + _rt::cabi_dealloc(l5, l6, 1); + } + } +} +pub trait Guest { + fn run(trigger_action: TriggerAction) -> Result, _rt::String>; +} +#[doc(hidden)] +macro_rules! __export_world_wavs_world_cabi { + ($ty:ident with_types_in $($path_to_types:tt)*) => { + const _ : () = { #[unsafe (export_name = "run")] unsafe extern "C" fn + export_run(arg0 : * mut u8,) -> * mut u8 { unsafe { $($path_to_types)*:: + _export_run_cabi::<$ty > (arg0) } } #[unsafe (export_name = "cabi_post_run")] + unsafe extern "C" fn _post_return_run(arg0 : * mut u8,) { unsafe { + $($path_to_types)*:: __post_return_run::<$ty > (arg0) } } }; + }; +} +#[doc(hidden)] +pub(crate) use __export_world_wavs_world_cabi; +#[repr(align(8))] +struct _RetArea([::core::mem::MaybeUninit; 32 + 2 * ::core::mem::size_of::<*const u8>()]); +static mut _RET_AREA: _RetArea = + _RetArea([::core::mem::MaybeUninit::uninit(); 32 + 2 * ::core::mem::size_of::<*const u8>()]); +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] +pub mod wasi { + pub mod cli { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod environment { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[allow(unused_unsafe, clippy::all)] + pub fn get_environment() -> _rt::Vec<(_rt::String, _rt::String)> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/environment@0.2.0")] + unsafe extern "C" { + #[link_name = "get-environment"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base10 = l2; + let len10 = l3; + let mut result10 = _rt::Vec::with_capacity(len10); + for i in 0..len10 { + let base = base10 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e10 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l8 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + (_rt::string_lift(bytes6), _rt::string_lift(bytes9)) + }; + result10.push(e10); + } + _rt::cabi_dealloc( + base10, + len10 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result11 = result10; + result11 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_arguments() -> _rt::Vec<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/environment@0.2.0")] + unsafe extern "C" { + #[link_name = "get-arguments"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base7 = l2; + let len7 = l3; + let mut result7 = _rt::Vec::with_capacity(len7); + for i in 0..len7 { + let base = base7 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e7 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + _rt::string_lift(bytes6) + }; + result7.push(e7); + } + _rt::cabi_dealloc( + base7, + len7 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result8 = result7; + result8 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn initial_cwd() -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/environment@0.2.0")] + unsafe extern "C" { + #[link_name = "initial-cwd"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod exit { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[allow(unused_unsafe, clippy::all)] + pub fn exit(status: Result<(), ()>) -> () { + unsafe { + let result0 = match status { + Ok(_) => 0i32, + Err(_) => 1i32, + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/exit@0.2.0")] + unsafe extern "C" { + #[link_name = "exit"] + fn wit_import1(_: i32); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32) { + unreachable!() + } + unsafe { wit_import1(result0) }; + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod stdin { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + #[allow(unused_unsafe, clippy::all)] + pub fn get_stdin() -> InputStream { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/stdin@0.2.0")] + unsafe extern "C" { + #[link_name = "get-stdin"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod stdout { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + #[allow(unused_unsafe, clippy::all)] + pub fn get_stdout() -> OutputStream { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/stdout@0.2.0")] + unsafe extern "C" { + #[link_name = "get-stdout"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod stderr { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + #[allow(unused_unsafe, clippy::all)] + pub fn get_stderr() -> OutputStream { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/stderr@0.2.0")] + unsafe extern "C" { + #[link_name = "get-stderr"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_input { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct TerminalInput { + handle: _rt::Resource, + } + impl TerminalInput { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for TerminalInput { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:cli/terminal-input@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]terminal-input"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_output { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct TerminalOutput { + handle: _rt::Resource, + } + impl TerminalOutput { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for TerminalOutput { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:cli/terminal-output@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]terminal-output"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_stdin { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type TerminalInput = super::super::super::wasi::cli::terminal_input::TerminalInput; + #[allow(unused_unsafe, clippy::all)] + pub fn get_terminal_stdin() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/terminal-stdin@0.2.0")] + unsafe extern "C" { + #[link_name = "get-terminal-stdin"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::cli::terminal_input::TerminalInput::from_handle( + l3 as u32, + ) + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_stdout { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type TerminalOutput = super::super::super::wasi::cli::terminal_output::TerminalOutput; + #[allow(unused_unsafe, clippy::all)] + pub fn get_terminal_stdout() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/terminal-stdout@0.2.0")] + unsafe extern "C" { + #[link_name = "get-terminal-stdout"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::cli::terminal_output::TerminalOutput::from_handle( + l3 as u32, + ) + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod terminal_stderr { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type TerminalOutput = super::super::super::wasi::cli::terminal_output::TerminalOutput; + #[allow(unused_unsafe, clippy::all)] + pub fn get_terminal_stderr() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:cli/terminal-stderr@0.2.0")] + unsafe extern "C" { + #[link_name = "get-terminal-stderr"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::cli::terminal_output::TerminalOutput::from_handle( + l3 as u32, + ) + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + } + pub mod clocks { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod monotonic_clock { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Instant = u64; + pub type Duration = u64; + #[allow(unused_unsafe, clippy::all)] + pub fn now() -> Instant { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "now"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn resolution() -> Duration { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "resolution"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe_instant(when: Instant) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "subscribe-instant"] + fn wit_import0(_: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i64) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0(_rt::as_i64(when)) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe_duration(when: Duration) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/monotonic-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "subscribe-duration"] + fn wit_import0(_: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i64) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0(_rt::as_i64(when)) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod wall_clock { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Datetime { + pub seconds: u64, + pub nanoseconds: u32, + } + impl ::core::fmt::Debug for Datetime { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Datetime") + .field("seconds", &self.seconds) + .field("nanoseconds", &self.nanoseconds) + .finish() + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn now() -> Datetime { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 16]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/wall-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "now"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::(); + let l3 = *ptr0.add(8).cast::(); + let result4 = Datetime { + seconds: l2 as u64, + nanoseconds: l3 as u32, + }; + result4 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn resolution() -> Datetime { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 16]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:clocks/wall-clock@0.2.0")] + unsafe extern "C" { + #[link_name = "resolution"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::(); + let l3 = *ptr0.add(8).cast::(); + let result4 = Datetime { + seconds: l2 as u64, + nanoseconds: l3 as u32, + }; + result4 + } + } + } + } + pub mod filesystem { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod types { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + pub type Error = super::super::super::wasi::io::streams::Error; + pub type Datetime = super::super::super::wasi::clocks::wall_clock::Datetime; + pub type Filesize = u64; + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum DescriptorType { + Unknown, + BlockDevice, + CharacterDevice, + Directory, + Fifo, + SymbolicLink, + RegularFile, + Socket, + } + impl ::core::fmt::Debug for DescriptorType { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + DescriptorType::Unknown => { + f.debug_tuple("DescriptorType::Unknown").finish() + } + DescriptorType::BlockDevice => { + f.debug_tuple("DescriptorType::BlockDevice").finish() + } + DescriptorType::CharacterDevice => { + f.debug_tuple("DescriptorType::CharacterDevice").finish() + } + DescriptorType::Directory => { + f.debug_tuple("DescriptorType::Directory").finish() + } + DescriptorType::Fifo => { + f.debug_tuple("DescriptorType::Fifo").finish() + } + DescriptorType::SymbolicLink => { + f.debug_tuple("DescriptorType::SymbolicLink").finish() + } + DescriptorType::RegularFile => { + f.debug_tuple("DescriptorType::RegularFile").finish() + } + DescriptorType::Socket => { + f.debug_tuple("DescriptorType::Socket").finish() + } + } + } + } + impl DescriptorType { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> DescriptorType { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => DescriptorType::Unknown, + 1 => DescriptorType::BlockDevice, + 2 => DescriptorType::CharacterDevice, + 3 => DescriptorType::Directory, + 4 => DescriptorType::Fifo, + 5 => DescriptorType::SymbolicLink, + 6 => DescriptorType::RegularFile, + 7 => DescriptorType::Socket, + _ => panic!("invalid enum discriminant"), + } + } + } + wit_bindgen_rt::bitflags::bitflags! { + #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] pub + struct DescriptorFlags : u8 { const READ = 1 << 0; const WRITE = 1 << 1; + const FILE_INTEGRITY_SYNC = 1 << 2; const DATA_INTEGRITY_SYNC = 1 << 3; + const REQUESTED_WRITE_SYNC = 1 << 4; const MUTATE_DIRECTORY = 1 << 5; } + } + wit_bindgen_rt::bitflags::bitflags! { + #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] pub + struct PathFlags : u8 { const SYMLINK_FOLLOW = 1 << 0; } + } + wit_bindgen_rt::bitflags::bitflags! { + #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] pub + struct OpenFlags : u8 { const CREATE = 1 << 0; const DIRECTORY = 1 << 1; + const EXCLUSIVE = 1 << 2; const TRUNCATE = 1 << 3; } + } + pub type LinkCount = u64; + #[repr(C)] + #[derive(Clone, Copy)] + pub struct DescriptorStat { + pub type_: DescriptorType, + pub link_count: LinkCount, + pub size: Filesize, + pub data_access_timestamp: Option, + pub data_modification_timestamp: Option, + pub status_change_timestamp: Option, + } + impl ::core::fmt::Debug for DescriptorStat { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("DescriptorStat") + .field("type", &self.type_) + .field("link-count", &self.link_count) + .field("size", &self.size) + .field("data-access-timestamp", &self.data_access_timestamp) + .field( + "data-modification-timestamp", + &self.data_modification_timestamp, + ) + .field("status-change-timestamp", &self.status_change_timestamp) + .finish() + } + } + #[derive(Clone, Copy)] + pub enum NewTimestamp { + NoChange, + Now, + Timestamp(Datetime), + } + impl ::core::fmt::Debug for NewTimestamp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + NewTimestamp::NoChange => { + f.debug_tuple("NewTimestamp::NoChange").finish() + } + NewTimestamp::Now => f.debug_tuple("NewTimestamp::Now").finish(), + NewTimestamp::Timestamp(e) => { + f.debug_tuple("NewTimestamp::Timestamp").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct DirectoryEntry { + pub type_: DescriptorType, + pub name: _rt::String, + } + impl ::core::fmt::Debug for DirectoryEntry { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("DirectoryEntry") + .field("type", &self.type_) + .field("name", &self.name) + .finish() + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum ErrorCode { + Access, + WouldBlock, + Already, + BadDescriptor, + Busy, + Deadlock, + Quota, + Exist, + FileTooLarge, + IllegalByteSequence, + InProgress, + Interrupted, + Invalid, + Io, + IsDirectory, + Loop, + TooManyLinks, + MessageSize, + NameTooLong, + NoDevice, + NoEntry, + NoLock, + InsufficientMemory, + InsufficientSpace, + NotDirectory, + NotEmpty, + NotRecoverable, + Unsupported, + NoTty, + NoSuchDevice, + Overflow, + NotPermitted, + Pipe, + ReadOnly, + InvalidSeek, + TextFileBusy, + CrossDevice, + } + impl ErrorCode { + pub fn name(&self) -> &'static str { + match self { + ErrorCode::Access => "access", + ErrorCode::WouldBlock => "would-block", + ErrorCode::Already => "already", + ErrorCode::BadDescriptor => "bad-descriptor", + ErrorCode::Busy => "busy", + ErrorCode::Deadlock => "deadlock", + ErrorCode::Quota => "quota", + ErrorCode::Exist => "exist", + ErrorCode::FileTooLarge => "file-too-large", + ErrorCode::IllegalByteSequence => "illegal-byte-sequence", + ErrorCode::InProgress => "in-progress", + ErrorCode::Interrupted => "interrupted", + ErrorCode::Invalid => "invalid", + ErrorCode::Io => "io", + ErrorCode::IsDirectory => "is-directory", + ErrorCode::Loop => "loop", + ErrorCode::TooManyLinks => "too-many-links", + ErrorCode::MessageSize => "message-size", + ErrorCode::NameTooLong => "name-too-long", + ErrorCode::NoDevice => "no-device", + ErrorCode::NoEntry => "no-entry", + ErrorCode::NoLock => "no-lock", + ErrorCode::InsufficientMemory => "insufficient-memory", + ErrorCode::InsufficientSpace => "insufficient-space", + ErrorCode::NotDirectory => "not-directory", + ErrorCode::NotEmpty => "not-empty", + ErrorCode::NotRecoverable => "not-recoverable", + ErrorCode::Unsupported => "unsupported", + ErrorCode::NoTty => "no-tty", + ErrorCode::NoSuchDevice => "no-such-device", + ErrorCode::Overflow => "overflow", + ErrorCode::NotPermitted => "not-permitted", + ErrorCode::Pipe => "pipe", + ErrorCode::ReadOnly => "read-only", + ErrorCode::InvalidSeek => "invalid-seek", + ErrorCode::TextFileBusy => "text-file-busy", + ErrorCode::CrossDevice => "cross-device", + } + } + pub fn message(&self) -> &'static str { + match self { + ErrorCode::Access => "", + ErrorCode::WouldBlock => "", + ErrorCode::Already => "", + ErrorCode::BadDescriptor => "", + ErrorCode::Busy => "", + ErrorCode::Deadlock => "", + ErrorCode::Quota => "", + ErrorCode::Exist => "", + ErrorCode::FileTooLarge => "", + ErrorCode::IllegalByteSequence => "", + ErrorCode::InProgress => "", + ErrorCode::Interrupted => "", + ErrorCode::Invalid => "", + ErrorCode::Io => "", + ErrorCode::IsDirectory => "", + ErrorCode::Loop => "", + ErrorCode::TooManyLinks => "", + ErrorCode::MessageSize => "", + ErrorCode::NameTooLong => "", + ErrorCode::NoDevice => "", + ErrorCode::NoEntry => "", + ErrorCode::NoLock => "", + ErrorCode::InsufficientMemory => "", + ErrorCode::InsufficientSpace => "", + ErrorCode::NotDirectory => "", + ErrorCode::NotEmpty => "", + ErrorCode::NotRecoverable => "", + ErrorCode::Unsupported => "", + ErrorCode::NoTty => "", + ErrorCode::NoSuchDevice => "", + ErrorCode::Overflow => "", + ErrorCode::NotPermitted => "", + ErrorCode::Pipe => "", + ErrorCode::ReadOnly => "", + ErrorCode::InvalidSeek => "", + ErrorCode::TextFileBusy => "", + ErrorCode::CrossDevice => "", + } + } + } + impl ::core::fmt::Debug for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ErrorCode") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{} (error {})", self.name(), * self as i32) + } + } + impl std::error::Error for ErrorCode {} + impl ErrorCode { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> ErrorCode { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => ErrorCode::Access, + 1 => ErrorCode::WouldBlock, + 2 => ErrorCode::Already, + 3 => ErrorCode::BadDescriptor, + 4 => ErrorCode::Busy, + 5 => ErrorCode::Deadlock, + 6 => ErrorCode::Quota, + 7 => ErrorCode::Exist, + 8 => ErrorCode::FileTooLarge, + 9 => ErrorCode::IllegalByteSequence, + 10 => ErrorCode::InProgress, + 11 => ErrorCode::Interrupted, + 12 => ErrorCode::Invalid, + 13 => ErrorCode::Io, + 14 => ErrorCode::IsDirectory, + 15 => ErrorCode::Loop, + 16 => ErrorCode::TooManyLinks, + 17 => ErrorCode::MessageSize, + 18 => ErrorCode::NameTooLong, + 19 => ErrorCode::NoDevice, + 20 => ErrorCode::NoEntry, + 21 => ErrorCode::NoLock, + 22 => ErrorCode::InsufficientMemory, + 23 => ErrorCode::InsufficientSpace, + 24 => ErrorCode::NotDirectory, + 25 => ErrorCode::NotEmpty, + 26 => ErrorCode::NotRecoverable, + 27 => ErrorCode::Unsupported, + 28 => ErrorCode::NoTty, + 29 => ErrorCode::NoSuchDevice, + 30 => ErrorCode::Overflow, + 31 => ErrorCode::NotPermitted, + 32 => ErrorCode::Pipe, + 33 => ErrorCode::ReadOnly, + 34 => ErrorCode::InvalidSeek, + 35 => ErrorCode::TextFileBusy, + 36 => ErrorCode::CrossDevice, + _ => panic!("invalid enum discriminant"), + } + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum Advice { + Normal, + Sequential, + Random, + WillNeed, + DontNeed, + NoReuse, + } + impl ::core::fmt::Debug for Advice { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Advice::Normal => f.debug_tuple("Advice::Normal").finish(), + Advice::Sequential => { + f.debug_tuple("Advice::Sequential").finish() + } + Advice::Random => f.debug_tuple("Advice::Random").finish(), + Advice::WillNeed => f.debug_tuple("Advice::WillNeed").finish(), + Advice::DontNeed => f.debug_tuple("Advice::DontNeed").finish(), + Advice::NoReuse => f.debug_tuple("Advice::NoReuse").finish(), + } + } + } + impl Advice { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> Advice { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => Advice::Normal, + 1 => Advice::Sequential, + 2 => Advice::Random, + 3 => Advice::WillNeed, + 4 => Advice::DontNeed, + 5 => Advice::NoReuse, + _ => panic!("invalid enum discriminant"), + } + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct MetadataHashValue { + pub lower: u64, + pub upper: u64, + } + impl ::core::fmt::Debug for MetadataHashValue { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("MetadataHashValue") + .field("lower", &self.lower) + .field("upper", &self.upper) + .finish() + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct Descriptor { + handle: _rt::Resource, + } + impl Descriptor { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Descriptor { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]descriptor"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct DirectoryEntryStream { + handle: _rt::Resource, + } + impl DirectoryEntryStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for DirectoryEntryStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]directory-entry-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn read_via_stream( + &self, + offset: Filesize, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.read-via-stream"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(offset), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn write_via_stream( + &self, + offset: Filesize, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.write-via-stream"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(offset), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn append_via_stream(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.append-via-stream"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn advise( + &self, + offset: Filesize, + length: Filesize, + advice: Advice, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.advise"] + fn wit_import1(_: i32, _: i64, _: i64, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i64, + _: i64, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(offset), + _rt::as_i64(length), + advice.clone() as i32, + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn sync_data(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.sync-data"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn get_flags(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.get-flags"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + DescriptorFlags::empty() + | DescriptorFlags::from_bits_retain(((l3 as u8) << 0) as _) + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn get_type(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.get-type"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + DescriptorType::_lift(l3 as u8) + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn set_size(&self, size: Filesize) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.set-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(size), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn set_times( + &self, + data_access_timestamp: NewTimestamp, + data_modification_timestamp: NewTimestamp, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let (result1_0, result1_1, result1_2) = match data_access_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds0, + nanoseconds: nanoseconds0, + } = e; + (2i32, _rt::as_i64(seconds0), _rt::as_i32(nanoseconds0)) + } + }; + let (result3_0, result3_1, result3_2) = match data_modification_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds2, + nanoseconds: nanoseconds2, + } = e; + (2i32, _rt::as_i64(seconds2), _rt::as_i32(nanoseconds2)) + } + }; + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.set-times"] + fn wit_import5( + _: i32, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: i32, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import5( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + result3_0, + result3_1, + result3_2, + ptr4, + ) + }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result8 = match l6 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from(*ptr4.add(1).cast::()); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn read( + &self, + length: Filesize, + offset: Filesize, + ) -> Result<(_rt::Vec, bool), ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.read"] + fn wit_import1(_: i32, _: i64, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i64, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(length), + _rt::as_i64(offset), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result8 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let l6 = i32::from( + *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + ( + _rt::Vec::from_raw_parts(l3.cast(), len5, len5), + _rt::bool_lift(l6 as u8), + ) + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn write( + &self, + buffer: &[u8], + offset: Filesize, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let vec0 = buffer; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.write"] + fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: i64, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + _rt::as_i64(offset), + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result6 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(8).cast::(); + l4 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(8).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn read_directory(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.read-directory"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { DirectoryEntryStream::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn sync(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.sync"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn create_directory_at(&self, path: &str) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.create-directory-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result5 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn stat(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 104]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 104], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.stat"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result16 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + let l4 = *ptr0.add(16).cast::(); + let l5 = *ptr0.add(24).cast::(); + let l6 = i32::from(*ptr0.add(32).cast::()); + let l9 = i32::from(*ptr0.add(56).cast::()); + let l12 = i32::from(*ptr0.add(80).cast::()); + DescriptorStat { + type_: DescriptorType::_lift(l3 as u8), + link_count: l4 as u64, + size: l5 as u64, + data_access_timestamp: match l6 { + 0 => None, + 1 => { + let e = { + let l7 = *ptr0.add(40).cast::(); + let l8 = *ptr0.add(48).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l7 as u64, + nanoseconds: l8 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + data_modification_timestamp: match l9 { + 0 => None, + 1 => { + let e = { + let l10 = *ptr0.add(64).cast::(); + let l11 = *ptr0.add(72).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l10 as u64, + nanoseconds: l11 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + status_change_timestamp: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = *ptr0.add(88).cast::(); + let l14 = *ptr0.add(96).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l13 as u64, + nanoseconds: l14 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Ok(e) + } + 1 => { + let e = { + let l15 = i32::from(*ptr0.add(8).cast::()); + ErrorCode::_lift(l15 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result16 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn stat_at( + &self, + path_flags: PathFlags, + path: &str, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 104]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 104], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.stat-at"] + fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result18 = match l4 { + 0 => { + let e = { + let l5 = i32::from(*ptr2.add(8).cast::()); + let l6 = *ptr2.add(16).cast::(); + let l7 = *ptr2.add(24).cast::(); + let l8 = i32::from(*ptr2.add(32).cast::()); + let l11 = i32::from(*ptr2.add(56).cast::()); + let l14 = i32::from(*ptr2.add(80).cast::()); + DescriptorStat { + type_: DescriptorType::_lift(l5 as u8), + link_count: l6 as u64, + size: l7 as u64, + data_access_timestamp: match l8 { + 0 => None, + 1 => { + let e = { + let l9 = *ptr2.add(40).cast::(); + let l10 = *ptr2.add(48).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l9 as u64, + nanoseconds: l10 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + data_modification_timestamp: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = *ptr2.add(64).cast::(); + let l13 = *ptr2.add(72).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l12 as u64, + nanoseconds: l13 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + status_change_timestamp: match l14 { + 0 => None, + 1 => { + let e = { + let l15 = *ptr2.add(88).cast::(); + let l16 = *ptr2.add(96).cast::(); + super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: l15 as u64, + nanoseconds: l16 as u32, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Ok(e) + } + 1 => { + let e = { + let l17 = i32::from(*ptr2.add(8).cast::()); + ErrorCode::_lift(l17 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result18 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn set_times_at( + &self, + path_flags: PathFlags, + path: &str, + data_access_timestamp: NewTimestamp, + data_modification_timestamp: NewTimestamp, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match data_access_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds2, + nanoseconds: nanoseconds2, + } = e; + (2i32, _rt::as_i64(seconds2), _rt::as_i32(nanoseconds2)) + } + }; + let (result5_0, result5_1, result5_2) = match data_modification_timestamp { + NewTimestamp::NoChange => (0i32, 0i64, 0i32), + NewTimestamp::Now => (1i32, 0i64, 0i32), + NewTimestamp::Timestamp(e) => { + let super::super::super::wasi::clocks::wall_clock::Datetime { + seconds: seconds4, + nanoseconds: nanoseconds4, + } = e; + (2i32, _rt::as_i64(seconds4), _rt::as_i32(nanoseconds4)) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.set-times-at"] + fn wit_import7( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i64, + _: i32, + _: i32, + _: i64, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result5_0, + result5_1, + result5_2, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + ErrorCode::_lift(l9 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn link_at( + &self, + old_path_flags: PathFlags, + old_path: &str, + new_descriptor: &Descriptor, + new_path: &str, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let flags0 = old_path_flags; + let vec1 = old_path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let vec2 = new_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let ptr3 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.link-at"] + fn wit_import4( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import4( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import4( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + (new_descriptor).handle() as i32, + ptr2.cast_mut(), + len2, + ptr3, + ) + }; + let l5 = i32::from(*ptr3.add(0).cast::()); + let result7 = match l5 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr3.add(1).cast::()); + ErrorCode::_lift(l6 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn open_at( + &self, + path_flags: PathFlags, + path: &str, + open_flags: OpenFlags, + flags: DescriptorFlags, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let flags2 = open_flags; + let flags3 = flags; + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.open-at"] + fn wit_import5( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import5( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + (flags2.bits() >> 0) as i32, + (flags3.bits() >> 0) as i32, + ptr4, + ) + }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result9 = match l6 { + 0 => { + let e = { + let l7 = *ptr4.add(4).cast::(); + unsafe { Descriptor::from_handle(l7 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from(*ptr4.add(4).cast::()); + ErrorCode::_lift(l8 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn readlink_at(&self, path: &str) -> Result<_rt::String, ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.readlink-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result8 = match l3 { + 0 => { + let e = { + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + _rt::string_lift(bytes6) + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn remove_directory_at(&self, path: &str) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.remove-directory-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result5 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn rename_at( + &self, + old_path: &str, + new_descriptor: &Descriptor, + new_path: &str, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = old_path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = new_path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.rename-at"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + (new_descriptor).handle() as i32, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result6 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr2.add(1).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn symlink_at( + &self, + old_path: &str, + new_path: &str, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = old_path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = new_path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.symlink-at"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result6 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr2.add(1).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn unlink_file_at(&self, path: &str) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = path; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.unlink-file-at"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result5 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + ErrorCode::_lift(l4 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn is_same_object(&self, other: &Descriptor) -> bool { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.is-same-object"] + fn wit_import0(_: i32, _: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32, _: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((self).handle() as i32, (other).handle() as i32) + }; + _rt::bool_lift(ret as u8) + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn metadata_hash(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.metadata-hash"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + let l4 = *ptr0.add(16).cast::(); + MetadataHashValue { + lower: l3 as u64, + upper: l4 as u64, + } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr0.add(8).cast::()); + ErrorCode::_lift(l5 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Descriptor { + #[allow(unused_unsafe, clippy::all)] + pub fn metadata_hash_at( + &self, + path_flags: PathFlags, + path: &str, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24], + ); + let flags0 = path_flags; + let vec1 = path; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]descriptor.metadata-hash-at"] + fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + (flags0.bits() >> 0) as i32, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result8 = match l4 { + 0 => { + let e = { + let l5 = *ptr2.add(8).cast::(); + let l6 = *ptr2.add(16).cast::(); + MetadataHashValue { + lower: l5 as u64, + upper: l6 as u64, + } + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from(*ptr2.add(8).cast::()); + ErrorCode::_lift(l7 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl DirectoryEntryStream { + #[allow(unused_unsafe, clippy::all)] + pub fn read_directory_entry( + &self, + ) -> Result, ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 5 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 5 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]directory-entry-stream.read-directory-entry"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result9 = match l2 { + 0 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + match l3 { + 0 => None, + 1 => { + let e = { + let l4 = i32::from( + *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr0 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + DirectoryEntry { + type_: DescriptorType::_lift(l4 as u8), + name: _rt::string_lift(bytes7), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + ErrorCode::_lift(l8 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn filesystem_error_code(err: &Error) -> Option { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 2]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/types@0.2.0")] + unsafe extern "C" { + #[link_name = "filesystem-error-code"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((err).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + ErrorCode::_lift(l3 as u8) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod preopens { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Descriptor = super::super::super::wasi::filesystem::types::Descriptor; + #[allow(unused_unsafe, clippy::all)] + pub fn get_directories() -> _rt::Vec<(Descriptor, _rt::String)> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:filesystem/preopens@0.2.0")] + unsafe extern "C" { + #[link_name = "get-directories"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base8 = l2; + let len8 = l3; + let mut result8 = _rt::Vec::with_capacity(len8); + for i in 0..len8 { + let base = base8 + .add(i * (3 * ::core::mem::size_of::<*const u8>())); + let e8 = { + let l4 = *base.add(0).cast::(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts(l5.cast(), len7, len7); + ( + unsafe { + super::super::super::wasi::filesystem::types::Descriptor::from_handle( + l4 as u32, + ) + }, + _rt::string_lift(bytes7), + ) + }; + result8.push(e8); + } + _rt::cabi_dealloc( + base8, + len8 * (3 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result9 = result8; + result9 + } + } + } + } + pub mod http { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod types { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Duration = super::super::super::wasi::clocks::monotonic_clock::Duration; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + pub type IoError = super::super::super::wasi::io::error::Error; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + #[derive(Clone)] + pub enum Method { + Get, + Head, + Post, + Put, + Delete, + Connect, + Options, + Trace, + Patch, + Other(_rt::String), + } + impl ::core::fmt::Debug for Method { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Method::Get => f.debug_tuple("Method::Get").finish(), + Method::Head => f.debug_tuple("Method::Head").finish(), + Method::Post => f.debug_tuple("Method::Post").finish(), + Method::Put => f.debug_tuple("Method::Put").finish(), + Method::Delete => f.debug_tuple("Method::Delete").finish(), + Method::Connect => f.debug_tuple("Method::Connect").finish(), + Method::Options => f.debug_tuple("Method::Options").finish(), + Method::Trace => f.debug_tuple("Method::Trace").finish(), + Method::Patch => f.debug_tuple("Method::Patch").finish(), + Method::Other(e) => { + f.debug_tuple("Method::Other").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub enum Scheme { + Http, + Https, + Other(_rt::String), + } + impl ::core::fmt::Debug for Scheme { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Scheme::Http => f.debug_tuple("Scheme::Http").finish(), + Scheme::Https => f.debug_tuple("Scheme::Https").finish(), + Scheme::Other(e) => { + f.debug_tuple("Scheme::Other").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct DnsErrorPayload { + pub rcode: Option<_rt::String>, + pub info_code: Option, + } + impl ::core::fmt::Debug for DnsErrorPayload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("DnsErrorPayload") + .field("rcode", &self.rcode) + .field("info-code", &self.info_code) + .finish() + } + } + #[derive(Clone)] + pub struct TlsAlertReceivedPayload { + pub alert_id: Option, + pub alert_message: Option<_rt::String>, + } + impl ::core::fmt::Debug for TlsAlertReceivedPayload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TlsAlertReceivedPayload") + .field("alert-id", &self.alert_id) + .field("alert-message", &self.alert_message) + .finish() + } + } + #[derive(Clone)] + pub struct FieldSizePayload { + pub field_name: Option<_rt::String>, + pub field_size: Option, + } + impl ::core::fmt::Debug for FieldSizePayload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("FieldSizePayload") + .field("field-name", &self.field_name) + .field("field-size", &self.field_size) + .finish() + } + } + #[derive(Clone)] + pub enum ErrorCode { + DnsTimeout, + DnsError(DnsErrorPayload), + DestinationNotFound, + DestinationUnavailable, + DestinationIpProhibited, + DestinationIpUnroutable, + ConnectionRefused, + ConnectionTerminated, + ConnectionTimeout, + ConnectionReadTimeout, + ConnectionWriteTimeout, + ConnectionLimitReached, + TlsProtocolError, + TlsCertificateError, + TlsAlertReceived(TlsAlertReceivedPayload), + HttpRequestDenied, + HttpRequestLengthRequired, + HttpRequestBodySize(Option), + HttpRequestMethodInvalid, + HttpRequestUriInvalid, + HttpRequestUriTooLong, + HttpRequestHeaderSectionSize(Option), + HttpRequestHeaderSize(Option), + HttpRequestTrailerSectionSize(Option), + HttpRequestTrailerSize(FieldSizePayload), + HttpResponseIncomplete, + HttpResponseHeaderSectionSize(Option), + HttpResponseHeaderSize(FieldSizePayload), + HttpResponseBodySize(Option), + HttpResponseTrailerSectionSize(Option), + HttpResponseTrailerSize(FieldSizePayload), + HttpResponseTransferCoding(Option<_rt::String>), + HttpResponseContentCoding(Option<_rt::String>), + HttpResponseTimeout, + HttpUpgradeFailed, + HttpProtocolError, + LoopDetected, + ConfigurationError, + InternalError(Option<_rt::String>), + } + impl ::core::fmt::Debug for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ErrorCode::DnsTimeout => { + f.debug_tuple("ErrorCode::DnsTimeout").finish() + } + ErrorCode::DnsError(e) => { + f.debug_tuple("ErrorCode::DnsError").field(e).finish() + } + ErrorCode::DestinationNotFound => { + f.debug_tuple("ErrorCode::DestinationNotFound").finish() + } + ErrorCode::DestinationUnavailable => { + f.debug_tuple("ErrorCode::DestinationUnavailable").finish() + } + ErrorCode::DestinationIpProhibited => { + f.debug_tuple("ErrorCode::DestinationIpProhibited").finish() + } + ErrorCode::DestinationIpUnroutable => { + f.debug_tuple("ErrorCode::DestinationIpUnroutable").finish() + } + ErrorCode::ConnectionRefused => { + f.debug_tuple("ErrorCode::ConnectionRefused").finish() + } + ErrorCode::ConnectionTerminated => { + f.debug_tuple("ErrorCode::ConnectionTerminated").finish() + } + ErrorCode::ConnectionTimeout => { + f.debug_tuple("ErrorCode::ConnectionTimeout").finish() + } + ErrorCode::ConnectionReadTimeout => { + f.debug_tuple("ErrorCode::ConnectionReadTimeout").finish() + } + ErrorCode::ConnectionWriteTimeout => { + f.debug_tuple("ErrorCode::ConnectionWriteTimeout").finish() + } + ErrorCode::ConnectionLimitReached => { + f.debug_tuple("ErrorCode::ConnectionLimitReached").finish() + } + ErrorCode::TlsProtocolError => { + f.debug_tuple("ErrorCode::TlsProtocolError").finish() + } + ErrorCode::TlsCertificateError => { + f.debug_tuple("ErrorCode::TlsCertificateError").finish() + } + ErrorCode::TlsAlertReceived(e) => { + f.debug_tuple("ErrorCode::TlsAlertReceived") + .field(e) + .finish() + } + ErrorCode::HttpRequestDenied => { + f.debug_tuple("ErrorCode::HttpRequestDenied").finish() + } + ErrorCode::HttpRequestLengthRequired => { + f.debug_tuple("ErrorCode::HttpRequestLengthRequired") + .finish() + } + ErrorCode::HttpRequestBodySize(e) => { + f.debug_tuple("ErrorCode::HttpRequestBodySize") + .field(e) + .finish() + } + ErrorCode::HttpRequestMethodInvalid => { + f.debug_tuple("ErrorCode::HttpRequestMethodInvalid").finish() + } + ErrorCode::HttpRequestUriInvalid => { + f.debug_tuple("ErrorCode::HttpRequestUriInvalid").finish() + } + ErrorCode::HttpRequestUriTooLong => { + f.debug_tuple("ErrorCode::HttpRequestUriTooLong").finish() + } + ErrorCode::HttpRequestHeaderSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestHeaderSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpRequestHeaderSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestHeaderSize") + .field(e) + .finish() + } + ErrorCode::HttpRequestTrailerSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestTrailerSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpRequestTrailerSize(e) => { + f.debug_tuple("ErrorCode::HttpRequestTrailerSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseIncomplete => { + f.debug_tuple("ErrorCode::HttpResponseIncomplete").finish() + } + ErrorCode::HttpResponseHeaderSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseHeaderSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseHeaderSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseHeaderSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseBodySize(e) => { + f.debug_tuple("ErrorCode::HttpResponseBodySize") + .field(e) + .finish() + } + ErrorCode::HttpResponseTrailerSectionSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseTrailerSectionSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseTrailerSize(e) => { + f.debug_tuple("ErrorCode::HttpResponseTrailerSize") + .field(e) + .finish() + } + ErrorCode::HttpResponseTransferCoding(e) => { + f.debug_tuple("ErrorCode::HttpResponseTransferCoding") + .field(e) + .finish() + } + ErrorCode::HttpResponseContentCoding(e) => { + f.debug_tuple("ErrorCode::HttpResponseContentCoding") + .field(e) + .finish() + } + ErrorCode::HttpResponseTimeout => { + f.debug_tuple("ErrorCode::HttpResponseTimeout").finish() + } + ErrorCode::HttpUpgradeFailed => { + f.debug_tuple("ErrorCode::HttpUpgradeFailed").finish() + } + ErrorCode::HttpProtocolError => { + f.debug_tuple("ErrorCode::HttpProtocolError").finish() + } + ErrorCode::LoopDetected => { + f.debug_tuple("ErrorCode::LoopDetected").finish() + } + ErrorCode::ConfigurationError => { + f.debug_tuple("ErrorCode::ConfigurationError").finish() + } + ErrorCode::InternalError(e) => { + f.debug_tuple("ErrorCode::InternalError").field(e).finish() + } + } + } + } + impl ::core::fmt::Display for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for ErrorCode {} + #[derive(Clone, Copy)] + pub enum HeaderError { + InvalidSyntax, + Forbidden, + Immutable, + } + impl ::core::fmt::Debug for HeaderError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + HeaderError::InvalidSyntax => { + f.debug_tuple("HeaderError::InvalidSyntax").finish() + } + HeaderError::Forbidden => { + f.debug_tuple("HeaderError::Forbidden").finish() + } + HeaderError::Immutable => { + f.debug_tuple("HeaderError::Immutable").finish() + } + } + } + } + impl ::core::fmt::Display for HeaderError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for HeaderError {} + pub type FieldKey = _rt::String; + pub type FieldValue = _rt::Vec; + #[derive(Debug)] + #[repr(transparent)] + pub struct Fields { + handle: _rt::Resource, + } + impl Fields { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Fields { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]fields"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + pub type Headers = Fields; + pub type Trailers = Fields; + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingRequest { + handle: _rt::Resource, + } + impl IncomingRequest { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingRequest { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-request"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingRequest { + handle: _rt::Resource, + } + impl OutgoingRequest { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingRequest { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-request"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct RequestOptions { + handle: _rt::Resource, + } + impl RequestOptions { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for RequestOptions { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]request-options"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct ResponseOutparam { + handle: _rt::Resource, + } + impl ResponseOutparam { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for ResponseOutparam { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]response-outparam"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + pub type StatusCode = u16; + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingResponse { + handle: _rt::Resource, + } + impl IncomingResponse { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingResponse { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-response"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingBody { + handle: _rt::Resource, + } + impl IncomingBody { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingBody { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-body"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct FutureTrailers { + handle: _rt::Resource, + } + impl FutureTrailers { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for FutureTrailers { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]future-trailers"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingResponse { + handle: _rt::Resource, + } + impl OutgoingResponse { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingResponse { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-response"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingBody { + handle: _rt::Resource, + } + impl OutgoingBody { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingBody { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-body"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct FutureIncomingResponse { + handle: _rt::Resource, + } + impl FutureIncomingResponse { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for FutureIncomingResponse { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]future-incoming-response"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn new() -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]fields"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn from_list( + entries: &[(FieldKey, FieldValue)], + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let vec3 = entries; + let len3 = vec3.len(); + let layout3 = _rt::alloc::Layout::from_size_align_unchecked( + vec3.len() * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result3 = if layout3.size() != 0 { + let ptr = _rt::alloc::alloc(layout3).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout3); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec3.into_iter().enumerate() { + let base = result3 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + { + let (t0_0, t0_1) = e; + let vec1 = t0_0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + let vec2 = t0_1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::() = len2; + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>() = ptr2.cast_mut(); + } + } + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]fields.from-list"] + fn wit_import5(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { wit_import5(result3, len3, ptr4) }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result10 = match l6 { + 0 => { + let e = { + let l7 = *ptr4.add(4).cast::(); + unsafe { Fields::from_handle(l7 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from(*ptr4.add(4).cast::()); + let v9 = match l8 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout3.size() != 0 { + _rt::alloc::dealloc(result3.cast(), layout3); + } + result10 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn get(&self, name: &str) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.get"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = *ptr1.add(0).cast::<*mut u8>(); + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base8 = l3; + let len8 = l4; + let mut result8 = _rt::Vec::with_capacity(len8); + for i in 0..len8 { + let base = base8 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e8 = { + let l5 = *base.add(0).cast::<*mut u8>(); + let l6 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + _rt::Vec::from_raw_parts(l5.cast(), len7, len7) + }; + result8.push(e8); + } + _rt::cabi_dealloc( + base8, + len8 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result9 = result8; + result9 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn has(&self, name: &str) -> bool { + unsafe { + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.has"] + fn wit_import1(_: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, ptr0.cast_mut(), len0) + }; + _rt::bool_lift(ret as u8) + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn set( + &self, + name: &str, + value: &[FieldValue], + ) -> Result<(), HeaderError> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec2 = value; + let len2 = vec2.len(); + let layout2 = _rt::alloc::Layout::from_size_align_unchecked( + vec2.len() * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result2 = if layout2.size() != 0 { + let ptr = _rt::alloc::alloc(layout2).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout2); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec2.into_iter().enumerate() { + let base = result2 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + { + let vec1 = e; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + } + } + let ptr3 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.set"] + fn wit_import4( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import4( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import4( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + result2, + len2, + ptr3, + ) + }; + let l5 = i32::from(*ptr3.add(0).cast::()); + let result8 = match l5 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr3.add(1).cast::()); + let v7 = match l6 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v7 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout2.size() != 0 { + _rt::alloc::dealloc(result2.cast(), layout2); + } + result8 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn delete(&self, name: &str) -> Result<(), HeaderError> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.delete"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result6 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(1).cast::()); + let v5 = match l4 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn append( + &self, + name: &str, + value: &[u8], + ) -> Result<(), HeaderError> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = value; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.append"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result7 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr2.add(1).cast::()); + let v6 = match l5 { + 0 => HeaderError::InvalidSyntax, + 1 => HeaderError::Forbidden, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + HeaderError::Immutable + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn entries(&self) -> _rt::Vec<(FieldKey, FieldValue)> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.entries"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let base10 = l2; + let len10 = l3; + let mut result10 = _rt::Vec::with_capacity(len10); + for i in 0..len10 { + let base = base10 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e10 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l8 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + ( + _rt::string_lift(bytes6), + _rt::Vec::from_raw_parts(l7.cast(), len9, len9), + ) + }; + result10.push(e10); + } + _rt::cabi_dealloc( + base10, + len10 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result11 = result10; + result11 + } + } + } + impl Fields { + #[allow(unused_unsafe, clippy::all)] + pub fn clone(&self) -> Fields { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]fields.clone"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn method(&self) -> Method { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.method"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let v6 = match l2 { + 0 => Method::Get, + 1 => Method::Head, + 2 => Method::Post, + 3 => Method::Put, + 4 => Method::Delete, + 5 => Method::Connect, + 6 => Method::Options, + 7 => Method::Trace, + 8 => Method::Patch, + n => { + debug_assert_eq!(n, 9, "invalid enum discriminant"); + let e6 = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Method::Other(e6) + } + }; + let result7 = v6; + result7 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn path_with_query(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.path-with-query"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn scheme(&self) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.scheme"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result8 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v7 = match l3 { + 0 => Scheme::Http, + 1 => Scheme::Https, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e7 = { + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + _rt::string_lift(bytes6) + }; + Scheme::Other(e7) + } + }; + v7 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn authority(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.authority"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl IncomingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn consume(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-request.consume"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { IncomingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn new(headers: Headers) -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]outgoing-request"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((&headers).take_handle() as i32) + }; + unsafe { OutgoingRequest::from_handle(ret as u32) } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn body(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.body"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { OutgoingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn method(&self) -> Method { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.method"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let v6 = match l2 { + 0 => Method::Get, + 1 => Method::Head, + 2 => Method::Post, + 3 => Method::Put, + 4 => Method::Delete, + 5 => Method::Connect, + 6 => Method::Options, + 7 => Method::Trace, + 8 => Method::Patch, + n => { + debug_assert_eq!(n, 9, "invalid enum discriminant"); + let e6 = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Method::Other(e6) + } + }; + let result7 = v6; + result7 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_method(&self, method: &Method) -> Result<(), ()> { + unsafe { + let (result1_0, result1_1, result1_2) = match method { + Method::Get => (0i32, ::core::ptr::null_mut(), 0usize), + Method::Head => (1i32, ::core::ptr::null_mut(), 0usize), + Method::Post => (2i32, ::core::ptr::null_mut(), 0usize), + Method::Put => (3i32, ::core::ptr::null_mut(), 0usize), + Method::Delete => (4i32, ::core::ptr::null_mut(), 0usize), + Method::Connect => (5i32, ::core::ptr::null_mut(), 0usize), + Method::Options => (6i32, ::core::ptr::null_mut(), 0usize), + Method::Trace => (7i32, ::core::ptr::null_mut(), 0usize), + Method::Patch => (8i32, ::core::ptr::null_mut(), 0usize), + Method::Other(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (9i32, ptr0.cast_mut(), len0) + } + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-method"] + fn wit_import2(_: i32, _: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import2( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn path_with_query(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.path-with-query"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_path_with_query( + &self, + path_with_query: Option<&str>, + ) -> Result<(), ()> { + unsafe { + let (result1_0, result1_1, result1_2) = match path_with_query { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-path-with-query"] + fn wit_import2(_: i32, _: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import2( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn scheme(&self) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.scheme"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result8 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v7 = match l3 { + 0 => Scheme::Http, + 1 => Scheme::Https, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e7 = { + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + _rt::string_lift(bytes6) + }; + Scheme::Other(e7) + } + }; + v7 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result8 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_scheme(&self, scheme: Option<&Scheme>) -> Result<(), ()> { + unsafe { + let (result2_0, result2_1, result2_2, result2_3) = match scheme { + Some(e) => { + let (result1_0, result1_1, result1_2) = match e { + Scheme::Http => (0i32, ::core::ptr::null_mut(), 0usize), + Scheme::Https => (1i32, ::core::ptr::null_mut(), 0usize), + Scheme::Other(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (2i32, ptr0.cast_mut(), len0) + } + }; + (1i32, result1_0, result1_1, result1_2) + } + None => (0i32, 0i32, ::core::ptr::null_mut(), 0usize), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-scheme"] + fn wit_import3( + _: i32, + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import3( + (self).handle() as i32, + result2_0, + result2_1, + result2_2, + result2_3, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn authority(&self) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.authority"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn set_authority(&self, authority: Option<&str>) -> Result<(), ()> { + unsafe { + let (result1_0, result1_1, result1_2) = match authority { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.set-authority"] + fn wit_import2(_: i32, _: i32, _: *mut u8, _: usize) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: *mut u8, + _: usize, + ) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import2( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingRequest { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-request.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn new() -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]request-options"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { RequestOptions::from_handle(ret as u32) } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn connect_timeout(&self) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.connect-timeout"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn set_connect_timeout( + &self, + duration: Option, + ) -> Result<(), ()> { + unsafe { + let (result0_0, result0_1) = match duration { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.set-connect-timeout"] + fn wit_import1(_: i32, _: i32, _: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: i64) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, result0_0, result0_1) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn first_byte_timeout(&self) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.first-byte-timeout"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn set_first_byte_timeout( + &self, + duration: Option, + ) -> Result<(), ()> { + unsafe { + let (result0_0, result0_1) = match duration { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.set-first-byte-timeout"] + fn wit_import1(_: i32, _: i32, _: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: i64) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, result0_0, result0_1) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn between_bytes_timeout(&self) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.between-bytes-timeout"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl RequestOptions { + #[allow(unused_unsafe, clippy::all)] + pub fn set_between_bytes_timeout( + &self, + duration: Option, + ) -> Result<(), ()> { + unsafe { + let (result0_0, result0_1) = match duration { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]request-options.set-between-bytes-timeout"] + fn wit_import1(_: i32, _: i32, _: i64) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: i64) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import1((self).handle() as i32, result0_0, result0_1) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl ResponseOutparam { + #[allow(unused_unsafe, clippy::all)] + pub fn set( + param: ResponseOutparam, + response: Result, + ) -> () { + unsafe { + let ( + result38_0, + result38_1, + result38_2, + result38_3, + result38_4, + result38_5, + result38_6, + result38_7, + ) = match &response { + Ok(e) => { + ( + 0i32, + (e).take_handle() as i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + Err(e) => { + let ( + result37_0, + result37_1, + result37_2, + result37_3, + result37_4, + result37_5, + result37_6, + ) = match e { + ErrorCode::DnsTimeout => { + ( + 0i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DnsError(e) => { + let DnsErrorPayload { + rcode: rcode0, + info_code: info_code0, + } = e; + let (result2_0, result2_1, result2_2) = match rcode0 { + Some(e) => { + let vec1 = e; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + (1i32, ptr1.cast_mut(), len1) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result3_0, result3_1) = match info_code0 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 1i32, + result2_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result2_1); + t + }, + result2_2 as *mut u8, + result3_0 as *mut u8, + result3_1 as usize, + 0i32, + ) + } + ErrorCode::DestinationNotFound => { + ( + 2i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DestinationUnavailable => { + ( + 3i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DestinationIpProhibited => { + ( + 4i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::DestinationIpUnroutable => { + ( + 5i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionRefused => { + ( + 6i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionTerminated => { + ( + 7i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionTimeout => { + ( + 8i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionReadTimeout => { + ( + 9i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionWriteTimeout => { + ( + 10i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConnectionLimitReached => { + ( + 11i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::TlsProtocolError => { + ( + 12i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::TlsCertificateError => { + ( + 13i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::TlsAlertReceived(e) => { + let TlsAlertReceivedPayload { + alert_id: alert_id4, + alert_message: alert_message4, + } = e; + let (result5_0, result5_1) = match alert_id4 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + let (result7_0, result7_1, result7_2) = match alert_message4 { + Some(e) => { + let vec6 = e; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + (1i32, ptr6.cast_mut(), len6) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 14i32, + result5_0, + ::core::mem::MaybeUninit::new(i64::from(result5_1) as u64), + result7_0 as *mut u8, + result7_1, + result7_2, + 0i32, + ) + } + ErrorCode::HttpRequestDenied => { + ( + 15i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestLengthRequired => { + ( + 16i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestBodySize(e) => { + let (result8_0, result8_1) = match e { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + ( + 17i32, + result8_0, + ::core::mem::MaybeUninit::new(result8_1 as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestMethodInvalid => { + ( + 18i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestUriInvalid => { + ( + 19i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestUriTooLong => { + ( + 20i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestHeaderSectionSize(e) => { + let (result9_0, result9_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 21i32, + result9_0, + ::core::mem::MaybeUninit::new(i64::from(result9_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestHeaderSize(e) => { + let ( + result14_0, + result14_1, + result14_2, + result14_3, + result14_4, + result14_5, + ) = match e { + Some(e) => { + let FieldSizePayload { + field_name: field_name10, + field_size: field_size10, + } = e; + let (result12_0, result12_1, result12_2) = match field_name10 { + Some(e) => { + let vec11 = e; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + (1i32, ptr11.cast_mut(), len11) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result13_0, result13_1) = match field_size10 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 1i32, + result12_0, + result12_1, + result12_2, + result13_0, + result13_1, + ) + } + None => { + (0i32, 0i32, ::core::ptr::null_mut(), 0usize, 0i32, 0i32) + } + }; + ( + 22i32, + result14_0, + ::core::mem::MaybeUninit::new(i64::from(result14_1) as u64), + result14_2, + result14_3 as *mut u8, + result14_4 as usize, + result14_5, + ) + } + ErrorCode::HttpRequestTrailerSectionSize(e) => { + let (result15_0, result15_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 23i32, + result15_0, + ::core::mem::MaybeUninit::new(i64::from(result15_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpRequestTrailerSize(e) => { + let FieldSizePayload { + field_name: field_name16, + field_size: field_size16, + } = e; + let (result18_0, result18_1, result18_2) = match field_name16 { + Some(e) => { + let vec17 = e; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + (1i32, ptr17.cast_mut(), len17) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result19_0, result19_1) = match field_size16 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 24i32, + result18_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result18_1); + t + }, + result18_2 as *mut u8, + result19_0 as *mut u8, + result19_1 as usize, + 0i32, + ) + } + ErrorCode::HttpResponseIncomplete => { + ( + 25i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseHeaderSectionSize(e) => { + let (result20_0, result20_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 26i32, + result20_0, + ::core::mem::MaybeUninit::new(i64::from(result20_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseHeaderSize(e) => { + let FieldSizePayload { + field_name: field_name21, + field_size: field_size21, + } = e; + let (result23_0, result23_1, result23_2) = match field_name21 { + Some(e) => { + let vec22 = e; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + (1i32, ptr22.cast_mut(), len22) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result24_0, result24_1) = match field_size21 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 27i32, + result23_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result23_1); + t + }, + result23_2 as *mut u8, + result24_0 as *mut u8, + result24_1 as usize, + 0i32, + ) + } + ErrorCode::HttpResponseBodySize(e) => { + let (result25_0, result25_1) = match e { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + ( + 28i32, + result25_0, + ::core::mem::MaybeUninit::new(result25_1 as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseTrailerSectionSize(e) => { + let (result26_0, result26_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 29i32, + result26_0, + ::core::mem::MaybeUninit::new(i64::from(result26_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseTrailerSize(e) => { + let FieldSizePayload { + field_name: field_name27, + field_size: field_size27, + } = e; + let (result29_0, result29_1, result29_2) = match field_name27 { + Some(e) => { + let vec28 = e; + let ptr28 = vec28.as_ptr().cast::(); + let len28 = vec28.len(); + (1i32, ptr28.cast_mut(), len28) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result30_0, result30_1) = match field_size27 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 30i32, + result29_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result29_1); + t + }, + result29_2 as *mut u8, + result30_0 as *mut u8, + result30_1 as usize, + 0i32, + ) + } + ErrorCode::HttpResponseTransferCoding(e) => { + let (result32_0, result32_1, result32_2) = match e { + Some(e) => { + let vec31 = e; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + (1i32, ptr31.cast_mut(), len31) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 31i32, + result32_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result32_1); + t + }, + result32_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseContentCoding(e) => { + let (result34_0, result34_1, result34_2) = match e { + Some(e) => { + let vec33 = e; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + (1i32, ptr33.cast_mut(), len33) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 32i32, + result34_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result34_1); + t + }, + result34_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpResponseTimeout => { + ( + 33i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpUpgradeFailed => { + ( + 34i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::HttpProtocolError => { + ( + 35i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::LoopDetected => { + ( + 36i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::ConfigurationError => { + ( + 37i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + ErrorCode::InternalError(e) => { + let (result36_0, result36_1, result36_2) = match e { + Some(e) => { + let vec35 = e; + let ptr35 = vec35.as_ptr().cast::(); + let len35 = vec35.len(); + (1i32, ptr35.cast_mut(), len35) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 38i32, + result36_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result36_1); + t + }, + result36_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + }; + ( + 1i32, + result37_0, + result37_1, + result37_2, + result37_3, + result37_4, + result37_5, + result37_6, + ) + } + }; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]response-outparam.set"] + fn wit_import39( + _: i32, + _: i32, + _: i32, + _: i32, + _: ::core::mem::MaybeUninit, + _: *mut u8, + _: *mut u8, + _: usize, + _: i32, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import39( + _: i32, + _: i32, + _: i32, + _: i32, + _: ::core::mem::MaybeUninit, + _: *mut u8, + _: *mut u8, + _: usize, + _: i32, + ) { + unreachable!() + } + unsafe { + wit_import39( + (¶m).take_handle() as i32, + result38_0, + result38_1, + result38_2, + result38_3, + result38_4, + result38_5, + result38_6, + result38_7, + ) + }; + } + } + } + impl IncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn status(&self) -> StatusCode { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-response.status"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + ret as u16 + } + } + } + impl IncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-response.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl IncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn consume(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-response.consume"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { IncomingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl IncomingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn stream(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-body.stream"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl IncomingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn finish(this: IncomingBody) -> FutureTrailers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]incoming-body.finish"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((&this).take_handle() as i32) }; + unsafe { FutureTrailers::from_handle(ret as u32) } + } + } + } + impl FutureTrailers { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-trailers.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl FutureTrailers { + #[allow(unused_unsafe, clippy::all)] + pub fn get( + &self, + ) -> Option, ErrorCode>, ()>> { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 40 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 40 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-trailers.get"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result70 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + match l3 { + 0 => { + let e = { + let l4 = i32::from(*ptr0.add(16).cast::()); + match l4 { + 0 => { + let e = { + let l5 = i32::from(*ptr0.add(24).cast::()); + match l5 { + 0 => None, + 1 => { + let e = { + let l6 = *ptr0.add(28).cast::(); + unsafe { Fields::from_handle(l6 as u32) } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from(*ptr0.add(24).cast::()); + let v69 = match l7 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e69 = { + let l8 = i32::from(*ptr0.add(32).cast::()); + let l12 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l8 { + 0 => None, + 1 => { + let e = { + let l9 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l10 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + _rt::string_lift(bytes11) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = i32::from( + *ptr0 + .add(34 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l13 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e69) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e69 = { + let l14 = i32::from(*ptr0.add(32).cast::()); + let l16 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l14 { + 0 => None, + 1 => { + let e = { + let l15 = i32::from(*ptr0.add(33).cast::()); + l15 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l18 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len19 = l18; + let bytes19 = _rt::Vec::from_raw_parts( + l17.cast(), + len19, + len19, + ); + _rt::string_lift(bytes19) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e69) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e69 = { + let l20 = i32::from(*ptr0.add(32).cast::()); + match l20 { + 0 => None, + 1 => { + let e = { + let l21 = *ptr0.add(40).cast::(); + l21 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e69) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e69 = { + let l22 = i32::from(*ptr0.add(32).cast::()); + match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *ptr0.add(36).cast::(); + l23 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e69) + } + 22 => { + let e69 = { + let l24 = i32::from(*ptr0.add(32).cast::()); + match l24 { + 0 => None, + 1 => { + let e = { + let l25 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l29 = i32::from( + *ptr0 + .add(32 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l25 { + 0 => None, + 1 => { + let e = { + let l26 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l27 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len28 = l27; + let bytes28 = _rt::Vec::from_raw_parts( + l26.cast(), + len28, + len28, + ); + _rt::string_lift(bytes28) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l29 { + 0 => None, + 1 => { + let e = { + let l30 = *ptr0 + .add(36 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l30 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e69) + } + 23 => { + let e69 = { + let l31 = i32::from(*ptr0.add(32).cast::()); + match l31 { + 0 => None, + 1 => { + let e = { + let l32 = *ptr0.add(36).cast::(); + l32 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e69) + } + 24 => { + let e69 = { + let l33 = i32::from(*ptr0.add(32).cast::()); + let l37 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l33 { + 0 => None, + 1 => { + let e = { + let l34 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l35 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + _rt::string_lift(bytes36) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l38 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e69) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e69 = { + let l39 = i32::from(*ptr0.add(32).cast::()); + match l39 { + 0 => None, + 1 => { + let e = { + let l40 = *ptr0.add(36).cast::(); + l40 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e69) + } + 27 => { + let e69 = { + let l41 = i32::from(*ptr0.add(32).cast::()); + let l45 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l41 { + 0 => None, + 1 => { + let e = { + let l42 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l43 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len44 = l43; + let bytes44 = _rt::Vec::from_raw_parts( + l42.cast(), + len44, + len44, + ); + _rt::string_lift(bytes44) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l46 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e69) + } + 28 => { + let e69 = { + let l47 = i32::from(*ptr0.add(32).cast::()); + match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(40).cast::(); + l48 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e69) + } + 29 => { + let e69 = { + let l49 = i32::from(*ptr0.add(32).cast::()); + match l49 { + 0 => None, + 1 => { + let e = { + let l50 = *ptr0.add(36).cast::(); + l50 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e69) + } + 30 => { + let e69 = { + let l51 = i32::from(*ptr0.add(32).cast::()); + let l55 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l51 { + 0 => None, + 1 => { + let e = { + let l52 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l53 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + _rt::string_lift(bytes54) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l55 { + 0 => None, + 1 => { + let e = { + let l56 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l56 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e69) + } + 31 => { + let e69 = { + let l57 = i32::from(*ptr0.add(32).cast::()); + match l57 { + 0 => None, + 1 => { + let e = { + let l58 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l59 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + _rt::string_lift(bytes60) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e69) + } + 32 => { + let e69 = { + let l61 = i32::from(*ptr0.add(32).cast::()); + match l61 { + 0 => None, + 1 => { + let e = { + let l62 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l63 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + _rt::string_lift(bytes64) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e69) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e69 = { + let l65 = i32::from(*ptr0.add(32).cast::()); + match l65 { + 0 => None, + 1 => { + let e = { + let l66 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l67 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len68 = l67; + let bytes68 = _rt::Vec::from_raw_parts( + l66.cast(), + len68, + len68, + ); + _rt::string_lift(bytes68) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e69) + } + }; + v69 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result70 + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn new(headers: Headers) -> Self { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[constructor]outgoing-response"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((&headers).take_handle() as i32) + }; + unsafe { OutgoingResponse::from_handle(ret as u32) } + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn status_code(&self) -> StatusCode { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.status-code"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + ret as u16 + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn set_status_code( + &self, + status_code: StatusCode, + ) -> Result<(), ()> { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.set-status-code"] + fn wit_import0(_: i32, _: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32, _: i32) -> i32 { + unreachable!() + } + let ret = unsafe { + wit_import0((self).handle() as i32, _rt::as_i32(status_code)) + }; + match ret { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn headers(&self) -> Headers { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.headers"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { Fields::from_handle(ret as u32) } + } + } + } + impl OutgoingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn body(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-response.body"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { OutgoingBody::from_handle(l3 as u32) } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn write(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-body.write"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl OutgoingBody { + #[allow(unused_unsafe, clippy::all)] + pub fn finish( + this: OutgoingBody, + trailers: Option, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 24 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let (result0_0, result0_1) = match &trailers { + Some(e) => (1i32, (e).take_handle() as i32), + None => (0i32, 0i32), + }; + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[static]outgoing-body.finish"] + fn wit_import2(_: i32, _: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (&this).take_handle() as i32, + result0_0, + result0_1, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result67 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(8).cast::()); + let v66 = match l4 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e66 = { + let l5 = i32::from(*ptr1.add(16).cast::()); + let l9 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l5 { + 0 => None, + 1 => { + let e = { + let l6 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l9 { + 0 => None, + 1 => { + let e = { + let l10 = i32::from( + *ptr1 + .add(18 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l10 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e66) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e66 = { + let l11 = i32::from(*ptr1.add(16).cast::()); + let l13 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = i32::from(*ptr1.add(17).cast::()); + l12 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l13 { + 0 => None, + 1 => { + let e = { + let l14 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l15 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len16 = l15; + let bytes16 = _rt::Vec::from_raw_parts( + l14.cast(), + len16, + len16, + ); + _rt::string_lift(bytes16) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e66) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e66 = { + let l17 = i32::from(*ptr1.add(16).cast::()); + match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *ptr1.add(24).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e66) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e66 = { + let l19 = i32::from(*ptr1.add(16).cast::()); + match l19 { + 0 => None, + 1 => { + let e = { + let l20 = *ptr1.add(20).cast::(); + l20 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e66) + } + 22 => { + let e66 = { + let l21 = i32::from(*ptr1.add(16).cast::()); + match l21 { + 0 => None, + 1 => { + let e = { + let l22 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l26 = i32::from( + *ptr1 + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l24 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l26 { + 0 => None, + 1 => { + let e = { + let l27 = *ptr1 + .add(20 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l27 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e66) + } + 23 => { + let e66 = { + let l28 = i32::from(*ptr1.add(16).cast::()); + match l28 { + 0 => None, + 1 => { + let e = { + let l29 = *ptr1.add(20).cast::(); + l29 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e66) + } + 24 => { + let e66 = { + let l30 = i32::from(*ptr1.add(16).cast::()); + let l34 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l30 { + 0 => None, + 1 => { + let e = { + let l31 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l32 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + _rt::string_lift(bytes33) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l34 { + 0 => None, + 1 => { + let e = { + let l35 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l35 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e66) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e66 = { + let l36 = i32::from(*ptr1.add(16).cast::()); + match l36 { + 0 => None, + 1 => { + let e = { + let l37 = *ptr1.add(20).cast::(); + l37 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e66) + } + 27 => { + let e66 = { + let l38 = i32::from(*ptr1.add(16).cast::()); + let l42 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l40 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + _rt::string_lift(bytes41) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l42 { + 0 => None, + 1 => { + let e = { + let l43 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l43 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e66) + } + 28 => { + let e66 = { + let l44 = i32::from(*ptr1.add(16).cast::()); + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = *ptr1.add(24).cast::(); + l45 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e66) + } + 29 => { + let e66 = { + let l46 = i32::from(*ptr1.add(16).cast::()); + match l46 { + 0 => None, + 1 => { + let e = { + let l47 = *ptr1.add(20).cast::(); + l47 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e66) + } + 30 => { + let e66 = { + let l48 = i32::from(*ptr1.add(16).cast::()); + let l52 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l48 { + 0 => None, + 1 => { + let e = { + let l49 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l50 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + _rt::string_lift(bytes51) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l52 { + 0 => None, + 1 => { + let e = { + let l53 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l53 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e66) + } + 31 => { + let e66 = { + let l54 = i32::from(*ptr1.add(16).cast::()); + match l54 { + 0 => None, + 1 => { + let e = { + let l55 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l56 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + _rt::string_lift(bytes57) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e66) + } + 32 => { + let e66 = { + let l58 = i32::from(*ptr1.add(16).cast::()); + match l58 { + 0 => None, + 1 => { + let e = { + let l59 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l60 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + _rt::string_lift(bytes61) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e66) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e66 = { + let l62 = i32::from(*ptr1.add(16).cast::()); + match l62 { + 0 => None, + 1 => { + let e = { + let l63 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l64 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len65 = l64; + let bytes65 = _rt::Vec::from_raw_parts( + l63.cast(), + len65, + len65, + ); + _rt::string_lift(bytes65) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e66) + } + }; + v66 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result67 + } + } + } + impl FutureIncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-incoming-response.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl FutureIncomingResponse { + #[allow(unused_unsafe, clippy::all)] + pub fn get( + &self, + ) -> Option, ()>> { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 40 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 40 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]future-incoming-response.get"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result69 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + match l3 { + 0 => { + let e = { + let l4 = i32::from(*ptr0.add(16).cast::()); + match l4 { + 0 => { + let e = { + let l5 = *ptr0.add(24).cast::(); + unsafe { IncomingResponse::from_handle(l5 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr0.add(24).cast::()); + let v68 = match l6 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e68 = { + let l7 = i32::from(*ptr0.add(32).cast::()); + let l11 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l7 { + 0 => None, + 1 => { + let e = { + let l8 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + _rt::string_lift(bytes10) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = i32::from( + *ptr0 + .add(34 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l12 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e68) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e68 = { + let l13 = i32::from(*ptr0.add(32).cast::()); + let l15 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l13 { + 0 => None, + 1 => { + let e = { + let l14 = i32::from(*ptr0.add(33).cast::()); + l14 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l15 { + 0 => None, + 1 => { + let e = { + let l16 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts( + l16.cast(), + len18, + len18, + ); + _rt::string_lift(bytes18) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e68) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e68 = { + let l19 = i32::from(*ptr0.add(32).cast::()); + match l19 { + 0 => None, + 1 => { + let e = { + let l20 = *ptr0.add(40).cast::(); + l20 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e68) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e68 = { + let l21 = i32::from(*ptr0.add(32).cast::()); + match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(36).cast::(); + l22 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e68) + } + 22 => { + let e68 = { + let l23 = i32::from(*ptr0.add(32).cast::()); + match l23 { + 0 => None, + 1 => { + let e = { + let l24 = i32::from( + *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l28 = i32::from( + *ptr0 + .add(32 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l24 { + 0 => None, + 1 => { + let e = { + let l25 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l26 = *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len27 = l26; + let bytes27 = _rt::Vec::from_raw_parts( + l25.cast(), + len27, + len27, + ); + _rt::string_lift(bytes27) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l28 { + 0 => None, + 1 => { + let e = { + let l29 = *ptr0 + .add(36 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l29 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e68) + } + 23 => { + let e68 = { + let l30 = i32::from(*ptr0.add(32).cast::()); + match l30 { + 0 => None, + 1 => { + let e = { + let l31 = *ptr0.add(36).cast::(); + l31 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e68) + } + 24 => { + let e68 = { + let l32 = i32::from(*ptr0.add(32).cast::()); + let l36 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l32 { + 0 => None, + 1 => { + let e = { + let l33 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l34 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + _rt::string_lift(bytes35) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l36 { + 0 => None, + 1 => { + let e = { + let l37 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l37 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e68) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e68 = { + let l38 = i32::from(*ptr0.add(32).cast::()); + match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr0.add(36).cast::(); + l39 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e68) + } + 27 => { + let e68 = { + let l40 = i32::from(*ptr0.add(32).cast::()); + let l44 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l40 { + 0 => None, + 1 => { + let e = { + let l41 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l42 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len43 = l42; + let bytes43 = _rt::Vec::from_raw_parts( + l41.cast(), + len43, + len43, + ); + _rt::string_lift(bytes43) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l44 { + 0 => None, + 1 => { + let e = { + let l45 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l45 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e68) + } + 28 => { + let e68 = { + let l46 = i32::from(*ptr0.add(32).cast::()); + match l46 { + 0 => None, + 1 => { + let e = { + let l47 = *ptr0.add(40).cast::(); + l47 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e68) + } + 29 => { + let e68 = { + let l48 = i32::from(*ptr0.add(32).cast::()); + match l48 { + 0 => None, + 1 => { + let e = { + let l49 = *ptr0.add(36).cast::(); + l49 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e68) + } + 30 => { + let e68 = { + let l50 = i32::from(*ptr0.add(32).cast::()); + let l54 = i32::from( + *ptr0 + .add(32 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l50 { + 0 => None, + 1 => { + let e = { + let l51 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l52 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + _rt::string_lift(bytes53) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l54 { + 0 => None, + 1 => { + let e = { + let l55 = *ptr0 + .add(36 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l55 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e68) + } + 31 => { + let e68 = { + let l56 = i32::from(*ptr0.add(32).cast::()); + match l56 { + 0 => None, + 1 => { + let e = { + let l57 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l58 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len59 = l58; + let bytes59 = _rt::Vec::from_raw_parts( + l57.cast(), + len59, + len59, + ); + _rt::string_lift(bytes59) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e68) + } + 32 => { + let e68 = { + let l60 = i32::from(*ptr0.add(32).cast::()); + match l60 { + 0 => None, + 1 => { + let e = { + let l61 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l62 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + _rt::string_lift(bytes63) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e68) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e68 = { + let l64 = i32::from(*ptr0.add(32).cast::()); + match l64 { + 0 => None, + 1 => { + let e = { + let l65 = *ptr0 + .add(32 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l66 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + _rt::string_lift(bytes67) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e68) + } + }; + v68 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = (); + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result69 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn http_error_code(err: &IoError) -> Option { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 24 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/types@0.2.0")] + unsafe extern "C" { + #[link_name = "http-error-code"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((err).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result66 = match l2 { + 0 => None, + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(8).cast::()); + let v65 = match l3 { + 0 => ErrorCode::DnsTimeout, + 1 => { + let e65 = { + let l4 = i32::from(*ptr0.add(16).cast::()); + let l8 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + DnsErrorPayload { + rcode: match l4 { + 0 => None, + 1 => { + let e = { + let l5 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + _rt::string_lift(bytes7) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l8 { + 0 => None, + 1 => { + let e = { + let l9 = i32::from( + *ptr0 + .add(18 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l9 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::DnsError(e65) + } + 2 => ErrorCode::DestinationNotFound, + 3 => ErrorCode::DestinationUnavailable, + 4 => ErrorCode::DestinationIpProhibited, + 5 => ErrorCode::DestinationIpUnroutable, + 6 => ErrorCode::ConnectionRefused, + 7 => ErrorCode::ConnectionTerminated, + 8 => ErrorCode::ConnectionTimeout, + 9 => ErrorCode::ConnectionReadTimeout, + 10 => ErrorCode::ConnectionWriteTimeout, + 11 => ErrorCode::ConnectionLimitReached, + 12 => ErrorCode::TlsProtocolError, + 13 => ErrorCode::TlsCertificateError, + 14 => { + let e65 = { + let l10 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from( + *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + TlsAlertReceivedPayload { + alert_id: match l10 { + 0 => None, + 1 => { + let e = { + let l11 = i32::from(*ptr0.add(17).cast::()); + l11 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l14 = *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + _rt::string_lift(bytes15) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::TlsAlertReceived(e65) + } + 15 => ErrorCode::HttpRequestDenied, + 16 => ErrorCode::HttpRequestLengthRequired, + 17 => { + let e65 = { + let l16 = i32::from(*ptr0.add(16).cast::()); + match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(24).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestBodySize(e65) + } + 18 => ErrorCode::HttpRequestMethodInvalid, + 19 => ErrorCode::HttpRequestUriInvalid, + 20 => ErrorCode::HttpRequestUriTooLong, + 21 => { + let e65 = { + let l18 = i32::from(*ptr0.add(16).cast::()); + match l18 { + 0 => None, + 1 => { + let e = { + let l19 = *ptr0.add(20).cast::(); + l19 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSectionSize(e65) + } + 22 => { + let e65 = { + let l20 = i32::from(*ptr0.add(16).cast::()); + match l20 { + 0 => None, + 1 => { + let e = { + let l21 = i32::from( + *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l25 = i32::from( + *ptr0 + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l23 = *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l25 { + 0 => None, + 1 => { + let e = { + let l26 = *ptr0 + .add(20 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l26 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestHeaderSize(e65) + } + 23 => { + let e65 = { + let l27 = i32::from(*ptr0.add(16).cast::()); + match l27 { + 0 => None, + 1 => { + let e = { + let l28 = *ptr0.add(20).cast::(); + l28 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpRequestTrailerSectionSize(e65) + } + 24 => { + let e65 = { + let l29 = i32::from(*ptr0.add(16).cast::()); + let l33 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l29 { + 0 => None, + 1 => { + let e = { + let l30 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l31 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + _rt::string_lift(bytes32) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l33 { + 0 => None, + 1 => { + let e = { + let l34 = *ptr0 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l34 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpRequestTrailerSize(e65) + } + 25 => ErrorCode::HttpResponseIncomplete, + 26 => { + let e65 = { + let l35 = i32::from(*ptr0.add(16).cast::()); + match l35 { + 0 => None, + 1 => { + let e = { + let l36 = *ptr0.add(20).cast::(); + l36 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseHeaderSectionSize(e65) + } + 27 => { + let e65 = { + let l37 = i32::from(*ptr0.add(16).cast::()); + let l41 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l39 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len40 = l39; + let bytes40 = _rt::Vec::from_raw_parts( + l38.cast(), + len40, + len40, + ); + _rt::string_lift(bytes40) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l41 { + 0 => None, + 1 => { + let e = { + let l42 = *ptr0 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l42 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseHeaderSize(e65) + } + 28 => { + let e65 = { + let l43 = i32::from(*ptr0.add(16).cast::()); + match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr0.add(24).cast::(); + l44 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseBodySize(e65) + } + 29 => { + let e65 = { + let l45 = i32::from(*ptr0.add(16).cast::()); + match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *ptr0.add(20).cast::(); + l46 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTrailerSectionSize(e65) + } + 30 => { + let e65 = { + let l47 = i32::from(*ptr0.add(16).cast::()); + let l51 = i32::from( + *ptr0 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + FieldSizePayload { + field_name: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l49 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l51 { + 0 => None, + 1 => { + let e = { + let l52 = *ptr0 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l52 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + ErrorCode::HttpResponseTrailerSize(e65) + } + 31 => { + let e65 = { + let l53 = i32::from(*ptr0.add(16).cast::()); + match l53 { + 0 => None, + 1 => { + let e = { + let l54 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l55 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len56 = l55; + let bytes56 = _rt::Vec::from_raw_parts( + l54.cast(), + len56, + len56, + ); + _rt::string_lift(bytes56) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseTransferCoding(e65) + } + 32 => { + let e65 = { + let l57 = i32::from(*ptr0.add(16).cast::()); + match l57 { + 0 => None, + 1 => { + let e = { + let l58 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l59 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + _rt::string_lift(bytes60) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::HttpResponseContentCoding(e65) + } + 33 => ErrorCode::HttpResponseTimeout, + 34 => ErrorCode::HttpUpgradeFailed, + 35 => ErrorCode::HttpProtocolError, + 36 => ErrorCode::LoopDetected, + 37 => ErrorCode::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e65 = { + let l61 = i32::from(*ptr0.add(16).cast::()); + match l61 { + 0 => None, + 1 => { + let e = { + let l62 = *ptr0 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l63 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + _rt::string_lift(bytes64) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + ErrorCode::InternalError(e65) + } + }; + v65 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result66 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod outgoing_handler { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type OutgoingRequest = super::super::super::wasi::http::types::OutgoingRequest; + pub type RequestOptions = super::super::super::wasi::http::types::RequestOptions; + pub type FutureIncomingResponse = super::super::super::wasi::http::types::FutureIncomingResponse; + pub type ErrorCode = super::super::super::wasi::http::types::ErrorCode; + #[allow(unused_unsafe, clippy::all)] + pub fn handle( + request: OutgoingRequest, + options: Option, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 24 + 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 24 + + 4 * ::core::mem::size_of::<*const u8>()], + ); + let (result0_0, result0_1) = match &options { + Some(e) => (1i32, (e).take_handle() as i32), + None => (0i32, 0i32), + }; + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:http/outgoing-handler@0.2.0")] + unsafe extern "C" { + #[link_name = "handle"] + fn wit_import2(_: i32, _: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (&request).take_handle() as i32, + result0_0, + result0_1, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result68 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(8).cast::(); + unsafe { + super::super::super::wasi::http::types::FutureIncomingResponse::from_handle( + l4 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(8).cast::()); + use super::super::super::wasi::http::types::ErrorCode as V67; + let v67 = match l5 { + 0 => V67::DnsTimeout, + 1 => { + let e67 = { + let l6 = i32::from(*ptr1.add(16).cast::()); + let l10 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::DnsErrorPayload { + rcode: match l6 { + 0 => None, + 1 => { + let e = { + let l7 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l8 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + _rt::string_lift(bytes9) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + info_code: match l10 { + 0 => None, + 1 => { + let e = { + let l11 = i32::from( + *ptr1 + .add(18 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + l11 as u16 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::DnsError(e67) + } + 2 => V67::DestinationNotFound, + 3 => V67::DestinationUnavailable, + 4 => V67::DestinationIpProhibited, + 5 => V67::DestinationIpUnroutable, + 6 => V67::ConnectionRefused, + 7 => V67::ConnectionTerminated, + 8 => V67::ConnectionTimeout, + 9 => V67::ConnectionReadTimeout, + 10 => V67::ConnectionWriteTimeout, + 11 => V67::ConnectionLimitReached, + 12 => V67::TlsProtocolError, + 13 => V67::TlsCertificateError, + 14 => { + let e67 = { + let l12 = i32::from(*ptr1.add(16).cast::()); + let l14 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::TlsAlertReceivedPayload { + alert_id: match l12 { + 0 => None, + 1 => { + let e = { + let l13 = i32::from(*ptr1.add(17).cast::()); + l13 as u8 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + alert_message: match l14 { + 0 => None, + 1 => { + let e = { + let l15 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l16 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + _rt::string_lift(bytes17) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::TlsAlertReceived(e67) + } + 15 => V67::HttpRequestDenied, + 16 => V67::HttpRequestLengthRequired, + 17 => { + let e67 = { + let l18 = i32::from(*ptr1.add(16).cast::()); + match l18 { + 0 => None, + 1 => { + let e = { + let l19 = *ptr1.add(24).cast::(); + l19 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestBodySize(e67) + } + 18 => V67::HttpRequestMethodInvalid, + 19 => V67::HttpRequestUriInvalid, + 20 => V67::HttpRequestUriTooLong, + 21 => { + let e67 = { + let l20 = i32::from(*ptr1.add(16).cast::()); + match l20 { + 0 => None, + 1 => { + let e = { + let l21 = *ptr1.add(20).cast::(); + l21 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestHeaderSectionSize(e67) + } + 22 => { + let e67 = { + let l22 = i32::from(*ptr1.add(16).cast::()); + match l22 { + 0 => None, + 1 => { + let e = { + let l23 = i32::from( + *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l27 = i32::from( + *ptr1 + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l23 { + 0 => None, + 1 => { + let e = { + let l24 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l25 = *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + _rt::string_lift(bytes26) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l27 { + 0 => None, + 1 => { + let e = { + let l28 = *ptr1 + .add(20 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l28 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestHeaderSize(e67) + } + 23 => { + let e67 = { + let l29 = i32::from(*ptr1.add(16).cast::()); + match l29 { + 0 => None, + 1 => { + let e = { + let l30 = *ptr1.add(20).cast::(); + l30 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpRequestTrailerSectionSize(e67) + } + 24 => { + let e67 = { + let l31 = i32::from(*ptr1.add(16).cast::()); + let l35 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l31 { + 0 => None, + 1 => { + let e = { + let l32 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l33 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len34 = l33; + let bytes34 = _rt::Vec::from_raw_parts( + l32.cast(), + len34, + len34, + ); + _rt::string_lift(bytes34) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l35 { + 0 => None, + 1 => { + let e = { + let l36 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l36 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::HttpRequestTrailerSize(e67) + } + 25 => V67::HttpResponseIncomplete, + 26 => { + let e67 = { + let l37 = i32::from(*ptr1.add(16).cast::()); + match l37 { + 0 => None, + 1 => { + let e = { + let l38 = *ptr1.add(20).cast::(); + l38 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseHeaderSectionSize(e67) + } + 27 => { + let e67 = { + let l39 = i32::from(*ptr1.add(16).cast::()); + let l43 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l39 { + 0 => None, + 1 => { + let e = { + let l40 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l41 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + _rt::string_lift(bytes42) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l44 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::HttpResponseHeaderSize(e67) + } + 28 => { + let e67 = { + let l45 = i32::from(*ptr1.add(16).cast::()); + match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *ptr1.add(24).cast::(); + l46 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseBodySize(e67) + } + 29 => { + let e67 = { + let l47 = i32::from(*ptr1.add(16).cast::()); + match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr1.add(20).cast::(); + l48 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseTrailerSectionSize(e67) + } + 30 => { + let e67 = { + let l49 = i32::from(*ptr1.add(16).cast::()); + let l53 = i32::from( + *ptr1 + .add(16 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::http::types::FieldSizePayload { + field_name: match l49 { + 0 => None, + 1 => { + let e = { + let l50 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l51 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len52 = l51; + let bytes52 = _rt::Vec::from_raw_parts( + l50.cast(), + len52, + len52, + ); + _rt::string_lift(bytes52) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + field_size: match l53 { + 0 => None, + 1 => { + let e = { + let l54 = *ptr1 + .add(20 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l54 as u32 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V67::HttpResponseTrailerSize(e67) + } + 31 => { + let e67 = { + let l55 = i32::from(*ptr1.add(16).cast::()); + match l55 { + 0 => None, + 1 => { + let e = { + let l56 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l57 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + _rt::string_lift(bytes58) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseTransferCoding(e67) + } + 32 => { + let e67 = { + let l59 = i32::from(*ptr1.add(16).cast::()); + match l59 { + 0 => None, + 1 => { + let e = { + let l60 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l61 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len62 = l61; + let bytes62 = _rt::Vec::from_raw_parts( + l60.cast(), + len62, + len62, + ); + _rt::string_lift(bytes62) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::HttpResponseContentCoding(e67) + } + 33 => V67::HttpResponseTimeout, + 34 => V67::HttpUpgradeFailed, + 35 => V67::HttpProtocolError, + 36 => V67::LoopDetected, + 37 => V67::ConfigurationError, + n => { + debug_assert_eq!(n, 38, "invalid enum discriminant"); + let e67 = { + let l63 = i32::from(*ptr1.add(16).cast::()); + match l63 { + 0 => None, + 1 => { + let e = { + let l64 = *ptr1 + .add(16 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l65 = *ptr1 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len66 = l65; + let bytes66 = _rt::Vec::from_raw_parts( + l64.cast(), + len66, + len66, + ); + _rt::string_lift(bytes66) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + V67::InternalError(e67) + } + }; + v67 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result68 + } + } + } + } + pub mod io { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod poll { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct Pollable { + handle: _rt::Resource, + } + impl Pollable { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Pollable { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]pollable"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Pollable { + #[allow(unused_unsafe, clippy::all)] + pub fn ready(&self) -> bool { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]pollable.ready"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + _rt::bool_lift(ret as u8) + } + } + } + impl Pollable { + #[allow(unused_unsafe, clippy::all)] + pub fn block(&self) -> () { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]pollable.block"] + fn wit_import0(_: i32); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) { + unreachable!() + } + unsafe { wit_import0((self).handle() as i32) }; + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn poll(in_: &[&Pollable]) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = in_; + let len0 = vec0.len(); + let layout0 = _rt::alloc::Layout::from_size_align_unchecked( + vec0.len() * 4, + 4, + ); + let result0 = if layout0.size() != 0 { + let ptr = _rt::alloc::alloc(layout0).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout0); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec0.into_iter().enumerate() { + let base = result0.add(i * 4); + { + *base.add(0).cast::() = (e).handle() as i32; + } + } + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/poll@0.2.0")] + unsafe extern "C" { + #[link_name = "poll"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(result0, len0, ptr1) }; + let l3 = *ptr1.add(0).cast::<*mut u8>(); + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + let result6 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + if layout0.size() != 0 { + _rt::alloc::dealloc(result0.cast(), layout0); + } + result6 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod error { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct Error { + handle: _rt::Resource, + } + impl Error { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Error { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/error@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]error"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Error { + #[allow(unused_unsafe, clippy::all)] + pub fn to_debug_string(&self) -> _rt::String { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/error@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]error.to-debug-string"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + let result5 = _rt::string_lift(bytes4); + result5 + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod streams { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Error = super::super::super::wasi::io::error::Error; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub enum StreamError { + LastOperationFailed(Error), + Closed, + } + impl ::core::fmt::Debug for StreamError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + StreamError::LastOperationFailed(e) => { + f.debug_tuple("StreamError::LastOperationFailed") + .field(e) + .finish() + } + StreamError::Closed => { + f.debug_tuple("StreamError::Closed").finish() + } + } + } + } + impl ::core::fmt::Display for StreamError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for StreamError {} + #[derive(Debug)] + #[repr(transparent)] + pub struct InputStream { + handle: _rt::Resource, + } + impl InputStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for InputStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]input-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutputStream { + handle: _rt::Resource, + } + impl OutputStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutputStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]output-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn read(&self, len: u64) -> Result<_rt::Vec, StreamError> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.read"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result9 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + _rt::Vec::from_raw_parts(l3.cast(), len5, len5) + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v8 = match l6 { + 0 => { + let e8 = { + let l7 = *ptr0 + .add(4 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l7 as u32, + ) + } + }; + StreamError::LastOperationFailed(e8) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v8 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_read( + &self, + len: u64, + ) -> Result<_rt::Vec, StreamError> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.blocking-read"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result9 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len5 = l4; + _rt::Vec::from_raw_parts(l3.cast(), len5, len5) + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v8 = match l6 { + 0 => { + let e8 = { + let l7 = *ptr0 + .add(4 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l7 as u32, + ) + } + }; + StreamError::LastOperationFailed(e8) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v8 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn skip(&self, len: u64) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.skip"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_skip(&self, len: u64) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.blocking-skip"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl InputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]input-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn check_write(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.check-write"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn write(&self, contents: &[u8]) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let vec0 = contents; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.write"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result7 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(4).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr1.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_write_and_flush( + &self, + contents: &[u8], + ) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let vec0 = contents; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-write-and-flush"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result7 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr1.add(4).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr1.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn flush(&self) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.flush"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_flush(&self) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-flush"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn write_zeroes(&self, len: u64) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.write-zeroes"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_write_zeroes_and_flush( + &self, + len: u64, + ) -> Result<(), StreamError> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-write-zeroes-and-flush"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(&len), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + let v5 = match l3 { + 0 => { + let e5 = { + let l4 = *ptr0.add(8).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l4 as u32, + ) + } + }; + StreamError::LastOperationFailed(e5) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v5 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn splice( + &self, + src: &InputStream, + len: u64, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.splice"] + fn wit_import1(_: i32, _: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i32, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + (src).handle() as i32, + _rt::as_i64(&len), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl OutputStream { + #[allow(unused_unsafe, clippy::all)] + pub fn blocking_splice( + &self, + src: &InputStream, + len: u64, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:io/streams@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]output-stream.blocking-splice"] + fn wit_import1(_: i32, _: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1( + _: i32, + _: i32, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + (src).handle() as i32, + _rt::as_i64(&len), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let v6 = match l4 { + 0 => { + let e6 = { + let l5 = *ptr0.add(12).cast::(); + unsafe { + super::super::super::wasi::io::error::Error::from_handle( + l5 as u32, + ) + } + }; + StreamError::LastOperationFailed(e6) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + StreamError::Closed + } + }; + v6 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + } + } + pub mod keyvalue { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod store { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Clone)] + pub enum Error { + NoSuchStore, + AccessDenied, + Other(_rt::String), + } + impl ::core::fmt::Debug for Error { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Error::NoSuchStore => { + f.debug_tuple("Error::NoSuchStore").finish() + } + Error::AccessDenied => { + f.debug_tuple("Error::AccessDenied").finish() + } + Error::Other(e) => { + f.debug_tuple("Error::Other").field(e).finish() + } + } + } + } + impl ::core::fmt::Display for Error { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for Error {} + #[derive(Clone)] + pub struct KeyResponse { + pub keys: _rt::Vec<_rt::String>, + pub cursor: Option<_rt::String>, + } + impl ::core::fmt::Debug for KeyResponse { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("KeyResponse") + .field("keys", &self.keys) + .field("cursor", &self.cursor) + .finish() + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct Bucket { + handle: _rt::Resource, + } + impl Bucket { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Bucket { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[resource-drop]bucket"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn get(&self, key: &str) -> Result>, Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.get"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result13 = match l3 { + 0 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + match l4 { + 0 => None, + 1 => { + let e = { + let l5 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + _rt::Vec::from_raw_parts(l5.cast(), len7, len7) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l8 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v12 = match l8 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e12 = { + let l9 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l10 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + _rt::string_lift(bytes11) + }; + Error::Other(e12) + } + }; + v12 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result13 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn set(&self, key: &str, value: &[u8]) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let vec1 = value; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.set"] + fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1.cast_mut(), + len1, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result10 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v9 = match l5 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Error::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn delete(&self, key: &str) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.delete"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result9 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v8 = match l4 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e8 = { + let l5 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + _rt::string_lift(bytes7) + }; + Error::Other(e8) + } + }; + v8 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result9 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn exists(&self, key: &str) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.exists"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (self).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + _rt::bool_lift(l4 as u8) + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v9 = match l5 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Error::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Bucket { + #[allow(unused_unsafe, clippy::all)] + pub fn list_keys( + &self, + cursor: Option<&str>, + ) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 6 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 6 + * ::core::mem::size_of::<*const u8>()], + ); + let (result1_0, result1_1, result1_2) = match cursor { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "[method]bucket.list-keys"] + fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3( + (self).handle() as i32, + result1_0, + result1_1, + result1_2, + ptr2, + ) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result20 = match l4 { + 0 => { + let e = { + let l5 = *ptr2 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base10 = l5; + let len10 = l6; + let mut result10 = _rt::Vec::with_capacity(len10); + for i in 0..len10 { + let base = base10 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e10 = { + let l7 = *base.add(0).cast::<*mut u8>(); + let l8 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + _rt::string_lift(bytes9) + }; + result10.push(e10); + } + _rt::cabi_dealloc( + base10, + len10 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l11 = i32::from( + *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + KeyResponse { + keys: result10, + cursor: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = *ptr2 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l13 = *ptr2 + .add(5 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + _rt::string_lift(bytes14) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Ok(e) + } + 1 => { + let e = { + let l15 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v19 = match l15 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e19 = { + let l16 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts( + l16.cast(), + len18, + len18, + ); + _rt::string_lift(bytes18) + }; + Error::Other(e19) + } + }; + v19 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result20 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn open(identifier: &str) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = identifier; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/store@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "open"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { Bucket::from_handle(l4 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v9 = match l5 { + 0 => Error::NoSuchStore, + 1 => Error::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + Error::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod atomics { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Bucket = super::super::super::wasi::keyvalue::store::Bucket; + pub type Error = super::super::super::wasi::keyvalue::store::Error; + #[derive(Debug)] + #[repr(transparent)] + pub struct Cas { + handle: _rt::Resource, + } + impl Cas { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Cas { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link( + wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2" + )] + unsafe extern "C" { + #[link_name = "[resource-drop]cas"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + pub enum CasError { + StoreError(Error), + CasFailed(Cas), + } + impl ::core::fmt::Debug for CasError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + CasError::StoreError(e) => { + f.debug_tuple("CasError::StoreError").field(e).finish() + } + CasError::CasFailed(e) => { + f.debug_tuple("CasError::CasFailed").field(e).finish() + } + } + } + } + impl ::core::fmt::Display for CasError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{:?}", self) + } + } + impl std::error::Error for CasError {} + impl Cas { + #[allow(unused_unsafe, clippy::all)] + pub fn new(bucket: &Bucket, key: &str) -> Result { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link( + wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2" + )] + unsafe extern "C" { + #[link_name = "[static]cas.new"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (bucket).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = *ptr1 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { Cas::from_handle(l4 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl Cas { + #[allow(unused_unsafe, clippy::all)] + pub fn current(&self) -> Result>, Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link( + wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2" + )] + unsafe extern "C" { + #[link_name = "[method]cas.current"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result12 = match l2 { + 0 => { + let e = { + let l3 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l5 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len6 = l5; + _rt::Vec::from_raw_parts(l4.cast(), len6, len6) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V11; + let v11 = match l7 { + 0 => V11::NoSuchStore, + 1 => V11::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e11 = { + let l8 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr0 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + _rt::string_lift(bytes10) + }; + V11::Other(e11) + } + }; + v11 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result12 + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn increment( + bucket: &Bucket, + key: &str, + delta: i64, + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 16 + 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16 + + 2 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "increment"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: i64, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (bucket).handle() as i32, + ptr0.cast_mut(), + len0, + _rt::as_i64(&delta), + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result10 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(8).cast::(); + l4 + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(8).cast::()); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(8 + 1 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn swap(cas: Cas, value: &[u8]) -> Result<(), CasError> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 5 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 5 + * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = value; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/atomics@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "swap"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (&cas).take_handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result12 = match l3 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from( + *ptr1.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + let v11 = match l4 { + 0 => { + let e11 = { + let l5 = i32::from( + *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr1 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr1 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + CasError::StoreError(e11) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e11 = { + let l10 = *ptr1 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + unsafe { Cas::from_handle(l10 as u32) } + }; + CasError::CasFailed(e11) + } + }; + v11 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result12 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod batch { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Bucket = super::super::super::wasi::keyvalue::store::Bucket; + pub type Error = super::super::super::wasi::keyvalue::store::Error; + #[allow(unused_unsafe, clippy::all)] + pub fn get_many( + bucket: &Bucket, + keys: &[_rt::String], + ) -> Result<_rt::Vec)>>, Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec1 = keys; + let len1 = vec1.len(); + let layout1 = _rt::alloc::Layout::from_size_align_unchecked( + vec1.len() * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result1 = if layout1.size() != 0 { + let ptr = _rt::alloc::alloc(layout1).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout1); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec1.into_iter().enumerate() { + let base = result1 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len0; + *base.add(0).cast::<*mut u8>() = ptr0.cast_mut(); + } + } + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/batch@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "get-many"] + fn wit_import3(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3((bucket).handle() as i32, result1, len1, ptr2) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result20 = match l4 { + 0 => { + let e = { + let l5 = *ptr2 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base14 = l5; + let len14 = l6; + let mut result14 = _rt::Vec::with_capacity(len14); + for i in 0..len14 { + let base = base14 + .add(i * (5 * ::core::mem::size_of::<*const u8>())); + let e14 = { + let l7 = i32::from(*base.add(0).cast::()); + match l7 { + 0 => None, + 1 => { + let e = { + let l8 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l12 = *base + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len13 = l12; + ( + _rt::string_lift(bytes10), + _rt::Vec::from_raw_parts(l11.cast(), len13, len13), + ) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + result14.push(e14); + } + _rt::cabi_dealloc( + base14, + len14 * (5 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result14 + }; + Ok(e) + } + 1 => { + let e = { + let l15 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V19; + let v19 = match l15 { + 0 => V19::NoSuchStore, + 1 => V19::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e19 = { + let l16 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts( + l16.cast(), + len18, + len18, + ); + _rt::string_lift(bytes18) + }; + V19::Other(e19) + } + }; + v19 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout1.size() != 0 { + _rt::alloc::dealloc(result1.cast(), layout1); + } + result20 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_many( + bucket: &Bucket, + key_values: &[(_rt::String, _rt::Vec)], + ) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec3 = key_values; + let len3 = vec3.len(); + let layout3 = _rt::alloc::Layout::from_size_align_unchecked( + vec3.len() * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result3 = if layout3.size() != 0 { + let ptr = _rt::alloc::alloc(layout3).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout3); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec3.into_iter().enumerate() { + let base = result3 + .add(i * (4 * ::core::mem::size_of::<*const u8>())); + { + let (t0_0, t0_1) = e; + let vec1 = t0_0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + let vec2 = t0_1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::() = len2; + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>() = ptr2.cast_mut(); + } + } + let ptr4 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/batch@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "set-many"] + fn wit_import5(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import5( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import5((bucket).handle() as i32, result3, len3, ptr4) + }; + let l6 = i32::from(*ptr4.add(0).cast::()); + let result12 = match l6 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l7 = i32::from( + *ptr4.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V11; + let v11 = match l7 { + 0 => V11::NoSuchStore, + 1 => V11::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e11 = { + let l8 = *ptr4 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr4 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + _rt::string_lift(bytes10) + }; + V11::Other(e11) + } + }; + v11 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout3.size() != 0 { + _rt::alloc::dealloc(result3.cast(), layout3); + } + result12 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn delete_many( + bucket: &Bucket, + keys: &[_rt::String], + ) -> Result<(), Error> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 4 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 4 + * ::core::mem::size_of::<*const u8>()], + ); + let vec1 = keys; + let len1 = vec1.len(); + let layout1 = _rt::alloc::Layout::from_size_align_unchecked( + vec1.len() * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result1 = if layout1.size() != 0 { + let ptr = _rt::alloc::alloc(layout1).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout1); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec1.into_iter().enumerate() { + let base = result1 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len0; + *base.add(0).cast::<*mut u8>() = ptr0.cast_mut(); + } + } + let ptr2 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:keyvalue/batch@0.2.0-draft2")] + unsafe extern "C" { + #[link_name = "delete-many"] + fn wit_import3(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import3((bucket).handle() as i32, result1, len1, ptr2) + }; + let l4 = i32::from(*ptr2.add(0).cast::()); + let result10 = match l4 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from( + *ptr2.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::super::super::wasi::keyvalue::store::Error as V9; + let v9 = match l5 { + 0 => V9::NoSuchStore, + 1 => V9::AccessDenied, + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e9 = { + let l6 = *ptr2 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = *ptr2 + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts( + l6.cast(), + len8, + len8, + ); + _rt::string_lift(bytes8) + }; + V9::Other(e9) + } + }; + v9 + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout1.size() != 0 { + _rt::alloc::dealloc(result1.cast(), layout1); + } + result10 + } + } + } + } + pub mod random { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod random { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[allow(unused_unsafe, clippy::all)] + pub fn get_random_bytes(len: u64) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/random@0.2.0")] + unsafe extern "C" { + #[link_name = "get-random-bytes"] + fn wit_import1(_: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i64, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(_rt::as_i64(&len), ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len4 = l3; + let result5 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + result5 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_random_u64() -> u64 { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/random@0.2.0")] + unsafe extern "C" { + #[link_name = "get-random-u64"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod insecure { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[allow(unused_unsafe, clippy::all)] + pub fn get_insecure_random_bytes(len: u64) -> _rt::Vec { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 2 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/insecure@0.2.0")] + unsafe extern "C" { + #[link_name = "get-insecure-random-bytes"] + fn wit_import1(_: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i64, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(_rt::as_i64(&len), ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len4 = l3; + let result5 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + result5 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_insecure_random_u64() -> u64 { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/insecure@0.2.0")] + unsafe extern "C" { + #[link_name = "get-insecure-random-u64"] + fn wit_import0() -> i64; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i64 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + ret as u64 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod insecure_seed { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[allow(unused_unsafe, clippy::all)] + pub fn insecure_seed() -> (u64, u64) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 16]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:random/insecure-seed@0.2.0")] + unsafe extern "C" { + #[link_name = "insecure-seed"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::(); + let l3 = *ptr0.add(8).cast::(); + let result4 = (l2 as u64, l3 as u64); + result4 + } + } + } + } + pub mod sockets { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod network { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Debug)] + #[repr(transparent)] + pub struct Network { + handle: _rt::Resource, + } + impl Network { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for Network { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/network@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]network"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum ErrorCode { + Unknown, + AccessDenied, + NotSupported, + InvalidArgument, + OutOfMemory, + Timeout, + ConcurrencyConflict, + NotInProgress, + WouldBlock, + InvalidState, + NewSocketLimit, + AddressNotBindable, + AddressInUse, + RemoteUnreachable, + ConnectionRefused, + ConnectionReset, + ConnectionAborted, + DatagramTooLarge, + NameUnresolvable, + TemporaryResolverFailure, + PermanentResolverFailure, + } + impl ErrorCode { + pub fn name(&self) -> &'static str { + match self { + ErrorCode::Unknown => "unknown", + ErrorCode::AccessDenied => "access-denied", + ErrorCode::NotSupported => "not-supported", + ErrorCode::InvalidArgument => "invalid-argument", + ErrorCode::OutOfMemory => "out-of-memory", + ErrorCode::Timeout => "timeout", + ErrorCode::ConcurrencyConflict => "concurrency-conflict", + ErrorCode::NotInProgress => "not-in-progress", + ErrorCode::WouldBlock => "would-block", + ErrorCode::InvalidState => "invalid-state", + ErrorCode::NewSocketLimit => "new-socket-limit", + ErrorCode::AddressNotBindable => "address-not-bindable", + ErrorCode::AddressInUse => "address-in-use", + ErrorCode::RemoteUnreachable => "remote-unreachable", + ErrorCode::ConnectionRefused => "connection-refused", + ErrorCode::ConnectionReset => "connection-reset", + ErrorCode::ConnectionAborted => "connection-aborted", + ErrorCode::DatagramTooLarge => "datagram-too-large", + ErrorCode::NameUnresolvable => "name-unresolvable", + ErrorCode::TemporaryResolverFailure => { + "temporary-resolver-failure" + } + ErrorCode::PermanentResolverFailure => { + "permanent-resolver-failure" + } + } + } + pub fn message(&self) -> &'static str { + match self { + ErrorCode::Unknown => "", + ErrorCode::AccessDenied => "", + ErrorCode::NotSupported => "", + ErrorCode::InvalidArgument => "", + ErrorCode::OutOfMemory => "", + ErrorCode::Timeout => "", + ErrorCode::ConcurrencyConflict => "", + ErrorCode::NotInProgress => "", + ErrorCode::WouldBlock => "", + ErrorCode::InvalidState => "", + ErrorCode::NewSocketLimit => "", + ErrorCode::AddressNotBindable => "", + ErrorCode::AddressInUse => "", + ErrorCode::RemoteUnreachable => "", + ErrorCode::ConnectionRefused => "", + ErrorCode::ConnectionReset => "", + ErrorCode::ConnectionAborted => "", + ErrorCode::DatagramTooLarge => "", + ErrorCode::NameUnresolvable => "", + ErrorCode::TemporaryResolverFailure => "", + ErrorCode::PermanentResolverFailure => "", + } + } + } + impl ::core::fmt::Debug for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ErrorCode") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for ErrorCode { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + write!(f, "{} (error {})", self.name(), * self as i32) + } + } + impl std::error::Error for ErrorCode {} + impl ErrorCode { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> ErrorCode { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => ErrorCode::Unknown, + 1 => ErrorCode::AccessDenied, + 2 => ErrorCode::NotSupported, + 3 => ErrorCode::InvalidArgument, + 4 => ErrorCode::OutOfMemory, + 5 => ErrorCode::Timeout, + 6 => ErrorCode::ConcurrencyConflict, + 7 => ErrorCode::NotInProgress, + 8 => ErrorCode::WouldBlock, + 9 => ErrorCode::InvalidState, + 10 => ErrorCode::NewSocketLimit, + 11 => ErrorCode::AddressNotBindable, + 12 => ErrorCode::AddressInUse, + 13 => ErrorCode::RemoteUnreachable, + 14 => ErrorCode::ConnectionRefused, + 15 => ErrorCode::ConnectionReset, + 16 => ErrorCode::ConnectionAborted, + 17 => ErrorCode::DatagramTooLarge, + 18 => ErrorCode::NameUnresolvable, + 19 => ErrorCode::TemporaryResolverFailure, + 20 => ErrorCode::PermanentResolverFailure, + _ => panic!("invalid enum discriminant"), + } + } + } + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum IpAddressFamily { + Ipv4, + Ipv6, + } + impl ::core::fmt::Debug for IpAddressFamily { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + IpAddressFamily::Ipv4 => { + f.debug_tuple("IpAddressFamily::Ipv4").finish() + } + IpAddressFamily::Ipv6 => { + f.debug_tuple("IpAddressFamily::Ipv6").finish() + } + } + } + } + impl IpAddressFamily { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> IpAddressFamily { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => IpAddressFamily::Ipv4, + 1 => IpAddressFamily::Ipv6, + _ => panic!("invalid enum discriminant"), + } + } + } + pub type Ipv4Address = (u8, u8, u8, u8); + pub type Ipv6Address = (u16, u16, u16, u16, u16, u16, u16, u16); + #[derive(Clone, Copy)] + pub enum IpAddress { + Ipv4(Ipv4Address), + Ipv6(Ipv6Address), + } + impl ::core::fmt::Debug for IpAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + IpAddress::Ipv4(e) => { + f.debug_tuple("IpAddress::Ipv4").field(e).finish() + } + IpAddress::Ipv6(e) => { + f.debug_tuple("IpAddress::Ipv6").field(e).finish() + } + } + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Ipv4SocketAddress { + pub port: u16, + pub address: Ipv4Address, + } + impl ::core::fmt::Debug for Ipv4SocketAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Ipv4SocketAddress") + .field("port", &self.port) + .field("address", &self.address) + .finish() + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Ipv6SocketAddress { + pub port: u16, + pub flow_info: u32, + pub address: Ipv6Address, + pub scope_id: u32, + } + impl ::core::fmt::Debug for Ipv6SocketAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Ipv6SocketAddress") + .field("port", &self.port) + .field("flow-info", &self.flow_info) + .field("address", &self.address) + .field("scope-id", &self.scope_id) + .finish() + } + } + #[derive(Clone, Copy)] + pub enum IpSocketAddress { + Ipv4(Ipv4SocketAddress), + Ipv6(Ipv6SocketAddress), + } + impl ::core::fmt::Debug for IpSocketAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + IpSocketAddress::Ipv4(e) => { + f.debug_tuple("IpSocketAddress::Ipv4").field(e).finish() + } + IpSocketAddress::Ipv6(e) => { + f.debug_tuple("IpSocketAddress::Ipv6").field(e).finish() + } + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod instance_network { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type Network = super::super::super::wasi::sockets::network::Network; + #[allow(unused_unsafe, clippy::all)] + pub fn instance_network() -> Network { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/instance-network@0.2.0")] + unsafe extern "C" { + #[link_name = "instance-network"] + fn wit_import0() -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0() -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0() }; + unsafe { + super::super::super::wasi::sockets::network::Network::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod udp { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Network = super::super::super::wasi::sockets::network::Network; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpSocketAddress = super::super::super::wasi::sockets::network::IpSocketAddress; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + #[derive(Clone)] + pub struct IncomingDatagram { + pub data: _rt::Vec, + pub remote_address: IpSocketAddress, + } + impl ::core::fmt::Debug for IncomingDatagram { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("IncomingDatagram") + .field("data", &self.data) + .field("remote-address", &self.remote_address) + .finish() + } + } + #[derive(Clone)] + pub struct OutgoingDatagram { + pub data: _rt::Vec, + pub remote_address: Option, + } + impl ::core::fmt::Debug for OutgoingDatagram { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("OutgoingDatagram") + .field("data", &self.data) + .field("remote-address", &self.remote_address) + .finish() + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct UdpSocket { + handle: _rt::Resource, + } + impl UdpSocket { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for UdpSocket { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]udp-socket"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct IncomingDatagramStream { + handle: _rt::Resource, + } + impl IncomingDatagramStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for IncomingDatagramStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]incoming-datagram-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct OutgoingDatagramStream { + handle: _rt::Resource, + } + impl OutgoingDatagramStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for OutgoingDatagramStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]outgoing-datagram-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_bind( + &self, + network: &Network, + local_address: IpSocketAddress, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match local_address { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.start-bind"] + fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (network).handle() as i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l9 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_bind(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.finish-bind"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn stream( + &self, + remote_address: Option, + ) -> Result< + (IncomingDatagramStream, OutgoingDatagramStream), + ErrorCode, + > { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ( + result6_0, + result6_1, + result6_2, + result6_3, + result6_4, + result6_5, + result6_6, + result6_7, + result6_8, + result6_9, + result6_10, + result6_11, + result6_12, + ) = match remote_address { + Some(e) => { + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match e { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + ( + 1i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) + } + None => { + ( + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + }; + let ptr7 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.stream"] + fn wit_import8( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import8( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import8( + (self).handle() as i32, + result6_0, + result6_1, + result6_2, + result6_3, + result6_4, + result6_5, + result6_6, + result6_7, + result6_8, + result6_9, + result6_10, + result6_11, + result6_12, + ptr7, + ) + }; + let l9 = i32::from(*ptr7.add(0).cast::()); + let result13 = match l9 { + 0 => { + let e = { + let l10 = *ptr7.add(4).cast::(); + let l11 = *ptr7.add(8).cast::(); + ( + unsafe { IncomingDatagramStream::from_handle(l10 as u32) }, + unsafe { OutgoingDatagramStream::from_handle(l11 as u32) }, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l12 = i32::from(*ptr7.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l12 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result13 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn local_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.local-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn remote_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.remote-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn address_family(&self) -> IpAddressFamily { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.address-family"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + super::super::super::wasi::sockets::network::IpAddressFamily::_lift( + ret as u8, + ) + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn unicast_hop_limit(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.unicast-hop-limit"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + l3 as u8 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_unicast_hop_limit(&self, value: u8) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.set-unicast-hop-limit"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i32(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn receive_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.receive-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_receive_buffer_size( + &self, + value: u64, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.set-receive-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn send_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.send-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_send_buffer_size(&self, value: u64) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.set-send-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl UdpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]udp-socket.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl IncomingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn receive( + &self, + max_results: u64, + ) -> Result<_rt::Vec, ErrorCode> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit< + u8, + >; 3 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 + * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-datagram-stream.receive"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&max_results), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result28 = match l2 { + 0 => { + let e = { + let l3 = *ptr0 + .add(::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l4 = *ptr0 + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base26 = l3; + let len26 = l4; + let mut result26 = _rt::Vec::with_capacity(len26); + for i in 0..len26 { + let base = base26 + .add(i * (32 + 2 * ::core::mem::size_of::<*const u8>())); + let e26 = { + let l5 = *base.add(0).cast::<*mut u8>(); + let l6 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len7 = l6; + let l8 = i32::from( + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V25; + let v25 = match l8 { + 0 => { + let e25 = { + let l9 = i32::from( + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l10 = i32::from( + *base + .add(6 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l11 = i32::from( + *base + .add(7 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l12 = i32::from( + *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l13 = i32::from( + *base + .add(9 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l9 as u16, + address: (l10 as u8, l11 as u8, l12 as u8, l13 as u8), + } + }; + V25::Ipv4(e25) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e25 = { + let l14 = i32::from( + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l15 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let l16 = i32::from( + *base + .add(12 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l17 = i32::from( + *base + .add(14 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l18 = i32::from( + *base + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l19 = i32::from( + *base + .add(18 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l20 = i32::from( + *base + .add(20 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l21 = i32::from( + *base + .add(22 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l22 = i32::from( + *base + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l23 = i32::from( + *base + .add(26 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l24 = *base + .add(28 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l14 as u16, + flow_info: l15 as u32, + address: ( + l16 as u16, + l17 as u16, + l18 as u16, + l19 as u16, + l20 as u16, + l21 as u16, + l22 as u16, + l23 as u16, + ), + scope_id: l24 as u32, + } + }; + V25::Ipv6(e25) + } + }; + IncomingDatagram { + data: _rt::Vec::from_raw_parts(l5.cast(), len7, len7), + remote_address: v25, + } + }; + result26.push(e26); + } + _rt::cabi_dealloc( + base26, + len26 * (32 + 2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result26 + }; + Ok(e) + } + 1 => { + let e = { + let l27 = i32::from( + *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(), + ); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l27 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result28 + } + } + } + impl IncomingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]incoming-datagram-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl OutgoingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn check_send(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-datagram-stream.check-send"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl OutgoingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn send( + &self, + datagrams: &[OutgoingDatagram], + ) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let vec7 = datagrams; + let len7 = vec7.len(); + let layout7 = _rt::alloc::Layout::from_size_align_unchecked( + vec7.len() * (32 + 3 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let result7 = if layout7.size() != 0 { + let ptr = _rt::alloc::alloc(layout7).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout7); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec7.into_iter().enumerate() { + let base = result7 + .add(i * (32 + 3 * ::core::mem::size_of::<*const u8>())); + { + let OutgoingDatagram { + data: data0, + remote_address: remote_address0, + } = e; + let vec1 = data0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + *base + .add(::core::mem::size_of::<*const u8>()) + .cast::() = len1; + *base.add(0).cast::<*mut u8>() = ptr1.cast_mut(); + match remote_address0 { + Some(e) => { + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (1i32) as u8; + use super::super::super::wasi::sockets::network::IpSocketAddress as V6; + match e { + V6::Ipv4(e) => { + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (0i32) as u8; + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port2, + address: address2, + } = e; + *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(port2)) as u16; + let (t3_0, t3_1, t3_2, t3_3) = address2; + *base + .add(10 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_0)) as u8; + *base + .add(11 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_1)) as u8; + *base + .add(12 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_2)) as u8; + *base + .add(13 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t3_3)) as u8; + } + V6::Ipv6(e) => { + *base + .add(4 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (1i32) as u8; + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port4, + flow_info: flow_info4, + address: address4, + scope_id: scope_id4, + } = e; + *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(port4)) as u16; + *base + .add(12 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = _rt::as_i32(flow_info4); + let (t5_0, t5_1, t5_2, t5_3, t5_4, t5_5, t5_6, t5_7) = address4; + *base + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_0)) as u16; + *base + .add(18 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_1)) as u16; + *base + .add(20 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_2)) as u16; + *base + .add(22 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_3)) as u16; + *base + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_4)) as u16; + *base + .add(26 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_5)) as u16; + *base + .add(28 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_6)) as u16; + *base + .add(30 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (_rt::as_i32(t5_7)) as u16; + *base + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::() = _rt::as_i32(scope_id4); + } + } + } + None => { + *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::() = (0i32) as u8; + } + }; + } + } + let ptr8 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-datagram-stream.send"] + fn wit_import9(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import9( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import9((self).handle() as i32, result7, len7, ptr8) + }; + let l10 = i32::from(*ptr8.add(0).cast::()); + let result13 = match l10 { + 0 => { + let e = { + let l11 = *ptr8.add(8).cast::(); + l11 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l12 = i32::from(*ptr8.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l12 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + if layout7.size() != 0 { + _rt::alloc::dealloc(result7.cast(), layout7); + } + result13 + } + } + } + impl OutgoingDatagramStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]outgoing-datagram-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod udp_create_socket { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + pub type UdpSocket = super::super::super::wasi::sockets::udp::UdpSocket; + #[allow(unused_unsafe, clippy::all)] + pub fn create_udp_socket( + address_family: IpAddressFamily, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/udp-create-socket@0.2.0")] + unsafe extern "C" { + #[link_name = "create-udp-socket"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(address_family.clone() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::sockets::udp::UdpSocket::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod tcp { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type InputStream = super::super::super::wasi::io::streams::InputStream; + pub type OutputStream = super::super::super::wasi::io::streams::OutputStream; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Duration = super::super::super::wasi::clocks::monotonic_clock::Duration; + pub type Network = super::super::super::wasi::sockets::network::Network; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpSocketAddress = super::super::super::wasi::sockets::network::IpSocketAddress; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + #[repr(u8)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + pub enum ShutdownType { + Receive, + Send, + Both, + } + impl ::core::fmt::Debug for ShutdownType { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ShutdownType::Receive => { + f.debug_tuple("ShutdownType::Receive").finish() + } + ShutdownType::Send => { + f.debug_tuple("ShutdownType::Send").finish() + } + ShutdownType::Both => { + f.debug_tuple("ShutdownType::Both").finish() + } + } + } + } + impl ShutdownType { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> ShutdownType { + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + match val { + 0 => ShutdownType::Receive, + 1 => ShutdownType::Send, + 2 => ShutdownType::Both, + _ => panic!("invalid enum discriminant"), + } + } + } + #[derive(Debug)] + #[repr(transparent)] + pub struct TcpSocket { + handle: _rt::Resource, + } + impl TcpSocket { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for TcpSocket { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]tcp-socket"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_bind( + &self, + network: &Network, + local_address: IpSocketAddress, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match local_address { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.start-bind"] + fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (network).handle() as i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l9 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_bind(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.finish-bind"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_connect( + &self, + network: &Network, + remote_address: IpSocketAddress, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + use super::super::super::wasi::sockets::network::IpSocketAddress as V4; + let ( + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ) = match remote_address { + V4::Ipv4(e) => { + let super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: port0, + address: address0, + } = e; + let (t1_0, t1_1, t1_2, t1_3) = address0; + ( + 0i32, + _rt::as_i32(port0), + _rt::as_i32(t1_0), + _rt::as_i32(t1_1), + _rt::as_i32(t1_2), + _rt::as_i32(t1_3), + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + 0i32, + ) + } + V4::Ipv6(e) => { + let super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: port2, + flow_info: flow_info2, + address: address2, + scope_id: scope_id2, + } = e; + let (t3_0, t3_1, t3_2, t3_3, t3_4, t3_5, t3_6, t3_7) = address2; + ( + 1i32, + _rt::as_i32(port2), + _rt::as_i32(flow_info2), + _rt::as_i32(t3_0), + _rt::as_i32(t3_1), + _rt::as_i32(t3_2), + _rt::as_i32(t3_3), + _rt::as_i32(t3_4), + _rt::as_i32(t3_5), + _rt::as_i32(t3_6), + _rt::as_i32(t3_7), + _rt::as_i32(scope_id2), + ) + } + }; + let ptr6 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.start-connect"] + fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import7( + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: i32, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import7( + (self).handle() as i32, + (network).handle() as i32, + result5_0, + result5_1, + result5_2, + result5_3, + result5_4, + result5_5, + result5_6, + result5_7, + result5_8, + result5_9, + result5_10, + result5_11, + ptr6, + ) + }; + let l8 = i32::from(*ptr6.add(0).cast::()); + let result10 = match l8 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l9 = i32::from(*ptr6.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l9 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result10 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_connect( + &self, + ) -> Result<(InputStream, OutputStream), ErrorCode> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.finish-connect"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result6 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + let l4 = *ptr0.add(8).cast::(); + ( + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l3 as u32, + ) + }, + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l4 as u32, + ) + }, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l5 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn start_listen(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.start-listen"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn finish_listen(&self) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.finish-listen"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn accept( + &self, + ) -> Result<(TcpSocket, InputStream, OutputStream), ErrorCode> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.accept"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result7 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + let l4 = *ptr0.add(8).cast::(); + let l5 = *ptr0.add(12).cast::(); + ( + unsafe { TcpSocket::from_handle(l3 as u32) }, + unsafe { + super::super::super::wasi::io::streams::InputStream::from_handle( + l4 as u32, + ) + }, + unsafe { + super::super::super::wasi::io::streams::OutputStream::from_handle( + l5 as u32, + ) + }, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l6 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l6 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn local_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.local-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn remote_address(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 36]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 36], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.remote-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result22 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpSocketAddress as V20; + let v20 = match l3 { + 0 => { + let e20 = { + let l4 = i32::from(*ptr0.add(8).cast::()); + let l5 = i32::from(*ptr0.add(10).cast::()); + let l6 = i32::from(*ptr0.add(11).cast::()); + let l7 = i32::from(*ptr0.add(12).cast::()); + let l8 = i32::from(*ptr0.add(13).cast::()); + super::super::super::wasi::sockets::network::Ipv4SocketAddress { + port: l4 as u16, + address: (l5 as u8, l6 as u8, l7 as u8, l8 as u8), + } + }; + V20::Ipv4(e20) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e20 = { + let l9 = i32::from(*ptr0.add(8).cast::()); + let l10 = *ptr0.add(12).cast::(); + let l11 = i32::from(*ptr0.add(16).cast::()); + let l12 = i32::from(*ptr0.add(18).cast::()); + let l13 = i32::from(*ptr0.add(20).cast::()); + let l14 = i32::from(*ptr0.add(22).cast::()); + let l15 = i32::from(*ptr0.add(24).cast::()); + let l16 = i32::from(*ptr0.add(26).cast::()); + let l17 = i32::from(*ptr0.add(28).cast::()); + let l18 = i32::from(*ptr0.add(30).cast::()); + let l19 = *ptr0.add(32).cast::(); + super::super::super::wasi::sockets::network::Ipv6SocketAddress { + port: l9 as u16, + flow_info: l10 as u32, + address: ( + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + l17 as u16, + l18 as u16, + ), + scope_id: l19 as u32, + } + }; + V20::Ipv6(e20) + } + }; + v20 + }; + Ok(e) + } + 1 => { + let e = { + let l21 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l21 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result22 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn is_listening(&self) -> bool { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.is-listening"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + _rt::bool_lift(ret as u8) + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn address_family(&self) -> IpAddressFamily { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.address-family"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + super::super::super::wasi::sockets::network::IpAddressFamily::_lift( + ret as u8, + ) + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_listen_backlog_size( + &self, + value: u64, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-listen-backlog-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_enabled(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-enabled"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + _rt::bool_lift(l3 as u8) + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_enabled( + &self, + value: bool, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-enabled"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + match &value { + true => 1, + false => 0, + }, + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_idle_time(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-idle-time"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_idle_time( + &self, + value: Duration, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-idle-time"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(value), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_interval(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-interval"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_interval( + &self, + value: Duration, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-interval"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1((self).handle() as i32, _rt::as_i64(value), ptr0) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn keep_alive_count(&self) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.keep-alive-count"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + l3 as u32 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_keep_alive_count(&self, value: u32) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-keep-alive-count"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i32(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn hop_limit(&self) -> Result { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.hop-limit"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + l3 as u8 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_hop_limit(&self, value: u8) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-hop-limit"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i32(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn receive_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.receive-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_receive_buffer_size( + &self, + value: u64, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-receive-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn send_buffer_size(&self) -> Result { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 16]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 16], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.send-buffer-size"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(8).cast::(); + l3 as u64 + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(8).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn set_send_buffer_size(&self, value: u64) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.set-send-buffer-size"] + fn wit_import1(_: i32, _: i64, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i64, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + _rt::as_i64(&value), + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + impl TcpSocket { + #[allow(unused_unsafe, clippy::all)] + pub fn shutdown( + &self, + shutdown_type: ShutdownType, + ) -> Result<(), ErrorCode> { + unsafe { + #[repr(align(1))] + struct RetArea([::core::mem::MaybeUninit; 2]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]tcp-socket.shutdown"] + fn wit_import1(_: i32, _: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: i32, _: *mut u8) { + unreachable!() + } + unsafe { + wit_import1( + (self).handle() as i32, + shutdown_type.clone() as i32, + ptr0, + ) + }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result4 = match l2 { + 0 => { + let e = (); + Ok(e) + } + 1 => { + let e = { + let l3 = i32::from(*ptr0.add(1).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l3 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result4 + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod tcp_create_socket { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpAddressFamily = super::super::super::wasi::sockets::network::IpAddressFamily; + pub type TcpSocket = super::super::super::wasi::sockets::tcp::TcpSocket; + #[allow(unused_unsafe, clippy::all)] + pub fn create_tcp_socket( + address_family: IpAddressFamily, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/tcp-create-socket@0.2.0")] + unsafe extern "C" { + #[link_name = "create-tcp-socket"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1(address_family.clone() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result5 = match l2 { + 0 => { + let e = { + let l3 = *ptr0.add(4).cast::(); + unsafe { + super::super::super::wasi::sockets::tcp::TcpSocket::from_handle( + l3 as u32, + ) + } + }; + Ok(e) + } + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l4 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result5 + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod ip_name_lookup { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Pollable = super::super::super::wasi::io::poll::Pollable; + pub type Network = super::super::super::wasi::sockets::network::Network; + pub type ErrorCode = super::super::super::wasi::sockets::network::ErrorCode; + pub type IpAddress = super::super::super::wasi::sockets::network::IpAddress; + #[derive(Debug)] + #[repr(transparent)] + pub struct ResolveAddressStream { + handle: _rt::Resource, + } + impl ResolveAddressStream { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + Self { + handle: unsafe { _rt::Resource::from_handle(handle) }, + } + } + #[doc(hidden)] + pub fn take_handle(&self) -> u32 { + _rt::Resource::take_handle(&self.handle) + } + #[doc(hidden)] + pub fn handle(&self) -> u32 { + _rt::Resource::handle(&self.handle) + } + } + unsafe impl _rt::WasmResource for ResolveAddressStream { + #[inline] + unsafe fn drop(_handle: u32) { + #[cfg(not(target_arch = "wasm32"))] + unreachable!(); + #[cfg(target_arch = "wasm32")] + { + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "[resource-drop]resolve-address-stream"] + fn drop(_: u32); + } + unsafe { drop(_handle) }; + } + } + } + impl ResolveAddressStream { + #[allow(unused_unsafe, clippy::all)] + pub fn resolve_next_address( + &self, + ) -> Result, ErrorCode> { + unsafe { + #[repr(align(2))] + struct RetArea([::core::mem::MaybeUninit; 22]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 22], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]resolve-address-stream.resolve-next-address"] + fn wit_import1(_: i32, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: i32, _: *mut u8) { + unreachable!() + } + unsafe { wit_import1((self).handle() as i32, ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + let result19 = match l2 { + 0 => { + let e = { + let l3 = i32::from(*ptr0.add(2).cast::()); + match l3 { + 0 => None, + 1 => { + let e = { + let l4 = i32::from(*ptr0.add(4).cast::()); + use super::super::super::wasi::sockets::network::IpAddress as V17; + let v17 = match l4 { + 0 => { + let e17 = { + let l5 = i32::from(*ptr0.add(6).cast::()); + let l6 = i32::from(*ptr0.add(7).cast::()); + let l7 = i32::from(*ptr0.add(8).cast::()); + let l8 = i32::from(*ptr0.add(9).cast::()); + (l5 as u8, l6 as u8, l7 as u8, l8 as u8) + }; + V17::Ipv4(e17) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e17 = { + let l9 = i32::from(*ptr0.add(6).cast::()); + let l10 = i32::from(*ptr0.add(8).cast::()); + let l11 = i32::from(*ptr0.add(10).cast::()); + let l12 = i32::from(*ptr0.add(12).cast::()); + let l13 = i32::from(*ptr0.add(14).cast::()); + let l14 = i32::from(*ptr0.add(16).cast::()); + let l15 = i32::from(*ptr0.add(18).cast::()); + let l16 = i32::from(*ptr0.add(20).cast::()); + ( + l9 as u16, + l10 as u16, + l11 as u16, + l12 as u16, + l13 as u16, + l14 as u16, + l15 as u16, + l16 as u16, + ) + }; + V17::Ipv6(e17) + } + }; + v17 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + }; + Ok(e) + } + 1 => { + let e = { + let l18 = i32::from(*ptr0.add(2).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l18 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result19 + } + } + } + impl ResolveAddressStream { + #[allow(unused_unsafe, clippy::all)] + pub fn subscribe(&self) -> Pollable { + unsafe { + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "[method]resolve-address-stream.subscribe"] + fn wit_import0(_: i32) -> i32; + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import0(_: i32) -> i32 { + unreachable!() + } + let ret = unsafe { wit_import0((self).handle() as i32) }; + unsafe { + super::super::super::wasi::io::poll::Pollable::from_handle( + ret as u32, + ) + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn resolve_addresses( + network: &Network, + name: &str, + ) -> Result { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let vec0 = name; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "wasi:sockets/ip-name-lookup@0.2.0")] + unsafe extern "C" { + #[link_name = "resolve-addresses"] + fn wit_import2(_: i32, _: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + ) { + unreachable!() + } + unsafe { + wit_import2( + (network).handle() as i32, + ptr0.cast_mut(), + len0, + ptr1, + ) + }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result6 = match l3 { + 0 => { + let e = { + let l4 = *ptr1.add(4).cast::(); + unsafe { ResolveAddressStream::from_handle(l4 as u32) } + }; + Ok(e) + } + 1 => { + let e = { + let l5 = i32::from(*ptr1.add(4).cast::()); + super::super::super::wasi::sockets::network::ErrorCode::_lift( + l5 as u8, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result6 + } + } + } + } +} +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] +pub mod wavs { + pub mod operator { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod input { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + pub type ServiceId = super::super::super::wavs::types::service::ServiceId; + pub type WorkflowId = super::super::super::wavs::types::service::WorkflowId; + pub type Trigger = super::super::super::wavs::types::service::Trigger; + pub type TriggerData = super::super::super::wavs::types::events::TriggerData; + #[derive(Clone)] + pub struct TriggerConfig { + pub service_id: ServiceId, + pub workflow_id: WorkflowId, + pub trigger: Trigger, + } + impl ::core::fmt::Debug for TriggerConfig { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerConfig") + .field("service-id", &self.service_id) + .field("workflow-id", &self.workflow_id) + .field("trigger", &self.trigger) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerAction { + pub config: TriggerConfig, + pub data: TriggerData, + } + impl ::core::fmt::Debug for TriggerAction { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerAction") + .field("config", &self.config) + .field("data", &self.data) + .finish() + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod output { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + #[derive(Clone)] + pub struct WasmResponse { + pub payload: _rt::Vec, + pub ordering: Option, + } + impl ::core::fmt::Debug for WasmResponse { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("WasmResponse") + .field("payload", &self.payload) + .field("ordering", &self.ordering) + .finish() + } + } + } + } + pub mod types { + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod core { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Digest = _rt::String; + #[repr(C)] + #[derive(Clone, Copy)] + pub struct Timestamp { + pub nanos: u64, + } + impl ::core::fmt::Debug for Timestamp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Timestamp").field("nanos", &self.nanos).finish() + } + } + #[derive(Clone, Copy)] + pub enum LogLevel { + Error, + Warn, + Info, + Debug, + Trace, + } + impl ::core::fmt::Debug for LogLevel { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + LogLevel::Error => f.debug_tuple("LogLevel::Error").finish(), + LogLevel::Warn => f.debug_tuple("LogLevel::Warn").finish(), + LogLevel::Info => f.debug_tuple("LogLevel::Info").finish(), + LogLevel::Debug => f.debug_tuple("LogLevel::Debug").finish(), + LogLevel::Trace => f.debug_tuple("LogLevel::Trace").finish(), + } + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod chain { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ChainKey = _rt::String; + pub type EvmTxHash = _rt::Vec; + #[derive(Clone)] + pub struct CosmosAddress { + pub bech32_addr: _rt::String, + pub prefix_len: u32, + } + impl ::core::fmt::Debug for CosmosAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("CosmosAddress") + .field("bech32-addr", &self.bech32_addr) + .field("prefix-len", &self.prefix_len) + .finish() + } + } + #[derive(Clone)] + pub struct CosmosEvent { + pub ty: _rt::String, + pub attributes: _rt::Vec<(_rt::String, _rt::String)>, + } + impl ::core::fmt::Debug for CosmosEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("CosmosEvent") + .field("ty", &self.ty) + .field("attributes", &self.attributes) + .finish() + } + } + #[derive(Clone)] + pub struct CosmosChainConfig { + pub chain_id: _rt::String, + pub rpc_endpoint: Option<_rt::String>, + pub grpc_endpoint: Option<_rt::String>, + pub grpc_web_endpoint: Option<_rt::String>, + pub gas_price: f32, + pub gas_denom: _rt::String, + pub bech32_prefix: _rt::String, + } + impl ::core::fmt::Debug for CosmosChainConfig { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("CosmosChainConfig") + .field("chain-id", &self.chain_id) + .field("rpc-endpoint", &self.rpc_endpoint) + .field("grpc-endpoint", &self.grpc_endpoint) + .field("grpc-web-endpoint", &self.grpc_web_endpoint) + .field("gas-price", &self.gas_price) + .field("gas-denom", &self.gas_denom) + .field("bech32-prefix", &self.bech32_prefix) + .finish() + } + } + #[derive(Clone)] + pub struct EvmAddress { + pub raw_bytes: _rt::Vec, + } + impl ::core::fmt::Debug for EvmAddress { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmAddress") + .field("raw-bytes", &self.raw_bytes) + .finish() + } + } + #[derive(Clone)] + pub struct EvmEventLogData { + pub topics: _rt::Vec<_rt::Vec>, + pub data: _rt::Vec, + } + impl ::core::fmt::Debug for EvmEventLogData { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmEventLogData") + .field("topics", &self.topics) + .field("data", &self.data) + .finish() + } + } + #[derive(Clone)] + pub struct EvmEventLog { + pub address: EvmAddress, + pub data: EvmEventLogData, + pub tx_hash: EvmTxHash, + pub block_number: u64, + pub log_index: u64, + pub block_hash: _rt::Vec, + pub block_timestamp: Option, + pub tx_index: u64, + } + impl ::core::fmt::Debug for EvmEventLog { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmEventLog") + .field("address", &self.address) + .field("data", &self.data) + .field("tx-hash", &self.tx_hash) + .field("block-number", &self.block_number) + .field("log-index", &self.log_index) + .field("block-hash", &self.block_hash) + .field("block-timestamp", &self.block_timestamp) + .field("tx-index", &self.tx_index) + .finish() + } + } + #[derive(Clone)] + pub struct EvmChainConfig { + pub chain_id: _rt::String, + pub ws_endpoints: _rt::Vec<_rt::String>, + pub http_endpoint: Option<_rt::String>, + } + impl ::core::fmt::Debug for EvmChainConfig { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmChainConfig") + .field("chain-id", &self.chain_id) + .field("ws-endpoints", &self.ws_endpoints) + .field("http-endpoint", &self.http_endpoint) + .finish() + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod service { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Digest = super::super::super::wavs::types::core::Digest; + pub type Timestamp = super::super::super::wavs::types::core::Timestamp; + pub type ChainKey = super::super::super::wavs::types::chain::ChainKey; + pub type EvmAddress = super::super::super::wavs::types::chain::EvmAddress; + pub type CosmosAddress = super::super::super::wavs::types::chain::CosmosAddress; + pub type ServiceId = _rt::String; + pub type WorkflowId = _rt::String; + pub type PackageRef = _rt::String; + pub type SemverVersion = _rt::String; + #[derive(Clone, Copy)] + pub enum ServiceStatus { + Active, + Paused, + } + impl ::core::fmt::Debug for ServiceStatus { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ServiceStatus::Active => { + f.debug_tuple("ServiceStatus::Active").finish() + } + ServiceStatus::Paused => { + f.debug_tuple("ServiceStatus::Paused").finish() + } + } + } + } + #[derive(Clone)] + pub struct EvmManager { + pub chain: ChainKey, + pub address: EvmAddress, + } + impl ::core::fmt::Debug for EvmManager { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("EvmManager") + .field("chain", &self.chain) + .field("address", &self.address) + .finish() + } + } + #[derive(Clone)] + pub enum ServiceManager { + Evm(EvmManager), + } + impl ::core::fmt::Debug for ServiceManager { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ServiceManager::Evm(e) => { + f.debug_tuple("ServiceManager::Evm").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct ComponentSourceDownload { + pub uri: _rt::String, + pub digest: Digest, + } + impl ::core::fmt::Debug for ComponentSourceDownload { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ComponentSourceDownload") + .field("uri", &self.uri) + .field("digest", &self.digest) + .finish() + } + } + #[derive(Clone)] + pub struct Registry { + pub digest: Digest, + pub domain: Option<_rt::String>, + pub version: Option, + pub pkg: PackageRef, + } + impl ::core::fmt::Debug for Registry { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Registry") + .field("digest", &self.digest) + .field("domain", &self.domain) + .field("version", &self.version) + .field("pkg", &self.pkg) + .finish() + } + } + #[derive(Clone)] + pub enum ComponentSource { + Download(ComponentSourceDownload), + Registry(Registry), + Digest(Digest), + } + impl ::core::fmt::Debug for ComponentSource { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + ComponentSource::Download(e) => { + f.debug_tuple("ComponentSource::Download").field(e).finish() + } + ComponentSource::Registry(e) => { + f.debug_tuple("ComponentSource::Registry").field(e).finish() + } + ComponentSource::Digest(e) => { + f.debug_tuple("ComponentSource::Digest").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub enum AllowedHostPermission { + All, + Only(_rt::Vec<_rt::String>), + None, + } + impl ::core::fmt::Debug for AllowedHostPermission { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + AllowedHostPermission::All => { + f.debug_tuple("AllowedHostPermission::All").finish() + } + AllowedHostPermission::Only(e) => { + f.debug_tuple("AllowedHostPermission::Only") + .field(e) + .finish() + } + AllowedHostPermission::None => { + f.debug_tuple("AllowedHostPermission::None").finish() + } + } + } + } + #[derive(Clone)] + pub struct Permissions { + pub allowed_http_hosts: AllowedHostPermission, + pub file_system: bool, + } + impl ::core::fmt::Debug for Permissions { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Permissions") + .field("allowed-http-hosts", &self.allowed_http_hosts) + .field("file-system", &self.file_system) + .finish() + } + } + #[derive(Clone)] + pub struct Component { + pub source: ComponentSource, + pub permissions: Permissions, + pub fuel_limit: Option, + pub time_limit_seconds: Option, + pub config: _rt::Vec<(_rt::String, _rt::String)>, + pub env_keys: _rt::Vec<_rt::String>, + } + impl ::core::fmt::Debug for Component { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Component") + .field("source", &self.source) + .field("permissions", &self.permissions) + .field("fuel-limit", &self.fuel_limit) + .field("time-limit-seconds", &self.time_limit_seconds) + .field("config", &self.config) + .field("env-keys", &self.env_keys) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerEvmContractEvent { + pub address: EvmAddress, + pub chain: ChainKey, + pub event_hash: _rt::Vec, + } + impl ::core::fmt::Debug for TriggerEvmContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerEvmContractEvent") + .field("address", &self.address) + .field("chain", &self.chain) + .field("event-hash", &self.event_hash) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerCosmosContractEvent { + pub address: CosmosAddress, + pub chain: ChainKey, + pub event_type: _rt::String, + } + impl ::core::fmt::Debug for TriggerCosmosContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerCosmosContractEvent") + .field("address", &self.address) + .field("chain", &self.chain) + .field("event-type", &self.event_type) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerBlockInterval { + pub chain: ChainKey, + pub n_blocks: u32, + pub start_block: Option, + pub end_block: Option, + } + impl ::core::fmt::Debug for TriggerBlockInterval { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerBlockInterval") + .field("chain", &self.chain) + .field("n-blocks", &self.n_blocks) + .field("start-block", &self.start_block) + .field("end-block", &self.end_block) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerCron { + pub schedule: _rt::String, + pub start_time: Option, + pub end_time: Option, + } + impl ::core::fmt::Debug for TriggerCron { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerCron") + .field("schedule", &self.schedule) + .field("start-time", &self.start_time) + .field("end-time", &self.end_time) + .finish() + } + } + #[derive(Clone)] + pub enum Trigger { + EvmContractEvent(TriggerEvmContractEvent), + CosmosContractEvent(TriggerCosmosContractEvent), + BlockInterval(TriggerBlockInterval), + Cron(TriggerCron), + Manual, + } + impl ::core::fmt::Debug for Trigger { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Trigger::EvmContractEvent(e) => { + f.debug_tuple("Trigger::EvmContractEvent").field(e).finish() + } + Trigger::CosmosContractEvent(e) => { + f.debug_tuple("Trigger::CosmosContractEvent") + .field(e) + .finish() + } + Trigger::BlockInterval(e) => { + f.debug_tuple("Trigger::BlockInterval").field(e).finish() + } + Trigger::Cron(e) => { + f.debug_tuple("Trigger::Cron").field(e).finish() + } + Trigger::Manual => f.debug_tuple("Trigger::Manual").finish(), + } + } + } + #[derive(Clone, Copy)] + pub enum SignatureAlgorithm { + Secp256k1, + } + impl ::core::fmt::Debug for SignatureAlgorithm { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SignatureAlgorithm::Secp256k1 => { + f.debug_tuple("SignatureAlgorithm::Secp256k1").finish() + } + } + } + } + #[derive(Clone, Copy)] + pub enum SignaturePrefix { + Eip191, + } + impl ::core::fmt::Debug for SignaturePrefix { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SignaturePrefix::Eip191 => { + f.debug_tuple("SignaturePrefix::Eip191").finish() + } + } + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct SignatureKind { + pub algorithm: SignatureAlgorithm, + pub prefix: Option, + } + impl ::core::fmt::Debug for SignatureKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignatureKind") + .field("algorithm", &self.algorithm) + .field("prefix", &self.prefix) + .finish() + } + } + #[derive(Clone)] + pub struct AggregatorSubmit { + pub url: _rt::String, + pub component: Component, + pub signature_kind: SignatureKind, + } + impl ::core::fmt::Debug for AggregatorSubmit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("AggregatorSubmit") + .field("url", &self.url) + .field("component", &self.component) + .field("signature-kind", &self.signature_kind) + .finish() + } + } + #[derive(Clone)] + pub enum Submit { + None, + Aggregator(AggregatorSubmit), + } + impl ::core::fmt::Debug for Submit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Submit::None => f.debug_tuple("Submit::None").finish(), + Submit::Aggregator(e) => { + f.debug_tuple("Submit::Aggregator").field(e).finish() + } + } + } + } + #[derive(Clone)] + pub struct Workflow { + pub trigger: Trigger, + pub component: Component, + pub submit: Submit, + } + impl ::core::fmt::Debug for Workflow { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Workflow") + .field("trigger", &self.trigger) + .field("component", &self.component) + .field("submit", &self.submit) + .finish() + } + } + #[derive(Clone)] + pub struct Service { + pub name: _rt::String, + pub workflows: _rt::Vec<(WorkflowId, Workflow)>, + pub status: ServiceStatus, + pub manager: ServiceManager, + } + impl ::core::fmt::Debug for Service { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Service") + .field("name", &self.name) + .field("workflows", &self.workflows) + .field("status", &self.status) + .field("manager", &self.manager) + .finish() + } + } + #[derive(Clone)] + pub struct ServiceAndWorkflowId { + pub service: Service, + pub workflow_id: WorkflowId, + } + impl ::core::fmt::Debug for ServiceAndWorkflowId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ServiceAndWorkflowId") + .field("service", &self.service) + .field("workflow-id", &self.workflow_id) + .finish() + } + } + #[derive(Clone)] + pub struct WorkflowAndWorkflowId { + pub workflow: Workflow, + pub workflow_id: WorkflowId, + } + impl ::core::fmt::Debug for WorkflowAndWorkflowId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("WorkflowAndWorkflowId") + .field("workflow", &self.workflow) + .field("workflow-id", &self.workflow_id) + .finish() + } + } + } + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod events { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type ChainKey = super::super::super::wavs::types::chain::ChainKey; + pub type EvmEventLog = super::super::super::wavs::types::chain::EvmEventLog; + pub type CosmosAddress = super::super::super::wavs::types::chain::CosmosAddress; + pub type CosmosEvent = super::super::super::wavs::types::chain::CosmosEvent; + pub type Timestamp = super::super::super::wavs::types::core::Timestamp; + pub type EventId = _rt::Vec; + #[derive(Clone)] + pub struct TriggerDataEvmContractEvent { + pub chain: ChainKey, + pub log: EvmEventLog, + } + impl ::core::fmt::Debug for TriggerDataEvmContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataEvmContractEvent") + .field("chain", &self.chain) + .field("log", &self.log) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerDataCosmosContractEvent { + pub contract_address: CosmosAddress, + pub chain: ChainKey, + pub event: CosmosEvent, + pub event_index: u64, + pub block_height: u64, + } + impl ::core::fmt::Debug for TriggerDataCosmosContractEvent { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataCosmosContractEvent") + .field("contract-address", &self.contract_address) + .field("chain", &self.chain) + .field("event", &self.event) + .field("event-index", &self.event_index) + .field("block-height", &self.block_height) + .finish() + } + } + #[derive(Clone)] + pub struct TriggerDataBlockInterval { + pub chain: ChainKey, + pub block_height: u64, + } + impl ::core::fmt::Debug for TriggerDataBlockInterval { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataBlockInterval") + .field("chain", &self.chain) + .field("block-height", &self.block_height) + .finish() + } + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct TriggerDataCron { + pub trigger_time: Timestamp, + } + impl ::core::fmt::Debug for TriggerDataCron { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("TriggerDataCron") + .field("trigger-time", &self.trigger_time) + .finish() + } + } + #[derive(Clone)] + pub enum TriggerData { + EvmContractEvent(TriggerDataEvmContractEvent), + CosmosContractEvent(TriggerDataCosmosContractEvent), + BlockInterval(TriggerDataBlockInterval), + Cron(TriggerDataCron), + Raw(_rt::Vec), + } + impl ::core::fmt::Debug for TriggerData { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + TriggerData::EvmContractEvent(e) => { + f.debug_tuple("TriggerData::EvmContractEvent") + .field(e) + .finish() + } + TriggerData::CosmosContractEvent(e) => { + f.debug_tuple("TriggerData::CosmosContractEvent") + .field(e) + .finish() + } + TriggerData::BlockInterval(e) => { + f.debug_tuple("TriggerData::BlockInterval").field(e).finish() + } + TriggerData::Cron(e) => { + f.debug_tuple("TriggerData::Cron").field(e).finish() + } + TriggerData::Raw(e) => { + f.debug_tuple("TriggerData::Raw").field(e).finish() + } + } + } + } + } + } +} +#[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] +pub mod host { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::__link_custom_section_describing_imports; + use super::_rt; + pub type EvmChainConfig = super::wavs::types::chain::EvmChainConfig; + pub type CosmosChainConfig = super::wavs::types::chain::CosmosChainConfig; + pub type ServiceAndWorkflowId = super::wavs::types::service::ServiceAndWorkflowId; + pub type WorkflowAndWorkflowId = super::wavs::types::service::WorkflowAndWorkflowId; + pub type LogLevel = super::wavs::types::core::LogLevel; + pub type EventId = super::wavs::types::events::EventId; + #[allow(unused_unsafe, clippy::all)] + pub fn get_evm_chain_config(chain_key: &str) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea([::core::mem::MaybeUninit; 8 * ::core::mem::size_of::<*const u8>()]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 8 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = chain_key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-evm-chain-config"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result17 = match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr1.add(::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l5 = *ptr1.add(2 * ::core::mem::size_of::<*const u8>()).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = + *ptr1.add(3 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l8 = *ptr1.add(4 * ::core::mem::size_of::<*const u8>()).cast::(); + let base12 = l7; + let len12 = l8; + let mut result12 = _rt::Vec::with_capacity(len12); + for i in 0..len12 { + let base = base12.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e12 = { + let l9 = *base.add(0).cast::<*mut u8>(); + let l10 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts(l9.cast(), len11, len11); + _rt::string_lift(bytes11) + }; + result12.push(e12); + } + _rt::cabi_dealloc( + base12, + len12 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l13 = i32::from( + *ptr1.add(5 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::chain::EvmChainConfig { + chain_id: _rt::string_lift(bytes6), + ws_endpoints: result12, + http_endpoint: match l13 { + 0 => None, + 1 => { + let e = { + let l14 = *ptr1 + .add(6 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l15 = *ptr1 + .add(7 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len16 = l15; + let bytes16 = + _rt::Vec::from_raw_parts(l14.cast(), len16, len16); + _rt::string_lift(bytes16) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result17 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_cosmos_chain_config(chain_key: &str) -> Option { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit; 17 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 17 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = chain_key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-cosmos-chain-config"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result26 = match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr1.add(::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l5 = *ptr1.add(2 * ::core::mem::size_of::<*const u8>()).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = i32::from( + *ptr1.add(3 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l11 = i32::from( + *ptr1.add(6 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l15 = i32::from( + *ptr1.add(9 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l19 = *ptr1.add(12 * ::core::mem::size_of::<*const u8>()).cast::(); + let l20 = + *ptr1.add(13 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l21 = + *ptr1.add(14 * ::core::mem::size_of::<*const u8>()).cast::(); + let len22 = l21; + let bytes22 = _rt::Vec::from_raw_parts(l20.cast(), len22, len22); + let l23 = + *ptr1.add(15 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l24 = + *ptr1.add(16 * ::core::mem::size_of::<*const u8>()).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts(l23.cast(), len25, len25); + super::wavs::types::chain::CosmosChainConfig { + chain_id: _rt::string_lift(bytes6), + rpc_endpoint: match l7 { + 0 => None, + 1 => { + let e = { + let l8 = *ptr1 + .add(4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l9 = *ptr1 + .add(5 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len10 = l9; + let bytes10 = + _rt::Vec::from_raw_parts(l8.cast(), len10, len10); + _rt::string_lift(bytes10) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + grpc_endpoint: match l11 { + 0 => None, + 1 => { + let e = { + let l12 = *ptr1 + .add(7 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l13 = *ptr1 + .add(8 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len14 = l13; + let bytes14 = + _rt::Vec::from_raw_parts(l12.cast(), len14, len14); + _rt::string_lift(bytes14) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + grpc_web_endpoint: match l15 { + 0 => None, + 1 => { + let e = { + let l16 = *ptr1 + .add(10 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = *ptr1 + .add(11 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len18 = l17; + let bytes18 = + _rt::Vec::from_raw_parts(l16.cast(), len18, len18); + _rt::string_lift(bytes18) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + gas_price: l19, + gas_denom: _rt::string_lift(bytes22), + bech32_prefix: _rt::string_lift(bytes25), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result26 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn config_var(key: &str) -> Option<_rt::String> { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea([::core::mem::MaybeUninit; 3 * ::core::mem::size_of::<*const u8>()]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 3 * ::core::mem::size_of::<*const u8>()], + ); + let vec0 = key; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + let ptr1 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "config-var"] + fn wit_import2(_: *mut u8, _: usize, _: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import2(_: *mut u8, _: usize, _: *mut u8) { + unreachable!() + } + unsafe { wit_import2(ptr0.cast_mut(), len0, ptr1) }; + let l3 = i32::from(*ptr1.add(0).cast::()); + let result7 = match l3 { + 0 => None, + 1 => { + let e = { + let l4 = *ptr1.add(::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l5 = *ptr1.add(2 * ::core::mem::size_of::<*const u8>()).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + _rt::string_lift(bytes6) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }; + result7 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn log(level: LogLevel, message: &str) -> () { + unsafe { + use super::wavs::types::core::LogLevel as V0; + let result1 = match level { + V0::Error => 0i32, + V0::Warn => 1i32, + V0::Info => 2i32, + V0::Debug => 3i32, + V0::Trace => 4i32, + }; + let vec2 = message; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "log"] + fn wit_import3(_: i32, _: *mut u8, _: usize); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import3(_: i32, _: *mut u8, _: usize) { + unreachable!() + } + unsafe { wit_import3(result1, ptr2.cast_mut(), len2) }; + } + } + #[allow(unused_unsafe, clippy::all)] + /// gets the service and workflow id that called this component + pub fn get_service() -> ServiceAndWorkflowId { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea( + [::core::mem::MaybeUninit; 12 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 12 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-service"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + let l5 = *ptr0.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l6 = *ptr0.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let base162 = l5; + let len162 = l6; + let mut result162 = _rt::Vec::with_capacity(len162); + for i in 0..len162 { + let base = base162.add(i * (144 + 42 * ::core::mem::size_of::<*const u8>())); + let e162 = { + let l7 = *base.add(0).cast::<*mut u8>(); + let l8 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = + i32::from(*base.add(2 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::Trigger as V45; + let v45 = match l10 { + 0 => { + let e45 = { + let l11 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l12 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len13 = l12; + let l14 = *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l15 = *base + .add(8 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len16 = l15; + let bytes16 = _rt::Vec::from_raw_parts(l14.cast(), len16, len16); + let l17 = *base + .add(8 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l18 = *base + .add(8 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len19 = l18; + super::wavs::types::service::TriggerEvmContractEvent { + address: super::wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ), + }, + chain: _rt::string_lift(bytes16), + event_hash: _rt::Vec::from_raw_parts(l17.cast(), len19, len19), + } + }; + V45::EvmContractEvent(e45) + } + 1 => { + let e45 = { + let l20 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l21 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len22 = l21; + let bytes22 = _rt::Vec::from_raw_parts(l20.cast(), len22, len22); + let l23 = *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let l24 = *base + .add(8 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l25 = *base + .add(8 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts(l24.cast(), len26, len26); + let l27 = *base + .add(8 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l28 = *base + .add(8 + 8 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts(l27.cast(), len29, len29); + super::wavs::types::service::TriggerCosmosContractEvent { + address: super::wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes22), + prefix_len: l23 as u32, + }, + chain: _rt::string_lift(bytes26), + event_type: _rt::string_lift(bytes29), + } + }; + V45::CosmosContractEvent(e45) + } + 2 => { + let e45 = { + let l30 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l31 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts(l30.cast(), len32, len32); + let l33 = *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let l34 = i32::from( + *base + .add(16 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l36 = i32::from( + *base + .add(32 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::wavs::types::service::TriggerBlockInterval { + chain: _rt::string_lift(bytes32), + n_blocks: l33 as u32, + start_block: match l34 { + 0 => None, + 1 => { + let e = { + let l35 = *base + .add( + 24 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l35 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_block: match l36 { + 0 => None, + 1 => { + let e = { + let l37 = *base + .add( + 40 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l37 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V45::BlockInterval(e45) + } + 3 => { + let e45 = { + let l38 = *base + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l39 = *base + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len40 = l39; + let bytes40 = _rt::Vec::from_raw_parts(l38.cast(), len40, len40); + let l41 = i32::from( + *base + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l43 = i32::from( + *base + .add(24 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::wavs::types::service::TriggerCron { + schedule: _rt::string_lift(bytes40), + start_time: match l41 { + 0 => None, + 1 => { + let e = { + let l42 = *base + .add( + 16 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + super::wavs::types::core::Timestamp { + nanos: l42 as u64, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_time: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *base + .add( + 32 + 4 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + super::wavs::types::core::Timestamp { + nanos: l44 as u64, + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V45::Cron(e45) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + V45::Manual + } + }; + let l46 = i32::from( + *base.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::ComponentSource as V70; + let v70 = match l46 { + 0 => { + let e70 = { + let l47 = *base + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l48 = *base + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len49 = l48; + let bytes49 = _rt::Vec::from_raw_parts(l47.cast(), len49, len49); + let l50 = *base + .add(48 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l51 = *base + .add(48 + 8 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len52 = l51; + let bytes52 = _rt::Vec::from_raw_parts(l50.cast(), len52, len52); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes49), + digest: _rt::string_lift(bytes52), + } + }; + V70::Download(e70) + } + 1 => { + let e70 = { + let l53 = *base + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l54 = *base + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts(l53.cast(), len55, len55); + let l56 = i32::from( + *base + .add(48 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l60 = i32::from( + *base + .add(48 + 10 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l64 = *base + .add(48 + 13 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l65 = *base + .add(48 + 14 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len66 = l65; + let bytes66 = _rt::Vec::from_raw_parts(l64.cast(), len66, len66); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes55), + domain: match l56 { + 0 => None, + 1 => { + let e = { + let l57 = *base + .add( + 48 + 8 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::<*mut u8>(); + let l58 = *base + .add( + 48 + 9 * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + let len59 = l58; + let bytes59 = _rt::Vec::from_raw_parts( + l57.cast(), + len59, + len59, + ); + _rt::string_lift(bytes59) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l60 { + 0 => None, + 1 => { + let e = { + let l61 = *base + .add( + 48 + 11 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::<*mut u8>(); + let l62 = *base + .add( + 48 + 12 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + _rt::string_lift(bytes63) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes66), + } + }; + V70::Registry(e70) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e70 = { + let l67 = *base + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l68 = *base + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len69 = l68; + let bytes69 = _rt::Vec::from_raw_parts(l67.cast(), len69, len69); + _rt::string_lift(bytes69) + }; + V70::Digest(e70) + } + }; + let l71 = i32::from( + *base.add(48 + 15 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::AllowedHostPermission as V78; + let v78 = match l71 { + 0 => V78::All, + 1 => { + let e78 = { + let l72 = *base + .add(48 + 16 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l73 = *base + .add(48 + 17 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base77 = l72; + let len77 = l73; + let mut result77 = _rt::Vec::with_capacity(len77); + for i in 0..len77 { + let base = + base77.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e77 = { + let l74 = *base.add(0).cast::<*mut u8>(); + let l75 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len76 = l75; + let bytes76 = + _rt::Vec::from_raw_parts(l74.cast(), len76, len76); + _rt::string_lift(bytes76) + }; + result77.push(e77); + } + _rt::cabi_dealloc( + base77, + len77 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result77 + }; + V78::Only(e78) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V78::None + } + }; + let l79 = i32::from( + *base.add(48 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l80 = i32::from( + *base.add(56 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l82 = i32::from( + *base.add(72 + 18 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l84 = + *base.add(88 + 18 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l85 = + *base.add(88 + 19 * ::core::mem::size_of::<*const u8>()).cast::(); + let base92 = l84; + let len92 = l85; + let mut result92 = _rt::Vec::with_capacity(len92); + for i in 0..len92 { + let base = base92.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e92 = { + let l86 = *base.add(0).cast::<*mut u8>(); + let l87 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len88 = l87; + let bytes88 = _rt::Vec::from_raw_parts(l86.cast(), len88, len88); + let l89 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l90 = + *base.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len91 = l90; + let bytes91 = _rt::Vec::from_raw_parts(l89.cast(), len91, len91); + (_rt::string_lift(bytes88), _rt::string_lift(bytes91)) + }; + result92.push(e92); + } + _rt::cabi_dealloc( + base92, + len92 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l93 = + *base.add(88 + 20 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l94 = + *base.add(88 + 21 * ::core::mem::size_of::<*const u8>()).cast::(); + let base98 = l93; + let len98 = l94; + let mut result98 = _rt::Vec::with_capacity(len98); + for i in 0..len98 { + let base = base98.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e98 = { + let l95 = *base.add(0).cast::<*mut u8>(); + let l96 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts(l95.cast(), len97, len97); + _rt::string_lift(bytes97) + }; + result98.push(e98); + } + _rt::cabi_dealloc( + base98, + len98 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l99 = i32::from( + *base.add(88 + 22 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::Submit as V161; + let v161 = match l99 { + 0 => V161::None, + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e161 = { + let l100 = *base + .add(96 + 22 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l101 = *base + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len102 = l101; + let bytes102 = + _rt::Vec::from_raw_parts(l100.cast(), len102, len102); + let l103 = i32::from( + *base + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::wavs::types::service::ComponentSource as V127; + let v127 = match l103 { + 0 => { + let e127 = { + let l104 = *base + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l105 = *base + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len106 = l105; + let bytes106 = _rt::Vec::from_raw_parts( + l104.cast(), + len106, + len106, + ); + let l107 = *base + .add(96 + 27 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l108 = *base + .add(96 + 28 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len109 = l108; + let bytes109 = _rt::Vec::from_raw_parts( + l107.cast(), + len109, + len109, + ); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes106), + digest: _rt::string_lift(bytes109), + } + }; + V127::Download(e127) + } + 1 => { + let e127 = { + let l110 = *base + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l111 = *base + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len112 = l111; + let bytes112 = _rt::Vec::from_raw_parts( + l110.cast(), + len112, + len112, + ); + let l113 = i32::from( + *base + .add( + 96 + 27 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(), + ); + let l117 = i32::from( + *base + .add( + 96 + 30 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(), + ); + let l121 = *base + .add(96 + 33 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l122 = *base + .add(96 + 34 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes112), + domain: match l113 { + 0 => None, + 1 => { + let e = { + let l114 = *base + .add( + 96 + 28 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::<*mut u8>(); + let l115 = *base + .add( + 96 + 29 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::(); + let len116 = l115; + let bytes116 = _rt::Vec::from_raw_parts( + l114.cast(), + len116, + len116, + ); + _rt::string_lift(bytes116) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l117 { + 0 => None, + 1 => { + let e = { + let l118 = *base + .add( + 96 + 31 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::<*mut u8>(); + let l119 = *base + .add( + 96 + 32 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::(); + let len120 = l119; + let bytes120 = _rt::Vec::from_raw_parts( + l118.cast(), + len120, + len120, + ); + _rt::string_lift(bytes120) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes123), + } + }; + V127::Registry(e127) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e127 = { + let l124 = *base + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l125 = *base + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len126 = l125; + let bytes126 = _rt::Vec::from_raw_parts( + l124.cast(), + len126, + len126, + ); + _rt::string_lift(bytes126) + }; + V127::Digest(e127) + } + }; + let l128 = i32::from( + *base + .add(96 + 35 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::wavs::types::service::AllowedHostPermission as V135; + let v135 = match l128 { + 0 => V135::All, + 1 => { + let e135 = { + let l129 = *base + .add(96 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l130 = *base + .add(96 + 37 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base134 = l129; + let len134 = l130; + let mut result134 = _rt::Vec::with_capacity(len134); + for i in 0..len134 { + let base = base134.add( + i * (2 * ::core::mem::size_of::<*const u8>()), + ); + let e134 = { + let l131 = *base.add(0).cast::<*mut u8>(); + let l132 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + _rt::string_lift(bytes133) + }; + result134.push(e134); + } + _rt::cabi_dealloc( + base134, + len134 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result134 + }; + V135::Only(e135) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V135::None + } + }; + let l136 = i32::from( + *base + .add(96 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l137 = i32::from( + *base + .add(104 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l139 = i32::from( + *base + .add(120 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l141 = *base + .add(136 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l142 = *base + .add(136 + 39 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base149 = l141; + let len149 = l142; + let mut result149 = _rt::Vec::with_capacity(len149); + for i in 0..len149 { + let base = + base149.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e149 = { + let l143 = *base.add(0).cast::<*mut u8>(); + let l144 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len145 = l144; + let bytes145 = + _rt::Vec::from_raw_parts(l143.cast(), len145, len145); + let l146 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l147 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len148 = l147; + let bytes148 = + _rt::Vec::from_raw_parts(l146.cast(), len148, len148); + (_rt::string_lift(bytes145), _rt::string_lift(bytes148)) + }; + result149.push(e149); + } + _rt::cabi_dealloc( + base149, + len149 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l150 = *base + .add(136 + 40 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l151 = *base + .add(136 + 41 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base155 = l150; + let len155 = l151; + let mut result155 = _rt::Vec::with_capacity(len155); + for i in 0..len155 { + let base = + base155.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e155 = { + let l152 = *base.add(0).cast::<*mut u8>(); + let l153 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len154 = l153; + let bytes154 = + _rt::Vec::from_raw_parts(l152.cast(), len154, len154); + _rt::string_lift(bytes154) + }; + result155.push(e155); + } + _rt::cabi_dealloc( + base155, + len155 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l156 = i32::from( + *base + .add(136 + 42 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + use super::wavs::types::service::SignatureAlgorithm as V157; + let v157 = match l156 { + n => { + debug_assert_eq!(n, 0, "invalid enum discriminant"); + V157::Secp256k1 + } + }; + let l158 = i32::from( + *base + .add(137 + 42 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + super::wavs::types::service::AggregatorSubmit { + url: _rt::string_lift(bytes102), + component: super::wavs::types::service::Component { + source: v127, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v135, + file_system: _rt::bool_lift(l136 as u8), + }, + fuel_limit: match l137 { + 0 => None, + 1 => { + let e = { + let l138 = *base + .add( + 112 + 38 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l138 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l139 { + 0 => None, + 1 => { + let e = { + let l140 = *base + .add( + 128 + 38 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + l140 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result149, + env_keys: result155, + }, + signature_kind: super::wavs::types::service::SignatureKind { + algorithm: v157, + prefix: match l158 { + 0 => None, + 1 => { + let e = { + let l159 = i32::from( + *base + .add( + 138 + 42 + * ::core::mem::size_of::< + *const u8, + >( + ), + ) + .cast::(), + ); + use super::wavs::types::service::SignaturePrefix as V160; + let v160 = match l159 { + n => { + debug_assert_eq!( + n, 0, + "invalid enum discriminant" + ); + V160::Eip191 + } + }; + v160 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + } + }; + V161::Aggregator(e161) + } + }; + ( + _rt::string_lift(bytes9), + super::wavs::types::service::Workflow { + trigger: v45, + component: super::wavs::types::service::Component { + source: v70, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v78, + file_system: _rt::bool_lift(l79 as u8), + }, + fuel_limit: match l80 { + 0 => None, + 1 => { + let e = { + let l81 = *base + .add(64 + 18 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l81 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l82 { + 0 => None, + 1 => { + let e = { + let l83 = *base + .add(80 + 18 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l83 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result92, + env_keys: result98, + }, + submit: v161, + }, + ) + }; + result162.push(e162); + } + _rt::cabi_dealloc( + base162, + len162 * (144 + 42 * ::core::mem::size_of::<*const u8>()), + 8, + ); + let l163 = i32::from(*ptr0.add(4 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::ServiceStatus as V164; + let v164 = match l163 { + 0 => V164::Active, + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + V164::Paused + } + }; + let l165 = i32::from(*ptr0.add(5 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::ServiceManager as V172; + let v172 = match l165 { + n => { + debug_assert_eq!(n, 0, "invalid enum discriminant"); + let e172 = { + let l166 = + *ptr0.add(6 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l167 = + *ptr0.add(7 * ::core::mem::size_of::<*const u8>()).cast::(); + let len168 = l167; + let bytes168 = _rt::Vec::from_raw_parts(l166.cast(), len168, len168); + let l169 = + *ptr0.add(8 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l170 = + *ptr0.add(9 * ::core::mem::size_of::<*const u8>()).cast::(); + let len171 = l170; + super::wavs::types::service::EvmManager { + chain: _rt::string_lift(bytes168), + address: super::wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l169.cast(), len171, len171), + }, + } + }; + V172::Evm(e172) + } + }; + let l173 = *ptr0.add(10 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l174 = *ptr0.add(11 * ::core::mem::size_of::<*const u8>()).cast::(); + let len175 = l174; + let bytes175 = _rt::Vec::from_raw_parts(l173.cast(), len175, len175); + let result176 = super::wavs::types::service::ServiceAndWorkflowId { + service: super::wavs::types::service::Service { + name: _rt::string_lift(bytes4), + workflows: result162, + status: v164, + manager: v172, + }, + workflow_id: _rt::string_lift(bytes175), + }; + result176 + } + } + #[allow(unused_unsafe, clippy::all)] + /// convenience function to get the workflow without having to walk service.workflows + pub fn get_workflow() -> WorkflowAndWorkflowId { + unsafe { + #[repr(align(8))] + struct RetArea( + [::core::mem::MaybeUninit; 144 + 42 * ::core::mem::size_of::<*const u8>()], + ); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); + 144 + 42 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-workflow"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = i32::from(*ptr0.add(0).cast::()); + use super::wavs::types::service::Trigger as V37; + let v37 = match l2 { + 0 => { + let e37 = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len5 = l4; + let l6 = *ptr0 + .add(8 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l7 = + *ptr0.add(8 + 3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *ptr0 + .add(8 + 4 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l10 = + *ptr0.add(8 + 5 * ::core::mem::size_of::<*const u8>()).cast::(); + let len11 = l10; + super::wavs::types::service::TriggerEvmContractEvent { + address: super::wavs::types::chain::EvmAddress { + raw_bytes: _rt::Vec::from_raw_parts(l3.cast(), len5, len5), + }, + chain: _rt::string_lift(bytes8), + event_hash: _rt::Vec::from_raw_parts(l9.cast(), len11, len11), + } + }; + V37::EvmContractEvent(e37) + } + 1 => { + let e37 = { + let l12 = *ptr0.add(8).cast::<*mut u8>(); + let l13 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts(l12.cast(), len14, len14); + let l15 = + *ptr0.add(8 + 2 * ::core::mem::size_of::<*const u8>()).cast::(); + let l16 = *ptr0 + .add(8 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l17 = + *ptr0.add(8 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len18 = l17; + let bytes18 = _rt::Vec::from_raw_parts(l16.cast(), len18, len18); + let l19 = *ptr0 + .add(8 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l20 = + *ptr0.add(8 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let len21 = l20; + let bytes21 = _rt::Vec::from_raw_parts(l19.cast(), len21, len21); + super::wavs::types::service::TriggerCosmosContractEvent { + address: super::wavs::types::chain::CosmosAddress { + bech32_addr: _rt::string_lift(bytes14), + prefix_len: l15 as u32, + }, + chain: _rt::string_lift(bytes18), + event_type: _rt::string_lift(bytes21), + } + }; + V37::CosmosContractEvent(e37) + } + 2 => { + let e37 = { + let l22 = *ptr0.add(8).cast::<*mut u8>(); + let l23 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts(l22.cast(), len24, len24); + let l25 = + *ptr0.add(8 + 2 * ::core::mem::size_of::<*const u8>()).cast::(); + let l26 = i32::from( + *ptr0.add(16 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l28 = i32::from( + *ptr0.add(32 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::service::TriggerBlockInterval { + chain: _rt::string_lift(bytes24), + n_blocks: l25 as u32, + start_block: match l26 { + 0 => None, + 1 => { + let e = { + let l27 = *ptr0 + .add(24 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l27 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_block: match l28 { + 0 => None, + 1 => { + let e = { + let l29 = *ptr0 + .add(40 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l29 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V37::BlockInterval(e37) + } + 3 => { + let e37 = { + let l30 = *ptr0.add(8).cast::<*mut u8>(); + let l31 = + *ptr0.add(8 + 1 * ::core::mem::size_of::<*const u8>()).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts(l30.cast(), len32, len32); + let l33 = i32::from( + *ptr0.add(8 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l35 = i32::from( + *ptr0.add(24 + 2 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::service::TriggerCron { + schedule: _rt::string_lift(bytes32), + start_time: match l33 { + 0 => None, + 1 => { + let e = { + let l34 = *ptr0 + .add(16 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + super::wavs::types::core::Timestamp { nanos: l34 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + end_time: match l35 { + 0 => None, + 1 => { + let e = { + let l36 = *ptr0 + .add(32 + 2 * ::core::mem::size_of::<*const u8>()) + .cast::(); + super::wavs::types::core::Timestamp { nanos: l36 as u64 } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + V37::Cron(e37) + } + n => { + debug_assert_eq!(n, 4, "invalid enum discriminant"); + V37::Manual + } + }; + let l38 = + i32::from(*ptr0.add(48 + 2 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::ComponentSource as V62; + let v62 = match l38 { + 0 => { + let e62 = { + let l39 = *ptr0 + .add(48 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l40 = + *ptr0.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts(l39.cast(), len41, len41); + let l42 = *ptr0 + .add(48 + 5 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l43 = + *ptr0.add(48 + 6 * ::core::mem::size_of::<*const u8>()).cast::(); + let len44 = l43; + let bytes44 = _rt::Vec::from_raw_parts(l42.cast(), len44, len44); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes41), + digest: _rt::string_lift(bytes44), + } + }; + V62::Download(e62) + } + 1 => { + let e62 = { + let l45 = *ptr0 + .add(48 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l46 = + *ptr0.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts(l45.cast(), len47, len47); + let l48 = i32::from( + *ptr0.add(48 + 5 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l52 = i32::from( + *ptr0.add(48 + 8 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l56 = *ptr0 + .add(48 + 11 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l57 = *ptr0 + .add(48 + 12 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts(l56.cast(), len58, len58); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes47), + domain: match l48 { + 0 => None, + 1 => { + let e = { + let l49 = *ptr0 + .add(48 + 6 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l50 = *ptr0 + .add(48 + 7 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len51 = l50; + let bytes51 = + _rt::Vec::from_raw_parts(l49.cast(), len51, len51); + _rt::string_lift(bytes51) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l52 { + 0 => None, + 1 => { + let e = { + let l53 = *ptr0 + .add(48 + 9 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l54 = *ptr0 + .add(48 + 10 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len55 = l54; + let bytes55 = + _rt::Vec::from_raw_parts(l53.cast(), len55, len55); + _rt::string_lift(bytes55) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes58), + } + }; + V62::Registry(e62) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e62 = { + let l59 = *ptr0 + .add(48 + 3 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l60 = + *ptr0.add(48 + 4 * ::core::mem::size_of::<*const u8>()).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts(l59.cast(), len61, len61); + _rt::string_lift(bytes61) + }; + V62::Digest(e62) + } + }; + let l63 = + i32::from(*ptr0.add(48 + 13 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::AllowedHostPermission as V70; + let v70 = match l63 { + 0 => V70::All, + 1 => { + let e70 = { + let l64 = *ptr0 + .add(48 + 14 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l65 = *ptr0 + .add(48 + 15 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base69 = l64; + let len69 = l65; + let mut result69 = _rt::Vec::with_capacity(len69); + for i in 0..len69 { + let base = base69.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e69 = { + let l66 = *base.add(0).cast::<*mut u8>(); + let l67 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len68 = l67; + let bytes68 = _rt::Vec::from_raw_parts(l66.cast(), len68, len68); + _rt::string_lift(bytes68) + }; + result69.push(e69); + } + _rt::cabi_dealloc( + base69, + len69 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result69 + }; + V70::Only(e70) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V70::None + } + }; + let l71 = + i32::from(*ptr0.add(48 + 16 * ::core::mem::size_of::<*const u8>()).cast::()); + let l72 = + i32::from(*ptr0.add(56 + 16 * ::core::mem::size_of::<*const u8>()).cast::()); + let l74 = + i32::from(*ptr0.add(72 + 16 * ::core::mem::size_of::<*const u8>()).cast::()); + let l76 = *ptr0.add(88 + 16 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l77 = *ptr0.add(88 + 17 * ::core::mem::size_of::<*const u8>()).cast::(); + let base84 = l76; + let len84 = l77; + let mut result84 = _rt::Vec::with_capacity(len84); + for i in 0..len84 { + let base = base84.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e84 = { + let l78 = *base.add(0).cast::<*mut u8>(); + let l79 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts(l78.cast(), len80, len80); + let l81 = *base.add(2 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l82 = *base.add(3 * ::core::mem::size_of::<*const u8>()).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts(l81.cast(), len83, len83); + (_rt::string_lift(bytes80), _rt::string_lift(bytes83)) + }; + result84.push(e84); + } + _rt::cabi_dealloc( + base84, + len84 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l85 = *ptr0.add(88 + 18 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l86 = *ptr0.add(88 + 19 * ::core::mem::size_of::<*const u8>()).cast::(); + let base90 = l85; + let len90 = l86; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e90 = { + let l87 = *base.add(0).cast::<*mut u8>(); + let l88 = *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts(l87.cast(), len89, len89); + _rt::string_lift(bytes89) + }; + result90.push(e90); + } + _rt::cabi_dealloc( + base90, + len90 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l91 = + i32::from(*ptr0.add(88 + 20 * ::core::mem::size_of::<*const u8>()).cast::()); + use super::wavs::types::service::Submit as V153; + let v153 = match l91 { + 0 => V153::None, + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e153 = { + let l92 = *ptr0 + .add(96 + 20 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l93 = *ptr0 + .add(96 + 21 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len94 = l93; + let bytes94 = _rt::Vec::from_raw_parts(l92.cast(), len94, len94); + let l95 = i32::from( + *ptr0.add(96 + 22 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::ComponentSource as V119; + let v119 = match l95 { + 0 => { + let e119 = { + let l96 = *ptr0 + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l97 = *ptr0 + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len98 = l97; + let bytes98 = + _rt::Vec::from_raw_parts(l96.cast(), len98, len98); + let l99 = *ptr0 + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l100 = *ptr0 + .add(96 + 26 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len101 = l100; + let bytes101 = + _rt::Vec::from_raw_parts(l99.cast(), len101, len101); + super::wavs::types::service::ComponentSourceDownload { + uri: _rt::string_lift(bytes98), + digest: _rt::string_lift(bytes101), + } + }; + V119::Download(e119) + } + 1 => { + let e119 = { + let l102 = *ptr0 + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l103 = *ptr0 + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len104 = l103; + let bytes104 = + _rt::Vec::from_raw_parts(l102.cast(), len104, len104); + let l105 = i32::from( + *ptr0 + .add(96 + 25 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l109 = i32::from( + *ptr0 + .add(96 + 28 * ::core::mem::size_of::<*const u8>()) + .cast::(), + ); + let l113 = *ptr0 + .add(96 + 31 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l114 = *ptr0 + .add(96 + 32 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len115 = l114; + let bytes115 = + _rt::Vec::from_raw_parts(l113.cast(), len115, len115); + super::wavs::types::service::Registry { + digest: _rt::string_lift(bytes104), + domain: match l105 { + 0 => None, + 1 => { + let e = { + let l106 = *ptr0 + .add( + 96 + 26 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::<*mut u8>(); + let l107 = *ptr0 + .add( + 96 + 27 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + _rt::string_lift(bytes108) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + version: match l109 { + 0 => None, + 1 => { + let e = { + let l110 = *ptr0 + .add( + 96 + 29 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::<*mut u8>(); + let l111 = *ptr0 + .add( + 96 + 30 + * ::core::mem::size_of::<*const u8>( + ), + ) + .cast::(); + let len112 = l111; + let bytes112 = _rt::Vec::from_raw_parts( + l110.cast(), + len112, + len112, + ); + _rt::string_lift(bytes112) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + pkg: _rt::string_lift(bytes115), + } + }; + V119::Registry(e119) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + let e119 = { + let l116 = *ptr0 + .add(96 + 23 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l117 = *ptr0 + .add(96 + 24 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len118 = l117; + let bytes118 = + _rt::Vec::from_raw_parts(l116.cast(), len118, len118); + _rt::string_lift(bytes118) + }; + V119::Digest(e119) + } + }; + let l120 = i32::from( + *ptr0.add(96 + 33 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::AllowedHostPermission as V127; + let v127 = match l120 { + 0 => V127::All, + 1 => { + let e127 = { + let l121 = *ptr0 + .add(96 + 34 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l122 = *ptr0 + .add(96 + 35 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base126 = l121; + let len126 = l122; + let mut result126 = _rt::Vec::with_capacity(len126); + for i in 0..len126 { + let base = base126 + .add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e126 = { + let l123 = *base.add(0).cast::<*mut u8>(); + let l124 = *base + .add(::core::mem::size_of::<*const u8>()) + .cast::(); + let len125 = l124; + let bytes125 = _rt::Vec::from_raw_parts( + l123.cast(), + len125, + len125, + ); + _rt::string_lift(bytes125) + }; + result126.push(e126); + } + _rt::cabi_dealloc( + base126, + len126 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + result126 + }; + V127::Only(e127) + } + n => { + debug_assert_eq!(n, 2, "invalid enum discriminant"); + V127::None + } + }; + let l128 = i32::from( + *ptr0.add(96 + 36 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l129 = i32::from( + *ptr0.add(104 + 36 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l131 = i32::from( + *ptr0.add(120 + 36 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + let l133 = *ptr0 + .add(136 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l134 = *ptr0 + .add(136 + 37 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base141 = l133; + let len141 = l134; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * (4 * ::core::mem::size_of::<*const u8>())); + let e141 = { + let l135 = *base.add(0).cast::<*mut u8>(); + let l136 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len137 = l136; + let bytes137 = + _rt::Vec::from_raw_parts(l135.cast(), len137, len137); + let l138 = *base + .add(2 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l139 = *base + .add(3 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let len140 = l139; + let bytes140 = + _rt::Vec::from_raw_parts(l138.cast(), len140, len140); + (_rt::string_lift(bytes137), _rt::string_lift(bytes140)) + }; + result141.push(e141); + } + _rt::cabi_dealloc( + base141, + len141 * (4 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l142 = *ptr0 + .add(136 + 38 * ::core::mem::size_of::<*const u8>()) + .cast::<*mut u8>(); + let l143 = *ptr0 + .add(136 + 39 * ::core::mem::size_of::<*const u8>()) + .cast::(); + let base147 = l142; + let len147 = l143; + let mut result147 = _rt::Vec::with_capacity(len147); + for i in 0..len147 { + let base = base147.add(i * (2 * ::core::mem::size_of::<*const u8>())); + let e147 = { + let l144 = *base.add(0).cast::<*mut u8>(); + let l145 = + *base.add(::core::mem::size_of::<*const u8>()).cast::(); + let len146 = l145; + let bytes146 = + _rt::Vec::from_raw_parts(l144.cast(), len146, len146); + _rt::string_lift(bytes146) + }; + result147.push(e147); + } + _rt::cabi_dealloc( + base147, + len147 * (2 * ::core::mem::size_of::<*const u8>()), + ::core::mem::size_of::<*const u8>(), + ); + let l148 = i32::from( + *ptr0.add(136 + 40 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + use super::wavs::types::service::SignatureAlgorithm as V149; + let v149 = match l148 { + n => { + debug_assert_eq!(n, 0, "invalid enum discriminant"); + V149::Secp256k1 + } + }; + let l150 = i32::from( + *ptr0.add(137 + 40 * ::core::mem::size_of::<*const u8>()).cast::(), + ); + super::wavs::types::service::AggregatorSubmit { + url: _rt::string_lift(bytes94), + component: super::wavs::types::service::Component { + source: v119, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v127, + file_system: _rt::bool_lift(l128 as u8), + }, + fuel_limit: match l129 { + 0 => None, + 1 => { + let e = { + let l130 = *ptr0 + .add(112 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l130 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l131 { + 0 => None, + 1 => { + let e = { + let l132 = *ptr0 + .add(128 + 36 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l132 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result141, + env_keys: result147, + }, + signature_kind: super::wavs::types::service::SignatureKind { + algorithm: v149, + prefix: match l150 { + 0 => None, + 1 => { + let e = { + let l151 = i32::from( + *ptr0 + .add( + 138 + 40 + * ::core::mem::size_of::<*const u8>(), + ) + .cast::(), + ); + use super::wavs::types::service::SignaturePrefix as V152; + let v152 = match l151 { + n => { + debug_assert_eq!( + n, 0, + "invalid enum discriminant" + ); + V152::Eip191 + } + }; + v152 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + } + }; + V153::Aggregator(e153) + } + }; + let l154 = *ptr0.add(144 + 40 * ::core::mem::size_of::<*const u8>()).cast::<*mut u8>(); + let l155 = *ptr0.add(144 + 41 * ::core::mem::size_of::<*const u8>()).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts(l154.cast(), len156, len156); + let result157 = super::wavs::types::service::WorkflowAndWorkflowId { + workflow: super::wavs::types::service::Workflow { + trigger: v37, + component: super::wavs::types::service::Component { + source: v62, + permissions: super::wavs::types::service::Permissions { + allowed_http_hosts: v70, + file_system: _rt::bool_lift(l71 as u8), + }, + fuel_limit: match l72 { + 0 => None, + 1 => { + let e = { + let l73 = *ptr0 + .add(64 + 16 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l73 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + time_limit_seconds: match l74 { + 0 => None, + 1 => { + let e = { + let l75 = *ptr0 + .add(80 + 16 * ::core::mem::size_of::<*const u8>()) + .cast::(); + l75 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + config: result84, + env_keys: result90, + }, + submit: v153, + }, + workflow_id: _rt::string_lift(bytes156), + }; + result157 + } + } + #[allow(unused_unsafe, clippy::all)] + /// convenience function to get the event-id + pub fn get_event_id() -> EventId { + unsafe { + #[cfg_attr(target_pointer_width = "64", repr(align(8)))] + #[cfg_attr(target_pointer_width = "32", repr(align(4)))] + struct RetArea([::core::mem::MaybeUninit; 2 * ::core::mem::size_of::<*const u8>()]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 2 * ::core::mem::size_of::<*const u8>()], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "host")] + unsafe extern "C" { + #[link_name = "get-event-id"] + fn wit_import1(_: *mut u8); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import1(_: *mut u8) { + unreachable!() + } + unsafe { wit_import1(ptr0) }; + let l2 = *ptr0.add(0).cast::<*mut u8>(); + let l3 = *ptr0.add(::core::mem::size_of::<*const u8>()).cast::(); + let len4 = l3; + let result5 = _rt::Vec::from_raw_parts(l2.cast(), len4, len4); + result5 + } + } +} +#[rustfmt::skip] +mod _rt { + #![allow(dead_code, clippy::all)] + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + use core::fmt; + use core::marker; + use core::sync::atomic::{AtomicU32, Ordering::Relaxed}; + /// A type which represents a component model resource, either imported or + /// exported into this component. + /// + /// This is a low-level wrapper which handles the lifetime of the resource + /// (namely this has a destructor). The `T` provided defines the component model + /// intrinsics that this wrapper uses. + /// + /// One of the chief purposes of this type is to provide `Deref` implementations + /// to access the underlying data when it is owned. + /// + /// This type is primarily used in generated code for exported and imported + /// resources. + #[repr(transparent)] + pub struct Resource { + handle: AtomicU32, + _marker: marker::PhantomData, + } + /// A trait which all wasm resources implement, namely providing the ability to + /// drop a resource. + /// + /// This generally is implemented by generated code, not user-facing code. + #[allow(clippy::missing_safety_doc)] + pub unsafe trait WasmResource { + /// Invokes the `[resource-drop]...` intrinsic. + unsafe fn drop(handle: u32); + } + impl Resource { + #[doc(hidden)] + pub unsafe fn from_handle(handle: u32) -> Self { + debug_assert!(handle != u32::MAX); + Self { + handle: AtomicU32::new(handle), + _marker: marker::PhantomData, + } + } + /// Takes ownership of the handle owned by `resource`. + /// + /// Note that this ideally would be `into_handle` taking `Resource` by + /// ownership. The code generator does not enable that in all situations, + /// unfortunately, so this is provided instead. + /// + /// Also note that `take_handle` is in theory only ever called on values + /// owned by a generated function. For example a generated function might + /// take `Resource` as an argument but then call `take_handle` on a + /// reference to that argument. In that sense the dynamic nature of + /// `take_handle` should only be exposed internally to generated code, not + /// to user code. + #[doc(hidden)] + pub fn take_handle(resource: &Resource) -> u32 { + resource.handle.swap(u32::MAX, Relaxed) + } + #[doc(hidden)] + pub fn handle(resource: &Resource) -> u32 { + resource.handle.load(Relaxed) + } + } + impl fmt::Debug for Resource { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Resource").field("handle", &self.handle).finish() + } + } + impl Drop for Resource { + fn drop(&mut self) { + unsafe { + match self.handle.load(Relaxed) { + u32::MAX => {} + other => T::drop(other), + } + } + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if cfg!(debug_assertions) { + match val { + 0 => false, + 1 => true, + _ => panic!("invalid bool discriminant"), + } + } else { + val != 0 + } + } + pub use alloc_crate::alloc; + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if cfg!(debug_assertions) { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if cfg!(debug_assertions) { + panic!("invalid enum discriminant") + } else { + unsafe { core::hint::unreachable_unchecked() } + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + #[cfg(target_arch = "wasm32")] + pub fn run_ctors_once() { + wit_bindgen_rt::run_ctors_once(); + } + extern crate alloc as alloc_crate; +} +/// Generates `#[unsafe(no_mangle)]` functions to export the specified type as +/// the root implementation of all generated traits. +/// +/// For more information see the documentation of `wit_bindgen::generate!`. +/// +/// ```rust +/// # macro_rules! export{ ($($t:tt)*) => (); } +/// # trait Guest {} +/// struct MyType; +/// +/// impl Guest for MyType { +/// // ... +/// } +/// +/// export!(MyType); +/// ``` +#[allow(unused_macros)] +#[doc(hidden)] +macro_rules! __export_wavs_world_impl { + ($ty:ident) => { + self::export!($ty with_types_in self); + }; + ($ty:ident with_types_in $($path_to_types_root:tt)*) => { + $($path_to_types_root)*:: __export_world_wavs_world_cabi!($ty with_types_in + $($path_to_types_root)*); + }; +} +#[doc(inline)] +pub(crate) use __export_wavs_world_impl as export; +#[cfg(target_arch = "wasm32")] +#[unsafe(link_section = "component-type:wit-bindgen:0.41.0:wavs:operator@1.3.0:wavs-world:encoded world")] +#[doc(hidden)] +#[allow(clippy::octal_escapes)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 20564] = *b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\xd2\x9f\x01\x01A\x02\ +\x01A~\x01B\x0b\x01s\x04\0\x06digest\x03\0\0\x01r\x01\x05nanosw\x04\0\x09timesta\ +mp\x03\0\x02\x01r\x01\x04secsw\x04\0\x08duration\x03\0\x04\x01o\x02ww\x01r\x01\x05\ +value\x06\x04\0\x04u128\x03\0\x07\x01q\x05\x05error\0\0\x04warn\0\0\x04info\0\0\x05\ +debug\0\0\x05trace\0\0\x04\0\x09log-level\x03\0\x09\x03\0\x15wavs:types/core@1.3\ +.0\x05\0\x01B\x1d\x01s\x04\0\x09chain-key\x03\0\0\x01p}\x04\0\x0bevm-tx-hash\x03\ +\0\x02\x01s\x04\0\x0ecosmos-tx-hash\x03\0\x04\x01q\x02\x03evm\x01\x03\0\x06cosmo\ +s\x01\x05\0\x04\0\x0bany-tx-hash\x03\0\x06\x01r\x02\x0bbech32-addrs\x0aprefix-le\ +ny\x04\0\x0ecosmos-address\x03\0\x08\x01o\x02ss\x01p\x0a\x01r\x02\x02tys\x0aattr\ +ibutes\x0b\x04\0\x0ccosmos-event\x03\0\x0c\x01ks\x01r\x07\x08chain-ids\x0crpc-en\ +dpoint\x0e\x0dgrpc-endpoint\x0e\x11grpc-web-endpoint\x0e\x09gas-pricev\x09gas-de\ +noms\x0dbech32-prefixs\x04\0\x13cosmos-chain-config\x03\0\x0f\x01p}\x01r\x01\x09\ +raw-bytes\x11\x04\0\x0bevm-address\x03\0\x12\x01p\x11\x01r\x02\x06topics\x14\x04\ +data\x11\x04\0\x12evm-event-log-data\x03\0\x15\x01kw\x01r\x08\x07address\x13\x04\ +data\x16\x07tx-hash\x03\x0cblock-numberw\x09log-indexw\x0ablock-hash\x11\x0fbloc\ +k-timestamp\x17\x08tx-indexw\x04\0\x0devm-event-log\x03\0\x18\x01ps\x01r\x03\x08\ +chain-ids\x0cws-endpoints\x1a\x0dhttp-endpoint\x0e\x04\0\x10evm-chain-config\x03\ +\0\x1b\x03\0\x16wavs:types/chain@1.3.0\x05\x01\x02\x03\0\0\x06digest\x02\x03\0\0\ +\x09timestamp\x02\x03\0\x01\x09chain-key\x02\x03\0\x01\x0bevm-address\x02\x03\0\x01\ +\x0ecosmos-address\x01BO\x02\x03\x02\x01\x02\x04\0\x06digest\x03\0\0\x02\x03\x02\ +\x01\x03\x04\0\x09timestamp\x03\0\x02\x02\x03\x02\x01\x04\x04\0\x09chain-key\x03\ +\0\x04\x02\x03\x02\x01\x05\x04\0\x0bevm-address\x03\0\x06\x02\x03\x02\x01\x06\x04\ +\0\x0ecosmos-address\x03\0\x08\x01s\x04\0\x0aservice-id\x03\0\x0a\x01s\x04\0\x0b\ +workflow-id\x03\0\x0c\x01s\x04\0\x0bpackage-ref\x03\0\x0e\x01s\x04\0\x0esemver-v\ +ersion\x03\0\x10\x01q\x02\x06active\0\0\x06paused\0\0\x04\0\x0eservice-status\x03\ +\0\x12\x01r\x02\x05chain\x05\x07address\x07\x04\0\x0bevm-manager\x03\0\x14\x01q\x01\ +\x03evm\x01\x15\0\x04\0\x0fservice-manager\x03\0\x16\x01r\x02\x03uris\x06digest\x01\ +\x04\0\x19component-source-download\x03\0\x18\x01ks\x01k\x11\x01r\x04\x06digest\x01\ +\x06domain\x1a\x07version\x1b\x03pkg\x0f\x04\0\x08registry\x03\0\x1c\x01q\x03\x08\ +download\x01\x19\0\x08registry\x01\x1d\0\x06digest\x01\x01\0\x04\0\x10component-\ +source\x03\0\x1e\x01ps\x01q\x03\x03all\0\0\x04only\x01\x20\0\x04none\0\0\x04\0\x17\ +allowed-host-permission\x03\0!\x01r\x02\x12allowed-http-hosts\"\x0bfile-system\x7f\ +\x04\0\x0bpermissions\x03\0#\x01kw\x01o\x02ss\x01p&\x01r\x06\x06source\x1f\x0bpe\ +rmissions$\x0afuel-limit%\x12time-limit-seconds%\x06config'\x08env-keys\x20\x04\0\ +\x09component\x03\0(\x01p}\x01r\x03\x07address\x07\x05chain\x05\x0aevent-hash*\x04\ +\0\x1atrigger-evm-contract-event\x03\0+\x01r\x03\x07address\x09\x05chain\x05\x0a\ +event-types\x04\0\x1dtrigger-cosmos-contract-event\x03\0-\x01r\x04\x05chain\x05\x08\ +n-blocksy\x0bstart-block%\x09end-block%\x04\0\x16trigger-block-interval\x03\0/\x01\ +k\x03\x01r\x03\x08schedules\x0astart-time1\x08end-time1\x04\0\x0ctrigger-cron\x03\ +\02\x01q\x05\x12evm-contract-event\x01,\0\x15cosmos-contract-event\x01.\0\x0eblo\ +ck-interval\x010\0\x04cron\x013\0\x06manual\0\0\x04\0\x07trigger\x03\04\x01q\x01\ +\x09secp256k1\0\0\x04\0\x13signature-algorithm\x03\06\x01q\x01\x06eip191\0\0\x04\ +\0\x10signature-prefix\x03\08\x01k9\x01r\x02\x09algorithm7\x06prefix:\x04\0\x0es\ +ignature-kind\x03\0;\x01r\x03\x03urls\x09component)\x0esignature-kind<\x04\0\x11\ +aggregator-submit\x03\0=\x01q\x02\x04none\0\0\x0aaggregator\x01>\0\x04\0\x06subm\ +it\x03\0?\x01r\x03\x07trigger5\x09component)\x06submit\xc0\0\x04\0\x08workflow\x03\ +\0A\x01o\x02\x0d\xc2\0\x01p\xc3\0\x01r\x04\x04names\x09workflows\xc4\0\x06status\ +\x13\x07manager\x17\x04\0\x07service\x03\0E\x01r\x03\x05chain\x05\x07address\x07\ +\x07max-gas%\x04\0\x17evm-contract-submission\x03\0G\x01q\x01\x03evm\x01\xc8\0\0\ +\x04\0\x0aaggregator\x03\0I\x01r\x02\x07service\xc6\0\x0bworkflow-id\x0d\x04\0\x17\ +service-and-workflow-id\x03\0K\x01r\x02\x08workflow\xc2\0\x0bworkflow-id\x0d\x04\ +\0\x18workflow-and-workflow-id\x03\0M\x03\0\x18wavs:types/service@1.3.0\x05\x07\x02\ +\x03\0\x01\x0devm-event-log\x02\x03\0\x01\x0ccosmos-event\x01B\x19\x02\x03\x02\x01\ +\x04\x04\0\x09chain-key\x03\0\0\x02\x03\x02\x01\x05\x04\0\x0bevm-address\x03\0\x02\ +\x02\x03\x02\x01\x08\x04\0\x0devm-event-log\x03\0\x04\x02\x03\x02\x01\x06\x04\0\x0e\ +cosmos-address\x03\0\x06\x02\x03\x02\x01\x09\x04\0\x0ccosmos-event\x03\0\x08\x02\ +\x03\x02\x01\x03\x04\0\x09timestamp\x03\0\x0a\x01p}\x04\0\x08event-id\x03\0\x0c\x01\ +r\x02\x05chain\x01\x03log\x05\x04\0\x1ftrigger-data-evm-contract-event\x03\0\x0e\ +\x01r\x05\x10contract-address\x07\x05chain\x01\x05event\x09\x0bevent-indexw\x0cb\ +lock-heightw\x04\0\"trigger-data-cosmos-contract-event\x03\0\x10\x01r\x02\x05cha\ +in\x01\x0cblock-heightw\x04\0\x1btrigger-data-block-interval\x03\0\x12\x01r\x01\x0c\ +trigger-time\x0b\x04\0\x11trigger-data-cron\x03\0\x14\x01p}\x01q\x05\x12evm-cont\ +ract-event\x01\x0f\0\x15cosmos-contract-event\x01\x11\0\x0eblock-interval\x01\x13\ +\0\x04cron\x01\x15\0\x03raw\x01\x16\0\x04\0\x0ctrigger-data\x03\0\x17\x03\0\x17w\ +avs:types/events@1.3.0\x05\x0a\x02\x03\0\x02\x0aservice-id\x02\x03\0\x02\x0bwork\ +flow-id\x02\x03\0\x02\x07trigger\x02\x03\0\x03\x0ctrigger-data\x01B\x0c\x02\x03\x02\ +\x01\x0b\x04\0\x0aservice-id\x03\0\0\x02\x03\x02\x01\x0c\x04\0\x0bworkflow-id\x03\ +\0\x02\x02\x03\x02\x01\x0d\x04\0\x07trigger\x03\0\x04\x02\x03\x02\x01\x0e\x04\0\x0c\ +trigger-data\x03\0\x06\x01r\x03\x0aservice-id\x01\x0bworkflow-id\x03\x07trigger\x05\ +\x04\0\x0etrigger-config\x03\0\x08\x01r\x02\x06config\x09\x04data\x07\x04\0\x0et\ +rigger-action\x03\0\x0a\x03\0\x19wavs:operator/input@1.3.0\x05\x0f\x02\x03\0\x04\ +\x0etrigger-action\x03\0\x0etrigger-action\x03\0\x10\x01B\x04\x01p}\x01kw\x01r\x02\ +\x07payload\0\x08ordering\x01\x04\0\x0dwasm-response\x03\0\x02\x03\0\x1awavs:ope\ +rator/output@1.3.0\x05\x12\x02\x03\0\x05\x0dwasm-response\x03\0\x0dwasm-response\ +\x03\0\x13\x01B\x0a\x04\0\x08pollable\x03\x01\x01h\0\x01@\x01\x04self\x01\0\x7f\x04\ +\0\x16[method]pollable.ready\x01\x02\x01@\x01\x04self\x01\x01\0\x04\0\x16[method\ +]pollable.block\x01\x03\x01p\x01\x01py\x01@\x01\x02in\x04\0\x05\x04\0\x04poll\x01\ +\x06\x03\0\x12wasi:io/poll@0.2.0\x05\x15\x02\x03\0\x06\x08pollable\x01B\x0f\x02\x03\ +\x02\x01\x16\x04\0\x08pollable\x03\0\0\x01w\x04\0\x07instant\x03\0\x02\x01w\x04\0\ +\x08duration\x03\0\x04\x01@\0\0\x03\x04\0\x03now\x01\x06\x01@\0\0\x05\x04\0\x0ar\ +esolution\x01\x07\x01i\x01\x01@\x01\x04when\x03\0\x08\x04\0\x11subscribe-instant\ +\x01\x09\x01@\x01\x04when\x05\0\x08\x04\0\x12subscribe-duration\x01\x0a\x03\0!wa\ +si:clocks/monotonic-clock@0.2.0\x05\x17\x01B\x04\x04\0\x05error\x03\x01\x01h\0\x01\ +@\x01\x04self\x01\0s\x04\0\x1d[method]error.to-debug-string\x01\x02\x03\0\x13was\ +i:io/error@0.2.0\x05\x18\x02\x03\0\x08\x05error\x01B(\x02\x03\x02\x01\x19\x04\0\x05\ +error\x03\0\0\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\x02\x01i\x01\x01q\x02\x15\ +last-operation-failed\x01\x04\0\x06closed\0\0\x04\0\x0cstream-error\x03\0\x05\x04\ +\0\x0cinput-stream\x03\x01\x04\0\x0doutput-stream\x03\x01\x01h\x07\x01p}\x01j\x01\ +\x0a\x01\x06\x01@\x02\x04self\x09\x03lenw\0\x0b\x04\0\x19[method]input-stream.re\ +ad\x01\x0c\x04\0\"[method]input-stream.blocking-read\x01\x0c\x01j\x01w\x01\x06\x01\ +@\x02\x04self\x09\x03lenw\0\x0d\x04\0\x19[method]input-stream.skip\x01\x0e\x04\0\ +\"[method]input-stream.blocking-skip\x01\x0e\x01i\x03\x01@\x01\x04self\x09\0\x0f\ +\x04\0\x1e[method]input-stream.subscribe\x01\x10\x01h\x08\x01@\x01\x04self\x11\0\ +\x0d\x04\0![method]output-stream.check-write\x01\x12\x01j\0\x01\x06\x01@\x02\x04\ +self\x11\x08contents\x0a\0\x13\x04\0\x1b[method]output-stream.write\x01\x14\x04\0\ +.[method]output-stream.blocking-write-and-flush\x01\x14\x01@\x01\x04self\x11\0\x13\ +\x04\0\x1b[method]output-stream.flush\x01\x15\x04\0$[method]output-stream.blocki\ +ng-flush\x01\x15\x01@\x01\x04self\x11\0\x0f\x04\0\x1f[method]output-stream.subsc\ +ribe\x01\x16\x01@\x02\x04self\x11\x03lenw\0\x13\x04\0\"[method]output-stream.wri\ +te-zeroes\x01\x17\x04\05[method]output-stream.blocking-write-zeroes-and-flush\x01\ +\x17\x01@\x03\x04self\x11\x03src\x09\x03lenw\0\x0d\x04\0\x1c[method]output-strea\ +m.splice\x01\x18\x04\0%[method]output-stream.blocking-splice\x01\x18\x03\0\x15wa\ +si:io/streams@0.2.0\x05\x1a\x02\x03\0\x07\x08duration\x02\x03\0\x09\x0cinput-str\ +eam\x02\x03\0\x09\x0doutput-stream\x01B\xc0\x01\x02\x03\x02\x01\x1b\x04\0\x08dur\ +ation\x03\0\0\x02\x03\x02\x01\x1c\x04\0\x0cinput-stream\x03\0\x02\x02\x03\x02\x01\ +\x1d\x04\0\x0doutput-stream\x03\0\x04\x02\x03\x02\x01\x19\x04\0\x08io-error\x03\0\ +\x06\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\x08\x01q\x0a\x03get\0\0\x04head\ +\0\0\x04post\0\0\x03put\0\0\x06delete\0\0\x07connect\0\0\x07options\0\0\x05trace\ +\0\0\x05patch\0\0\x05other\x01s\0\x04\0\x06method\x03\0\x0a\x01q\x03\x04HTTP\0\0\ +\x05HTTPS\0\0\x05other\x01s\0\x04\0\x06scheme\x03\0\x0c\x01ks\x01k{\x01r\x02\x05\ +rcode\x0e\x09info-code\x0f\x04\0\x11DNS-error-payload\x03\0\x10\x01k}\x01r\x02\x08\ +alert-id\x12\x0dalert-message\x0e\x04\0\x1aTLS-alert-received-payload\x03\0\x13\x01\ +ky\x01r\x02\x0afield-name\x0e\x0afield-size\x15\x04\0\x12field-size-payload\x03\0\ +\x16\x01kw\x01k\x17\x01q'\x0bDNS-timeout\0\0\x09DNS-error\x01\x11\0\x15destinati\ +on-not-found\0\0\x17destination-unavailable\0\0\x19destination-IP-prohibited\0\0\ +\x19destination-IP-unroutable\0\0\x12connection-refused\0\0\x15connection-termin\ +ated\0\0\x12connection-timeout\0\0\x17connection-read-timeout\0\0\x18connection-\ +write-timeout\0\0\x18connection-limit-reached\0\0\x12TLS-protocol-error\0\0\x15T\ +LS-certificate-error\0\0\x12TLS-alert-received\x01\x14\0\x13HTTP-request-denied\0\ +\0\x1cHTTP-request-length-required\0\0\x16HTTP-request-body-size\x01\x18\0\x1bHT\ +TP-request-method-invalid\0\0\x18HTTP-request-URI-invalid\0\0\x19HTTP-request-UR\ +I-too-long\0\0\x20HTTP-request-header-section-size\x01\x15\0\x18HTTP-request-hea\ +der-size\x01\x19\0!HTTP-request-trailer-section-size\x01\x15\0\x19HTTP-request-t\ +railer-size\x01\x17\0\x18HTTP-response-incomplete\0\0!HTTP-response-header-secti\ +on-size\x01\x15\0\x19HTTP-response-header-size\x01\x17\0\x17HTTP-response-body-s\ +ize\x01\x18\0\"HTTP-response-trailer-section-size\x01\x15\0\x1aHTTP-response-tra\ +iler-size\x01\x17\0\x1dHTTP-response-transfer-coding\x01\x0e\0\x1cHTTP-response-\ +content-coding\x01\x0e\0\x15HTTP-response-timeout\0\0\x13HTTP-upgrade-failed\0\0\ +\x13HTTP-protocol-error\0\0\x0dloop-detected\0\0\x13configuration-error\0\0\x0ei\ +nternal-error\x01\x0e\0\x04\0\x0aerror-code\x03\0\x1a\x01q\x03\x0einvalid-syntax\ +\0\0\x09forbidden\0\0\x09immutable\0\0\x04\0\x0cheader-error\x03\0\x1c\x01s\x04\0\ +\x09field-key\x03\0\x1e\x01p}\x04\0\x0bfield-value\x03\0\x20\x04\0\x06fields\x03\ +\x01\x04\0\x07headers\x03\0\"\x04\0\x08trailers\x03\0\"\x04\0\x10incoming-reques\ +t\x03\x01\x04\0\x10outgoing-request\x03\x01\x04\0\x0frequest-options\x03\x01\x04\ +\0\x11response-outparam\x03\x01\x01{\x04\0\x0bstatus-code\x03\0)\x04\0\x11incomi\ +ng-response\x03\x01\x04\0\x0dincoming-body\x03\x01\x04\0\x0ffuture-trailers\x03\x01\ +\x04\0\x11outgoing-response\x03\x01\x04\0\x0doutgoing-body\x03\x01\x04\0\x18futu\ +re-incoming-response\x03\x01\x01i\"\x01@\0\01\x04\0\x13[constructor]fields\x012\x01\ +o\x02\x1f!\x01p3\x01j\x011\x01\x1d\x01@\x01\x07entries4\05\x04\0\x18[static]fiel\ +ds.from-list\x016\x01h\"\x01p!\x01@\x02\x04self7\x04name\x1f\08\x04\0\x12[method\ +]fields.get\x019\x01@\x02\x04self7\x04name\x1f\0\x7f\x04\0\x12[method]fields.has\ +\x01:\x01j\0\x01\x1d\x01@\x03\x04self7\x04name\x1f\x05value8\0;\x04\0\x12[method\ +]fields.set\x01<\x01@\x02\x04self7\x04name\x1f\0;\x04\0\x15[method]fields.delete\ +\x01=\x01@\x03\x04self7\x04name\x1f\x05value!\0;\x04\0\x15[method]fields.append\x01\ +>\x01@\x01\x04self7\04\x04\0\x16[method]fields.entries\x01?\x01@\x01\x04self7\01\ +\x04\0\x14[method]fields.clone\x01@\x01h%\x01@\x01\x04self\xc1\0\0\x0b\x04\0\x1f\ +[method]incoming-request.method\x01B\x01@\x01\x04self\xc1\0\0\x0e\x04\0([method]\ +incoming-request.path-with-query\x01C\x01k\x0d\x01@\x01\x04self\xc1\0\0\xc4\0\x04\ +\0\x1f[method]incoming-request.scheme\x01E\x04\0\"[method]incoming-request.autho\ +rity\x01C\x01i#\x01@\x01\x04self\xc1\0\0\xc6\0\x04\0\x20[method]incoming-request\ +.headers\x01G\x01i,\x01j\x01\xc8\0\0\x01@\x01\x04self\xc1\0\0\xc9\0\x04\0\x20[me\ +thod]incoming-request.consume\x01J\x01i&\x01@\x01\x07headers\xc6\0\0\xcb\0\x04\0\ +\x1d[constructor]outgoing-request\x01L\x01h&\x01i/\x01j\x01\xce\0\0\x01@\x01\x04\ +self\xcd\0\0\xcf\0\x04\0\x1d[method]outgoing-request.body\x01P\x01@\x01\x04self\xcd\ +\0\0\x0b\x04\0\x1f[method]outgoing-request.method\x01Q\x01j\0\0\x01@\x02\x04self\ +\xcd\0\x06method\x0b\0\xd2\0\x04\0#[method]outgoing-request.set-method\x01S\x01@\ +\x01\x04self\xcd\0\0\x0e\x04\0([method]outgoing-request.path-with-query\x01T\x01\ +@\x02\x04self\xcd\0\x0fpath-with-query\x0e\0\xd2\0\x04\0,[method]outgoing-reques\ +t.set-path-with-query\x01U\x01@\x01\x04self\xcd\0\0\xc4\0\x04\0\x1f[method]outgo\ +ing-request.scheme\x01V\x01@\x02\x04self\xcd\0\x06scheme\xc4\0\0\xd2\0\x04\0#[me\ +thod]outgoing-request.set-scheme\x01W\x04\0\"[method]outgoing-request.authority\x01\ +T\x01@\x02\x04self\xcd\0\x09authority\x0e\0\xd2\0\x04\0&[method]outgoing-request\ +.set-authority\x01X\x01@\x01\x04self\xcd\0\0\xc6\0\x04\0\x20[method]outgoing-req\ +uest.headers\x01Y\x01i'\x01@\0\0\xda\0\x04\0\x1c[constructor]request-options\x01\ +[\x01h'\x01k\x01\x01@\x01\x04self\xdc\0\0\xdd\0\x04\0'[method]request-options.co\ +nnect-timeout\x01^\x01@\x02\x04self\xdc\0\x08duration\xdd\0\0\xd2\0\x04\0+[metho\ +d]request-options.set-connect-timeout\x01_\x04\0*[method]request-options.first-b\ +yte-timeout\x01^\x04\0.[method]request-options.set-first-byte-timeout\x01_\x04\0\ +-[method]request-options.between-bytes-timeout\x01^\x04\01[method]request-option\ +s.set-between-bytes-timeout\x01_\x01i(\x01i.\x01j\x01\xe1\0\x01\x1b\x01@\x02\x05\ +param\xe0\0\x08response\xe2\0\x01\0\x04\0\x1d[static]response-outparam.set\x01c\x01\ +h+\x01@\x01\x04self\xe4\0\0*\x04\0\x20[method]incoming-response.status\x01e\x01@\ +\x01\x04self\xe4\0\0\xc6\0\x04\0![method]incoming-response.headers\x01f\x01@\x01\ +\x04self\xe4\0\0\xc9\0\x04\0![method]incoming-response.consume\x01g\x01h,\x01i\x03\ +\x01j\x01\xe9\0\0\x01@\x01\x04self\xe8\0\0\xea\0\x04\0\x1c[method]incoming-body.\ +stream\x01k\x01i-\x01@\x01\x04this\xc8\0\0\xec\0\x04\0\x1c[static]incoming-body.\ +finish\x01m\x01h-\x01i\x09\x01@\x01\x04self\xee\0\0\xef\0\x04\0![method]future-t\ +railers.subscribe\x01p\x01i$\x01k\xf1\0\x01j\x01\xf2\0\x01\x1b\x01j\x01\xf3\0\0\x01\ +k\xf4\0\x01@\x01\x04self\xee\0\0\xf5\0\x04\0\x1b[method]future-trailers.get\x01v\ +\x01@\x01\x07headers\xc6\0\0\xe1\0\x04\0\x1e[constructor]outgoing-response\x01w\x01\ +h.\x01@\x01\x04self\xf8\0\0*\x04\0%[method]outgoing-response.status-code\x01y\x01\ +@\x02\x04self\xf8\0\x0bstatus-code*\0\xd2\0\x04\0)[method]outgoing-response.set-\ +status-code\x01z\x01@\x01\x04self\xf8\0\0\xc6\0\x04\0![method]outgoing-response.\ +headers\x01{\x01@\x01\x04self\xf8\0\0\xcf\0\x04\0\x1e[method]outgoing-response.b\ +ody\x01|\x01h/\x01i\x05\x01j\x01\xfe\0\0\x01@\x01\x04self\xfd\0\0\xff\0\x04\0\x1b\ +[method]outgoing-body.write\x01\x80\x01\x01j\0\x01\x1b\x01@\x02\x04this\xce\0\x08\ +trailers\xf2\0\0\x81\x01\x04\0\x1c[static]outgoing-body.finish\x01\x82\x01\x01h0\ +\x01@\x01\x04self\x83\x01\0\xef\0\x04\0*[method]future-incoming-response.subscri\ +be\x01\x84\x01\x01i+\x01j\x01\x85\x01\x01\x1b\x01j\x01\x86\x01\0\x01k\x87\x01\x01\ +@\x01\x04self\x83\x01\0\x88\x01\x04\0$[method]future-incoming-response.get\x01\x89\ +\x01\x01h\x07\x01k\x1b\x01@\x01\x03err\x8a\x01\0\x8b\x01\x04\0\x0fhttp-error-cod\ +e\x01\x8c\x01\x03\0\x15wasi:http/types@0.2.0\x05\x1e\x02\x03\0\x0a\x10outgoing-r\ +equest\x02\x03\0\x0a\x0frequest-options\x02\x03\0\x0a\x18future-incoming-respons\ +e\x02\x03\0\x0a\x0aerror-code\x01B\x0f\x02\x03\x02\x01\x1f\x04\0\x10outgoing-req\ +uest\x03\0\0\x02\x03\x02\x01\x20\x04\0\x0frequest-options\x03\0\x02\x02\x03\x02\x01\ +!\x04\0\x18future-incoming-response\x03\0\x04\x02\x03\x02\x01\"\x04\0\x0aerror-c\ +ode\x03\0\x06\x01i\x01\x01i\x03\x01k\x09\x01i\x05\x01j\x01\x0b\x01\x07\x01@\x02\x07\ +request\x08\x07options\x0a\0\x0c\x04\0\x06handle\x01\x0d\x03\0\x20wasi:http/outg\ +oing-handler@0.2.0\x05#\x02\x03\0\x01\x10evm-chain-config\x02\x03\0\x01\x13cosmo\ +s-chain-config\x02\x03\0\x02\x17service-and-workflow-id\x02\x03\0\x02\x18workflo\ +w-and-workflow-id\x02\x03\0\0\x09log-level\x02\x03\0\x03\x08event-id\x01B\x1d\x02\ +\x03\x02\x01$\x04\0\x10evm-chain-config\x03\0\0\x02\x03\x02\x01%\x04\0\x13cosmos\ +-chain-config\x03\0\x02\x02\x03\x02\x01&\x04\0\x17service-and-workflow-id\x03\0\x04\ +\x02\x03\x02\x01'\x04\0\x18workflow-and-workflow-id\x03\0\x06\x02\x03\x02\x01(\x04\ +\0\x09log-level\x03\0\x08\x02\x03\x02\x01)\x04\0\x08event-id\x03\0\x0a\x01k\x01\x01\ +@\x01\x09chain-keys\0\x0c\x04\0\x14get-evm-chain-config\x01\x0d\x01k\x03\x01@\x01\ +\x09chain-keys\0\x0e\x04\0\x17get-cosmos-chain-config\x01\x0f\x01ks\x01@\x01\x03\ +keys\0\x10\x04\0\x0aconfig-var\x01\x11\x01@\x02\x05level\x09\x07messages\x01\0\x04\ +\0\x03log\x01\x12\x01@\0\0\x05\x04\0\x0bget-service\x01\x13\x01@\0\0\x07\x04\0\x0c\ +get-workflow\x01\x14\x01@\0\0\x0b\x04\0\x0cget-event-id\x01\x15\x03\0\x04host\x05\ +*\x01B\x0a\x01o\x02ss\x01p\0\x01@\0\0\x01\x04\0\x0fget-environment\x01\x02\x01ps\ +\x01@\0\0\x03\x04\0\x0dget-arguments\x01\x04\x01ks\x01@\0\0\x05\x04\0\x0binitial\ +-cwd\x01\x06\x03\0\x1awasi:cli/environment@0.2.0\x05+\x01B\x03\x01j\0\0\x01@\x01\ +\x06status\0\x01\0\x04\0\x04exit\x01\x01\x03\0\x13wasi:cli/exit@0.2.0\x05,\x01B\x05\ +\x02\x03\x02\x01\x1c\x04\0\x0cinput-stream\x03\0\0\x01i\x01\x01@\0\0\x02\x04\0\x09\ +get-stdin\x01\x03\x03\0\x14wasi:cli/stdin@0.2.0\x05-\x01B\x05\x02\x03\x02\x01\x1d\ +\x04\0\x0doutput-stream\x03\0\0\x01i\x01\x01@\0\0\x02\x04\0\x0aget-stdout\x01\x03\ +\x03\0\x15wasi:cli/stdout@0.2.0\x05.\x01B\x05\x02\x03\x02\x01\x1d\x04\0\x0doutpu\ +t-stream\x03\0\0\x01i\x01\x01@\0\0\x02\x04\0\x0aget-stderr\x01\x03\x03\0\x15wasi\ +:cli/stderr@0.2.0\x05/\x01B\x01\x04\0\x0eterminal-input\x03\x01\x03\0\x1dwasi:cl\ +i/terminal-input@0.2.0\x050\x01B\x01\x04\0\x0fterminal-output\x03\x01\x03\0\x1ew\ +asi:cli/terminal-output@0.2.0\x051\x02\x03\0\x12\x0eterminal-input\x01B\x06\x02\x03\ +\x02\x012\x04\0\x0eterminal-input\x03\0\0\x01i\x01\x01k\x02\x01@\0\0\x03\x04\0\x12\ +get-terminal-stdin\x01\x04\x03\0\x1dwasi:cli/terminal-stdin@0.2.0\x053\x02\x03\0\ +\x13\x0fterminal-output\x01B\x06\x02\x03\x02\x014\x04\0\x0fterminal-output\x03\0\ +\0\x01i\x01\x01k\x02\x01@\0\0\x03\x04\0\x13get-terminal-stdout\x01\x04\x03\0\x1e\ +wasi:cli/terminal-stdout@0.2.0\x055\x01B\x06\x02\x03\x02\x014\x04\0\x0fterminal-\ +output\x03\0\0\x01i\x01\x01k\x02\x01@\0\0\x03\x04\0\x13get-terminal-stderr\x01\x04\ +\x03\0\x1ewasi:cli/terminal-stderr@0.2.0\x056\x01B\x05\x01r\x02\x07secondsw\x0bn\ +anosecondsy\x04\0\x08datetime\x03\0\0\x01@\0\0\x01\x04\0\x03now\x01\x02\x04\0\x0a\ +resolution\x01\x02\x03\0\x1cwasi:clocks/wall-clock@0.2.0\x057\x02\x03\0\x09\x05e\ +rror\x02\x03\0\x17\x08datetime\x01Br\x02\x03\x02\x01\x1c\x04\0\x0cinput-stream\x03\ +\0\0\x02\x03\x02\x01\x1d\x04\0\x0doutput-stream\x03\0\x02\x02\x03\x02\x018\x04\0\ +\x05error\x03\0\x04\x02\x03\x02\x019\x04\0\x08datetime\x03\0\x06\x01w\x04\0\x08f\ +ilesize\x03\0\x08\x01m\x08\x07unknown\x0cblock-device\x10character-device\x09dir\ +ectory\x04fifo\x0dsymbolic-link\x0cregular-file\x06socket\x04\0\x0fdescriptor-ty\ +pe\x03\0\x0a\x01n\x06\x04read\x05write\x13file-integrity-sync\x13data-integrity-\ +sync\x14requested-write-sync\x10mutate-directory\x04\0\x10descriptor-flags\x03\0\ +\x0c\x01n\x01\x0esymlink-follow\x04\0\x0apath-flags\x03\0\x0e\x01n\x04\x06create\ +\x09directory\x09exclusive\x08truncate\x04\0\x0aopen-flags\x03\0\x10\x01w\x04\0\x0a\ +link-count\x03\0\x12\x01k\x07\x01r\x06\x04type\x0b\x0alink-count\x13\x04size\x09\ +\x15data-access-timestamp\x14\x1bdata-modification-timestamp\x14\x17status-chang\ +e-timestamp\x14\x04\0\x0fdescriptor-stat\x03\0\x15\x01q\x03\x09no-change\0\0\x03\ +now\0\0\x09timestamp\x01\x07\0\x04\0\x0dnew-timestamp\x03\0\x17\x01r\x02\x04type\ +\x0b\x04names\x04\0\x0fdirectory-entry\x03\0\x19\x01m%\x06access\x0bwould-block\x07\ +already\x0ebad-descriptor\x04busy\x08deadlock\x05quota\x05exist\x0efile-too-larg\ +e\x15illegal-byte-sequence\x0bin-progress\x0binterrupted\x07invalid\x02io\x0cis-\ +directory\x04loop\x0etoo-many-links\x0cmessage-size\x0dname-too-long\x09no-devic\ +e\x08no-entry\x07no-lock\x13insufficient-memory\x12insufficient-space\x0dnot-dir\ +ectory\x09not-empty\x0fnot-recoverable\x0bunsupported\x06no-tty\x0eno-such-devic\ +e\x08overflow\x0dnot-permitted\x04pipe\x09read-only\x0cinvalid-seek\x0etext-file\ +-busy\x0ccross-device\x04\0\x0aerror-code\x03\0\x1b\x01m\x06\x06normal\x0asequen\ +tial\x06random\x09will-need\x09dont-need\x08no-reuse\x04\0\x06advice\x03\0\x1d\x01\ +r\x02\x05lowerw\x05upperw\x04\0\x13metadata-hash-value\x03\0\x1f\x04\0\x0adescri\ +ptor\x03\x01\x04\0\x16directory-entry-stream\x03\x01\x01h!\x01i\x01\x01j\x01$\x01\ +\x1c\x01@\x02\x04self#\x06offset\x09\0%\x04\0\"[method]descriptor.read-via-strea\ +m\x01&\x01i\x03\x01j\x01'\x01\x1c\x01@\x02\x04self#\x06offset\x09\0(\x04\0#[meth\ +od]descriptor.write-via-stream\x01)\x01@\x01\x04self#\0(\x04\0$[method]descripto\ +r.append-via-stream\x01*\x01j\0\x01\x1c\x01@\x04\x04self#\x06offset\x09\x06lengt\ +h\x09\x06advice\x1e\0+\x04\0\x19[method]descriptor.advise\x01,\x01@\x01\x04self#\ +\0+\x04\0\x1c[method]descriptor.sync-data\x01-\x01j\x01\x0d\x01\x1c\x01@\x01\x04\ +self#\0.\x04\0\x1c[method]descriptor.get-flags\x01/\x01j\x01\x0b\x01\x1c\x01@\x01\ +\x04self#\00\x04\0\x1b[method]descriptor.get-type\x011\x01@\x02\x04self#\x04size\ +\x09\0+\x04\0\x1b[method]descriptor.set-size\x012\x01@\x03\x04self#\x15data-acce\ +ss-timestamp\x18\x1bdata-modification-timestamp\x18\0+\x04\0\x1c[method]descript\ +or.set-times\x013\x01p}\x01o\x024\x7f\x01j\x015\x01\x1c\x01@\x03\x04self#\x06len\ +gth\x09\x06offset\x09\06\x04\0\x17[method]descriptor.read\x017\x01j\x01\x09\x01\x1c\ +\x01@\x03\x04self#\x06buffer4\x06offset\x09\08\x04\0\x18[method]descriptor.write\ +\x019\x01i\"\x01j\x01:\x01\x1c\x01@\x01\x04self#\0;\x04\0![method]descriptor.rea\ +d-directory\x01<\x04\0\x17[method]descriptor.sync\x01-\x01@\x02\x04self#\x04path\ +s\0+\x04\0&[method]descriptor.create-directory-at\x01=\x01j\x01\x16\x01\x1c\x01@\ +\x01\x04self#\0>\x04\0\x17[method]descriptor.stat\x01?\x01@\x03\x04self#\x0apath\ +-flags\x0f\x04paths\0>\x04\0\x1a[method]descriptor.stat-at\x01@\x01@\x05\x04self\ +#\x0apath-flags\x0f\x04paths\x15data-access-timestamp\x18\x1bdata-modification-t\ +imestamp\x18\0+\x04\0\x1f[method]descriptor.set-times-at\x01A\x01@\x05\x04self#\x0e\ +old-path-flags\x0f\x08old-paths\x0enew-descriptor#\x08new-paths\0+\x04\0\x1a[met\ +hod]descriptor.link-at\x01B\x01i!\x01j\x01\xc3\0\x01\x1c\x01@\x05\x04self#\x0apa\ +th-flags\x0f\x04paths\x0aopen-flags\x11\x05flags\x0d\0\xc4\0\x04\0\x1a[method]de\ +scriptor.open-at\x01E\x01j\x01s\x01\x1c\x01@\x02\x04self#\x04paths\0\xc6\0\x04\0\ +\x1e[method]descriptor.readlink-at\x01G\x04\0&[method]descriptor.remove-director\ +y-at\x01=\x01@\x04\x04self#\x08old-paths\x0enew-descriptor#\x08new-paths\0+\x04\0\ +\x1c[method]descriptor.rename-at\x01H\x01@\x03\x04self#\x08old-paths\x08new-path\ +s\0+\x04\0\x1d[method]descriptor.symlink-at\x01I\x04\0![method]descriptor.unlink\ +-file-at\x01=\x01@\x02\x04self#\x05other#\0\x7f\x04\0![method]descriptor.is-same\ +-object\x01J\x01j\x01\x20\x01\x1c\x01@\x01\x04self#\0\xcb\0\x04\0\x20[method]des\ +criptor.metadata-hash\x01L\x01@\x03\x04self#\x0apath-flags\x0f\x04paths\0\xcb\0\x04\ +\0#[method]descriptor.metadata-hash-at\x01M\x01h\"\x01k\x1a\x01j\x01\xcf\0\x01\x1c\ +\x01@\x01\x04self\xce\0\0\xd0\0\x04\03[method]directory-entry-stream.read-direct\ +ory-entry\x01Q\x01h\x05\x01k\x1c\x01@\x01\x03err\xd2\0\0\xd3\0\x04\0\x15filesyst\ +em-error-code\x01T\x03\0\x1bwasi:filesystem/types@0.2.0\x05:\x02\x03\0\x18\x0ade\ +scriptor\x01B\x07\x02\x03\x02\x01;\x04\0\x0adescriptor\x03\0\0\x01i\x01\x01o\x02\ +\x02s\x01p\x03\x01@\0\0\x04\x04\0\x0fget-directories\x01\x05\x03\0\x1ewasi:files\ +ystem/preopens@0.2.0\x05<\x01B\x11\x04\0\x07network\x03\x01\x01m\x15\x07unknown\x0d\ +access-denied\x0dnot-supported\x10invalid-argument\x0dout-of-memory\x07timeout\x14\ +concurrency-conflict\x0fnot-in-progress\x0bwould-block\x0dinvalid-state\x10new-s\ +ocket-limit\x14address-not-bindable\x0eaddress-in-use\x12remote-unreachable\x12c\ +onnection-refused\x10connection-reset\x12connection-aborted\x12datagram-too-larg\ +e\x11name-unresolvable\x1atemporary-resolver-failure\x1apermanent-resolver-failu\ +re\x04\0\x0aerror-code\x03\0\x01\x01m\x02\x04ipv4\x04ipv6\x04\0\x11ip-address-fa\ +mily\x03\0\x03\x01o\x04}}}}\x04\0\x0cipv4-address\x03\0\x05\x01o\x08{{{{{{{{\x04\ +\0\x0cipv6-address\x03\0\x07\x01q\x02\x04ipv4\x01\x06\0\x04ipv6\x01\x08\0\x04\0\x0a\ +ip-address\x03\0\x09\x01r\x02\x04port{\x07address\x06\x04\0\x13ipv4-socket-addre\ +ss\x03\0\x0b\x01r\x04\x04port{\x09flow-infoy\x07address\x08\x08scope-idy\x04\0\x13\ +ipv6-socket-address\x03\0\x0d\x01q\x02\x04ipv4\x01\x0c\0\x04ipv6\x01\x0e\0\x04\0\ +\x11ip-socket-address\x03\0\x0f\x03\0\x1awasi:sockets/network@0.2.0\x05=\x02\x03\ +\0\x1a\x07network\x01B\x05\x02\x03\x02\x01>\x04\0\x07network\x03\0\0\x01i\x01\x01\ +@\0\0\x02\x04\0\x10instance-network\x01\x03\x03\0#wasi:sockets/instance-network@\ +0.2.0\x05?\x02\x03\0\x1a\x0aerror-code\x02\x03\0\x1a\x11ip-socket-address\x02\x03\ +\0\x1a\x11ip-address-family\x01BD\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\0\x02\ +\x03\x02\x01>\x04\0\x07network\x03\0\x02\x02\x03\x02\x01@\x04\0\x0aerror-code\x03\ +\0\x04\x02\x03\x02\x01A\x04\0\x11ip-socket-address\x03\0\x06\x02\x03\x02\x01B\x04\ +\0\x11ip-address-family\x03\0\x08\x01p}\x01r\x02\x04data\x0a\x0eremote-address\x07\ +\x04\0\x11incoming-datagram\x03\0\x0b\x01k\x07\x01r\x02\x04data\x0a\x0eremote-ad\ +dress\x0d\x04\0\x11outgoing-datagram\x03\0\x0e\x04\0\x0audp-socket\x03\x01\x04\0\ +\x18incoming-datagram-stream\x03\x01\x04\0\x18outgoing-datagram-stream\x03\x01\x01\ +h\x10\x01h\x03\x01j\0\x01\x05\x01@\x03\x04self\x13\x07network\x14\x0dlocal-addre\ +ss\x07\0\x15\x04\0\x1d[method]udp-socket.start-bind\x01\x16\x01@\x01\x04self\x13\ +\0\x15\x04\0\x1e[method]udp-socket.finish-bind\x01\x17\x01i\x11\x01i\x12\x01o\x02\ +\x18\x19\x01j\x01\x1a\x01\x05\x01@\x02\x04self\x13\x0eremote-address\x0d\0\x1b\x04\ +\0\x19[method]udp-socket.stream\x01\x1c\x01j\x01\x07\x01\x05\x01@\x01\x04self\x13\ +\0\x1d\x04\0\x20[method]udp-socket.local-address\x01\x1e\x04\0![method]udp-socke\ +t.remote-address\x01\x1e\x01@\x01\x04self\x13\0\x09\x04\0![method]udp-socket.add\ +ress-family\x01\x1f\x01j\x01}\x01\x05\x01@\x01\x04self\x13\0\x20\x04\0$[method]u\ +dp-socket.unicast-hop-limit\x01!\x01@\x02\x04self\x13\x05value}\0\x15\x04\0([met\ +hod]udp-socket.set-unicast-hop-limit\x01\"\x01j\x01w\x01\x05\x01@\x01\x04self\x13\ +\0#\x04\0&[method]udp-socket.receive-buffer-size\x01$\x01@\x02\x04self\x13\x05va\ +luew\0\x15\x04\0*[method]udp-socket.set-receive-buffer-size\x01%\x04\0#[method]u\ +dp-socket.send-buffer-size\x01$\x04\0'[method]udp-socket.set-send-buffer-size\x01\ +%\x01i\x01\x01@\x01\x04self\x13\0&\x04\0\x1c[method]udp-socket.subscribe\x01'\x01\ +h\x11\x01p\x0c\x01j\x01)\x01\x05\x01@\x02\x04self(\x0bmax-resultsw\0*\x04\0([met\ +hod]incoming-datagram-stream.receive\x01+\x01@\x01\x04self(\0&\x04\0*[method]inc\ +oming-datagram-stream.subscribe\x01,\x01h\x12\x01@\x01\x04self-\0#\x04\0+[method\ +]outgoing-datagram-stream.check-send\x01.\x01p\x0f\x01@\x02\x04self-\x09datagram\ +s/\0#\x04\0%[method]outgoing-datagram-stream.send\x010\x01@\x01\x04self-\0&\x04\0\ +*[method]outgoing-datagram-stream.subscribe\x011\x03\0\x16wasi:sockets/udp@0.2.0\ +\x05C\x02\x03\0\x1c\x0audp-socket\x01B\x0c\x02\x03\x02\x01>\x04\0\x07network\x03\ +\0\0\x02\x03\x02\x01@\x04\0\x0aerror-code\x03\0\x02\x02\x03\x02\x01B\x04\0\x11ip\ +-address-family\x03\0\x04\x02\x03\x02\x01D\x04\0\x0audp-socket\x03\0\x06\x01i\x07\ +\x01j\x01\x08\x01\x03\x01@\x01\x0eaddress-family\x05\0\x09\x04\0\x11create-udp-s\ +ocket\x01\x0a\x03\0$wasi:sockets/udp-create-socket@0.2.0\x05E\x01BT\x02\x03\x02\x01\ +\x1c\x04\0\x0cinput-stream\x03\0\0\x02\x03\x02\x01\x1d\x04\0\x0doutput-stream\x03\ +\0\x02\x02\x03\x02\x01\x16\x04\0\x08pollable\x03\0\x04\x02\x03\x02\x01\x1b\x04\0\ +\x08duration\x03\0\x06\x02\x03\x02\x01>\x04\0\x07network\x03\0\x08\x02\x03\x02\x01\ +@\x04\0\x0aerror-code\x03\0\x0a\x02\x03\x02\x01A\x04\0\x11ip-socket-address\x03\0\ +\x0c\x02\x03\x02\x01B\x04\0\x11ip-address-family\x03\0\x0e\x01m\x03\x07receive\x04\ +send\x04both\x04\0\x0dshutdown-type\x03\0\x10\x04\0\x0atcp-socket\x03\x01\x01h\x12\ +\x01h\x09\x01j\0\x01\x0b\x01@\x03\x04self\x13\x07network\x14\x0dlocal-address\x0d\ +\0\x15\x04\0\x1d[method]tcp-socket.start-bind\x01\x16\x01@\x01\x04self\x13\0\x15\ +\x04\0\x1e[method]tcp-socket.finish-bind\x01\x17\x01@\x03\x04self\x13\x07network\ +\x14\x0eremote-address\x0d\0\x15\x04\0\x20[method]tcp-socket.start-connect\x01\x18\ +\x01i\x01\x01i\x03\x01o\x02\x19\x1a\x01j\x01\x1b\x01\x0b\x01@\x01\x04self\x13\0\x1c\ +\x04\0![method]tcp-socket.finish-connect\x01\x1d\x04\0\x1f[method]tcp-socket.sta\ +rt-listen\x01\x17\x04\0\x20[method]tcp-socket.finish-listen\x01\x17\x01i\x12\x01\ +o\x03\x1e\x19\x1a\x01j\x01\x1f\x01\x0b\x01@\x01\x04self\x13\0\x20\x04\0\x19[meth\ +od]tcp-socket.accept\x01!\x01j\x01\x0d\x01\x0b\x01@\x01\x04self\x13\0\"\x04\0\x20\ +[method]tcp-socket.local-address\x01#\x04\0![method]tcp-socket.remote-address\x01\ +#\x01@\x01\x04self\x13\0\x7f\x04\0\x1f[method]tcp-socket.is-listening\x01$\x01@\x01\ +\x04self\x13\0\x0f\x04\0![method]tcp-socket.address-family\x01%\x01@\x02\x04self\ +\x13\x05valuew\0\x15\x04\0*[method]tcp-socket.set-listen-backlog-size\x01&\x01j\x01\ +\x7f\x01\x0b\x01@\x01\x04self\x13\0'\x04\0%[method]tcp-socket.keep-alive-enabled\ +\x01(\x01@\x02\x04self\x13\x05value\x7f\0\x15\x04\0)[method]tcp-socket.set-keep-\ +alive-enabled\x01)\x01j\x01\x07\x01\x0b\x01@\x01\x04self\x13\0*\x04\0'[method]tc\ +p-socket.keep-alive-idle-time\x01+\x01@\x02\x04self\x13\x05value\x07\0\x15\x04\0\ ++[method]tcp-socket.set-keep-alive-idle-time\x01,\x04\0&[method]tcp-socket.keep-\ +alive-interval\x01+\x04\0*[method]tcp-socket.set-keep-alive-interval\x01,\x01j\x01\ +y\x01\x0b\x01@\x01\x04self\x13\0-\x04\0#[method]tcp-socket.keep-alive-count\x01.\ +\x01@\x02\x04self\x13\x05valuey\0\x15\x04\0'[method]tcp-socket.set-keep-alive-co\ +unt\x01/\x01j\x01}\x01\x0b\x01@\x01\x04self\x13\00\x04\0\x1c[method]tcp-socket.h\ +op-limit\x011\x01@\x02\x04self\x13\x05value}\0\x15\x04\0\x20[method]tcp-socket.s\ +et-hop-limit\x012\x01j\x01w\x01\x0b\x01@\x01\x04self\x13\03\x04\0&[method]tcp-so\ +cket.receive-buffer-size\x014\x04\0*[method]tcp-socket.set-receive-buffer-size\x01\ +&\x04\0#[method]tcp-socket.send-buffer-size\x014\x04\0'[method]tcp-socket.set-se\ +nd-buffer-size\x01&\x01i\x05\x01@\x01\x04self\x13\05\x04\0\x1c[method]tcp-socket\ +.subscribe\x016\x01@\x02\x04self\x13\x0dshutdown-type\x11\0\x15\x04\0\x1b[method\ +]tcp-socket.shutdown\x017\x03\0\x16wasi:sockets/tcp@0.2.0\x05F\x02\x03\0\x1e\x0a\ +tcp-socket\x01B\x0c\x02\x03\x02\x01>\x04\0\x07network\x03\0\0\x02\x03\x02\x01@\x04\ +\0\x0aerror-code\x03\0\x02\x02\x03\x02\x01B\x04\0\x11ip-address-family\x03\0\x04\ +\x02\x03\x02\x01G\x04\0\x0atcp-socket\x03\0\x06\x01i\x07\x01j\x01\x08\x01\x03\x01\ +@\x01\x0eaddress-family\x05\0\x09\x04\0\x11create-tcp-socket\x01\x0a\x03\0$wasi:\ +sockets/tcp-create-socket@0.2.0\x05H\x02\x03\0\x1a\x0aip-address\x01B\x16\x02\x03\ +\x02\x01\x16\x04\0\x08pollable\x03\0\0\x02\x03\x02\x01>\x04\0\x07network\x03\0\x02\ +\x02\x03\x02\x01@\x04\0\x0aerror-code\x03\0\x04\x02\x03\x02\x01I\x04\0\x0aip-add\ +ress\x03\0\x06\x04\0\x16resolve-address-stream\x03\x01\x01h\x08\x01k\x07\x01j\x01\ +\x0a\x01\x05\x01@\x01\x04self\x09\0\x0b\x04\03[method]resolve-address-stream.res\ +olve-next-address\x01\x0c\x01i\x01\x01@\x01\x04self\x09\0\x0d\x04\0([method]reso\ +lve-address-stream.subscribe\x01\x0e\x01h\x03\x01i\x08\x01j\x01\x10\x01\x05\x01@\ +\x02\x07network\x0f\x04names\0\x11\x04\0\x11resolve-addresses\x01\x12\x03\0!wasi\ +:sockets/ip-name-lookup@0.2.0\x05J\x01B\x05\x01p}\x01@\x01\x03lenw\0\0\x04\0\x10\ +get-random-bytes\x01\x01\x01@\0\0w\x04\0\x0eget-random-u64\x01\x02\x03\0\x18wasi\ +:random/random@0.2.0\x05K\x01B\x05\x01p}\x01@\x01\x03lenw\0\0\x04\0\x19get-insec\ +ure-random-bytes\x01\x01\x01@\0\0w\x04\0\x17get-insecure-random-u64\x01\x02\x03\0\ +\x1awasi:random/insecure@0.2.0\x05L\x01B\x03\x01o\x02ww\x01@\0\0\0\x04\0\x0dinse\ +cure-seed\x01\x01\x03\0\x1fwasi:random/insecure-seed@0.2.0\x05M\x01B\x1c\x01q\x03\ +\x0dno-such-store\0\0\x0daccess-denied\0\0\x05other\x01s\0\x04\0\x05error\x03\0\0\ +\x01ps\x01ks\x01r\x02\x04keys\x02\x06cursor\x03\x04\0\x0ckey-response\x03\0\x04\x04\ +\0\x06bucket\x03\x01\x01h\x06\x01p}\x01k\x08\x01j\x01\x09\x01\x01\x01@\x02\x04se\ +lf\x07\x03keys\0\x0a\x04\0\x12[method]bucket.get\x01\x0b\x01j\0\x01\x01\x01@\x03\ +\x04self\x07\x03keys\x05value\x08\0\x0c\x04\0\x12[method]bucket.set\x01\x0d\x01@\ +\x02\x04self\x07\x03keys\0\x0c\x04\0\x15[method]bucket.delete\x01\x0e\x01j\x01\x7f\ +\x01\x01\x01@\x02\x04self\x07\x03keys\0\x0f\x04\0\x15[method]bucket.exists\x01\x10\ +\x01j\x01\x05\x01\x01\x01@\x02\x04self\x07\x06cursor\x03\0\x11\x04\0\x18[method]\ +bucket.list-keys\x01\x12\x01i\x06\x01j\x01\x13\x01\x01\x01@\x01\x0aidentifiers\0\ +\x14\x04\0\x04open\x01\x15\x03\0\x20wasi:keyvalue/store@0.2.0-draft2\x05N\x02\x03\ +\0$\x06bucket\x02\x03\0$\x05error\x01B\x18\x02\x03\x02\x01O\x04\0\x06bucket\x03\0\ +\0\x02\x03\x02\x01P\x04\0\x05error\x03\0\x02\x04\0\x03cas\x03\x01\x01i\x04\x01q\x02\ +\x0bstore-error\x01\x03\0\x0acas-failed\x01\x05\0\x04\0\x09cas-error\x03\0\x06\x01\ +h\x01\x01j\x01\x05\x01\x03\x01@\x02\x06bucket\x08\x03keys\0\x09\x04\0\x0f[static\ +]cas.new\x01\x0a\x01h\x04\x01p}\x01k\x0c\x01j\x01\x0d\x01\x03\x01@\x01\x04self\x0b\ +\0\x0e\x04\0\x13[method]cas.current\x01\x0f\x01j\x01x\x01\x03\x01@\x03\x06bucket\ +\x08\x03keys\x05deltax\0\x10\x04\0\x09increment\x01\x11\x01j\0\x01\x07\x01@\x02\x03\ +cas\x05\x05value\x0c\0\x12\x04\0\x04swap\x01\x13\x03\0\"wasi:keyvalue/atomics@0.\ +2.0-draft2\x05Q\x01B\x13\x02\x03\x02\x01O\x04\0\x06bucket\x03\0\0\x02\x03\x02\x01\ +P\x04\0\x05error\x03\0\x02\x01h\x01\x01ps\x01p}\x01o\x02s\x06\x01k\x07\x01p\x08\x01\ +j\x01\x09\x01\x03\x01@\x02\x06bucket\x04\x04keys\x05\0\x0a\x04\0\x08get-many\x01\ +\x0b\x01p\x07\x01j\0\x01\x03\x01@\x02\x06bucket\x04\x0akey-values\x0c\0\x0d\x04\0\ +\x08set-many\x01\x0e\x01@\x02\x06bucket\x04\x04keys\x05\0\x0d\x04\0\x0bdelete-ma\ +ny\x01\x0f\x03\0\x20wasi:keyvalue/batch@0.2.0-draft2\x05R\x01k\x14\x01j\x01\xd3\0\ +\x01s\x01@\x01\x0etrigger-action\x11\0\xd4\0\x04\0\x03run\x01U\x04\0\x1ewavs:ope\ +rator/wavs-world@1.3.0\x04\0\x0b\x10\x01\0\x0awavs-world\x03\0\0\0G\x09producers\ +\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x060.41\ +.0"; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen_rt::maybe_link_cabi_realloc(); +} diff --git a/components/llm-attester/src/config.rs b/components/llm-attester/src/config.rs new file mode 100644 index 00000000..b2aca6ed --- /dev/null +++ b/components/llm-attester/src/config.rs @@ -0,0 +1,249 @@ +//! Configuration module for the LLM Attester component +//! +//! This module handles all configuration loading and validation for the component, +//! including EAS settings, LLM parameters, and attestation options. + +use crate::bindings::host::config_var; +use alloy_primitives::ruint::aliases::U256; + +/// Configuration for the LLM attester component +#[derive(Debug, Clone)] +pub struct AttesterConfig { + // EAS configuration + pub eas_address: String, + pub chain_name: String, + pub schema_uid: Option, + pub submit_schema_uid: Option, + pub revocable: bool, + pub expiration_time: u64, + pub attestation_value: U256, + + // LLM configuration + pub model: String, + pub temperature: f32, + pub top_p: f32, + pub seed: u32, + pub max_tokens: Option, + pub context_window: Option, + pub system_message: String, +} + +impl AttesterConfig { + /// Load configuration from environment variables with sensible defaults + pub fn from_env() -> Self { + // EAS configuration + let eas_address = + config_var("eas_address").unwrap_or_else(|| defaults::DEFAULT_EAS_ADDRESS.to_string()); + + let chain_name = + config_var("chain_name").unwrap_or_else(|| defaults::DEFAULT_CHAIN.to_string()); + + let schema_uid = config_var("attestation_schema_uid"); + + let submit_schema_uid = config_var("submit_schema_uid"); + + let revocable = config_var("attestation_revocable") + .and_then(|s| s.parse::().ok()) + .unwrap_or(defaults::DEFAULT_REVOCABLE); + + let expiration_time = config_var("attestation_expiration") + .and_then(|s| s.parse::().ok()) + .unwrap_or(defaults::DEFAULT_EXPIRATION); + + let attestation_value = config_var("attestation_value") + .and_then(|s| s.parse::().ok()) + .map(U256::from) + .unwrap_or(U256::ZERO); + + // LLM configuration + let model = config_var("llm_model").unwrap_or_else(|| defaults::DEFAULT_MODEL.to_string()); + + let temperature = config_var("llm_temperature") + .and_then(|s| s.parse::().ok()) + .unwrap_or(defaults::DEFAULT_TEMPERATURE); + + let top_p = config_var("llm_top_p") + .and_then(|s| s.parse::().ok()) + .unwrap_or(defaults::DEFAULT_TOP_P); + + let seed = config_var("llm_seed") + .and_then(|s| s.parse::().ok()) + .unwrap_or(defaults::DEFAULT_SEED); + + let max_tokens = config_var("llm_max_tokens") + .and_then(|s| s.parse::().ok()) + .map(Some) + .unwrap_or(Some(defaults::DEFAULT_MAX_TOKENS)); + + let context_window = config_var("llm_context_window") + .and_then(|s| s.parse::().ok()) + .map(Some) + .unwrap_or(Some(defaults::DEFAULT_CONTEXT_WINDOW)); + + let system_message = config_var("llm_system_message") + .unwrap_or_else(|| defaults::DEFAULT_SYSTEM_MESSAGE.to_string()); + + Self { + eas_address, + chain_name, + schema_uid, + submit_schema_uid, + revocable, + expiration_time, + attestation_value, + model, + temperature, + top_p, + seed, + max_tokens, + context_window, + system_message, + } + } + + /// Log the configuration for debugging + pub fn log(&self) { + println!("📋 EAS Configuration:"); + println!(" - EAS Address: {}", self.eas_address); + println!(" - Chain: {}", self.chain_name); + println!(" - Schema UID: {:?}", self.schema_uid); + println!(" - Submit Schema UID: {:?}", self.submit_schema_uid); + println!(" - Revocable: {}", self.revocable); + println!(" - Expiration: {}", self.expiration_time); + println!(" - Value: {}", self.attestation_value); + + println!("📋 LLM Configuration:"); + println!(" - Model: {}", self.model); + println!(" - Temperature: {}", self.temperature); + println!(" - Top P: {}", self.top_p); + println!(" - Seed: {}", self.seed); + println!(" - Max Tokens: {:?}", self.max_tokens); + println!(" - Context Window: {:?}", self.context_window); + } + + /// Validate configuration values + #[allow(dead_code)] + pub fn validate(&self) -> Result<(), String> { + // Validate temperature is in valid range + if self.temperature < 0.0 || self.temperature > 2.0 { + return Err(format!( + "Temperature must be between 0.0 and 2.0, got: {}", + self.temperature + )); + } + + // Validate top_p is in valid range + if self.top_p < 0.0 || self.top_p > 1.0 { + return Err(format!("Top-p must be between 0.0 and 1.0, got: {}", self.top_p)); + } + + // Validate schema UID format if provided + if let Some(ref schema) = self.schema_uid { + if !schema.starts_with("0x") || schema.len() != 66 { + return Err(format!("Invalid schema UID format: {}", schema)); + } + } + + // Validate submit schema UID format if provided + if let Some(ref schema) = self.submit_schema_uid { + if !schema.starts_with("0x") || schema.len() != 66 { + return Err(format!("Invalid submit schema UID format: {}", schema)); + } + } + + // Validate EAS address format + if !self.eas_address.starts_with("0x") || self.eas_address.len() != 42 { + return Err(format!("Invalid EAS address format: {}", self.eas_address)); + } + + Ok(()) + } + + /// Check if the component should process a given schema + pub fn should_process_schema(&self, schema_uid: &str) -> bool { + match &self.schema_uid { + Some(configured_schema) => configured_schema == schema_uid, + None => true, // Process all schemas if none configured + } + } + + /// Get LLM options for the wavs_llm client + pub fn get_llm_options(&self) -> wavs_llm::types::LlmOptions { + wavs_llm::types::LlmOptions { + temperature: Some(self.temperature), + top_p: Some(self.top_p), + seed: Some(self.seed), + max_tokens: self.max_tokens, + context_window: self.context_window, + } + } +} + +/// Default configuration values +pub mod defaults { + pub const DEFAULT_MODEL: &str = "llama3.2"; + pub const DEFAULT_TEMPERATURE: f32 = 0.0; + pub const DEFAULT_TOP_P: f32 = 1.0; + pub const DEFAULT_SEED: u32 = 42; + pub const DEFAULT_MAX_TOKENS: u32 = 100; + pub const DEFAULT_CONTEXT_WINDOW: u32 = 250; + pub const DEFAULT_REVOCABLE: bool = true; + pub const DEFAULT_EXPIRATION: u64 = 0; + pub const DEFAULT_CHAIN: &str = "base-sepolia"; + pub const DEFAULT_EAS_ADDRESS: &str = "0x4200000000000000000000000000000000000021"; + + pub const DEFAULT_SYSTEM_MESSAGE: &str = + "You are evaluating blockchain attestation statements to determine if you like them. \ + Consider the content quality, truthfulness, relevance, and overall value of the statement. \ + You will be asked to provide a like/dislike evaluation in structured JSON format."; +} + +#[cfg(test)] +mod tests { + use super::AttesterConfig; + + #[test] + fn test_config_validation() { + let mut config = AttesterConfig::from_env(); + + // Valid config should pass + assert!(config.validate().is_ok()); + + // Invalid temperature + config.temperature = 3.0; + assert!(config.validate().is_err()); + config.temperature = 0.5; + + // Invalid top_p + config.top_p = 1.5; + assert!(config.validate().is_err()); + config.top_p = 0.9; + + // Invalid schema UID + config.schema_uid = Some("invalid".to_string()); + assert!(config.validate().is_err()); + config.schema_uid = Some("0x".to_string() + &"a".repeat(64)); + assert!(config.validate().is_ok()); + + // Invalid submit schema UID + config.submit_schema_uid = Some("invalid".to_string()); + assert!(config.validate().is_err()); + config.submit_schema_uid = Some("0x".to_string() + &"a".repeat(64)); + assert!(config.validate().is_ok()); + } + + #[test] + fn test_should_process_schema() { + let mut config = AttesterConfig::from_env(); + + // No configured schema - should process all + config.schema_uid = None; + assert!(config.should_process_schema("0x123")); + assert!(config.should_process_schema("0x456")); + + // Configured schema - should only process matching + config.schema_uid = Some("0x123".to_string()); + assert!(config.should_process_schema("0x123")); + assert!(!config.should_process_schema("0x456")); + } +} diff --git a/components/llm-attester/src/lib.rs b/components/llm-attester/src/lib.rs new file mode 100644 index 00000000..ccf3fbf1 --- /dev/null +++ b/components/llm-attester/src/lib.rs @@ -0,0 +1,183 @@ +mod config; +mod trigger; + +use alloy_primitives::hex; +use alloy_sol_types::SolValue; +use config::AttesterConfig; +use serde::{Deserialize, Serialize}; +use trigger::{ + decode_trigger_event, encode_trigger_output, AttestationPayload, AttestationRequest, + AttestationRequestData, Destination, OperationType, +}; +use wavs_eas::query::{query_attestation, QueryConfig}; +use wavs_eas::schema::SchemaEncoder; +use wstd::runtime::block_on; + +pub mod bindings; +use crate::bindings::{export, Guest, TriggerAction, WasmResponse}; + +use wavs_llm::LLMClient; + +/// Structured response from the LLM for like/dislike evaluation +#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)] +struct LikeResponse { + like: bool, + reasoning: String, +} + +struct Component; +export!(Component with_types_in bindings); + +impl Guest for Component { + /// Generic EAS attestation component with LLM integration. + /// + /// This component: + /// 1. Receives attestation event data + /// 2. Queries the referenced attestation from EAS + /// 3. Processes the attestation data with an LLM + /// 4. Creates a new attestation with the LLM's response + fn run(action: TriggerAction) -> Result, String> { + println!("🚀 Starting LLM attester component execution"); + + // Decode the trigger event (AttestationAttested from PayableEASIndexerResolver) + let (event, dest) = decode_trigger_event(action.data) + .map_err(|e| format!("Failed to decode trigger event: {}", e))?; + + // Extract event data - AttestationAttested only has eas address and uid + let eas_address = event.eas; + let attestation_uid = event.uid; + + println!("📋 AttestationAttested event received:"); + println!(" - EAS Address: {}", eas_address); + println!(" - Attestation UID: {}", attestation_uid); + + // Load configuration + let config = AttesterConfig::from_env(); + config.log(); + + // Create query config from component config (use EAS address from event) + let query_config = QueryConfig::from_strings( + &format!("{}", eas_address), + "0x0000000000000000000000000000000000000000", // indexer not needed for this query + format!("http://127.0.0.1:8545"), // TODO: get RPC endpoint from config + ) + .map_err(|e| format!("Failed to create query config: {}", e))?; + + // Query the full attestation details from chain using the uid + let attestation = + block_on(async move { query_attestation(attestation_uid, Some(query_config)).await }) + .map_err(|e| format!("Failed to query attestation {}: {}", attestation_uid, e))?; + + // Extract details from the queried attestation + let schema_uid = attestation.schema; + let ref_uid = attestation.uid; + let recipient = attestation.recipient; + + // Check if we should process this schema + if !config.should_process_schema(&schema_uid.to_string()) { + println!("Schema filtering active, skipping schema: {}", schema_uid); + return Ok(None); + } + + println!("📋 Processing attestation:"); + println!(" - Schema UID: {}", schema_uid); + println!(" - Reference UID: {}", ref_uid); + println!(" - Recipient: {}", recipient); + + println!( + "✅ Retrieved attestation {} from attester {} to recipient {}", + attestation.uid, attestation.attester, attestation.recipient + ); + + // Format the attestation data for the LLM + let user_prompt = if attestation.data.is_empty() { + "No attestation data available".to_string() + } else { + // Try to decode as UTF-8 string first + if let Ok(decoded) = String::from_utf8(attestation.data.to_vec()) { + // Check if it looks like JSON + if decoded.trim_start().starts_with('{') || decoded.trim_start().starts_with('[') { + format!("JSON attestation data: {}", decoded) + } else { + format!("Text attestation data: {}", decoded) + } + } else { + // Otherwise return hex representation + format!("Binary attestation data (hex): 0x{}", hex::encode(&attestation.data)) + } + }; + + println!("💬 User prompt: {}", user_prompt); + + // Create LLM client with options and get structured response + let llm_options = config.get_llm_options(); + let llm = LLMClient::with_config(config.model.clone(), llm_options); + + // Get structured response from LLM + let llm_response = llm + .chat_structured::(user_prompt.as_str()) + .send() + .map_err(|e| format!("Failed to get structured LLM completion: {}", e))?; + + println!( + "🤖 LLM Response: like={}, reasoning={}", + llm_response.like, llm_response.reasoning + ); + + let like_value = llm_response.like; + + println!("👍 Extracted like value: {}", like_value); + + // Use the submit_schema_uid for the like attestation + let attestation_schema = config + .submit_schema_uid + .as_ref() + .ok_or("submit_schema_uid not configured")? + .parse::>() + .map_err(|e| format!("Invalid submit_schema_uid format: {}", e))?; + + // Encode the attestation data according to the "bool like" schema + let encoded_data = SchemaEncoder::encode_by_pattern("bool like", &like_value.to_string()) + .map_err(|e| { + format!("Failed to encode like value with 'bool like' schema: {}", e) + })?; + + // Create the attestation request + let attestation_request = AttestationRequest { + schema: attestation_schema, + data: AttestationRequestData { + recipient, + expirationTime: config.expiration_time, + revocable: config.revocable, + refUID: ref_uid, + data: encoded_data, + value: config.attestation_value, + }, + }; + + // Create the attestation payload + let attestation_payload = AttestationPayload { + operationType: OperationType::ATTEST, + data: attestation_request.abi_encode().into(), + }; + + println!("✅ Attestation payload created successfully"); + + // ABI encode the complete payload + let encoded_response = attestation_payload.abi_encode(); + + // Prepare the output based on destination + let output = match dest { + Destination::Ethereum => { + println!("📤 Sending to Ethereum"); + Some(encode_trigger_output(&encoded_response)) + } + Destination::CliOutput => { + println!("📤 Outputting to CLI"); + Some(WasmResponse { payload: encoded_response.into(), ordering: None }) + } + }; + + Ok(output) + } +} diff --git a/components/llm-attester/src/trigger.rs b/components/llm-attester/src/trigger.rs new file mode 100644 index 00000000..5f0d26da --- /dev/null +++ b/components/llm-attester/src/trigger.rs @@ -0,0 +1,103 @@ +use crate::bindings::wavs::operator::input::TriggerData; +use crate::bindings::wavs::types::events::TriggerDataEvmContractEvent; +use crate::bindings::WasmResponse; +use anyhow::Result; +use wavs_wasi_utils::decode_event_log_data; + +/// Represents the destination where the trigger output should be sent +pub enum Destination { + /// Output will be ABI encoded and sent to an Ethereum contract + Ethereum, + /// Raw output for local testing/debugging + CliOutput, +} + +/// Decodes incoming trigger event data into its components +/// +/// # Arguments +/// * `trigger_data` - The raw trigger data received from WAVS +/// +/// # Returns +/// A tuple containing: +/// * `AttestationAttested` - The decoded attestation event with eas address and uid +/// * `Destination` - Where the processed result should be sent +pub fn decode_trigger_event( + trigger_data: TriggerData, +) -> Result<(AttestationAttested, Destination)> { + match trigger_data { + TriggerData::EvmContractEvent(TriggerDataEvmContractEvent { log, .. }) => { + // Decode the AttestationAttested event from IIndexedEvents.sol + let event: AttestationAttested = decode_event_log_data!(log.data)?; + + println!( + "DEBUG: AttestationAttested event decoded - eas: {}, uid: {}", + event.eas, event.uid + ); + + return Ok((event, Destination::Ethereum)); + } + TriggerData::Raw(_data) => { + // For raw/CLI testing, create a minimal AttestationAttested event + // This allows the component to work with test data + let event = AttestationAttested { + eas: alloy_primitives::Address::ZERO, + uid: alloy_primitives::FixedBytes::ZERO, + }; + Ok((event, Destination::CliOutput)) + } + _ => Err(anyhow::anyhow!("Unsupported trigger data type")), + } +} + +/// Encodes the attestation output data for submission back to Ethereum +/// +/// # Arguments +/// * `output` - The attestation data to be encoded +/// +/// # Returns +/// ABI encoded bytes ready for submission to Ethereum +pub fn encode_trigger_output(output: impl AsRef<[u8]>) -> WasmResponse { + WasmResponse { payload: output.as_ref().to_vec().into(), ordering: None } +} + +/// Solidity type definitions for EAS attestation processing +/// +/// Uses AttestationAttested event from IIndexedEvents.sol which is emitted +/// by PayableEASIndexerResolver when attestations are created. +use alloy_sol_macro::sol; + +// Import the AttestationAttested event from IIndexedEvents.sol +sol!("../../src/interfaces/IIndexedEvents.sol"); + +sol! { + /// @notice Operation types for attestation operations + #[derive(Debug)] + enum OperationType { + ATTEST, + REVOKE, + MULTI_ATTEST, + MULTI_REVOKE + } + + /// @notice Payload structure for attestation operations + struct AttestationPayload { + OperationType operationType; + bytes data; + } + + /// @notice A struct representing the arguments of the attestation request. + struct AttestationRequestData { + address recipient; // The recipient of the attestation. + uint64 expirationTime; // The time when the attestation expires (Unix timestamp). + bool revocable; // Whether the attestation is revocable. + bytes32 refUID; // The UID of the related attestation. + bytes data; // Custom attestation data. + uint256 value; // An explicit ETH amount to send to the resolver. This is important to prevent accidental user errors. + } + + /// @notice A struct representing the full arguments of the attestation request. + struct AttestationRequest { + bytes32 schema; // The unique identifier of the schema. + AttestationRequestData data; // The arguments of the attestation request. + } +} diff --git a/components/llm-attester/test_input.json b/components/llm-attester/test_input.json new file mode 100644 index 00000000..00174d57 --- /dev/null +++ b/components/llm-attester/test_input.json @@ -0,0 +1,7 @@ +{ + "schema": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + "recipient": "0x1234567890abcdef1234567890abcdef12345678", + "data": "Hello EAS from WAVS!", + "expiration_time": 0, + "revocable": true +} \ No newline at end of file diff --git a/config/components.json b/config/components.json index f4082cb3..8930add3 100644 --- a/config/components.json +++ b/config/components.json @@ -1,5 +1,41 @@ { "components": [ + { + "disabled": true, + "filename": "dao_agent.wasm", + "package_name": "dao-agent", + "package_version": "0.9.1", + "trigger_event": "NewTrigger(bytes)", + "trigger_json_path": "eas.contracts.payable_indexer_resolver", + "submit_json_path": "zodiac_safes.safe2.wavs_module", + "config_values": {}, + "env_variables": ["WAVS_ENV_PINATA_API_URL", "WAVS_ENV_PINATA_API_KEY"] + }, + { + "filename": "llm_attester.wasm", + "package_name": "llm-attester", + "package_version": "0.9.1", + "trigger_event": "AttestationAttested(address,bytes32)", + "trigger_json_path": "eas.contracts.payable_indexer_resolver", + "submit_json_path": "eas.contracts.attester", + "config_values": { + "eas_address": "${EAS_ADDRESS}", + "chain_name": "${CHAIN_NAME}", + "llm_model": "llama3.2", + "llm_temperature": "0.0", + "llm_top_p": "1.0", + "llm_seed": "42", + "llm_max_tokens": "100", + "llm_context_window": "250", + "llm_system_message": "You are a blockchain god evaluating attestation statements to determine if you like them", + "attestation_schema_uid": "${STATEMENT_SCHEMA_ID}", + "submit_schema_uid": "${LIKE_SCHEMA_ID}", + "attestation_revocable": "true", + "attestation_expiration": "0", + "attestation_value": "0" + }, + "env_variables": ["WAVS_ENV_PINATA_API_URL", "WAVS_ENV_PINATA_API_KEY"] + }, { "filename": "trust_graph.wasm", "package_name": "trust-graph", @@ -112,7 +148,7 @@ ], "aggregator_components": [ { - "filename": "wavs_gov_aggregator.wasm", + "filename": "trust_graph_aggregator.wasm", "package_name": "trust-graph-aggregator", "package_version": "0.7.0", "config_values": { diff --git a/docker-compose.yml b/docker-compose.yml index ae6b2e5b..dcceba40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -53,6 +53,23 @@ services: retries: 5 restart: unless-stopped + ollama: + image: "ollama/ollama" + container_name: "ollama" + stop_signal: SIGKILL + ports: + - "11434:11434" + volumes: + - ollama-data:/root/.ollama + entrypoint: ["/bin/sh", "-c"] + command: + - | + ollama serve & + sleep 5 + ollama pull llama3.2 + wait + restart: unless-stopped + # ponder: # image: node:22-alpine # container_name: ponder diff --git a/script/DeployEAS.s.sol b/script/DeployEAS.s.sol index 71e92916..4f097219 100644 --- a/script/DeployEAS.s.sol +++ b/script/DeployEAS.s.sol @@ -5,7 +5,8 @@ import {stdJson} from "forge-std/StdJson.sol"; import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; import {console} from "forge-std/console.sol"; import { - ISchemaRegistry, SchemaRegistry + ISchemaRegistry, + SchemaRegistry } from "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol"; import {IEAS, EAS} from "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol"; import {ISchemaResolver} from "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol"; @@ -132,6 +133,36 @@ contract DeployEAS is Common { true ); + // Statement schema for simple text statements + // This resolver requires payment + createSchema( + schemaRegistrar, + _schemasJson, + address(payableIndexerResolver), + "statement", + "Signed statement", + "string statement", + true + ); + + // Like schema for simple like/dislike attestations + // Only the WavsAttester can attest to this schema + createSchema( + schemaRegistrar, _schemasJson, address(attesterIndexerResolver), "like", "Like a thing", "bool like", true + ); + + // Schema for proposal + // This resolver requires payment + createSchema( + schemaRegistrar, + _schemasJson, + address(payableIndexerResolver), + "proposal", + "Signed proposal", + "string proposal", + true + ); + string memory finalSchemasJson = vm.serializeString(_schemasJson, "_", "_"); vm.stopBroadcast(); diff --git a/taskfile/config.yml b/taskfile/config.yml index 1bc874f1..e65c2fb3 100644 --- a/taskfile/config.yml +++ b/taskfile/config.yml @@ -31,6 +31,30 @@ tasks: - 'echo "{{.MERKLE_SNAPSHOT_ADDR}}"' silent: true + eas-attest-trigger-addr: + desc: "Get the EAS attest trigger address" + cmds: + - 'echo "{{.EAS_ATTEST_TRIGGER_ADDR}}"' + silent: true + + statement-schema-id: + desc: "Get the statement schema UID" + cmds: + - 'echo "{{.STATEMENT_SCHEMA_ID}}"' + silent: true + + like-schema-id: + desc: "Get the like schema UID" + cmds: + - 'echo "{{.LIKE_SCHEMA_ID}}"' + silent: true + + eas-addr: + desc: "Get the EAS contract address" + cmds: + - 'echo "{{.EAS_ADDR}}"' + silent: true + service-manager-address: desc: "Get the WAVS Service Manager address" cmds: @@ -105,3 +129,7 @@ vars: # Schema UIDs (loaded from deployment summary) VOUCHING_SCHEMA_ID: sh: test -f .docker/deployment_summary.json && jq -r '.eas.schemas.vouching.uid' .docker/deployment_summary.json || echo "" + STATEMENT_SCHEMA_ID: + sh: test -f .docker/deployment_summary.json && jq -r '.eas.schemas.statement.uid' .docker/deployment_summary.json || echo "" + LIKE_SCHEMA_ID: + sh: test -f .docker/deployment_summary.json && jq -r '.eas.schemas.like.uid' .docker/deployment_summary.json || echo ""