@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21

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.
Files changed (249) hide show
  1. package/.turbo/turbo-build.log +795 -791
  2. package/.turbo/turbo-lint.log +325 -155
  3. package/.turbo/turbo-test.log +1398 -1277
  4. package/Cargo.lock +122 -111
  5. package/Cargo.toml +32 -16
  6. package/contracts/common-macros/Cargo.toml +7 -7
  7. package/contracts/common-macros/src/auth.rs +18 -37
  8. package/contracts/common-macros/src/contract_ttl.rs +18 -7
  9. package/contracts/common-macros/src/lib.rs +31 -14
  10. package/contracts/common-macros/src/lz_contract.rs +38 -7
  11. package/contracts/common-macros/src/storage.rs +251 -292
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
  18. package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
  19. package/contracts/common-macros/src/ttl_configurable.rs +2 -10
  20. package/contracts/common-macros/src/ttl_extendable.rs +2 -10
  21. package/contracts/common-macros/src/upgradeable.rs +61 -26
  22. package/contracts/common-macros/src/utils.rs +0 -9
  23. package/contracts/endpoint-v2/src/lib.rs +3 -2
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
  28. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  29. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
  30. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
  31. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
  32. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
  33. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
  34. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
  35. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
  36. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
  37. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
  38. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
  39. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
  40. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
  41. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
  42. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
  43. package/contracts/layerzero-views/Cargo.toml +0 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
  45. package/contracts/macro-integration-tests/Cargo.toml +5 -15
  46. package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
  47. package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
  48. package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
  49. package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
  50. package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
  51. package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
  52. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
  53. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
  54. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
  55. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
  56. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
  57. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
  58. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
  59. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
  60. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
  61. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
  62. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
  63. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
  64. package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
  65. package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
  66. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
  67. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
  68. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
  69. package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
  70. package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
  71. package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
  72. package/contracts/message-libs/treasury/Cargo.toml +0 -2
  73. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
  74. package/contracts/message-libs/uln-302/src/events.rs +4 -0
  75. package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
  76. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
  77. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
  78. package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
  79. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
  80. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
  81. package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
  82. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  83. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +2 -2
  84. package/contracts/oapps/counter/Cargo.toml +5 -6
  85. package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
  86. package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
  87. package/contracts/oapps/oapp/src/errors.rs +1 -1
  88. package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
  89. package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
  90. package/contracts/oapps/oapp/src/lib.rs +1 -0
  91. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
  92. package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
  93. package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
  94. package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
  95. package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
  96. package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
  97. package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
  98. package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
  99. package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
  100. package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
  101. package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
  102. package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
  103. package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
  104. package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
  105. package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
  106. package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
  107. package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
  108. package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
  109. package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
  110. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
  111. package/contracts/oapps/oft/src/oft.rs +45 -50
  112. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  113. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
  114. package/contracts/oapps/oft-core/Cargo.toml +1 -4
  115. package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
  116. package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
  117. package/contracts/oapps/oft-core/src/errors.rs +3 -2
  118. package/contracts/oapps/oft-core/src/events.rs +6 -0
  119. package/contracts/oapps/oft-core/src/lib.rs +1 -1
  120. package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
  121. package/contracts/oapps/oft-core/src/storage.rs +7 -3
  122. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
  123. package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
  124. package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
  125. package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
  126. package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
  127. package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
  128. package/contracts/upgrader/src/lib.rs +30 -57
  129. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  130. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  131. package/contracts/upgrader/src/tests/test_upgrader.rs +44 -35
  132. package/contracts/utils/Cargo.toml +0 -1
  133. package/contracts/utils/src/buffer_reader.rs +1 -0
  134. package/contracts/utils/src/errors.rs +4 -2
  135. package/contracts/utils/src/multisig.rs +17 -8
  136. package/contracts/utils/src/ownable.rs +6 -6
  137. package/contracts/utils/src/testing_utils.rs +124 -54
  138. package/contracts/utils/src/tests/multisig.rs +12 -12
  139. package/contracts/utils/src/tests/ownable.rs +6 -6
  140. package/contracts/utils/src/tests/testing_utils.rs +50 -167
  141. package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
  142. package/contracts/utils/src/tests/upgradeable.rs +372 -175
  143. package/contracts/utils/src/ttl_configurable.rs +13 -7
  144. package/contracts/utils/src/upgradeable.rs +48 -23
  145. package/contracts/workers/dvn/Cargo.toml +6 -6
  146. package/contracts/workers/dvn/src/auth.rs +12 -42
  147. package/contracts/workers/dvn/src/dvn.rs +15 -40
  148. package/contracts/workers/dvn/src/errors.rs +0 -1
  149. package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
  150. package/contracts/workers/dvn/src/lib.rs +4 -3
  151. package/contracts/workers/dvn/src/tests/auth.rs +1 -1
  152. package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
  153. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
  154. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
  155. package/contracts/workers/dvn/src/tests/setup.rs +5 -9
  156. package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
  157. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
  158. package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
  159. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
  160. package/contracts/workers/executor/Cargo.toml +4 -0
  161. package/contracts/workers/executor/src/executor.rs +15 -36
  162. package/contracts/workers/executor/src/lib.rs +2 -2
  163. package/contracts/workers/executor/src/tests/auth.rs +394 -0
  164. package/contracts/workers/executor/src/tests/executor.rs +410 -0
  165. package/contracts/workers/executor/src/tests/mod.rs +3 -0
  166. package/contracts/workers/executor/src/tests/setup.rs +250 -0
  167. package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
  168. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
  169. package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
  170. package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
  171. package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
  172. package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
  173. package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
  174. package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
  175. package/contracts/workers/executor-helper/Cargo.toml +0 -1
  176. package/contracts/workers/executor-helper/src/lib.rs +3 -0
  177. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
  178. package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
  179. package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
  180. package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
  181. package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
  182. package/contracts/workers/price-feed/Cargo.toml +7 -1
  183. package/contracts/workers/price-feed/src/events.rs +1 -1
  184. package/contracts/workers/price-feed/src/lib.rs +12 -4
  185. package/contracts/workers/price-feed/src/price_feed.rs +5 -21
  186. package/contracts/workers/price-feed/src/storage.rs +1 -1
  187. package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
  188. package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
  189. package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
  190. package/contracts/workers/price-feed/src/types.rs +1 -1
  191. package/contracts/workers/worker/src/errors.rs +1 -4
  192. package/contracts/workers/worker/src/lib.rs +0 -2
  193. package/contracts/workers/worker/src/storage.rs +32 -29
  194. package/contracts/workers/worker/src/tests/setup.rs +2 -8
  195. package/contracts/workers/worker/src/tests/worker.rs +96 -74
  196. package/contracts/workers/worker/src/worker.rs +75 -75
  197. package/docs/error-spec.md +55 -0
  198. package/docs/layerzero-v2-on-stellar.md +447 -0
  199. package/docs/oapp-guide.md +212 -0
  200. package/docs/oft-guide.md +314 -0
  201. package/package.json +3 -3
  202. package/sdk/.turbo/turbo-test.log +268 -263
  203. package/sdk/dist/generated/bml.d.ts +12 -4
  204. package/sdk/dist/generated/bml.js +9 -7
  205. package/sdk/dist/generated/counter.d.ts +306 -298
  206. package/sdk/dist/generated/counter.js +48 -46
  207. package/sdk/dist/generated/dvn.d.ts +450 -411
  208. package/sdk/dist/generated/dvn.js +66 -64
  209. package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
  210. package/sdk/dist/generated/dvn_fee_lib.js +33 -64
  211. package/sdk/dist/generated/endpoint.d.ts +108 -100
  212. package/sdk/dist/generated/endpoint.js +21 -19
  213. package/sdk/dist/generated/executor.d.ts +414 -370
  214. package/sdk/dist/generated/executor.js +58 -55
  215. package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
  216. package/sdk/dist/generated/executor_fee_lib.js +34 -65
  217. package/sdk/dist/generated/executor_helper.d.ts +26 -190
  218. package/sdk/dist/generated/executor_helper.js +23 -28
  219. package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
  220. package/sdk/dist/generated/layerzero_view.js +294 -0
  221. package/sdk/dist/generated/oft.d.ts +408 -385
  222. package/sdk/dist/generated/oft.js +89 -92
  223. package/sdk/dist/generated/price_feed.d.ts +385 -429
  224. package/sdk/dist/generated/price_feed.js +50 -81
  225. package/sdk/dist/generated/sml.d.ts +108 -100
  226. package/sdk/dist/generated/sml.js +21 -19
  227. package/sdk/dist/generated/treasury.d.ts +108 -100
  228. package/sdk/dist/generated/treasury.js +21 -19
  229. package/sdk/dist/generated/uln302.d.ts +108 -100
  230. package/sdk/dist/generated/uln302.js +23 -21
  231. package/sdk/dist/generated/upgrader.d.ts +189 -18
  232. package/sdk/dist/generated/upgrader.js +84 -4
  233. package/sdk/dist/index.d.ts +1 -0
  234. package/sdk/dist/index.js +2 -0
  235. package/sdk/package.json +1 -1
  236. package/sdk/src/index.ts +3 -0
  237. package/sdk/test/oft-sml.test.ts +4 -4
  238. package/sdk/test/suites/localnet.ts +84 -20
  239. package/sdk/test/upgrader.test.ts +2 -3
  240. package/tools/ts-bindings-gen/src/main.rs +2 -1
  241. package/contracts/ERROR_SPEC.md +0 -44
  242. package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
  243. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
  244. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
  245. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
  246. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
  247. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
  248. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
  249. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
