@layerzerolabs/protocol-stellar-v2 0.2.40 ā 0.2.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +312 -397
- package/.turbo/turbo-lint.log +185 -245
- package/.turbo/turbo-test.log +1846 -1942
- package/Cargo.lock +22 -127
- package/Cargo.toml +4 -6
- package/contracts/common-macros/src/lib.rs +38 -15
- package/contracts/common-macros/src/lz_contract.rs +12 -21
- package/contracts/common-macros/src/tests/lz_contract.rs +17 -8
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__lz_contract__snapshot_generated_lz_contract_code.snap +20 -0
- package/contracts/common-macros/src/upgradeable.rs +37 -30
- package/contracts/endpoint-v2/src/endpoint_v2.rs +4 -3
- package/contracts/endpoint-v2/src/errors.rs +2 -2
- package/contracts/endpoint-v2/src/messaging_channel.rs +11 -0
- package/contracts/endpoint-v2/src/messaging_composer.rs +1 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +12 -25
- package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +50 -10
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +6 -35
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +2 -2
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +50 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +78 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/insert_and_drain_pending_nonces.rs +272 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +1 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +10 -5
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +30 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +25 -6
- package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +13 -11
- package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +13 -10
- package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +15 -11
- package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +5 -3
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -1
- package/contracts/macro-integration-tests/tests/runtime/ownable/two_step_transfer.rs +14 -12
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +3 -9
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.stderr +24 -1
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +3 -3
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable_rbac.rs +44 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_auth_trait.rs +28 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_auth_trait.stderr +397 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +1 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +10 -10
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +4 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +7 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +5 -4
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +2 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/basic.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +2 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +2 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/rbac.rs +44 -0
- package/contracts/oapps/counter/integration_tests/utils.rs +5 -3
- package/contracts/oapps/counter/src/counter.rs +4 -3
- package/contracts/oapps/counter/src/tests/mod.rs +16 -1
- package/contracts/oapps/counter/src/tests/test_counter.rs +5 -2
- package/contracts/oapps/oapp/src/oapp_core.rs +22 -8
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +7 -5
- package/contracts/oapps/oapp/src/tests/mod.rs +21 -0
- package/contracts/oapps/oapp/src/tests/oapp_core.rs +14 -11
- package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +17 -10
- package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +6 -3
- package/contracts/oapps/oapp/src/tests/oapp_sender.rs +5 -3
- package/contracts/oapps/oapp/src/tests/test_macros.rs +25 -0
- package/contracts/oapps/oapp-macros/src/generators.rs +12 -9
- package/contracts/oapps/oapp-macros/src/lib.rs +1 -1
- package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +15 -7
- package/contracts/oapps/oft/integration-tests/setup.rs +22 -4
- package/contracts/oapps/oft/integration-tests/utils.rs +94 -13
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +23 -10
- package/contracts/oapps/oft/src/extensions/pausable.rs +31 -10
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +9 -4
- package/contracts/oapps/oft/src/oft.rs +3 -3
- package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +39 -27
- package/contracts/oapps/oft/src/tests/extensions/pausable.rs +38 -24
- package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +87 -69
- package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +1 -0
- package/contracts/oapps/oft-core/integration-tests/setup.rs +28 -3
- package/contracts/oapps/oft-core/src/oft_core.rs +11 -6
- package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +20 -20
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +33 -3
- package/contracts/upgrader/src/lib.rs +67 -30
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract3.wasm +0 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract4.wasm +0 -0
- package/contracts/upgrader/src/tests/test_upgrader.rs +50 -4
- package/contracts/utils/src/ownable.rs +16 -5
- package/contracts/utils/src/tests/ownable.rs +39 -39
- package/contracts/utils/src/upgradeable.rs +60 -17
- package/docs/oapp-guide.md +18 -13
- package/package.json +5 -5
- package/sdk/.turbo/turbo-test.log +359 -348
- package/sdk/dist/generated/bml.d.ts +4 -4
- package/sdk/dist/generated/bml.js +6 -6
- package/sdk/dist/generated/counter.d.ts +269 -123
- package/sdk/dist/generated/counter.js +45 -25
- package/sdk/dist/generated/dvn.d.ts +4 -6
- package/sdk/dist/generated/dvn.js +8 -8
- package/sdk/dist/generated/dvn_fee_lib.d.ts +8 -10
- package/sdk/dist/generated/dvn_fee_lib.js +8 -8
- package/sdk/dist/generated/endpoint.d.ts +9 -9
- package/sdk/dist/generated/endpoint.js +9 -9
- package/sdk/dist/generated/executor.d.ts +9 -11
- package/sdk/dist/generated/executor.js +11 -11
- package/sdk/dist/generated/executor_fee_lib.d.ts +9 -11
- package/sdk/dist/generated/executor_fee_lib.js +11 -11
- package/sdk/dist/generated/executor_helper.d.ts +4 -4
- package/sdk/dist/generated/executor_helper.js +6 -6
- package/sdk/dist/generated/layerzero_view.d.ts +9 -11
- package/sdk/dist/generated/layerzero_view.js +11 -11
- package/sdk/dist/generated/oft.d.ts +323 -156
- package/sdk/dist/generated/oft.js +65 -43
- package/sdk/dist/generated/price_feed.d.ts +8 -10
- package/sdk/dist/generated/price_feed.js +8 -8
- package/sdk/dist/generated/sac_manager.d.ts +8 -8
- package/sdk/dist/generated/sac_manager.js +6 -6
- package/sdk/dist/generated/sml.d.ts +9 -9
- package/sdk/dist/generated/sml.js +9 -9
- package/sdk/dist/generated/treasury.d.ts +9 -9
- package/sdk/dist/generated/treasury.js +9 -9
- package/sdk/dist/generated/uln302.d.ts +9 -9
- package/sdk/dist/generated/uln302.js +9 -9
- package/sdk/dist/generated/upgrader.d.ts +25 -16
- package/sdk/dist/generated/upgrader.js +5 -5
- package/sdk/package.json +1 -1
- package/sdk/test/counter-sml.test.ts +20 -0
- package/sdk/test/counter-uln.test.ts +20 -0
- package/sdk/test/oft-sml.test.ts +22 -0
- package/sdk/test/upgrader.test.ts +1 -0
- package/ts-bindings-gen.toml +67 -0
- package/turbo.json +1 -8
- package/tools/ts-bindings-gen/Cargo.toml +0 -16
- package/tools/ts-bindings-gen/src/main.rs +0 -214
|
@@ -5,14 +5,14 @@ export * as contract from '@stellar/stellar-sdk/contract';
|
|
|
5
5
|
export * as rpc from '@stellar/stellar-sdk/rpc';
|
|
6
6
|
/**
|
|
7
7
|
* Embedded WASM bytecode (base64-encoded)
|
|
8
|
-
* Size:
|
|
8
|
+
* Size: 7575 bytes (7.40 KB)
|
|
9
9
|
*/
|
|
10
|
-
export const WASM_BASE64 = "AGFzbQEAAAABKghgAX4BfmACfn4BfmAAAX5gA35+fgF+YAJ/fgBgA35+fgBgAABgAX8BfgIxCAFiAV8AAAFiAWoAAQF2AV8AAgFkAV8AAwFhATAAAAFiATgAAAF2AWcAAQF4ATUAAAMKCQEEBQMGBgcFBgUDAQARBiEEfwFBgIDAAAt/AEGAgMAAC38AQYqAwAALfwBBkIDAAAsHSQYGbWVtb3J5AgAHdXBncmFkZQAIE3VwZ3JhZGVfYW5kX21pZ3JhdGUACwFfAwEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMK8AQJXAEBfyOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCzQBSDQAgAiABEImAgIAAIAIoAgBBAUYNACAAIAIpAwhCAhCAgICAABCKgICAACACQRBqJICAgIAAQgIPCwALQgEBfkIBIQICQCABQv8Bg0LIAFINACABEIWAgIAAQoCAgIBwg0KAgICAgARSDQAgACABNwMIQgAhAgsgACACNwMAC5ACAwF/AX4BfyOAgICAAEEQayIDJICAgIAAAkACQCAAQYCAwIAArUIghkIEhEKEgICAoAEQgYCAgAAQgoCAgAAQg4CAgAAiBEICUQ0AIARC/wGDQs0AUQ0BEIyAgIAAAAsQjYCAgAAACyAEEISAgIAAGiADIAE3AwBCAiEEQQEhBQJAA0AgBUUNASAFQX9qIQUgASEEDAALCyADIAQ3AwggAEKO1Knzza3rASADQQhqEI6AgIAAEI+AgIAAIAMgAjcDAEICIQFBASEFAkADQCAFRQ0BIAVBf2ohBSACIQEMAAsLIAMgATcDCCAAQo7UufPN9coBIANBCGoQjoCAgAAQj4CAgAAgA0EQaiSAgICAAAtiAQF/I4CAgIAAQRBrIgMkgICAgAACQCAAQv8Bg0LNAFINACADIAEQiYCAgAAgAygCAEEBRg0AIAJC/wGDQsgAUg0AIAAgAykDCCACEIqAgIAAIANBEGokgICAgABCAg8LAAsJABCQgICAAAALEQBCg4CAgOCFARCHgICAABoLFwAgAK1CIIZCBIRChICAgBAQhoCAgAALIQACQCAAIAEgAhCDgICAAEL/AYNCAlENABCMgICAAAALCwMAAAsLEwEAQYCAwAALCmF1dGhvcml6ZXIAjyoOY29udHJhY3RzcGVjdjAAAAAAAAABEVVwZ3JhZGVzIGEgdGFyZ2V0IGNvbnRyYWN0IHdpdGhvdXQgY3VzdG9tIG1pZ3JhdGlvbiBkYXRhLgoKVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgdGhhdCBjYWxscyBgdXBncmFkZV9hbmRfbWlncmF0ZWAgd2l0aCBlbXB0eSBtaWdyYXRpb24gZGF0YS4KCiMgQXJndW1lbnRzCiogYGNvbnRyYWN0X2FkZHJlc3NgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIHVwZ3JhZGUKKiBgd2FzbV9oYXNoYCAtIFRoZSBoYXNoIG9mIHRoZSBuZXcgV0FTTSBieXRlY29kZQAAAAAAAAd1cGdyYWRlAAAAAAIAAAAAAAAAEGNvbnRyYWN0X2FkZHJlc3MAAAATAAAAAAAAAAl3YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAAAAACdFVwZ3JhZGVzIGEgdGFyZ2V0IGNvbnRyYWN0IGFuZCBydW5zIGl0cyBtaWdyYXRpb24gaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24uCgpUaGUgY2FsbGVyIG11c3QgYmUgYXV0aG9yaXplZCBhcyB0aGUgYXV0aG9yaXplciBvZiB0aGUgdGFyZ2V0IGNvbnRyYWN0LgpUaGlzIGlzIGVuZm9yY2VkIGJ5IHRoZSB0YXJnZXQgY29udHJhY3QncyBgI1tvbmx5X2F1dGhdYCBjaGVjay4KCiMgQXJndW1lbnRzCiogYGNvbnRyYWN0X2FkZHJlc3NgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIHVwZ3JhZGUKKiBgd2FzbV9oYXNoYCAtIFRoZSBoYXNoIG9mIHRoZSBuZXcgV0FTTSBieXRlY29kZQoqIGBtaWdyYXRpb25fZGF0YWAgLSBYRFItZW5jb2RlZCBieXRlcyB0byBwYXNzIHRvIHRoZSBtaWdyYXRlIGZ1bmN0aW9uLgpVc2UgYHZhbHVlLnRvX3hkcigmZW52KWAgdG8gZW5jb2RlIHRoZSB0YXJnZXQgY29udHJhY3QncyBNaWdyYXRpb25EYXRhIHR5cGUuCgojIEV4YW1wbGUKYGBgaWdub3JlCmxldCBtaWdyYXRpb25fZGF0YSA9IG15X2RhdGEudG9feGRyKCZlbnYpOwp1cGdyYWRlci51cGdyYWRlX2FuZF9taWdyYXRlKCZjb250cmFjdF9hZGRyLCAmd2FzbV9oYXNoLCAmbWlncmF0aW9uX2RhdGEpOwpgYGAAAAATdXBncmFkZV9hbmRfbWlncmF0ZQAAAAADAAAAAAAAABBjb250cmFjdF9hZGRyZXNzAAAAEwAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAAAAAADm1pZ3JhdGlvbl9kYXRhAAAAAAAOAAAAAAAAAAQAAAAcQnVmZmVyUmVhZGVyRXJyb3I6IDEwMDAtMTAwOQAAAAAAAAARQnVmZmVyUmVhZGVyRXJyb3IAAAAAAAACAAAAAAAAAA1JbnZhbGlkTGVuZ3RoAAAAAAAD6AAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD6QAAAAQAAAAcQnVmZmVyV3JpdGVyRXJyb3I6IDEwMTAtMTAxOQAAAAAAAAARQnVmZmVyV3JpdGVyRXJyb3IAAAAAAAABAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPyAAAABAAAAB9UdGxDb25maWd1cmFibGVFcnJvcjogMTAyMC0xMDI5AAAAAAAAAAAUVHRsQ29uZmlndXJhYmxlRXJyb3IAAAADAAAAAAAAABBJbnZhbGlkVHRsQ29uZmlnAAAD/AAAAAAAAAAPVHRsQ29uZmlnRnJvemVuAAAAA/0AAAAAAAAAFlR0bENvbmZpZ0FscmVhZHlGcm96ZW4AAAAAA/4AAAAEAAAAF093bmFibGVFcnJvcjogMTAzMC0xMDM5AAAAAAAAAAAMT3duYWJsZUVycm9yAAAABwAAAAAAAAARSW52YWxpZEF1dGhvcml6ZXIAAAAAAAQGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAcAAAAAAAAACkludmFsaWRUdGwAAAAABAgAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECQAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAoAAAAAAAAAC093bmVyTm90U2V0AAAABAsAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAEDAAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAACAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAQAAAAYTXVsdGlTaWdFcnJvcjogMTA2MC0xMDY5AAAAAAAAAA1NdWx0aVNpZ0Vycm9yAAAAAAAACQAAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAQkAAAAAAAAABFJbnZhbGlkQXV0aG9yaXplcgAAAAAABCUAAAAAAAAADUludmFsaWRTaWduZXIAAAAAAAQmAAAAAAAAAA5TaWduYXR1cmVFcnJvcgAAAAAEJwAAAAAAAAATU2lnbmVyQWxyZWFkeUV4aXN0cwAAAAQoAAAAAAAAAA5TaWduZXJOb3RGb3VuZAAAAAAEKQAAAAAAAAAdVG90YWxTaWduZXJzTGVzc1RoYW5UaHJlc2hvbGQAAAAAAAQqAAAAAAAAAA9VbnNvcnRlZFNpZ25lcnMAAAAEKwAAAAAAAAANWmVyb1RocmVzaG9sZAAAAAAABCwAAAAEAAAAFEF1dGhFcnJvcjogMTA3MC0xMDc5AAAAAAAAAAlBdXRoRXJyb3IAAAAAAAABAAAAAAAAABJBdXRob3JpemVyTm90Rm91bmQAAAAABC4AAAAEAAAAFFJiYWNFcnJvcjogMTA4MC0xMDg5AAAAAAAAAAlSYmFjRXJyb3IAAAAAAAAHAAAAAAAAABFBZG1pblJvbGVOb3RGb3VuZAAAAAAABDgAAAAAAAAAEEluZGV4T3V0T2ZCb3VuZHMAAAQ5AAAAAAAAABBNYXhSb2xlc0V4Y2VlZGVkAAAEOgAAAAAAAAALUm9sZUlzRW1wdHkAAAAEOwAAAAAAAAAMUm9sZU5vdEZvdW5kAAAEPAAAAAAAAAALUm9sZU5vdEhlbGQAAAAEPQAAAAAAAAAMVW5hdXRob3JpemVkAAAEPgAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aVNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAA8RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBjYW5jZWxsZWQuAAAAAAAAABpPd25lcnNoaXBUcmFuc2ZlckNhbmNlbGxlZAAAAAAAAQAAABxvd25lcnNoaXBfdHJhbnNmZXJfY2FuY2VsbGVkAAAAAgAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAAAAAAXY2FuY2VsbGVkX3BlbmRpbmdfb3duZXIAAAAAEwAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXIAAAAFAAAAJUV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJvbGUgaXMgZ3JhbnRlZC4AAAAAAAAAAAAAC1JvbGVHcmFudGVkAAAAAAEAAAAMcm9sZV9ncmFudGVkAAAAAwAAAAAAAAAEcm9sZQAAABEAAAABAAAAAAAAAAdhY2NvdW50AAAAABMAAAABAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAAAgAAAAUAAAAlRXZlbnQgZW1pdHRlZCB3aGVuIGEgcm9sZSBpcyByZXZva2VkLgAAAAAAAAAAAAALUm9sZVJldm9rZWQAAAAAAQAAAAxyb2xlX3Jldm9rZWQAAAADAAAAAAAAAARyb2xlAAAAEQAAAAEAAAAAAAAAB2FjY291bnQAAAAAEwAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAACAAAABQAAACtFdmVudCBlbWl0dGVkIHdoZW4gYSByb2xlIGFkbWluIGlzIGNoYW5nZWQuAAAAAAAAAAAQUm9sZUFkbWluQ2hhbmdlZAAAAAEAAAAScm9sZV9hZG1pbl9jaGFuZ2VkAAAAAAADAAAAAAAAAARyb2xlAAAAEQAAAAEAAAAAAAAAE3ByZXZpb3VzX2FkbWluX3JvbGUAAAAD6AAAABEAAAAAAAAAAAAAAA5uZXdfYWRtaW5fcm9sZQAAAAAD6AAAABEAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAtSYmFjU3RvcmFnZQAAAAAFAAAAAAAAAAAAAAANRXhpc3RpbmdSb2xlcwAAAAAAAAEAAAAAAAAAElJvbGVJbmRleFRvQWNjb3VudAAAAAAAAgAAABEAAAAEAAAAAQAAAAAAAAASUm9sZUFjY291bnRUb0luZGV4AAAAAAACAAAAEQAAABMAAAABAAAAAAAAABFSb2xlQWNjb3VudHNDb3VudAAAAAAAAAEAAAARAAAAAQAAAAAAAAAJUm9sZUFkbWluAAAAAAAAAQAAABEAAAABAAAASVRUTCBjb25maWd1cmF0aW9uOiB0aHJlc2hvbGQgKHdoZW4gdG8gZXh0ZW5kKSBhbmQgZXh0ZW5kX3RvICh0YXJnZXQgVFRMKS4AAAAAAAAAAAAACVR0bENvbmZpZwAAAAAAAAIAAAAoVGFyZ2V0IFRUTCBhZnRlciBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAlleHRlbmRfdG8AAAAAAAAEAAAAM1RUTCB0aHJlc2hvbGQgdGhhdCB0cmlnZ2VycyBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAUAAAAnRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBzZXQuAAAAAAAAAAANVHRsQ29uZmlnc1NldAAAAAAAAAEAAAAPdHRsX2NvbmZpZ3Nfc2V0AAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAAAAAAABBUdGxDb25maWdzRnJvemVuAAAAAQAAABJ0dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAAAAAAIAAAAAAAAAAAAAABJVcGdyYWRlYWJsZVN0b3JhZ2UAAAAAAAEAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMS4xIzk0YzJhM2IzYTVkZWQ2YjljZjljZWYwYzIwN2JmODgwNGYzZWIyOTQAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjAuMCNhNjQ5MjVlOTM5MWMzZDNiM2VmOGU1M2RjNjBjMjNkYjllNmE4MmU0AA==";
|
|
10
|
+
export const WASM_BASE64 = "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YCBmb3IgUkJBQy1iYXNlZCB0YXJnZXRzAAAAAAd1cGdyYWRlAAAAAAMAAAAAAAAAEGNvbnRyYWN0X2FkZHJlc3MAAAATAAAAAAAAAAl3YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAIb3BlcmF0b3IAAAPoAAAAEwAAAAAAAAAAAAAD8FVwZ3JhZGVzIGEgdGFyZ2V0IGNvbnRyYWN0IGFuZCBydW5zIGl0cyBtaWdyYXRpb24gaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24uCgpDaG9vc2VzIEF1dGgtYmFzZWQgb3IgUkJBQy1iYXNlZCBmbG93IGZyb20gYG9wZXJhdG9yYDoKLSAqKmBTb21lKG9wZXJhdG9yKWAqKjogUkJBQyBmbG93LiBgb3BlcmF0b3JgIG11c3Qgc2lnbiB0aGUgdHJhbnNhY3Rpb24gYW5kIG11c3QgaGF2ZQpgVVBHUkFERVJfUk9MRWAgb24gdGhlIHRhcmdldC4gVGhlIHRhcmdldCBtdXN0IGltcGxlbWVudCBbYFVwZ3JhZGVhYmxlUmJhY2BdKHV0aWxzOjp1cGdyYWRlYWJsZTo6VXBncmFkZWFibGVSYmFjKS4KLSAqKmBOb25lYCoqOiBBdXRoIGZsb3cuIFRoZSB0YXJnZXTigJlzIGF1dGhvcml6ZXIgbXVzdCBzaWduIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHRhcmdldAptdXN0IGltcGxlbWVudCBbYFVwZ3JhZGVhYmxlYF0odXRpbHM6OnVwZ3JhZGVhYmxlOjpVcGdyYWRlYWJsZSkuCgojIEFyZ3VtZW50cwoqIGBjb250cmFjdF9hZGRyZXNzYCAtIEFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIHVwZ3JhZGUuCiogYHdhc21faGFzaGAgLSBIYXNoIG9mIHRoZSBuZXcgV0FTTSBieXRlY29kZS4KKiBgbWlncmF0aW9uX2RhdGFgIC0gWERSLWVuY29kZWQgbWlncmF0aW9uIHBheWxvYWQuIFVzZSBgdmFsdWUudG9feGRyKCZlbnYpYCBmb3IgdGhlCnRhcmdldCBjb250cmFjdOKAmXMgYE1pZ3JhdGlvbkRhdGFgIHR5cGU7IHVzZSBgKCkudG9feGRyKCZlbnYpYCBmb3Igbm8gY3VzdG9tIGRhdGEuCiogYG9wZXJhdG9yYCAtIGBOb25lYCBmb3IgQXV0aC1iYXNlZCB0YXJnZXQ7IGBTb21lKG9wZXJhdG9yKWAgZm9yIFJCQUMtYmFzZWQgdGFyZ2V0LgoKIyBFeGFtcGxlCmBgYGlnbm9yZQpsZXQgbWlncmF0aW9uX2RhdGEgPSBteV9kYXRhLnRvX3hkcigmZW52KTsKdXBncmFkZXIudXBncmFkZV9hbmRfbWlncmF0ZSgmY29udHJhY3RfYWRkciwgJndhc21faGFzaCwgJm1pZ3JhdGlvbl9kYXRhLCAmTm9uZSk7CmBgYAAAABN1cGdyYWRlX2FuZF9taWdyYXRlAAAAAAQAAAAAAAAAEGNvbnRyYWN0X2FkZHJlc3MAAAATAAAAAAAAAAl3YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAObWlncmF0aW9uX2RhdGEAAAAAAA4AAAAAAAAACG9wZXJhdG9yAAAD6AAAABMAAAAAAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAHAAAAAAAAABFJbnZhbGlkQXV0aG9yaXplcgAAAAAABAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBwAAAAAAAAAKSW52YWxpZFR0bAAAAAAECAAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQJAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECgAAAAAAAAALT3duZXJOb3RTZXQAAAAECwAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQMAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAIAAAAAAAAAFEludmFsaWRNaWdyYXRpb25EYXRhAAAEGgAAAAAAAAATTWlncmF0aW9uTm90QWxsb3dlZAAAAAQbAAAABAAAABhNdWx0aVNpZ0Vycm9yOiAxMDYwLTEwNjkAAAAAAAAADU11bHRpU2lnRXJyb3IAAAAAAAAJAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAABCQAAAAAAAAAEUludmFsaWRBdXRob3JpemVyAAAAAAAEJQAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCYAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQnAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCgAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQpAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCoAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQrAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAELAAAAAQAAAAUQXV0aEVycm9yOiAxMDcwLTEwNzkAAAAAAAAACUF1dGhFcnJvcgAAAAAAAAEAAAAAAAAAEkF1dGhvcml6ZXJOb3RGb3VuZAAAAAAELgAAAAQAAAAUUmJhY0Vycm9yOiAxMDgwLTEwODkAAAAAAAAACVJiYWNFcnJvcgAAAAAAAAcAAAAAAAAAEUFkbWluUm9sZU5vdEZvdW5kAAAAAAAEOAAAAAAAAAAQSW5kZXhPdXRPZkJvdW5kcwAABDkAAAAAAAAAEE1heFJvbGVzRXhjZWVkZWQAAAQ6AAAAAAAAAAtSb2xlSXNFbXB0eQAAAAQ7AAAAAAAAAAxSb2xlTm90Rm91bmQAAAQ8AAAAAAAAAAtSb2xlTm90SGVsZAAAAAQ9AAAAAAAAAAxVbmF1dGhvcml6ZWQAAAQ+AAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAACAAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAD011bHRpU2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAAAAAAFAAAAV0V2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgKGJvdGggc2luZ2xlLXN0ZXAgYW5kIHR3by1zdGVwIGNvbXBsZXRpb24pLgAAAAAAAAAAFE93bmVyc2hpcFRyYW5zZmVycmVkAAAAAQAAABVvd25lcnNoaXBfdHJhbnNmZXJyZWQAAAAAAAACAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAACAAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAACAAAABQAAADxFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIGNhbmNlbGxlZC4AAAAAAAAAGk93bmVyc2hpcFRyYW5zZmVyQ2FuY2VsbGVkAAAAAAABAAAAHG93bmVyc2hpcF90cmFuc2Zlcl9jYW5jZWxsZWQAAAACAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAAAAAAABdjYW5jZWxsZWRfcGVuZGluZ19vd25lcgAAAAATAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgcmVub3VuY2VkLgAAAAAAAAAAABJPd25lcnNoaXBSZW5vdW5jZWQAAAAAAAEAAAATb3duZXJzaGlwX3Jlbm91bmNlZAAAAAABAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAOT3duYWJsZVN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAAAVPd25lcgAAAAAAAAAAAAAAAAAADFBlbmRpbmdPd25lcgAAAAUAAAAlRXZlbnQgZW1pdHRlZCB3aGVuIGEgcm9sZSBpcyBncmFudGVkLgAAAAAAAAAAAAALUm9sZUdyYW50ZWQAAAAAAQAAAAxyb2xlX2dyYW50ZWQAAAADAAAAAAAAAARyb2xlAAAAEQAAAAEAAAAAAAAAB2FjY291bnQAAAAAEwAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAACAAAABQAAACVFdmVudCBlbWl0dGVkIHdoZW4gYSByb2xlIGlzIHJldm9rZWQuAAAAAAAAAAAAAAtSb2xlUmV2b2tlZAAAAAABAAAADHJvbGVfcmV2b2tlZAAAAAMAAAAAAAAABHJvbGUAAAARAAAAAQAAAAAAAAAHYWNjb3VudAAAAAATAAAAAQAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAAIAAAAFAAAAK0V2ZW50IGVtaXR0ZWQgd2hlbiBhIHJvbGUgYWRtaW4gaXMgY2hhbmdlZC4AAAAAAAAAABBSb2xlQWRtaW5DaGFuZ2VkAAAAAQAAABJyb2xlX2FkbWluX2NoYW5nZWQAAAAAAAMAAAAAAAAABHJvbGUAAAARAAAAAQAAAAAAAAATcHJldmlvdXNfYWRtaW5fcm9sZQAAAAPoAAAAEQAAAAAAAAAAAAAADm5ld19hZG1pbl9yb2xlAAAAAAPoAAAAEQAAAAAAAAACAAAAAgAAAAAAAAAAAAAAC1JiYWNTdG9yYWdlAAAAAAUAAAAAAAAAAAAAAA1FeGlzdGluZ1JvbGVzAAAAAAAAAQAAAAAAAAASUm9sZUluZGV4VG9BY2NvdW50AAAAAAACAAAAEQAAAAQAAAABAAAAAAAAABJSb2xlQWNjb3VudFRvSW5kZXgAAAAAAAIAAAARAAAAEwAAAAEAAAAAAAAAEVJvbGVBY2NvdW50c0NvdW50AAAAAAAAAQAAABEAAAABAAAAAAAAAAlSb2xlQWRtaW4AAAAAAAABAAAAEQAAAAEAAABJVFRMIGNvbmZpZ3VyYXRpb246IHRocmVzaG9sZCAod2hlbiB0byBleHRlbmQpIGFuZCBleHRlbmRfdG8gKHRhcmdldCBUVEwpLgAAAAAAAAAAAAAJVHRsQ29uZmlnAAAAAAAAAgAAAChUYXJnZXQgVFRMIGFmdGVyIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAACWV4dGVuZF90bwAAAAAAAAQAAAAzVFRMIHRocmVzaG9sZCB0aGF0IHRyaWdnZXJzIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAABQAAACdFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIHNldC4AAAAAAAAAAA1UdGxDb25maWdzU2V0AAAAAAAAAQAAAA90dGxfY29uZmlnc19zZXQAAAAAAgAAAAAAAAAIaW5zdGFuY2UAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBmcm96ZW4uAAAAAAAAAAAAEFR0bENvbmZpZ3NGcm96ZW4AAAABAAAAEnR0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAQVHRsQ29uZmlnU3RvcmFnZQAAAAMAAAAAAAAAAAAAAAZGcm96ZW4AAAAAAAAAAAAAAAAACEluc3RhbmNlAAAAAAAAAAAAAAAKUGVyc2lzdGVudAAAAAAAAgAAAAAAAAAAAAAAElVwZ3JhZGVhYmxlU3RvcmFnZQAAAAAAAQAAAAAAAAAAAAAACU1pZ3JhdGluZwAAAAAeEWNvbnRyYWN0ZW52bWV0YXYwAAAAAAAAABkAAAAAAG8OY29udHJhY3RtZXRhdjAAAAAAAAAABXJzdmVyAAAAAAAABjEuOTAuMAAAAAAAAAAAAAhyc3Nka3ZlcgAAAC8yNS4xLjEjOTRjMmEzYjNhNWRlZDZiOWNmOWNlZjBjMjA3YmY4ODA0ZjNlYjI5NAAAUw5jb250cmFjdG1ldGF2MAAAAAAAAAAGY2xpdmVyAAAAAAAvMjUuMS4wI2EwNDhhNTdhNzU3NjI0NThiNDg3MDUyZTAwMjFlYTcwNGE5MjZiZWUA";
|
|
11
11
|
/**
|
|
12
12
|
* Pre-computed WASM hash (SHA-256)
|
|
13
13
|
* Use this when the WASM is already uploaded on-chain
|
|
14
14
|
*/
|
|
15
|
-
export const WASM_HASH = "
|
|
15
|
+
export const WASM_HASH = "7796fed7be887c8f281a3c6e043203c0597969b65d23d5c1f9d767b62dfba062";
|
|
16
16
|
/**
|
|
17
17
|
* Get the WASM bytecode as a Buffer
|
|
18
18
|
* Use this to upload the WASM to the network
|
|
@@ -106,8 +106,8 @@ export class Client extends ContractClient {
|
|
|
106
106
|
return ContractClient.deploy(null, options);
|
|
107
107
|
}
|
|
108
108
|
constructor(options) {
|
|
109
|
-
super(new ContractSpec(["
|
|
110
|
-
"
|
|
109
|
+
super(new ContractSpec(["AAAAAAAAAd9VcGdyYWRlcyBhIHRhcmdldCBjb250cmFjdCB3aXRob3V0IGN1c3RvbSBtaWdyYXRpb24gZGF0YS4KCkNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIFtgdXBncmFkZV9hbmRfbWlncmF0ZWBdKFNlbGY6OnVwZ3JhZGVfYW5kX21pZ3JhdGUpIHRoYXQKcGFzc2VzIGVtcHR5IG1pZ3JhdGlvbiBkYXRhIChYRFIgZW5jb2Rpbmcgb2YgYCgpYCkuIFVzZSBvbmx5IHdoZW4gdGhlIHRhcmdldOKAmXMKYE1pZ3JhdGlvbkRhdGFgIGlzIGAoKWAgb3IgaXQgc3VwcG9ydHMgZW1wdHkgbWlncmF0aW9uLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byB1cGdyYWRlLgoqIGB3YXNtX2hhc2hgIC0gSGFzaCBvZiB0aGUgbmV3IFdBU00gYnl0ZWNvZGUuCiogYG9wZXJhdG9yYCAtIGBOb25lYCBmb3IgQXV0aC1iYXNlZCB0YXJnZXRzOyBgU29tZShhZGRyKWAgZm9yIFJCQUMtYmFzZWQgdGFyZ2V0cwAAAAAHdXBncmFkZQAAAAADAAAAAAAAABBjb250cmFjdF9hZGRyZXNzAAAAEwAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAAAAAACG9wZXJhdG9yAAAD6AAAABMAAAAA",
|
|
110
|
+
"AAAAAAAAA/BVcGdyYWRlcyBhIHRhcmdldCBjb250cmFjdCBhbmQgcnVucyBpdHMgbWlncmF0aW9uIGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLgoKQ2hvb3NlcyBBdXRoLWJhc2VkIG9yIFJCQUMtYmFzZWQgZmxvdyBmcm9tIGBvcGVyYXRvcmA6Ci0gKipgU29tZShvcGVyYXRvcilgKio6IFJCQUMgZmxvdy4gYG9wZXJhdG9yYCBtdXN0IHNpZ24gdGhlIHRyYW5zYWN0aW9uIGFuZCBtdXN0IGhhdmUKYFVQR1JBREVSX1JPTEVgIG9uIHRoZSB0YXJnZXQuIFRoZSB0YXJnZXQgbXVzdCBpbXBsZW1lbnQgW2BVcGdyYWRlYWJsZVJiYWNgXSh1dGlsczo6dXBncmFkZWFibGU6OlVwZ3JhZGVhYmxlUmJhYykuCi0gKipgTm9uZWAqKjogQXV0aCBmbG93LiBUaGUgdGFyZ2V04oCZcyBhdXRob3JpemVyIG11c3Qgc2lnbiB0aGUgdHJhbnNhY3Rpb24uIFRoZSB0YXJnZXQKbXVzdCBpbXBsZW1lbnQgW2BVcGdyYWRlYWJsZWBdKHV0aWxzOjp1cGdyYWRlYWJsZTo6VXBncmFkZWFibGUpLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byB1cGdyYWRlLgoqIGB3YXNtX2hhc2hgIC0gSGFzaCBvZiB0aGUgbmV3IFdBU00gYnl0ZWNvZGUuCiogYG1pZ3JhdGlvbl9kYXRhYCAtIFhEUi1lbmNvZGVkIG1pZ3JhdGlvbiBwYXlsb2FkLiBVc2UgYHZhbHVlLnRvX3hkcigmZW52KWAgZm9yIHRoZQp0YXJnZXQgY29udHJhY3TigJlzIGBNaWdyYXRpb25EYXRhYCB0eXBlOyB1c2UgYCgpLnRvX3hkcigmZW52KWAgZm9yIG5vIGN1c3RvbSBkYXRhLgoqIGBvcGVyYXRvcmAgLSBgTm9uZWAgZm9yIEF1dGgtYmFzZWQgdGFyZ2V0OyBgU29tZShvcGVyYXRvcilgIGZvciBSQkFDLWJhc2VkIHRhcmdldC4KCiMgRXhhbXBsZQpgYGBpZ25vcmUKbGV0IG1pZ3JhdGlvbl9kYXRhID0gbXlfZGF0YS50b194ZHIoJmVudik7CnVwZ3JhZGVyLnVwZ3JhZGVfYW5kX21pZ3JhdGUoJmNvbnRyYWN0X2FkZHIsICZ3YXNtX2hhc2gsICZtaWdyYXRpb25fZGF0YSwgJk5vbmUpOwpgYGAAAAATdXBncmFkZV9hbmRfbWlncmF0ZQAAAAAEAAAAAAAAABBjb250cmFjdF9hZGRyZXNzAAAAEwAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAAAAAADm1pZ3JhdGlvbl9kYXRhAAAAAAAOAAAAAAAAAAhvcGVyYXRvcgAAA+gAAAATAAAAAA==",
|
|
111
111
|
"AAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPp",
|
|
112
112
|
"AAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/I=",
|
|
113
113
|
"AAAABAAAAB9UdGxDb25maWd1cmFibGVFcnJvcjogMTAyMC0xMDI5AAAAAAAAAAAUVHRsQ29uZmlndXJhYmxlRXJyb3IAAAADAAAAAAAAABBJbnZhbGlkVHRsQ29uZmlnAAAD/AAAAAAAAAAPVHRsQ29uZmlnRnJvemVuAAAAA/0AAAAAAAAAFlR0bENvbmZpZ0FscmVhZHlGcm96ZW4AAAAAA/4=",
|
package/sdk/package.json
CHANGED
|
@@ -188,12 +188,31 @@ describe('Counter Cross-Chain Testing (SML)', async () => {
|
|
|
188
188
|
console.log('ā
Counter B receive library set to SML for EID_A');
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
+
it('Grant OAPP_ADMIN_ROLE to DEFAULT_DEPLOYER (required for set_peer)', async () => {
|
|
192
|
+
const assembledTxA = await counterClientA.grant_role({
|
|
193
|
+
account: DEFAULT_DEPLOYER.publicKey(),
|
|
194
|
+
role: 'OAPP_ADMIN_ROLE',
|
|
195
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
196
|
+
});
|
|
197
|
+
await assembledTxA.signAndSend();
|
|
198
|
+
|
|
199
|
+
const assembledTxB = await counterClientB.grant_role({
|
|
200
|
+
account: DEFAULT_DEPLOYER.publicKey(),
|
|
201
|
+
role: 'OAPP_ADMIN_ROLE',
|
|
202
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
203
|
+
});
|
|
204
|
+
await assembledTxB.signAndSend();
|
|
205
|
+
|
|
206
|
+
console.log('ā
OAPP_ADMIN_ROLE granted to DEFAULT_DEPLOYER on both Counters');
|
|
207
|
+
});
|
|
208
|
+
|
|
191
209
|
it('Set Counter A Peer to Counter B', async () => {
|
|
192
210
|
const peerBBytes = StrKey.decodeContract(counterBAddress);
|
|
193
211
|
|
|
194
212
|
const assembledTx = await counterClientA.set_peer({
|
|
195
213
|
eid: EID_B,
|
|
196
214
|
peer: Buffer.from(peerBBytes),
|
|
215
|
+
operator: DEFAULT_DEPLOYER.publicKey(),
|
|
197
216
|
});
|
|
198
217
|
await assembledTx.signAndSend();
|
|
199
218
|
|
|
@@ -210,6 +229,7 @@ describe('Counter Cross-Chain Testing (SML)', async () => {
|
|
|
210
229
|
const assembledTx = await counterClientB.set_peer({
|
|
211
230
|
eid: EID_A,
|
|
212
231
|
peer: Buffer.from(peerABytes),
|
|
232
|
+
operator: DEFAULT_DEPLOYER.publicKey(),
|
|
213
233
|
});
|
|
214
234
|
await assembledTx.signAndSend();
|
|
215
235
|
|
|
@@ -121,12 +121,31 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
121
121
|
console.log('ā
Counter B deployed on Chain B:', counterBAddress);
|
|
122
122
|
});
|
|
123
123
|
|
|
124
|
+
it('Grant OAPP_ADMIN_ROLE to DEFAULT_DEPLOYER (required for set_peer)', async () => {
|
|
125
|
+
const assembledTxA = await counterClientA.grant_role({
|
|
126
|
+
account: DEFAULT_DEPLOYER.publicKey(),
|
|
127
|
+
role: 'OAPP_ADMIN_ROLE',
|
|
128
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
129
|
+
});
|
|
130
|
+
await assembledTxA.signAndSend();
|
|
131
|
+
|
|
132
|
+
const assembledTxB = await counterClientB.grant_role({
|
|
133
|
+
account: DEFAULT_DEPLOYER.publicKey(),
|
|
134
|
+
role: 'OAPP_ADMIN_ROLE',
|
|
135
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
136
|
+
});
|
|
137
|
+
await assembledTxB.signAndSend();
|
|
138
|
+
|
|
139
|
+
console.log('ā
OAPP_ADMIN_ROLE granted to DEFAULT_DEPLOYER on both Counters');
|
|
140
|
+
});
|
|
141
|
+
|
|
124
142
|
it('Set Counter A Peer to Counter B', async () => {
|
|
125
143
|
const peerBBytes = StrKey.decodeContract(counterBAddress);
|
|
126
144
|
|
|
127
145
|
const assembledTx = await counterClientA.set_peer({
|
|
128
146
|
eid: EID_B,
|
|
129
147
|
peer: Buffer.from(peerBBytes),
|
|
148
|
+
operator: DEFAULT_DEPLOYER.publicKey(),
|
|
130
149
|
});
|
|
131
150
|
await assembledTx.signAndSend();
|
|
132
151
|
|
|
@@ -143,6 +162,7 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
143
162
|
const assembledTx = await counterClientB.set_peer({
|
|
144
163
|
eid: EID_A,
|
|
145
164
|
peer: Buffer.from(peerABytes),
|
|
165
|
+
operator: DEFAULT_DEPLOYER.publicKey(),
|
|
146
166
|
});
|
|
147
167
|
await assembledTx.signAndSend();
|
|
148
168
|
|
package/sdk/test/oft-sml.test.ts
CHANGED
|
@@ -346,12 +346,33 @@ describe('OFT Cross-Chain E2E Testing with SAC (SML)', async () => {
|
|
|
346
346
|
console.log('ā
Mint/Burn OFT (Chain B) receive library set to SML for EID_A');
|
|
347
347
|
});
|
|
348
348
|
|
|
349
|
+
it('Grant OAPP_ADMIN_ROLE to DEFAULT_DEPLOYER (required for set_peer)', async () => {
|
|
350
|
+
// OFT's `set_peer` is protected by `#[only_role(operator, OAPP_ADMIN_ROLE)]`
|
|
351
|
+
// so we must grant that role to the operator before wiring peers.
|
|
352
|
+
const assembledTxA = await lockUnlockOftClient.grant_role({
|
|
353
|
+
account: DEFAULT_DEPLOYER.publicKey(),
|
|
354
|
+
role: 'OAPP_ADMIN_ROLE',
|
|
355
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
356
|
+
});
|
|
357
|
+
await assembledTxA.signAndSend();
|
|
358
|
+
|
|
359
|
+
const assembledTxB = await mintBurnOftClient.grant_role({
|
|
360
|
+
account: DEFAULT_DEPLOYER.publicKey(),
|
|
361
|
+
role: 'OAPP_ADMIN_ROLE',
|
|
362
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
363
|
+
});
|
|
364
|
+
await assembledTxB.signAndSend();
|
|
365
|
+
|
|
366
|
+
console.log('ā
OAPP_ADMIN_ROLE granted to DEFAULT_DEPLOYER on both OFTs');
|
|
367
|
+
});
|
|
368
|
+
|
|
349
369
|
it('Set Lock/Unlock OFT (Chain A) Peer to Mint/Burn OFT (Chain B)', async () => {
|
|
350
370
|
const mintBurnPeerBytes = StrKey.decodeContract(mintBurnOftAddress);
|
|
351
371
|
|
|
352
372
|
const assembledTx = await lockUnlockOftClient.set_peer({
|
|
353
373
|
eid: EID_B,
|
|
354
374
|
peer: Buffer.from(mintBurnPeerBytes),
|
|
375
|
+
operator: DEFAULT_DEPLOYER.publicKey(),
|
|
355
376
|
});
|
|
356
377
|
await assembledTx.signAndSend();
|
|
357
378
|
|
|
@@ -368,6 +389,7 @@ describe('OFT Cross-Chain E2E Testing with SAC (SML)', async () => {
|
|
|
368
389
|
const assembledTx = await mintBurnOftClient.set_peer({
|
|
369
390
|
eid: EID_A,
|
|
370
391
|
peer: Buffer.from(lockUnlockPeerBytes),
|
|
392
|
+
operator: DEFAULT_DEPLOYER.publicKey(),
|
|
371
393
|
});
|
|
372
394
|
await assembledTx.signAndSend();
|
|
373
395
|
|
|
@@ -120,6 +120,7 @@ describe('Upgrader Contract Testing', async () => {
|
|
|
120
120
|
contract_address: testContractAddress,
|
|
121
121
|
wasm_hash: Buffer.from(newWasmHash, 'hex'),
|
|
122
122
|
migration_data: xdr.ScVal.scvVoid().toXDR(),
|
|
123
|
+
operator: undefined,
|
|
123
124
|
});
|
|
124
125
|
|
|
125
126
|
await signDvnAuthEntries(
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Protocol contracts
|
|
2
|
+
[[contracts]]
|
|
3
|
+
wasm_name = "endpoint_v2"
|
|
4
|
+
output_name = "endpoint.ts"
|
|
5
|
+
|
|
6
|
+
[[contracts]]
|
|
7
|
+
wasm_name = "simple_message_lib"
|
|
8
|
+
output_name = "sml.ts"
|
|
9
|
+
|
|
10
|
+
[[contracts]]
|
|
11
|
+
wasm_name = "blocked_message_lib"
|
|
12
|
+
output_name = "bml.ts"
|
|
13
|
+
|
|
14
|
+
[[contracts]]
|
|
15
|
+
wasm_name = "uln302"
|
|
16
|
+
output_name = "uln302.ts"
|
|
17
|
+
|
|
18
|
+
[[contracts]]
|
|
19
|
+
wasm_name = "treasury"
|
|
20
|
+
output_name = "treasury.ts"
|
|
21
|
+
|
|
22
|
+
[[contracts]]
|
|
23
|
+
wasm_name = "upgrader"
|
|
24
|
+
output_name = "upgrader.ts"
|
|
25
|
+
|
|
26
|
+
# Worker contracts
|
|
27
|
+
[[contracts]]
|
|
28
|
+
wasm_name = "dvn"
|
|
29
|
+
output_name = "dvn.ts"
|
|
30
|
+
|
|
31
|
+
[[contracts]]
|
|
32
|
+
wasm_name = "dvn_fee_lib"
|
|
33
|
+
output_name = "dvn_fee_lib.ts"
|
|
34
|
+
|
|
35
|
+
[[contracts]]
|
|
36
|
+
wasm_name = "executor"
|
|
37
|
+
output_name = "executor.ts"
|
|
38
|
+
|
|
39
|
+
[[contracts]]
|
|
40
|
+
wasm_name = "executor_fee_lib"
|
|
41
|
+
output_name = "executor_fee_lib.ts"
|
|
42
|
+
|
|
43
|
+
[[contracts]]
|
|
44
|
+
wasm_name = "executor_helper"
|
|
45
|
+
output_name = "executor_helper.ts"
|
|
46
|
+
|
|
47
|
+
[[contracts]]
|
|
48
|
+
wasm_name = "price_feed"
|
|
49
|
+
output_name = "price_feed.ts"
|
|
50
|
+
|
|
51
|
+
# OApp contracts
|
|
52
|
+
[[contracts]]
|
|
53
|
+
wasm_name = "counter"
|
|
54
|
+
output_name = "counter.ts"
|
|
55
|
+
|
|
56
|
+
[[contracts]]
|
|
57
|
+
wasm_name = "oft"
|
|
58
|
+
output_name = "oft.ts"
|
|
59
|
+
|
|
60
|
+
[[contracts]]
|
|
61
|
+
wasm_name = "sac_manager"
|
|
62
|
+
output_name = "sac_manager.ts"
|
|
63
|
+
|
|
64
|
+
# View contracts
|
|
65
|
+
[[contracts]]
|
|
66
|
+
wasm_name = "layerzero_views"
|
|
67
|
+
output_name = "layerzero_view.ts"
|
package/turbo.json
CHANGED
|
@@ -6,14 +6,7 @@
|
|
|
6
6
|
"sdk/src/generated/**",
|
|
7
7
|
"target/wasm32v1-none/release/*.wasm",
|
|
8
8
|
"target/wasm32v1-none/release/*.d"
|
|
9
|
-
]
|
|
10
|
-
"dependsOn": ["setup:toolchain"]
|
|
11
|
-
},
|
|
12
|
-
"test": {
|
|
13
|
-
"dependsOn": ["build", "lint", "setup:toolchain"]
|
|
14
|
-
},
|
|
15
|
-
"lint": {
|
|
16
|
-
"dependsOn": ["setup:toolchain"]
|
|
9
|
+
]
|
|
17
10
|
}
|
|
18
11
|
}
|
|
19
12
|
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
[package]
|
|
2
|
-
name = "ts-bindings-gen"
|
|
3
|
-
version.workspace = true
|
|
4
|
-
edition.workspace = true
|
|
5
|
-
license.workspace = true
|
|
6
|
-
|
|
7
|
-
[[bin]]
|
|
8
|
-
name = "ts-bindings-gen"
|
|
9
|
-
path = "src/main.rs"
|
|
10
|
-
|
|
11
|
-
[dependencies]
|
|
12
|
-
soroban-spec-typescript = { workspace = true }
|
|
13
|
-
anyhow = { workspace = true }
|
|
14
|
-
sha2 = { workspace = true }
|
|
15
|
-
base64 = { workspace = true }
|
|
16
|
-
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
use anyhow::Result;
|
|
2
|
-
use base64::{engine::general_purpose::STANDARD as BASE64, Engine};
|
|
3
|
-
use sha2::{Digest, Sha256};
|
|
4
|
-
use soroban_spec_typescript::generate_from_file;
|
|
5
|
-
use std::{fs, path::Path};
|
|
6
|
-
|
|
7
|
-
/// Generate the imports header for TypeScript bindings
|
|
8
|
-
fn generate_imports_header() -> &'static str {
|
|
9
|
-
r#"import { Buffer } from "buffer";
|
|
10
|
-
import { Address } from '@stellar/stellar-sdk';
|
|
11
|
-
import {
|
|
12
|
-
AssembledTransaction,
|
|
13
|
-
Client as ContractClient,
|
|
14
|
-
ClientOptions as ContractClientOptions,
|
|
15
|
-
MethodOptions,
|
|
16
|
-
Result,
|
|
17
|
-
Spec as ContractSpec,
|
|
18
|
-
} from '@stellar/stellar-sdk/contract';
|
|
19
|
-
import type {
|
|
20
|
-
u32,
|
|
21
|
-
i32,
|
|
22
|
-
u64,
|
|
23
|
-
i64,
|
|
24
|
-
u128,
|
|
25
|
-
i128,
|
|
26
|
-
u256,
|
|
27
|
-
i256,
|
|
28
|
-
Option,
|
|
29
|
-
Typepoint,
|
|
30
|
-
Duration,
|
|
31
|
-
} from '@stellar/stellar-sdk/contract';
|
|
32
|
-
export * from '@stellar/stellar-sdk'
|
|
33
|
-
export * as contract from '@stellar/stellar-sdk/contract'
|
|
34
|
-
export * as rpc from '@stellar/stellar-sdk/rpc'
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"#
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/// Generate embedded WASM code section
|
|
42
|
-
fn generate_wasm_embed(wasm_bytes: &[u8]) -> String {
|
|
43
|
-
// Compute SHA-256 hash (this is what Stellar uses for wasmHash)
|
|
44
|
-
let wasm_hash = Sha256::digest(wasm_bytes);
|
|
45
|
-
let wasm_hash_hex = format!("{:x}", wasm_hash);
|
|
46
|
-
|
|
47
|
-
// Base64 encode the WASM bytes
|
|
48
|
-
let wasm_base64 = BASE64.encode(wasm_bytes);
|
|
49
|
-
|
|
50
|
-
format!(
|
|
51
|
-
r#"/**
|
|
52
|
-
* Embedded WASM bytecode (base64-encoded)
|
|
53
|
-
* Size: {} bytes ({:.2} KB)
|
|
54
|
-
*/
|
|
55
|
-
export const WASM_BASE64 = "{}";
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Pre-computed WASM hash (SHA-256)
|
|
59
|
-
* Use this when the WASM is already uploaded on-chain
|
|
60
|
-
*/
|
|
61
|
-
export const WASM_HASH = "{}";
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Get the WASM bytecode as a Buffer
|
|
65
|
-
* Use this to upload the WASM to the network
|
|
66
|
-
*/
|
|
67
|
-
export function getWasmBuffer(): Buffer {{
|
|
68
|
-
return Buffer.from(WASM_BASE64, 'base64');
|
|
69
|
-
}}
|
|
70
|
-
|
|
71
|
-
"#,
|
|
72
|
-
wasm_bytes.len(),
|
|
73
|
-
wasm_bytes.len() as f64 / 1024.0,
|
|
74
|
-
wasm_base64,
|
|
75
|
-
wasm_hash_hex
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
fn main() -> Result<()> {
|
|
80
|
-
println!("š Generating TypeScript bindings for Stellar contracts...\n");
|
|
81
|
-
|
|
82
|
-
// Define the base paths
|
|
83
|
-
let wasm_base = Path::new("target/wasm32v1-none/release");
|
|
84
|
-
let sdk_output = Path::new("sdk/src/generated");
|
|
85
|
-
|
|
86
|
-
// Configuration for each contract
|
|
87
|
-
// Format: (wasm_filename, ts_filename)
|
|
88
|
-
let contracts = vec![
|
|
89
|
-
// Protocol contracts
|
|
90
|
-
("endpoint_v2", "endpoint.ts"),
|
|
91
|
-
("simple_message_lib", "sml.ts"),
|
|
92
|
-
("blocked_message_lib", "bml.ts"),
|
|
93
|
-
("uln302", "uln302.ts"),
|
|
94
|
-
("treasury", "treasury.ts"),
|
|
95
|
-
("upgrader", "upgrader.ts"),
|
|
96
|
-
// Worker contracts
|
|
97
|
-
("dvn", "dvn.ts"),
|
|
98
|
-
("dvn_fee_lib", "dvn_fee_lib.ts"),
|
|
99
|
-
("executor", "executor.ts"),
|
|
100
|
-
("executor_fee_lib", "executor_fee_lib.ts"),
|
|
101
|
-
("executor_helper", "executor_helper.ts"),
|
|
102
|
-
("price_feed", "price_feed.ts"),
|
|
103
|
-
// OApp contracts
|
|
104
|
-
("counter", "counter.ts"),
|
|
105
|
-
("oft", "oft.ts"),
|
|
106
|
-
("sac_manager", "sac_manager.ts"),
|
|
107
|
-
// View contracts
|
|
108
|
-
("layerzero_views", "layerzero_view.ts"),
|
|
109
|
-
// Add more contracts here as needed:
|
|
110
|
-
];
|
|
111
|
-
|
|
112
|
-
// Create output directory
|
|
113
|
-
fs::create_dir_all(sdk_output)?;
|
|
114
|
-
|
|
115
|
-
// Track generated contracts for index.ts
|
|
116
|
-
let mut generated_contracts = Vec::new();
|
|
117
|
-
|
|
118
|
-
for (wasm_name, ts_filename) in contracts {
|
|
119
|
-
let wasm_path = wasm_base.join(format!("{}.wasm", wasm_name));
|
|
120
|
-
let output_file = sdk_output.join(ts_filename);
|
|
121
|
-
|
|
122
|
-
println!("š¦ Processing contract: {}", wasm_name);
|
|
123
|
-
println!(" WASM: {}", wasm_path.display());
|
|
124
|
-
println!(" Output: {}", output_file.display());
|
|
125
|
-
|
|
126
|
-
// Check if WASM file exists
|
|
127
|
-
if !wasm_path.exists() {
|
|
128
|
-
eprintln!("ā ļø WASM file not found: {}", wasm_path.display());
|
|
129
|
-
eprintln!(" Skipping {}. Build the contract first with:", wasm_name);
|
|
130
|
-
eprintln!(" stellar contract build -p {}\n", wasm_name);
|
|
131
|
-
continue;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Read WASM bytes for embedding
|
|
135
|
-
let wasm_bytes = fs::read(&wasm_path)?;
|
|
136
|
-
println!(" WASM size: {} bytes ({:.2} KB)", wasm_bytes.len(), wasm_bytes.len() as f64 / 1024.0);
|
|
137
|
-
|
|
138
|
-
// Generate the embedded WASM section
|
|
139
|
-
let wasm_embed = generate_wasm_embed(&wasm_bytes);
|
|
140
|
-
|
|
141
|
-
// Generate TypeScript bindings
|
|
142
|
-
println!(" Generating bindings...");
|
|
143
|
-
let wasm_path_str =
|
|
144
|
-
wasm_path.to_str().ok_or_else(|| anyhow::anyhow!("Invalid path: {}", wasm_path.display()))?;
|
|
145
|
-
let ts_code = generate_from_file(wasm_path_str, None)?;
|
|
146
|
-
|
|
147
|
-
// Replace 'options?' parameter name with 'txnOptions?' to avoid naming conflicts
|
|
148
|
-
// This replaces the last parameter in function signatures from 'options?' to 'txnOptions?'
|
|
149
|
-
let ts_code = ts_code.replace(
|
|
150
|
-
r#"options?: {
|
|
151
|
-
/**
|
|
152
|
-
* The fee to pay for the transaction. Default: BASE_FEE
|
|
153
|
-
*/
|
|
154
|
-
fee?: number;
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
|
|
158
|
-
*/
|
|
159
|
-
timeoutInSeconds?: number;
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
163
|
-
*/
|
|
164
|
-
simulate?: boolean;
|
|
165
|
-
}"#,
|
|
166
|
-
r#"txnOptions?: {
|
|
167
|
-
/**
|
|
168
|
-
* The fee to pay for the transaction. Default: BASE_FEE
|
|
169
|
-
*/
|
|
170
|
-
fee?: number;
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
|
|
174
|
-
*/
|
|
175
|
-
timeoutInSeconds?: number;
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
|
|
179
|
-
*/
|
|
180
|
-
simulate?: boolean;
|
|
181
|
-
}"#,
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
// Also replace 'options?: MethodOptions' with 'txnOptions?: MethodOptions' for the same reason
|
|
185
|
-
// This handles functions that use the MethodOptions type alias instead of inline options
|
|
186
|
-
let ts_code = ts_code.replace(", options?: MethodOptions)", ", txnOptions?: MethodOptions)");
|
|
187
|
-
|
|
188
|
-
// Combine imports header + embedded WASM + generated code
|
|
189
|
-
let complete_code = format!("{}{}{}", generate_imports_header(), wasm_embed, ts_code);
|
|
190
|
-
|
|
191
|
-
// Write to contract-specific TypeScript file
|
|
192
|
-
fs::write(&output_file, &complete_code)?;
|
|
193
|
-
println!(" ā Generated: {}", output_file.display());
|
|
194
|
-
|
|
195
|
-
// Store info for index.ts generation
|
|
196
|
-
let module_name = ts_filename.trim_end_matches(".ts");
|
|
197
|
-
generated_contracts.push(module_name);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
println!("\nā
TypeScript binding generation complete!");
|
|
201
|
-
println!(" Generated {} contract(s) with embedded WASM", generated_contracts.len());
|
|
202
|
-
|
|
203
|
-
if generated_contracts.is_empty() {
|
|
204
|
-
println!("\nš” Tip: Build your contracts first before generating bindings:");
|
|
205
|
-
println!(" stellar contract build");
|
|
206
|
-
} else {
|
|
207
|
-
println!("\nš¦ Generated files in sdk/src/generated/:");
|
|
208
|
-
for module_name in &generated_contracts {
|
|
209
|
-
println!(" - {}.ts", module_name);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
Ok(())
|
|
214
|
-
}
|