@@ -1,56 +1,226 @@
1
1
  import { Buffer } from "buffer";
2
2
  import { AssembledTransaction, Client as ContractClient, ClientOptions as ContractClientOptions, MethodOptions } from '@stellar/stellar-sdk/contract';
3
+ import type { u32 } from '@stellar/stellar-sdk/contract';
3
4
  export * from '@stellar/stellar-sdk';
4
5
  export * as contract from '@stellar/stellar-sdk/contract';
5
6
  export * as rpc from '@stellar/stellar-sdk/rpc';
6
- export type MigrationData = void;
7
7
  /**
8
8
  * Embedded WASM bytecode (base64-encoded)
9
- * Size: 1597 bytes (1.56 KB)
9
+ * Size: 5053 bytes (4.93 KB)
10
10
  */
11
- export declare const WASM_BASE64 = "AGFzbQEAAAABHAVgAX4BfmACfn4BfmADfn5+AX5gA35+fgBgAAACEwMBYgE4AAABdgFnAAEBZAFfAAIDBQQCAwQEBQMBABAGIQR/AUGAgMAAC38AQYCAwAALfwBBgIDAAAt/AEGAgMAACwc/BQZtZW1vcnkCABN1cGdyYWRlX2FuZF9taWdyYXRlAAMBXwMBCl9fZGF0YV9lbmQDAgtfX2hlYXBfYmFzZQMDCoUCBNIBAwF/AX4BfyOAgICAAEEQayIDJICAgIAAAkAgAEL/AYNCzQBSDQAgAUL/AYNCyABSDQAgARCAgICAAEKAgICAcINCgICAgIAEUg0AIAJC/wGDQssAUg0AIAMgATcDAEICIQRBASEFAkADQCAFRQ0BIAVBf2ohBSABIQQMAAsLIAMgBDcDCCAAQo7UqfPNresBIANBCGqtQiCGQgSEQoSAgIAQEIGAgIAAEISAgIAAIABCjtS58831ygEgAhCEgICAACADQRBqJICAgIAAQgIPCwALIQACQCAAIAEgAhCCgICAAEL/AYNCAlENABCGgICAAAALCwMAAAsJABCFgICAAAALCwkBAEGAgMAACwAA6wcOY29udHJhY3RzcGVjdjAAAAAAAAADWlVwZ3JhZGUgYSB0YXJnZXQgY29udHJhY3QgYW5kIHJ1biBpdHMgbWlncmF0aW9uIGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uCgpUaGUgY2FsbGVyIG11c3QgYmUgYXV0aG9yaXplZCBhcyB0aGUgYXV0aG9yaXplciBvZiB0aGUgdGFyZ2V0IGNvbnRyYWN0LgpUaGlzIGlzIGVuZm9yY2VkIGJ5IHRoZSB0YXJnZXQgY29udHJhY3QncyBgI1tvbmx5X2F1dGhdYCBjaGVjay4KClRoaXMgaXMgdXNlZnVsIGZvciBhdG9taWMgdXBncmFkZXMgd2hlcmUgeW91IHdhbnQgdG8gZW5zdXJlIHRoZSBtaWdyYXRpb24KaGFwcGVucyBpbW1lZGlhdGVseSBhZnRlciB0aGUgdXBncmFkZSwgb3IgdGhlIGVudGlyZSBvcGVyYXRpb24gZmFpbHMuCgojIEFyZ3VtZW50cwoqIGBjb250cmFjdF9hZGRyZXNzYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byB1cGdyYWRlCiogYHdhc21faGFzaGAgLSBUaGUgaGFzaCBvZiB0aGUgbmV3IFdBU00gYnl0ZWNvZGUKKiBgbWlncmF0aW9uX2RhdGFgIC0gQSB2ZWN0b3Igb2YgdmFsdWVzIHRvIHBhc3MgdG8gdGhlIG1pZ3JhdGUgZnVuY3Rpb24uClRoZSB0eXBlcyBvZiB0aGVzZSB2YWx1ZXMgZGVwZW5kIG9uIHRoZSB0YXJnZXQgY29udHJhY3QncyBNaWdyYXRpb25EYXRhIHR5cGUuCgojIEV4YW1wbGUKYGBgaWdub3JlCi8vIEZvciBhIGNvbnRyYWN0IHdpdGggTWlncmF0aW9uRGF0YSA9ICh1MzIsIGJvb2wpCmxldCBtaWdyYXRpb25fZGF0YSA9IHZlYyFbCiZlbnYsCjQydTMyLmludG9fdmFsKCZlbnYpLAp0cnVlLmludG9fdmFsKCZlbnYpLApdOwp1cGdyYWRlci51cGdyYWRlX2FuZF9taWdyYXRlKCZjb250cmFjdF9hZGRyLCAmd2FzbV9oYXNoLCBtaWdyYXRpb25fZGF0YSk7CmBgYAAAAAAAE3VwZ3JhZGVfYW5kX21pZ3JhdGUAAAAAAwAAAAAAAAAQY29udHJhY3RfYWRkcmVzcwAAABMAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAA5taWdyYXRpb25fZGF0YQAAAAAD6gAAAAAAAAAAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFwAAAAAAbw5jb250cmFjdG1ldGF2MAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS45MC4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzIzLjQuMCM2NzNkNmM0ZjIzNjhkMjgyZDI1ZGEyOWJkYTU1YzIxYjhiZTY5Y2E2AA==";
11
+ export declare const WASM_BASE64 = "AGFzbQEAAAABJgdgAX4BfmADfn5+AX5gAn5+AX5gAn9+AGADfn5+AGABfwF+YAAAAhkEAWIBXwAAAWIBOAAAAWQBXwABAXYBZwACAwkIAgMEAQUEBgYFAwEAEAYhBH8BQYCAwAALfwBBgIDAAAt/AEGAgMAAC38AQYCAwAALB0kGBm1lbW9yeQIAB3VwZ3JhZGUABBN1cGdyYWRlX2FuZF9taWdyYXRlAAcBXwMBCl9fZGF0YV9lbmQDAgtfX2hlYXBfYmFzZQMDCoYECFwBAX8jgICAgABBEGsiAiSAgICAAAJAIABC/wGDQs0AUg0AIAIgARCFgICAACACKAIAQQFGDQAgACACKQMIQgIQgICAgAAQhoCAgAAgAkEQaiSAgICAAEICDwsAC0IBAX5CASECAkAgAUL/AYNCyABSDQAgARCBgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAu4AQMBfwF+AX8jgICAgABBEGsiAySAgICAACADIAE3AwBCAiEEQQEhBQJAA0AgBUUNASAFQX9qIQUgASEEDAALCyADIAQ3AwggAEKO1Knzza3rASADQQhqEIiAgIAAEImAgIAAIAMgAjcDAEICIQFBASEFAkADQCAFRQ0BIAVBf2ohBSACIQEMAAsLIAMgATcDCCAAQo7UufPN9coBIANBCGoQiICAgAAQiYCAgAAgA0EQaiSAgICAAAtiAQF/I4CAgIAAQRBrIgMkgICAgAACQCAAQv8Bg0LNAFINACADIAEQhYCAgAAgAygCAEEBRg0AIAJC/wGDQsgAUg0AIAAgAykDCCACEIaAgIAAIANBEGokgICAgABCAg8LAAsXACAArUIghkIEhEKEgICAEBCDgICAAAshAAJAIAAgASACEIKAgIAAQv8Bg0ICUQ0AEIuAgIAAAAsLAwAACwkAEIqAgIAAAAsLCQEAQYCAwAALAAD3Hw5jb250cmFjdHNwZWN2MAAAAAAAAAERVXBncmFkZXMgYSB0YXJnZXQgY29udHJhY3Qgd2l0aG91dCBjdXN0b20gbWlncmF0aW9uIGRhdGEuCgpUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciB0aGF0IGNhbGxzIGB1cGdyYWRlX2FuZF9taWdyYXRlYCB3aXRoIGVtcHR5IG1pZ3JhdGlvbiBkYXRhLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBUaGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gdXBncmFkZQoqIGB3YXNtX2hhc2hgIC0gVGhlIGhhc2ggb2YgdGhlIG5ldyBXQVNNIGJ5dGVjb2RlAAAAAAAAB3VwZ3JhZGUAAAAAAgAAAAAAAAAQY29udHJhY3RfYWRkcmVzcwAAABMAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAAAAAAJ0VXBncmFkZXMgYSB0YXJnZXQgY29udHJhY3QgYW5kIHJ1bnMgaXRzIG1pZ3JhdGlvbiBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4KClRoZSBjYWxsZXIgbXVzdCBiZSBhdXRob3JpemVkIGFzIHRoZSBhdXRob3JpemVyIG9mIHRoZSB0YXJnZXQgY29udHJhY3QuClRoaXMgaXMgZW5mb3JjZWQgYnkgdGhlIHRhcmdldCBjb250cmFjdCdzIGAjW29ubHlfYXV0aF1gIGNoZWNrLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBUaGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gdXBncmFkZQoqIGB3YXNtX2hhc2hgIC0gVGhlIGhhc2ggb2YgdGhlIG5ldyBXQVNNIGJ5dGVjb2RlCiogYG1pZ3JhdGlvbl9kYXRhYCAtIFhEUi1lbmNvZGVkIGJ5dGVzIHRvIHBhc3MgdG8gdGhlIG1pZ3JhdGUgZnVuY3Rpb24uClVzZSBgdmFsdWUudG9feGRyKCZlbnYpYCB0byBlbmNvZGUgdGhlIHRhcmdldCBjb250cmFjdCdzIE1pZ3JhdGlvbkRhdGEgdHlwZS4KCiMgRXhhbXBsZQpgYGBpZ25vcmUKbGV0IG1pZ3JhdGlvbl9kYXRhID0gbXlfZGF0YS50b194ZHIoJmVudik7CnVwZ3JhZGVyLnVwZ3JhZGVfYW5kX21pZ3JhdGUoJmNvbnRyYWN0X2FkZHIsICZ3YXNtX2hhc2gsICZtaWdyYXRpb25fZGF0YSk7CmBgYAAAABN1cGdyYWRlX2FuZF9taWdyYXRlAAAAAAMAAAAAAAAAEGNvbnRyYWN0X2FkZHJlc3MAAAATAAAAAAAAAAl3YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAObWlncmF0aW9uX2RhdGEAAAAAAA4AAAAAAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAADAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAAAAAAOVXBncmFkZXNGcm96ZW4AAAAABBwAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMC4xIzk0MTQ0ODA3OWVjY2Y5NTYyN2QyZmZlYTEzYmEyNjhlMzA1YTkwNzcAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjAuMCNhNjQ5MjVlOTM5MWMzZDNiM2VmOGU1M2RjNjBjMjNkYjllNmE4MmU0AA==";
12
12
  /**
13
13
  * Pre-computed WASM hash (SHA-256)
14
14
  * Use this when the WASM is already uploaded on-chain
15
15
  */
16
- export declare const WASM_HASH = "250cba854264d9d437c960e9f8ed838dbf39876947b4fb84c5a209a39b794da6";
16
+ export declare const WASM_HASH = "298d3c3d596be9f28c28c7919c00bfba604b1f7a615b2930ac0e65a9eac84655";
17
17
  /**
18
18
  * Get the WASM bytecode as a Buffer
19
19
  * Use this to upload the WASM to the network
20
20
  */
21
21
  export declare function getWasmBuffer(): Buffer;
22
+ /**
23
+ * BufferReaderError: 1000-1009
24
+ */
25
+ export declare const BufferReaderError: {
26
+ 1000: {
27
+ message: string;
28
+ };
29
+ 1001: {
30
+ message: string;
31
+ };
32
+ };
33
+ /**
34
+ * BufferWriterError: 1010-1019
35
+ */
36
+ export declare const BufferWriterError: {
37
+ 1010: {
38
+ message: string;
39
+ };
40
+ };
41
+ /**
42
+ * TtlConfigurableError: 1020-1029
43
+ */
44
+ export declare const TtlConfigurableError: {
45
+ 1020: {
46
+ message: string;
47
+ };
48
+ 1021: {
49
+ message: string;
50
+ };
51
+ 1022: {
52
+ message: string;
53
+ };
54
+ };
55
+ /**
56
+ * OwnableError: 1030-1039
57
+ */
58
+ export declare const OwnableError: {
59
+ 1030: {
60
+ message: string;
61
+ };
62
+ 1031: {
63
+ message: string;
64
+ };
65
+ 1032: {
66
+ message: string;
67
+ };
68
+ 1033: {
69
+ message: string;
70
+ };
71
+ 1034: {
72
+ message: string;
73
+ };
74
+ 1035: {
75
+ message: string;
76
+ };
77
+ };
78
+ /**
79
+ * BytesExtError: 1040-1049
80
+ */
81
+ export declare const BytesExtError: {
82
+ 1040: {
83
+ message: string;
84
+ };
85
+ };
86
+ /**
87
+ * UpgradeableError: 1050-1059
88
+ */
89
+ export declare const UpgradeableError: {
90
+ 1050: {
91
+ message: string;
92
+ };
93
+ 1051: {
94
+ message: string;
95
+ };
96
+ 1052: {
97
+ message: string;
98
+ };
99
+ };
100
+ /**
101
+ * MultisigError: 1060-1069
102
+ */
103
+ export declare const MultisigError: {
104
+ 1060: {
105
+ message: string;
106
+ };
107
+ 1061: {
108
+ message: string;
109
+ };
110
+ 1062: {
111
+ message: string;
112
+ };
113
+ 1063: {
114
+ message: string;
115
+ };
116
+ 1064: {
117
+ message: string;
118
+ };
119
+ 1065: {
120
+ message: string;
121
+ };
122
+ 1066: {
123
+ message: string;
124
+ };
125
+ 1067: {
126
+ message: string;
127
+ };
128
+ };
129
+ export type MultisigStorage = {
130
+ tag: "Signers";
131
+ values: void;
132
+ } | {
133
+ tag: "Threshold";
134
+ values: void;
135
+ };
136
+ export type OwnableStorage = {
137
+ tag: "Owner";
138
+ values: void;
139
+ } | {
140
+ tag: "PendingOwner";
141
+ values: void;
142
+ };
143
+ /**
144
+ * TTL configuration: threshold (when to extend) and extend_to (target TTL).
145
+ */
146
+ export interface TtlConfig {
147
+ /**
148
+ * Target TTL after extension (in ledgers).
149
+ */
150
+ extend_to: u32;
151
+ /**
152
+ * TTL threshold that triggers extension (in ledgers).
153
+ */
154
+ threshold: u32;
155
+ }
156
+ export type TtlConfigStorage = {
157
+ tag: "Frozen";
158
+ values: void;
159
+ } | {
160
+ tag: "Instance";
161
+ values: void;
162
+ } | {
163
+ tag: "Persistent";
164
+ values: void;
165
+ };
166
+ export type UpgradeableStorage = {
167
+ tag: "Frozen";
168
+ values: void;
169
+ } | {
170
+ tag: "Migrating";
171
+ values: void;
172
+ };
22
173
  export interface Client {
174
+ /**
175
+ * Construct and simulate a upgrade transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
176
+ * Upgrades a target contract without custom migration data.
177
+ *
178
+ * This is a convenience wrapper that calls `upgrade_and_migrate` with empty migration data.
179
+ *
180
+ * # Arguments
181
+ * * `contract_address` - The address of the contract to upgrade
182
+ * * `wasm_hash` - The hash of the new WASM bytecode
183
+ */
184
+ upgrade: ({ contract_address, wasm_hash }: {
185
+ contract_address: string;
186
+ wasm_hash: Buffer;
187
+ }, txnOptions?: {
188
+ /**
189
+ * The fee to pay for the transaction. Default: BASE_FEE
190
+ */
191
+ fee?: number;
192
+ /**
193
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
194
+ */
195
+ timeoutInSeconds?: number;
196
+ /**
197
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
198
+ */
199
+ simulate?: boolean;
200
+ }) => Promise<AssembledTransaction<null>>;
23
201
  /**
24
202
  * Construct and simulate a upgrade_and_migrate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
25
- * Upgrade a target contract and run its migration in a single transaction
203
+ * Upgrades a target contract and runs its migration in a single transaction.
26
204
  *
27
205
  * The caller must be authorized as the authorizer of the target contract.
28
206
  * This is enforced by the target contract's `#[only_auth]` check.
29
207
  *
30
- * This is useful for atomic upgrades where you want to ensure the migration
31
- * happens immediately after the upgrade, or the entire operation fails.
32
- *
33
208
  * # Arguments
34
209
  * * `contract_address` - The address of the contract to upgrade
35
210
  * * `wasm_hash` - The hash of the new WASM bytecode
36
- * * `migration_data` - A vector of values to pass to the migrate function.
37
- * The types of these values depend on the target contract's MigrationData type.
211
+ * * `migration_data` - XDR-encoded bytes to pass to the migrate function.
212
+ * Use `value.to_xdr(&env)` to encode the target contract's MigrationData type.
38
213
  *
39
214
  * # Example
40
215
  * ```ignore
41
- * // For a contract with MigrationData = (u32, bool)
42
- * let migration_data = vec![
43
- * &env,
44
- * 42u32.into_val(&env),
45
- * true.into_val(&env),
46
- * ];
47
- * upgrader.upgrade_and_migrate(&contract_addr, &wasm_hash, migration_data);
216
+ * let migration_data = my_data.to_xdr(&env);
217
+ * upgrader.upgrade_and_migrate(&contract_addr, &wasm_hash, &migration_data);
48
218
  * ```
49
219
  */
50
220
  upgrade_and_migrate: ({ contract_address, wasm_hash, migration_data }: {
51
221
  contract_address: string;
52
222
  wasm_hash: Buffer;
53
- migration_data: Array<any>;
223
+ migration_data: Buffer;
54
224
  }, txnOptions?: {
55
225
  /**
56
226
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -80,6 +250,7 @@ export declare class Client extends ContractClient {
80
250
  }): Promise<AssembledTransaction<T>>;
81
251
  constructor(options: ContractClientOptions);
82
252
  readonly fromJSON: {
253
+ upgrade: (json: string) => AssembledTransaction<null>;
83
254
  upgrade_and_migrate: (json: string) => AssembledTransaction<null>;
84
255
  };
85
256
  }
@@ -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: 1597 bytes (1.56 KB)
8
+ * Size: 5053 bytes (4.93 KB)
9
9
  */
10
- export const WASM_BASE64 = "AGFzbQEAAAABHAVgAX4BfmACfn4BfmADfn5+AX5gA35+fgBgAAACEwMBYgE4AAABdgFnAAEBZAFfAAIDBQQCAwQEBQMBABAGIQR/AUGAgMAAC38AQYCAwAALfwBBgIDAAAt/AEGAgMAACwc/BQZtZW1vcnkCABN1cGdyYWRlX2FuZF9taWdyYXRlAAMBXwMBCl9fZGF0YV9lbmQDAgtfX2hlYXBfYmFzZQMDCoUCBNIBAwF/AX4BfyOAgICAAEEQayIDJICAgIAAAkAgAEL/AYNCzQBSDQAgAUL/AYNCyABSDQAgARCAgICAAEKAgICAcINCgICAgIAEUg0AIAJC/wGDQssAUg0AIAMgATcDAEICIQRBASEFAkADQCAFRQ0BIAVBf2ohBSABIQQMAAsLIAMgBDcDCCAAQo7UqfPNresBIANBCGqtQiCGQgSEQoSAgIAQEIGAgIAAEISAgIAAIABCjtS58831ygEgAhCEgICAACADQRBqJICAgIAAQgIPCwALIQACQCAAIAEgAhCCgICAAEL/AYNCAlENABCGgICAAAALCwMAAAsJABCFgICAAAALCwkBAEGAgMAACwAA6wcOY29udHJhY3RzcGVjdjAAAAAAAAADWlVwZ3JhZGUgYSB0YXJnZXQgY29udHJhY3QgYW5kIHJ1biBpdHMgbWlncmF0aW9uIGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uCgpUaGUgY2FsbGVyIG11c3QgYmUgYXV0aG9yaXplZCBhcyB0aGUgYXV0aG9yaXplciBvZiB0aGUgdGFyZ2V0IGNvbnRyYWN0LgpUaGlzIGlzIGVuZm9yY2VkIGJ5IHRoZSB0YXJnZXQgY29udHJhY3QncyBgI1tvbmx5X2F1dGhdYCBjaGVjay4KClRoaXMgaXMgdXNlZnVsIGZvciBhdG9taWMgdXBncmFkZXMgd2hlcmUgeW91IHdhbnQgdG8gZW5zdXJlIHRoZSBtaWdyYXRpb24KaGFwcGVucyBpbW1lZGlhdGVseSBhZnRlciB0aGUgdXBncmFkZSwgb3IgdGhlIGVudGlyZSBvcGVyYXRpb24gZmFpbHMuCgojIEFyZ3VtZW50cwoqIGBjb250cmFjdF9hZGRyZXNzYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byB1cGdyYWRlCiogYHdhc21faGFzaGAgLSBUaGUgaGFzaCBvZiB0aGUgbmV3IFdBU00gYnl0ZWNvZGUKKiBgbWlncmF0aW9uX2RhdGFgIC0gQSB2ZWN0b3Igb2YgdmFsdWVzIHRvIHBhc3MgdG8gdGhlIG1pZ3JhdGUgZnVuY3Rpb24uClRoZSB0eXBlcyBvZiB0aGVzZSB2YWx1ZXMgZGVwZW5kIG9uIHRoZSB0YXJnZXQgY29udHJhY3QncyBNaWdyYXRpb25EYXRhIHR5cGUuCgojIEV4YW1wbGUKYGBgaWdub3JlCi8vIEZvciBhIGNvbnRyYWN0IHdpdGggTWlncmF0aW9uRGF0YSA9ICh1MzIsIGJvb2wpCmxldCBtaWdyYXRpb25fZGF0YSA9IHZlYyFbCiZlbnYsCjQydTMyLmludG9fdmFsKCZlbnYpLAp0cnVlLmludG9fdmFsKCZlbnYpLApdOwp1cGdyYWRlci51cGdyYWRlX2FuZF9taWdyYXRlKCZjb250cmFjdF9hZGRyLCAmd2FzbV9oYXNoLCBtaWdyYXRpb25fZGF0YSk7CmBgYAAAAAAAE3VwZ3JhZGVfYW5kX21pZ3JhdGUAAAAAAwAAAAAAAAAQY29udHJhY3RfYWRkcmVzcwAAABMAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAA5taWdyYXRpb25fZGF0YQAAAAAD6gAAAAAAAAAAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFwAAAAAAbw5jb250cmFjdG1ldGF2MAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS45MC4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzIzLjQuMCM2NzNkNmM0ZjIzNjhkMjgyZDI1ZGEyOWJkYTU1YzIxYjhiZTY5Y2E2AA==";
10
+ export const WASM_BASE64 = "AGFzbQEAAAABJgdgAX4BfmADfn5+AX5gAn5+AX5gAn9+AGADfn5+AGABfwF+YAAAAhkEAWIBXwAAAWIBOAAAAWQBXwABAXYBZwACAwkIAgMEAQUEBgYFAwEAEAYhBH8BQYCAwAALfwBBgIDAAAt/AEGAgMAAC38AQYCAwAALB0kGBm1lbW9yeQIAB3VwZ3JhZGUABBN1cGdyYWRlX2FuZF9taWdyYXRlAAcBXwMBCl9fZGF0YV9lbmQDAgtfX2hlYXBfYmFzZQMDCoYECFwBAX8jgICAgABBEGsiAiSAgICAAAJAIABC/wGDQs0AUg0AIAIgARCFgICAACACKAIAQQFGDQAgACACKQMIQgIQgICAgAAQhoCAgAAgAkEQaiSAgICAAEICDwsAC0IBAX5CASECAkAgAUL/AYNCyABSDQAgARCBgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAu4AQMBfwF+AX8jgICAgABBEGsiAySAgICAACADIAE3AwBCAiEEQQEhBQJAA0AgBUUNASAFQX9qIQUgASEEDAALCyADIAQ3AwggAEKO1Knzza3rASADQQhqEIiAgIAAEImAgIAAIAMgAjcDAEICIQFBASEFAkADQCAFRQ0BIAVBf2ohBSACIQEMAAsLIAMgATcDCCAAQo7UufPN9coBIANBCGoQiICAgAAQiYCAgAAgA0EQaiSAgICAAAtiAQF/I4CAgIAAQRBrIgMkgICAgAACQCAAQv8Bg0LNAFINACADIAEQhYCAgAAgAygCAEEBRg0AIAJC/wGDQsgAUg0AIAAgAykDCCACEIaAgIAAIANBEGokgICAgABCAg8LAAsXACAArUIghkIEhEKEgICAEBCDgICAAAshAAJAIAAgASACEIKAgIAAQv8Bg0ICUQ0AEIuAgIAAAAsLAwAACwkAEIqAgIAAAAsLCQEAQYCAwAALAAD3Hw5jb250cmFjdHNwZWN2MAAAAAAAAAERVXBncmFkZXMgYSB0YXJnZXQgY29udHJhY3Qgd2l0aG91dCBjdXN0b20gbWlncmF0aW9uIGRhdGEuCgpUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciB0aGF0IGNhbGxzIGB1cGdyYWRlX2FuZF9taWdyYXRlYCB3aXRoIGVtcHR5IG1pZ3JhdGlvbiBkYXRhLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBUaGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gdXBncmFkZQoqIGB3YXNtX2hhc2hgIC0gVGhlIGhhc2ggb2YgdGhlIG5ldyBXQVNNIGJ5dGVjb2RlAAAAAAAAB3VwZ3JhZGUAAAAAAgAAAAAAAAAQY29udHJhY3RfYWRkcmVzcwAAABMAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAAAAAAJ0VXBncmFkZXMgYSB0YXJnZXQgY29udHJhY3QgYW5kIHJ1bnMgaXRzIG1pZ3JhdGlvbiBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4KClRoZSBjYWxsZXIgbXVzdCBiZSBhdXRob3JpemVkIGFzIHRoZSBhdXRob3JpemVyIG9mIHRoZSB0YXJnZXQgY29udHJhY3QuClRoaXMgaXMgZW5mb3JjZWQgYnkgdGhlIHRhcmdldCBjb250cmFjdCdzIGAjW29ubHlfYXV0aF1gIGNoZWNrLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBUaGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gdXBncmFkZQoqIGB3YXNtX2hhc2hgIC0gVGhlIGhhc2ggb2YgdGhlIG5ldyBXQVNNIGJ5dGVjb2RlCiogYG1pZ3JhdGlvbl9kYXRhYCAtIFhEUi1lbmNvZGVkIGJ5dGVzIHRvIHBhc3MgdG8gdGhlIG1pZ3JhdGUgZnVuY3Rpb24uClVzZSBgdmFsdWUudG9feGRyKCZlbnYpYCB0byBlbmNvZGUgdGhlIHRhcmdldCBjb250cmFjdCdzIE1pZ3JhdGlvbkRhdGEgdHlwZS4KCiMgRXhhbXBsZQpgYGBpZ25vcmUKbGV0IG1pZ3JhdGlvbl9kYXRhID0gbXlfZGF0YS50b194ZHIoJmVudik7CnVwZ3JhZGVyLnVwZ3JhZGVfYW5kX21pZ3JhdGUoJmNvbnRyYWN0X2FkZHIsICZ3YXNtX2hhc2gsICZtaWdyYXRpb25fZGF0YSk7CmBgYAAAABN1cGdyYWRlX2FuZF9taWdyYXRlAAAAAAMAAAAAAAAAEGNvbnRyYWN0X2FkZHJlc3MAAAATAAAAAAAAAAl3YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAObWlncmF0aW9uX2RhdGEAAAAAAA4AAAAAAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAADAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAAAAAAOVXBncmFkZXNGcm96ZW4AAAAABBwAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMC4xIzk0MTQ0ODA3OWVjY2Y5NTYyN2QyZmZlYTEzYmEyNjhlMzA1YTkwNzcAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjAuMCNhNjQ5MjVlOTM5MWMzZDNiM2VmOGU1M2RjNjBjMjNkYjllNmE4MmU0AA==";
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 = "250cba854264d9d437c960e9f8ed838dbf39876947b4fb84c5a209a39b794da6";
15
+ export const WASM_HASH = "298d3c3d596be9f28c28c7919c00bfba604b1f7a615b2930ac0e65a9eac84655";
16
16
  /**
17
17
  * Get the WASM bytecode as a Buffer
18
18
  * Use this to upload the WASM to the network
@@ -20,6 +20,65 @@ export const WASM_HASH = "250cba854264d9d437c960e9f8ed838dbf39876947b4fb84c5a209
20
20
  export function getWasmBuffer() {
21
21
  return Buffer.from(WASM_BASE64, 'base64');
22
22
  }
23
+ /**
24
+ * BufferReaderError: 1000-1009
25
+ */
26
+ export const BufferReaderError = {
27
+ 1000: { message: "InvalidLength" },
28
+ 1001: { message: "InvalidAddressPayload" }
29
+ };
30
+ /**
31
+ * BufferWriterError: 1010-1019
32
+ */
33
+ export const BufferWriterError = {
34
+ 1010: { message: "InvalidAddressPayload" }
35
+ };
36
+ /**
37
+ * TtlConfigurableError: 1020-1029
38
+ */
39
+ export const TtlConfigurableError = {
40
+ 1020: { message: "InvalidTtlConfig" },
41
+ 1021: { message: "TtlConfigFrozen" },
42
+ 1022: { message: "TtlConfigAlreadyFrozen" }
43
+ };
44
+ /**
45
+ * OwnableError: 1030-1039
46
+ */
47
+ export const OwnableError = {
48
+ 1030: { message: "InvalidPendingOwner" },
49
+ 1031: { message: "InvalidTtl" },
50
+ 1032: { message: "NoPendingTransfer" },
51
+ 1033: { message: "OwnerAlreadySet" },
52
+ 1034: { message: "OwnerNotSet" },
53
+ 1035: { message: "TransferInProgress" }
54
+ };
55
+ /**
56
+ * BytesExtError: 1040-1049
57
+ */
58
+ export const BytesExtError = {
59
+ 1040: { message: "LengthMismatch" }
60
+ };
61
+ /**
62
+ * UpgradeableError: 1050-1059
63
+ */
64
+ export const UpgradeableError = {
65
+ 1050: { message: "InvalidMigrationData" },
66
+ 1051: { message: "MigrationNotAllowed" },
67
+ 1052: { message: "UpgradesFrozen" }
68
+ };
69
+ /**
70
+ * MultisigError: 1060-1069
71
+ */
72
+ export const MultisigError = {
73
+ 1060: { message: "AlreadyInitialized" },
74
+ 1061: { message: "InvalidSigner" },
75
+ 1062: { message: "SignatureError" },
76
+ 1063: { message: "SignerAlreadyExists" },
77
+ 1064: { message: "SignerNotFound" },
78
+ 1065: { message: "TotalSignersLessThanThreshold" },
79
+ 1066: { message: "UnsortedSigners" },
80
+ 1067: { message: "ZeroThreshold" }
81
+ };
23
82
  export class Client extends ContractClient {
24
83
  options;
25
84
  static async deploy(
@@ -28,10 +87,31 @@ export class Client extends ContractClient {
28
87
  return ContractClient.deploy(null, options);
29
88
  }
30
89
  constructor(options) {
31
- super(new ContractSpec(["AAAAAAAAA1pVcGdyYWRlIGEgdGFyZ2V0IGNvbnRyYWN0IGFuZCBydW4gaXRzIG1pZ3JhdGlvbiBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbgoKVGhlIGNhbGxlciBtdXN0IGJlIGF1dGhvcml6ZWQgYXMgdGhlIGF1dGhvcml6ZXIgb2YgdGhlIHRhcmdldCBjb250cmFjdC4KVGhpcyBpcyBlbmZvcmNlZCBieSB0aGUgdGFyZ2V0IGNvbnRyYWN0J3MgYCNbb25seV9hdXRoXWAgY2hlY2suCgpUaGlzIGlzIHVzZWZ1bCBmb3IgYXRvbWljIHVwZ3JhZGVzIHdoZXJlIHlvdSB3YW50IHRvIGVuc3VyZSB0aGUgbWlncmF0aW9uCmhhcHBlbnMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHVwZ3JhZGUsIG9yIHRoZSBlbnRpcmUgb3BlcmF0aW9uIGZhaWxzLgoKIyBBcmd1bWVudHMKKiBgY29udHJhY3RfYWRkcmVzc2AgLSBUaGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gdXBncmFkZQoqIGB3YXNtX2hhc2hgIC0gVGhlIGhhc2ggb2YgdGhlIG5ldyBXQVNNIGJ5dGVjb2RlCiogYG1pZ3JhdGlvbl9kYXRhYCAtIEEgdmVjdG9yIG9mIHZhbHVlcyB0byBwYXNzIHRvIHRoZSBtaWdyYXRlIGZ1bmN0aW9uLgpUaGUgdHlwZXMgb2YgdGhlc2UgdmFsdWVzIGRlcGVuZCBvbiB0aGUgdGFyZ2V0IGNvbnRyYWN0J3MgTWlncmF0aW9uRGF0YSB0eXBlLgoKIyBFeGFtcGxlCmBgYGlnbm9yZQovLyBGb3IgYSBjb250cmFjdCB3aXRoIE1pZ3JhdGlvbkRhdGEgPSAodTMyLCBib29sKQpsZXQgbWlncmF0aW9uX2RhdGEgPSB2ZWMhWwomZW52LAo0MnUzMi5pbnRvX3ZhbCgmZW52KSwKdHJ1ZS5pbnRvX3ZhbCgmZW52KSwKXTsKdXBncmFkZXIudXBncmFkZV9hbmRfbWlncmF0ZSgmY29udHJhY3RfYWRkciwgJndhc21faGFzaCwgbWlncmF0aW9uX2RhdGEpOwpgYGAAAAAAABN1cGdyYWRlX2FuZF9taWdyYXRlAAAAAAMAAAAAAAAAEGNvbnRyYWN0X2FkZHJlc3MAAAATAAAAAAAAAAl3YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAObWlncmF0aW9uX2RhdGEAAAAAA+oAAAAAAAAAAA=="]), options);
90
+ super(new ContractSpec(["AAAAAAAAARFVcGdyYWRlcyBhIHRhcmdldCBjb250cmFjdCB3aXRob3V0IGN1c3RvbSBtaWdyYXRpb24gZGF0YS4KClRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgY2FsbHMgYHVwZ3JhZGVfYW5kX21pZ3JhdGVgIHdpdGggZW1wdHkgbWlncmF0aW9uIGRhdGEuCgojIEFyZ3VtZW50cwoqIGBjb250cmFjdF9hZGRyZXNzYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byB1cGdyYWRlCiogYHdhc21faGFzaGAgLSBUaGUgaGFzaCBvZiB0aGUgbmV3IFdBU00gYnl0ZWNvZGUAAAAAAAAHdXBncmFkZQAAAAACAAAAAAAAABBjb250cmFjdF9hZGRyZXNzAAAAEwAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAA",
91
+ "AAAAAAAAAnRVcGdyYWRlcyBhIHRhcmdldCBjb250cmFjdCBhbmQgcnVucyBpdHMgbWlncmF0aW9uIGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLgoKVGhlIGNhbGxlciBtdXN0IGJlIGF1dGhvcml6ZWQgYXMgdGhlIGF1dGhvcml6ZXIgb2YgdGhlIHRhcmdldCBjb250cmFjdC4KVGhpcyBpcyBlbmZvcmNlZCBieSB0aGUgdGFyZ2V0IGNvbnRyYWN0J3MgYCNbb25seV9hdXRoXWAgY2hlY2suCgojIEFyZ3VtZW50cwoqIGBjb250cmFjdF9hZGRyZXNzYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byB1cGdyYWRlCiogYHdhc21faGFzaGAgLSBUaGUgaGFzaCBvZiB0aGUgbmV3IFdBU00gYnl0ZWNvZGUKKiBgbWlncmF0aW9uX2RhdGFgIC0gWERSLWVuY29kZWQgYnl0ZXMgdG8gcGFzcyB0byB0aGUgbWlncmF0ZSBmdW5jdGlvbi4KVXNlIGB2YWx1ZS50b194ZHIoJmVudilgIHRvIGVuY29kZSB0aGUgdGFyZ2V0IGNvbnRyYWN0J3MgTWlncmF0aW9uRGF0YSB0eXBlLgoKIyBFeGFtcGxlCmBgYGlnbm9yZQpsZXQgbWlncmF0aW9uX2RhdGEgPSBteV9kYXRhLnRvX3hkcigmZW52KTsKdXBncmFkZXIudXBncmFkZV9hbmRfbWlncmF0ZSgmY29udHJhY3RfYWRkciwgJndhc21faGFzaCwgJm1pZ3JhdGlvbl9kYXRhKTsKYGBgAAAAE3VwZ3JhZGVfYW5kX21pZ3JhdGUAAAAAAwAAAAAAAAAQY29udHJhY3RfYWRkcmVzcwAAABMAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAA5taWdyYXRpb25fZGF0YQAAAAAADgAAAAA=",
92
+ "AAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPp",
93
+ "AAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/I=",
94
+ "AAAABAAAAB9UdGxDb25maWd1cmFibGVFcnJvcjogMTAyMC0xMDI5AAAAAAAAAAAUVHRsQ29uZmlndXJhYmxlRXJyb3IAAAADAAAAAAAAABBJbnZhbGlkVHRsQ29uZmlnAAAD/AAAAAAAAAAPVHRsQ29uZmlnRnJvemVuAAAAA/0AAAAAAAAAFlR0bENvbmZpZ0FscmVhZHlGcm96ZW4AAAAAA/4=",
95
+ "AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBgAAAAAAAAAKSW52YWxpZFR0bAAAAAAEBwAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQIAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECQAAAAAAAAALT3duZXJOb3RTZXQAAAAECgAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQL",
96
+ "AAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEA==",
97
+ "AAAABAAAABtVcGdyYWRlYWJsZUVycm9yOiAxMDUwLTEwNTkAAAAAAAAAABBVcGdyYWRlYWJsZUVycm9yAAAAAwAAAAAAAAAUSW52YWxpZE1pZ3JhdGlvbkRhdGEAAAQaAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBsAAAAAAAAADlVwZ3JhZGVzRnJvemVuAAAAAAQc",
98
+ "AAAABAAAABhNdWx0aXNpZ0Vycm9yOiAxMDYwLTEwNjkAAAAAAAAADU11bHRpc2lnRXJyb3IAAAAAAAAIAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAABCQAAAAAAAAADUludmFsaWRTaWduZXIAAAAAAAQlAAAAAAAAAA5TaWduYXR1cmVFcnJvcgAAAAAEJgAAAAAAAAATU2lnbmVyQWxyZWFkeUV4aXN0cwAAAAQnAAAAAAAAAA5TaWduZXJOb3RGb3VuZAAAAAAEKAAAAAAAAAAdVG90YWxTaWduZXJzTGVzc1RoYW5UaHJlc2hvbGQAAAAAAAQpAAAAAAAAAA9VbnNvcnRlZFNpZ25lcnMAAAAEKgAAAAAAAAANWmVyb1RocmVzaG9sZAAAAAAABCs=",
99
+ "AAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAAC",
100
+ "AAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAC",
101
+ "AAAAAgAAAAAAAAAAAAAAD011bHRpc2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAA=",
102
+ "AAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAg==",
103
+ "AAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAAC",
104
+ "AAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAC",
105
+ "AAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXI=",
106
+ "AAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQ=",
107
+ "AAAABQAAACdFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIHNldC4AAAAAAAAAAA1UdGxDb25maWdzU2V0AAAAAAAAAQAAAA90dGxfY29uZmlnc19zZXQAAAAAAgAAAAAAAAAIaW5zdGFuY2UAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAg==",
108
+ "AAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAg==",
109
+ "AAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAA==",
110
+ "AAAAAgAAAAAAAAAAAAAAElVwZ3JhZGVhYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAJTWlncmF0aW5nAAAA"]), options);
32
111
  this.options = options;
33
112
  }
34
113
  fromJSON = {
114
+ upgrade: (this.txFromJSON),
35
115
  upgrade_and_migrate: (this.txFromJSON)
36
116
  };
37
117
  }
@@ -12,3 +12,4 @@ export * as executorFeeLib from './generated/executor_fee_lib.js';
12
12
  export * as executorHelper from './generated/executor_helper.js';
13
13
  export * as priceFeed from './generated/price_feed.js';
14
14
  export * as oft from './generated/oft.js';
15
+ export * as layerzeroView from './generated/layerzero_view.js';
package/sdk/dist/index.js CHANGED
@@ -15,3 +15,5 @@ export * as executorHelper from './generated/executor_helper.js';
15
15
  export * as priceFeed from './generated/price_feed.js';
16
16
  // OApp contracts
17
17
  export * as oft from './generated/oft.js';
18
+ // View contracts
19
+ export * as layerzeroView from './generated/layerzero_view.js';
package/sdk/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/lz-v2-stellar-sdk",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "private": false,
5
5
  "description": "TypeScript SDK for endpoint-v2 Stellar contract",
6
6
  "repository": {
package/sdk/src/index.ts CHANGED
@@ -17,3 +17,6 @@ export * as priceFeed from './generated/price_feed.js';
17
17
 
18
18
  // OApp contracts
19
19
  export * as oft from './generated/oft.js';
20
+
21
+ // View contracts
22
+ export * as layerzeroView from './generated/layerzero_view.js';
@@ -419,14 +419,14 @@ describe('OFT E2E Testing with SAC (SML)', async () => {
419
419
  };
420
420
 
421
421
  const { result: fee } = await lockUnlockOftClient.quote_send({
422
- sender: DEFAULT_DEPLOYER.publicKey(),
422
+ from: DEFAULT_DEPLOYER.publicKey(),
423
423
  send_param: sendParam,
424
424
  pay_in_zro: true,
425
425
  });
426
426
  console.log('📊 Messaging Fee:', fee);
427
427
 
428
428
  const assembledTx = await lockUnlockOftClient.send({
429
- sender: DEFAULT_DEPLOYER.publicKey(),
429
+ from: DEFAULT_DEPLOYER.publicKey(),
430
430
  send_param: sendParam,
431
431
  fee: fee,
432
432
  refund_address: DEFAULT_DEPLOYER.publicKey(),
@@ -581,14 +581,14 @@ describe('OFT E2E Testing with SAC (SML)', async () => {
581
581
  };
582
582
 
583
583
  const { result: fee } = await mintBurnOftClient.quote_send({
584
- sender: DEFAULT_DEPLOYER.publicKey(),
584
+ from: DEFAULT_DEPLOYER.publicKey(),
585
585
  send_param: sendParam,
586
586
  pay_in_zro: true,
587
587
  });
588
588
  console.log('📊 Reverse Messaging Fee:', fee);
589
589
 
590
590
  const assembledTx = await mintBurnOftClient.send({
591
- sender: DEFAULT_DEPLOYER.publicKey(),
591
+ from: DEFAULT_DEPLOYER.publicKey(),
592
592
  send_param: sendParam,
593
593
  fee: fee,
594
594
  refund_address: DEFAULT_DEPLOYER.publicKey(),
@@ -1,11 +1,22 @@
1
1
  import axios from 'axios';
2
2
  import { $, sleep } from 'zx';
3
3
 
4
- import { DEFAULT_DEPLOYER, EXECUTOR_ADMIN, FRIENDBOT_URL, ZRO_DISTRIBUTOR } from './constants';
4
+ import {
5
+ DEFAULT_DEPLOYER,
6
+ EXECUTOR_ADMIN,
7
+ FRIENDBOT_URL,
8
+ RPC_URL,
9
+ ZRO_DISTRIBUTOR,
10
+ } from './constants';
5
11
  import { deployNativeSac, deployZroToken } from './deploy';
6
12
 
7
13
  const CONTAINER_NAME = 'stellar-localnet';
8
- const QUICKSTART_IMAGE = 'stellar/quickstart';
14
+ const QUICKSTART_IMAGE = 'stellar/quickstart:testing';
15
+
16
+ // Timeout configuration (in milliseconds)
17
+ const STARTUP_TIMEOUT_MS = 300_000; // 5 minutes total timeout for localnet startup
18
+ const REQUEST_TIMEOUT_MS = 10_000; // 10 seconds per request
19
+ const RETRY_INTERVAL_MS = 2_000; // 2 seconds between retries
9
20
 
10
21
  export async function startStellarLocalnet(): Promise<void> {
11
22
  console.log('🚀 Starting Stellar localnet...');
@@ -23,34 +34,87 @@ export async function startStellarLocalnet(): Promise<void> {
23
34
  // Start the stellar/quickstart container directly (no Stellar CLI needed)
24
35
  await $`docker run -d --name ${CONTAINER_NAME} -p 8086:8000 ${QUICKSTART_IMAGE} --local`;
25
36
 
26
- // Wait for Stellar to start
27
- for (let i = 0; i < 180; i++) {
37
+ const startTime = Date.now();
38
+
39
+ // Wait for RPC to be healthy first (friendbot depends on it)
40
+ console.log('⏳ Waiting for Stellar RPC to be healthy...');
41
+ await waitForRpcHealth(startTime);
42
+ console.log('✅ Stellar RPC is healthy');
43
+
44
+ // Wait for friendbot to be ready and fund accounts
45
+ console.log('⏳ Waiting for friendbot to be ready...');
46
+ await waitForFriendbotAndFundAccounts(startTime);
47
+
48
+ await deployNativeSac();
49
+ await deployZroToken();
50
+ }
51
+
52
+ async function waitForRpcHealth(startTime: number): Promise<void> {
53
+ while (Date.now() - startTime < STARTUP_TIMEOUT_MS) {
28
54
  try {
29
- // Ensure faucet service is started and fund the default deployer account
30
- await fundAccount(DEFAULT_DEPLOYER.publicKey());
31
- console.log(`✅ Account ${DEFAULT_DEPLOYER.publicKey()} funded`);
32
- await fundAccount(ZRO_DISTRIBUTOR.publicKey());
33
- console.log(`✅ Account ${ZRO_DISTRIBUTOR.publicKey()} funded`);
34
- await fundAccount(EXECUTOR_ADMIN.publicKey());
35
- console.log(`✅ Account ${EXECUTOR_ADMIN.publicKey()} funded`);
36
- console.log('✅ Stellar localnet started');
37
- break;
38
- } catch (_e) {
39
- console.error(`❌ Failed to fund account ${_e}`);
40
- await sleep(1000);
41
- console.log('⏳ Waiting for Stellar localnet to start...');
55
+ const response = await axios.post(
56
+ RPC_URL,
57
+ { jsonrpc: '2.0', id: 1, method: 'getHealth' },
58
+ {
59
+ timeout: REQUEST_TIMEOUT_MS,
60
+ headers: { 'Content-Type': 'application/json' },
61
+ },
62
+ );
63
+ if (response.data?.result?.status === 'healthy') {
64
+ return;
65
+ }
66
+ } catch {
67
+ // RPC not ready yet
42
68
  }
69
+ await sleep(RETRY_INTERVAL_MS);
43
70
  }
44
- await deployNativeSac();
45
- await deployZroToken();
71
+ throw new Error(
72
+ `Stellar RPC failed to become healthy within ${STARTUP_TIMEOUT_MS / 1000} seconds`,
73
+ );
74
+ }
75
+
76
+ async function waitForFriendbotAndFundAccounts(startTime: number): Promise<void> {
77
+ const accountsToFund = [
78
+ { keypair: DEFAULT_DEPLOYER, name: 'DEFAULT_DEPLOYER' },
79
+ { keypair: ZRO_DISTRIBUTOR, name: 'ZRO_DISTRIBUTOR' },
80
+ { keypair: EXECUTOR_ADMIN, name: 'EXECUTOR_ADMIN' },
81
+ ];
82
+
83
+ for (const { keypair, name } of accountsToFund) {
84
+ let funded = false;
85
+ while (Date.now() - startTime < STARTUP_TIMEOUT_MS) {
86
+ try {
87
+ await fundAccount(keypair.publicKey());
88
+ console.log(`✅ Account ${name} (${keypair.publicKey()}) funded`);
89
+ funded = true;
90
+ break;
91
+ } catch (_error) {
92
+ const elapsed = Math.round((Date.now() - startTime) / 1000);
93
+ console.log(`⏳ [${elapsed}s] Waiting for friendbot to fund ${name}...`);
94
+ await sleep(RETRY_INTERVAL_MS);
95
+ }
96
+ }
97
+ if (!funded) {
98
+ throw new Error(
99
+ `Failed to fund account ${name} within ${STARTUP_TIMEOUT_MS / 1000} seconds`,
100
+ );
101
+ }
102
+ }
103
+ console.log('✅ Stellar localnet started');
46
104
  }
47
105
 
48
106
  export async function fundAccount(publicKey: string): Promise<void> {
49
- await axios.get(FRIENDBOT_URL, {
107
+ const response = await axios.get(FRIENDBOT_URL, {
50
108
  params: {
51
109
  addr: publicKey,
52
110
  },
111
+ timeout: REQUEST_TIMEOUT_MS,
53
112
  });
113
+
114
+ // Check for error responses (friendbot returns 400 if already funded, which is OK)
115
+ if (response.status >= 500) {
116
+ throw new Error(`Friendbot returned error: ${response.status}`);
117
+ }
54
118
  }
55
119
 
56
120
  export async function stopStellarLocalnet(): Promise<void> {
@@ -179,8 +179,7 @@ describe('Upgrader Contract Testing', async () => {
179
179
 
180
180
  // NOTE: Using Option 2 - Hybrid approach with generated client
181
181
  // Build with generated client, then manually simulate with authMode, then inject back
182
-
183
- const voidScVal = xdr.ScVal.scvVoid();
182
+ const counterValue = 2;
184
183
  const server = new rpc.Server(RPC_URL, { allowHttp: true });
185
184
 
186
185
  // 1. Build transaction using generated client (don't auto-simulate)
@@ -188,7 +187,7 @@ describe('Upgrader Contract Testing', async () => {
188
187
  {
189
188
  contract_address: testContractAddress,
190
189
  wasm_hash: Buffer.from(newWasmHash, 'hex'),
191
- migration_data: [voidScVal],
190
+ migration_data: xdr.ScVal.scvU32(counterValue).toXDR(),
192
191
  },
193
192
  {
194
193
  simulate: false, // Don't simulate yet
@@ -33,7 +33,6 @@ export * from '@stellar/stellar-sdk'
33
33
  export * as contract from '@stellar/stellar-sdk/contract'
34
34
  export * as rpc from '@stellar/stellar-sdk/rpc'
35
35
 
36
- export type MigrationData = void;
37
36
 
38
37
 
39
38
  "#
@@ -104,6 +103,8 @@ fn main() -> Result<()> {
104
103
  // OApp contracts
105
104
  ("counter", "counter.ts"),
106
105
  ("oft", "oft.ts"),
106
+ // View contracts
107
+ ("layerzero_views", "layerzero_view.ts"),
107
108
  // Add more contracts here as needed:
108
109
  ];
109
110