create-dubhe 0.0.8 → 0.0.9

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 (1089) hide show
  1. package/dist/index.mjs +55 -55
  2. package/package.json +1 -1
  3. package/template/101/aptos-template/contracts/counter/.history/aptos_local/latest.json +6 -0
  4. package/template/101/aptos-template/contracts/counter/build/counter/BuildInfo.yaml +60 -0
  5. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/counter_schema.mv +0 -0
  6. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/counter_system.mv +0 -0
  7. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/account.mv +0 -0
  8. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aggregator.mv +0 -0
  9. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aggregator_factory.mv +0 -0
  10. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aggregator_v2.mv +0 -0
  11. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aptos_account.mv +0 -0
  12. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aptos_coin.mv +0 -0
  13. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aptos_governance.mv +0 -0
  14. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/block.mv +0 -0
  15. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/chain_id.mv +0 -0
  16. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/chain_status.mv +0 -0
  17. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/code.mv +0 -0
  18. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/coin.mv +0 -0
  19. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/config_buffer.mv +0 -0
  20. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/consensus_config.mv +0 -0
  21. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/create_signer.mv +0 -0
  22. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/delegation_pool.mv +0 -0
  23. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/dispatchable_fungible_asset.mv +0 -0
  24. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/dkg.mv +0 -0
  25. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/event.mv +0 -0
  26. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/execution_config.mv +0 -0
  27. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/function_info.mv +0 -0
  28. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/fungible_asset.mv +0 -0
  29. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/gas_schedule.mv +0 -0
  30. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/genesis.mv +0 -0
  31. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/governance_proposal.mv +0 -0
  32. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/guid.mv +0 -0
  33. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/jwk_consensus_config.mv +0 -0
  34. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/jwks.mv +0 -0
  35. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/keyless_account.mv +0 -0
  36. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/managed_coin.mv +0 -0
  37. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/multisig_account.mv +0 -0
  38. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/object.mv +0 -0
  39. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/object_code_deployment.mv +0 -0
  40. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/optional_aggregator.mv +0 -0
  41. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/primary_fungible_store.mv +0 -0
  42. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness.mv +0 -0
  43. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness_api_v0_config.mv +0 -0
  44. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness_config.mv +0 -0
  45. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness_config_seqnum.mv +0 -0
  46. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/reconfiguration.mv +0 -0
  47. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/reconfiguration_state.mv +0 -0
  48. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/reconfiguration_with_dkg.mv +0 -0
  49. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/resource_account.mv +0 -0
  50. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/stake.mv +0 -0
  51. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/staking_config.mv +0 -0
  52. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/staking_contract.mv +0 -0
  53. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/staking_proxy.mv +0 -0
  54. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/state_storage.mv +0 -0
  55. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/storage_gas.mv +0 -0
  56. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/system_addresses.mv +0 -0
  57. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/timestamp.mv +0 -0
  58. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/transaction_context.mv +0 -0
  59. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/transaction_fee.mv +0 -0
  60. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/transaction_validation.mv +0 -0
  61. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/util.mv +0 -0
  62. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/validator_consensus_info.mv +0 -0
  63. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/version.mv +0 -0
  64. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/vesting.mv +0 -0
  65. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/voting.mv +0 -0
  66. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/any.mv +0 -0
  67. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/aptos_hash.mv +0 -0
  68. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/big_vector.mv +0 -0
  69. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/bls12381.mv +0 -0
  70. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/bls12381_algebra.mv +0 -0
  71. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/bn254_algebra.mv +0 -0
  72. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/capability.mv +0 -0
  73. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/comparator.mv +0 -0
  74. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/copyable_any.mv +0 -0
  75. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/crypto_algebra.mv +0 -0
  76. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/debug.mv +0 -0
  77. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ed25519.mv +0 -0
  78. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/fixed_point64.mv +0 -0
  79. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/from_bcs.mv +0 -0
  80. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math128.mv +0 -0
  81. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math64.mv +0 -0
  82. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math_fixed.mv +0 -0
  83. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math_fixed64.mv +0 -0
  84. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/multi_ed25519.mv +0 -0
  85. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/pool_u64.mv +0 -0
  86. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/pool_u64_unbound.mv +0 -0
  87. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255.mv +0 -0
  88. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255_bulletproofs.mv +0 -0
  89. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255_elgamal.mv +0 -0
  90. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255_pedersen.mv +0 -0
  91. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/secp256k1.mv +0 -0
  92. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/simple_map.mv +0 -0
  93. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/smart_table.mv +0 -0
  94. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/smart_vector.mv +0 -0
  95. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/string_utils.mv +0 -0
  96. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/table.mv +0 -0
  97. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/table_with_length.mv +0 -0
  98. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/type_info.mv +0 -0
  99. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/acl.mv +0 -0
  100. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
  101. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
  102. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
  103. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/features.mv +0 -0
  104. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
  105. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
  106. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/mem.mv +0 -0
  107. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
  108. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
  109. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
  110. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
  111. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/deploy_hook.mv +0 -0
  112. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/entity_key.mv +0 -0
  113. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/events.mv +0 -0
  114. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/init.mv +0 -0
  115. package/template/101/aptos-template/contracts/counter/build/counter/bytecode_modules/world.mv +0 -0
  116. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/counter_schema.mvsm +0 -0
  117. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/counter_system.mvsm +0 -0
  118. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/account.mvsm +0 -0
  119. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aggregator.mvsm +0 -0
  120. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aggregator_factory.mvsm +0 -0
  121. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aggregator_v2.mvsm +0 -0
  122. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aptos_account.mvsm +0 -0
  123. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aptos_coin.mvsm +0 -0
  124. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aptos_governance.mvsm +0 -0
  125. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/block.mvsm +0 -0
  126. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/chain_id.mvsm +0 -0
  127. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/chain_status.mvsm +0 -0
  128. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/code.mvsm +0 -0
  129. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/coin.mvsm +0 -0
  130. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/config_buffer.mvsm +0 -0
  131. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/consensus_config.mvsm +0 -0
  132. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/create_signer.mvsm +0 -0
  133. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/delegation_pool.mvsm +0 -0
  134. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/dispatchable_fungible_asset.mvsm +0 -0
  135. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/dkg.mvsm +0 -0
  136. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/event.mvsm +0 -0
  137. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/execution_config.mvsm +0 -0
  138. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/function_info.mvsm +0 -0
  139. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/fungible_asset.mvsm +0 -0
  140. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/gas_schedule.mvsm +0 -0
  141. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/genesis.mvsm +0 -0
  142. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/governance_proposal.mvsm +0 -0
  143. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/guid.mvsm +0 -0
  144. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/jwk_consensus_config.mvsm +0 -0
  145. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/jwks.mvsm +0 -0
  146. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/keyless_account.mvsm +0 -0
  147. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/managed_coin.mvsm +0 -0
  148. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/multisig_account.mvsm +0 -0
  149. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/object.mvsm +0 -0
  150. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/object_code_deployment.mvsm +0 -0
  151. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/optional_aggregator.mvsm +0 -0
  152. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/primary_fungible_store.mvsm +0 -0
  153. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness.mvsm +0 -0
  154. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness_api_v0_config.mvsm +0 -0
  155. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness_config.mvsm +0 -0
  156. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness_config_seqnum.mvsm +0 -0
  157. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/reconfiguration.mvsm +0 -0
  158. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/reconfiguration_state.mvsm +0 -0
  159. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/reconfiguration_with_dkg.mvsm +0 -0
  160. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/resource_account.mvsm +0 -0
  161. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/stake.mvsm +0 -0
  162. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/staking_config.mvsm +0 -0
  163. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/staking_contract.mvsm +0 -0
  164. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/staking_proxy.mvsm +0 -0
  165. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/state_storage.mvsm +0 -0
  166. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/storage_gas.mvsm +0 -0
  167. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/system_addresses.mvsm +0 -0
  168. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/timestamp.mvsm +0 -0
  169. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/transaction_context.mvsm +0 -0
  170. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/transaction_fee.mvsm +0 -0
  171. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/transaction_validation.mvsm +0 -0
  172. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/util.mvsm +0 -0
  173. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/validator_consensus_info.mvsm +0 -0
  174. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/version.mvsm +0 -0
  175. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/vesting.mvsm +0 -0
  176. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/voting.mvsm +0 -0
  177. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/any.mvsm +0 -0
  178. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/aptos_hash.mvsm +0 -0
  179. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/big_vector.mvsm +0 -0
  180. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/bls12381.mvsm +0 -0
  181. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/bls12381_algebra.mvsm +0 -0
  182. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/bn254_algebra.mvsm +0 -0
  183. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/capability.mvsm +0 -0
  184. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/comparator.mvsm +0 -0
  185. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/copyable_any.mvsm +0 -0
  186. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/crypto_algebra.mvsm +0 -0
  187. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/debug.mvsm +0 -0
  188. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ed25519.mvsm +0 -0
  189. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/fixed_point64.mvsm +0 -0
  190. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/from_bcs.mvsm +0 -0
  191. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math128.mvsm +0 -0
  192. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math64.mvsm +0 -0
  193. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math_fixed.mvsm +0 -0
  194. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math_fixed64.mvsm +0 -0
  195. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/multi_ed25519.mvsm +0 -0
  196. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/pool_u64.mvsm +0 -0
  197. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/pool_u64_unbound.mvsm +0 -0
  198. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255.mvsm +0 -0
  199. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255_bulletproofs.mvsm +0 -0
  200. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255_elgamal.mvsm +0 -0
  201. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255_pedersen.mvsm +0 -0
  202. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/secp256k1.mvsm +0 -0
  203. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/simple_map.mvsm +0 -0
  204. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/smart_table.mvsm +0 -0
  205. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/smart_vector.mvsm +0 -0
  206. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/string_utils.mvsm +0 -0
  207. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/table.mvsm +0 -0
  208. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/table_with_length.mvsm +0 -0
  209. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/type_info.mvsm +0 -0
  210. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/acl.mvsm +0 -0
  211. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
  212. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
  213. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
  214. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/features.mvsm +0 -0
  215. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
  216. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
  217. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/mem.mvsm +0 -0
  218. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
  219. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
  220. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
  221. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
  222. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/deploy_hook.mvsm +0 -0
  223. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/entity_key.mvsm +0 -0
  224. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/events.mvsm +0 -0
  225. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/init.mvsm +0 -0
  226. package/template/101/aptos-template/contracts/counter/build/counter/source_maps/world.mvsm +0 -0
  227. package/template/101/aptos-template/contracts/counter/build/counter/sources/counter_schema.move +59 -0
  228. package/template/101/aptos-template/contracts/counter/build/counter/sources/counter_system.move +11 -0
  229. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/account.move +1604 -0
  230. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aggregator.move +48 -0
  231. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aggregator_factory.move +83 -0
  232. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aggregator_v2.move +473 -0
  233. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aptos_account.move +480 -0
  234. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aptos_coin.move +204 -0
  235. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aptos_governance.move +1390 -0
  236. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/block.move +349 -0
  237. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/chain_id.move +41 -0
  238. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/chain_status.move +48 -0
  239. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/code.move +367 -0
  240. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/coin.move +2014 -0
  241. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/config_buffer.move +101 -0
  242. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/consensus_config.move +77 -0
  243. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/create_signer.move +21 -0
  244. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/delegation_pool.move +5568 -0
  245. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/dispatchable_fungible_asset.move +228 -0
  246. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/dkg.move +121 -0
  247. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/event.move +92 -0
  248. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/execution_config.move +66 -0
  249. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/function_info.move +100 -0
  250. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/fungible_asset.move +1673 -0
  251. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/gas_schedule.move +176 -0
  252. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/genesis.move +549 -0
  253. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/governance_proposal.move +23 -0
  254. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/guid.move +68 -0
  255. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/jwk_consensus_config.move +148 -0
  256. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/jwks.move +889 -0
  257. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/keyless_account.move +312 -0
  258. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/managed_coin.move +267 -0
  259. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/multisig_account.move +2594 -0
  260. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/object.move +1095 -0
  261. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/object_code_deployment.move +147 -0
  262. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/optional_aggregator.move +286 -0
  263. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/primary_fungible_store.move +405 -0
  264. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness.move +574 -0
  265. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness_api_v0_config.move +57 -0
  266. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness_config.move +153 -0
  267. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness_config_seqnum.move +49 -0
  268. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/reconfiguration.move +222 -0
  269. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/reconfiguration_state.move +132 -0
  270. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/reconfiguration_with_dkg.move +69 -0
  271. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/resource_account.move +267 -0
  272. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/stake.move +3185 -0
  273. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/staking_config.move +686 -0
  274. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/staking_contract.move +1627 -0
  275. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/staking_proxy.move +228 -0
  276. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/state_storage.move +90 -0
  277. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/storage_gas.move +622 -0
  278. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/system_addresses.move +82 -0
  279. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/timestamp.move +88 -0
  280. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/transaction_context.move +262 -0
  281. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/transaction_fee.move +170 -0
  282. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/transaction_validation.move +486 -0
  283. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/util.move +16 -0
  284. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/validator_consensus_info.move +42 -0
  285. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/version.move +115 -0
  286. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/vesting.move +2192 -0
  287. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/voting.move +1282 -0
  288. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/any.move +57 -0
  289. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/aptos_hash.move +253 -0
  290. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/big_vector.move +469 -0
  291. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/bls12381.move +985 -0
  292. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/bls12381_algebra.move +802 -0
  293. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/bn254_algebra.move +855 -0
  294. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/capability.move +193 -0
  295. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/comparator.move +173 -0
  296. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/copyable_any.move +45 -0
  297. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/crypto_algebra.move +351 -0
  298. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/debug.move +278 -0
  299. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ed25519.move +262 -0
  300. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/fixed_point64.move +447 -0
  301. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/from_bcs.move +91 -0
  302. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math128.move +381 -0
  303. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math64.move +336 -0
  304. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math_fixed.move +139 -0
  305. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math_fixed64.move +142 -0
  306. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/multi_ed25519.move +482 -0
  307. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/pool_u64.move +571 -0
  308. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/pool_u64_unbound.move +270 -0
  309. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255.move +1310 -0
  310. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255_bulletproofs.move +253 -0
  311. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255_elgamal.move +234 -0
  312. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255_pedersen.move +158 -0
  313. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/secp256k1.move +114 -0
  314. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/simple_map.move +319 -0
  315. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/smart_table.move +769 -0
  316. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/smart_vector.move +766 -0
  317. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/string_utils.move +148 -0
  318. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/table.move +152 -0
  319. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/table_with_length.move +141 -0
  320. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/type_info.move +351 -0
  321. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/acl.move +46 -0
  322. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/bcs.move +46 -0
  323. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/bit_vector.move +239 -0
  324. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/error.move +88 -0
  325. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/features.move +784 -0
  326. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/fixed_point32.move +295 -0
  327. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/hash.move +8 -0
  328. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/mem.move +34 -0
  329. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/option.move +356 -0
  330. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/signer.move +21 -0
  331. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/string.move +93 -0
  332. package/template/101/aptos-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/vector.move +691 -0
  333. package/template/101/aptos-template/contracts/counter/build/counter/sources/deploy_hook.move +19 -0
  334. package/template/101/aptos-template/contracts/counter/build/counter/sources/entity_key.move +31 -0
  335. package/template/101/aptos-template/contracts/counter/build/counter/sources/events.move +34 -0
  336. package/template/101/aptos-template/contracts/counter/build/counter/sources/init.move +17 -0
  337. package/template/101/aptos-template/contracts/counter/build/counter/sources/world.move +65 -0
  338. package/template/101/aptos-template/package.json +25 -34
  339. package/template/101/aptos-template/pnpm-lock.yaml +6737 -0
  340. package/template/101/aptos-template/scripts/checkBalance.ts +37 -0
  341. package/template/101/aptos-template/scripts/generateAccount.ts +37 -8
  342. package/template/101/aptos-template/src/chain/config.ts +3 -3
  343. package/template/101/aptos-template/src/pages/_app.tsx +7 -1
  344. package/template/101/aptos-template/src/pages/home/index.tsx +50 -35
  345. package/template/101/initia-template/.dockerignore +7 -0
  346. package/template/101/initia-template/.eslintrc.json +3 -0
  347. package/template/101/initia-template/.prettierrc +8 -0
  348. package/template/101/initia-template/Dockerfile +52 -0
  349. package/template/101/initia-template/LICENSE +674 -0
  350. package/template/101/initia-template/README.md +14 -0
  351. package/template/101/initia-template/contracts/counter/.history/initia_localnet/latest.json +6 -0
  352. package/template/101/initia-template/contracts/counter/Move.toml +10 -0
  353. package/template/101/initia-template/contracts/counter/build/counter/BuildInfo.yaml +46 -0
  354. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/counter.mv +0 -0
  355. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/account.mv +0 -0
  356. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/address.mv +0 -0
  357. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/any.mv +0 -0
  358. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/aptos_hash.mv +0 -0
  359. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/base64.mv +0 -0
  360. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/bech32.mv +0 -0
  361. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/bigdecimal.mv +0 -0
  362. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/biguint.mv +0 -0
  363. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/block.mv +0 -0
  364. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/code.mv +0 -0
  365. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/coin.mv +0 -0
  366. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/collection.mv +0 -0
  367. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/comparator.mv +0 -0
  368. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/copyable_any.mv +0 -0
  369. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/cosmos.mv +0 -0
  370. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/debug.mv +0 -0
  371. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/dex.mv +0 -0
  372. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/dispatchable_fungible_asset.mv +0 -0
  373. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/ed25519.mv +0 -0
  374. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/event.mv +0 -0
  375. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/fixed_point64.mv +0 -0
  376. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/from_bcs.mv +0 -0
  377. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/function_info.mv +0 -0
  378. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/fungible_asset.mv +0 -0
  379. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/hex.mv +0 -0
  380. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/initia_nft.mv +0 -0
  381. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/json.mv +0 -0
  382. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/keccak.mv +0 -0
  383. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/managed_coin.mv +0 -0
  384. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/math128.mv +0 -0
  385. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/math64.mv +0 -0
  386. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/minitswap.mv +0 -0
  387. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/multisig.mv +0 -0
  388. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/multisig_v2.mv +0 -0
  389. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/nft.mv +0 -0
  390. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/object.mv +0 -0
  391. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/object_code_deployment.mv +0 -0
  392. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/oracle.mv +0 -0
  393. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/primary_fungible_store.mv +0 -0
  394. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/property_map.mv +0 -0
  395. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/query.mv +0 -0
  396. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/royalty.mv +0 -0
  397. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/secp256k1.mv +0 -0
  398. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/simple_map.mv +0 -0
  399. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/simple_nft.mv +0 -0
  400. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/soul_bound_token.mv +0 -0
  401. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/stableswap.mv +0 -0
  402. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/staking.mv +0 -0
  403. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/string_utils.mv +0 -0
  404. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/table.mv +0 -0
  405. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/table_key.mv +0 -0
  406. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/timestamp.mv +0 -0
  407. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/transaction_context.mv +0 -0
  408. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/InitiaStdlib/type_info.mv +0 -0
  409. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveNursery/acl.mv +0 -0
  410. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveNursery/capability.mv +0 -0
  411. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveNursery/compare.mv +0 -0
  412. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveNursery/guid.mv +0 -0
  413. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/ascii.mv +0 -0
  414. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
  415. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
  416. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
  417. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
  418. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
  419. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
  420. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
  421. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
  422. package/template/101/initia-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
  423. package/template/101/initia-template/contracts/counter/build/counter/source_maps/counter.mvsm +0 -0
  424. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/account.mvsm +0 -0
  425. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/address.mvsm +0 -0
  426. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/any.mvsm +0 -0
  427. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/aptos_hash.mvsm +0 -0
  428. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/base64.mvsm +0 -0
  429. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/bech32.mvsm +0 -0
  430. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/bigdecimal.mvsm +0 -0
  431. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/biguint.mvsm +0 -0
  432. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/block.mvsm +0 -0
  433. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/code.mvsm +0 -0
  434. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/coin.mvsm +0 -0
  435. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/collection.mvsm +0 -0
  436. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/comparator.mvsm +0 -0
  437. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/copyable_any.mvsm +0 -0
  438. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/cosmos.mvsm +0 -0
  439. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/debug.mvsm +0 -0
  440. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/dex.mvsm +0 -0
  441. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/dispatchable_fungible_asset.mvsm +0 -0
  442. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/ed25519.mvsm +0 -0
  443. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/event.mvsm +0 -0
  444. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/fixed_point64.mvsm +0 -0
  445. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/from_bcs.mvsm +0 -0
  446. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/function_info.mvsm +0 -0
  447. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/fungible_asset.mvsm +0 -0
  448. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/hex.mvsm +0 -0
  449. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/initia_nft.mvsm +0 -0
  450. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/json.mvsm +0 -0
  451. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/keccak.mvsm +0 -0
  452. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/managed_coin.mvsm +0 -0
  453. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/math128.mvsm +0 -0
  454. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/math64.mvsm +0 -0
  455. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/minitswap.mvsm +0 -0
  456. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/multisig.mvsm +0 -0
  457. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/multisig_v2.mvsm +0 -0
  458. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/nft.mvsm +0 -0
  459. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/object.mvsm +0 -0
  460. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/object_code_deployment.mvsm +0 -0
  461. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/oracle.mvsm +0 -0
  462. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/primary_fungible_store.mvsm +0 -0
  463. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/property_map.mvsm +0 -0
  464. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/query.mvsm +0 -0
  465. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/royalty.mvsm +0 -0
  466. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/secp256k1.mvsm +0 -0
  467. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/simple_map.mvsm +0 -0
  468. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/simple_nft.mvsm +0 -0
  469. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/soul_bound_token.mvsm +0 -0
  470. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/stableswap.mvsm +0 -0
  471. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/staking.mvsm +0 -0
  472. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/string_utils.mvsm +0 -0
  473. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/table.mvsm +0 -0
  474. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/table_key.mvsm +0 -0
  475. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/timestamp.mvsm +0 -0
  476. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/transaction_context.mvsm +0 -0
  477. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/InitiaStdlib/type_info.mvsm +0 -0
  478. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveNursery/acl.mvsm +0 -0
  479. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveNursery/capability.mvsm +0 -0
  480. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveNursery/compare.mvsm +0 -0
  481. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveNursery/guid.mvsm +0 -0
  482. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/ascii.mvsm +0 -0
  483. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
  484. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
  485. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
  486. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
  487. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
  488. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
  489. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
  490. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
  491. package/template/101/initia-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
  492. package/template/101/initia-template/contracts/counter/build/counter/sources/counter.move +25 -0
  493. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/account.move +386 -0
  494. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/address.move +97 -0
  495. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/any.move +63 -0
  496. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/aptos_hash.move +20 -0
  497. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/base64.move +14 -0
  498. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/bech32.move +37 -0
  499. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/bigdecimal.move +628 -0
  500. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/biguint.move +364 -0
  501. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/block.move +55 -0
  502. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/code.move +357 -0
  503. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/coin.move +430 -0
  504. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/collection.move +674 -0
  505. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/comparator.move +176 -0
  506. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/copyable_any.move +53 -0
  507. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/cosmos.move +572 -0
  508. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/debug.move +352 -0
  509. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/dex.move +2795 -0
  510. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/dispatchable_fungible_asset.move +206 -0
  511. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/ed25519.move +184 -0
  512. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/event.move +42 -0
  513. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/fixed_point64.move +691 -0
  514. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/from_bcs.move +114 -0
  515. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/function_info.move +106 -0
  516. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/fungible_asset.move +1391 -0
  517. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/hex.move +196 -0
  518. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/initia_nft.move +695 -0
  519. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/json.move +266 -0
  520. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/keccak.move +33 -0
  521. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/managed_coin.move +283 -0
  522. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/math128.move +343 -0
  523. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/math64.move +286 -0
  524. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/minitswap.move +3461 -0
  525. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/multisig.move +1011 -0
  526. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/multisig_v2.move +2465 -0
  527. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/nft.move +704 -0
  528. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/object.move +797 -0
  529. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/object_code_deployment.move +157 -0
  530. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/oracle.move +71 -0
  531. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/primary_fungible_store.move +529 -0
  532. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/property_map.move +907 -0
  533. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/query.move +112 -0
  534. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/royalty.move +153 -0
  535. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/secp256k1.move +265 -0
  536. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/simple_map.move +329 -0
  537. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/simple_nft.move +561 -0
  538. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/soul_bound_token.move +862 -0
  539. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/stableswap.move +1659 -0
  540. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/staking.move +2555 -0
  541. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/string_utils.move +234 -0
  542. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/table.move +362 -0
  543. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/table_key.move +47 -0
  544. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/timestamp.move +49 -0
  545. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/transaction_context.move +87 -0
  546. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/InitiaStdlib/type_info.move +80 -0
  547. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveNursery/acl.move +52 -0
  548. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveNursery/capability.move +231 -0
  549. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveNursery/compare.move +76 -0
  550. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveNursery/guid.move +116 -0
  551. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/ascii.move +153 -0
  552. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/bcs.move +17 -0
  553. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/bit_vector.move +179 -0
  554. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/error.move +116 -0
  555. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/fixed_point32.move +315 -0
  556. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/hash.move +31 -0
  557. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/option.move +390 -0
  558. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/signer.move +21 -0
  559. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/string.move +99 -0
  560. package/template/101/initia-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/vector.move +703 -0
  561. package/template/101/initia-template/contracts/counter/sources/counter.move +25 -0
  562. package/template/101/initia-template/dubhe.config.ts +14 -0
  563. package/template/101/initia-template/jest.config.ts +17 -0
  564. package/template/101/initia-template/next-env.d.ts +5 -0
  565. package/template/101/initia-template/next-i18next.config.js +6 -0
  566. package/template/101/initia-template/next.config.js +15 -0
  567. package/template/101/initia-template/package.json +74 -0
  568. package/template/101/initia-template/pnpm-lock.yaml +7204 -0
  569. package/template/101/initia-template/postcss.config.js +6 -0
  570. package/template/101/initia-template/public/discord.svg +9 -0
  571. package/template/101/initia-template/public/fail.svg +12 -0
  572. package/template/101/initia-template/public/favicon.ico +0 -0
  573. package/template/101/initia-template/public/locales/de/common.json +8 -0
  574. package/template/101/initia-template/public/locales/de/footer.json +3 -0
  575. package/template/101/initia-template/public/locales/de/second-page.json +5 -0
  576. package/template/101/initia-template/public/locales/en/common.json +8 -0
  577. package/template/101/initia-template/public/locales/en/footer.json +3 -0
  578. package/template/101/initia-template/public/locales/en/second-page.json +5 -0
  579. package/template/101/initia-template/public/locales/zn/common.json +8 -0
  580. package/template/101/initia-template/public/locales/zn/footer.json +3 -0
  581. package/template/101/initia-template/public/locales/zn/second-page.json +5 -0
  582. package/template/101/initia-template/public/logo.svg +1 -0
  583. package/template/101/initia-template/public/medium.svg +9 -0
  584. package/template/101/initia-template/public/successful.svg +11 -0
  585. package/template/101/initia-template/public/telegram.svg +9 -0
  586. package/template/101/initia-template/public/twitter.svg +9 -0
  587. package/template/101/initia-template/scripts/checkBalance.ts +37 -0
  588. package/template/101/initia-template/scripts/generateAccount.ts +57 -0
  589. package/template/101/initia-template/scripts/storeConfig.ts +52 -0
  590. package/template/101/initia-template/scripts/waitNode.ts +9 -0
  591. package/template/101/initia-template/src/chain/config.ts +5 -0
  592. package/template/101/initia-template/src/css/font-awesome.css +2337 -0
  593. package/template/101/initia-template/src/css/font-awesome.min.css +4 -0
  594. package/template/101/initia-template/src/fonts/FontAwesome.otf +0 -0
  595. package/template/101/initia-template/src/fonts/fontawesome-webfont.eot +0 -0
  596. package/template/101/initia-template/src/fonts/fontawesome-webfont.svg +2671 -0
  597. package/template/101/initia-template/src/fonts/fontawesome-webfont.ttf +0 -0
  598. package/template/101/initia-template/src/fonts/fontawesome-webfont.woff +0 -0
  599. package/template/101/initia-template/src/fonts/fontawesome-webfont.woff2 +0 -0
  600. package/template/101/initia-template/src/jotai/index.tsx +12 -0
  601. package/template/101/initia-template/src/pages/_app.tsx +15 -0
  602. package/template/101/initia-template/src/pages/home/index.tsx +90 -0
  603. package/template/101/initia-template/src/pages/index.tsx +14 -0
  604. package/template/101/initia-template/tailwind.config.js +56 -0
  605. package/template/101/initia-template/tsconfig.json +25 -0
  606. package/template/101/movement-template/.dockerignore +7 -0
  607. package/template/101/movement-template/.eslintrc.json +3 -0
  608. package/template/101/movement-template/.prettierrc +8 -0
  609. package/template/101/movement-template/Dockerfile +56 -0
  610. package/template/101/movement-template/LICENSE +674 -0
  611. package/template/101/movement-template/README.md +14 -0
  612. package/template/101/movement-template/contracts/counter/.history/aptos_local/latest.json +6 -0
  613. package/template/101/movement-template/contracts/counter/Move.toml +16 -0
  614. package/template/101/movement-template/contracts/counter/build/counter/BuildInfo.yaml +60 -0
  615. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/counter_schema.mv +0 -0
  616. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/counter_system.mv +0 -0
  617. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/account.mv +0 -0
  618. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aggregator.mv +0 -0
  619. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aggregator_factory.mv +0 -0
  620. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aggregator_v2.mv +0 -0
  621. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aptos_account.mv +0 -0
  622. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aptos_coin.mv +0 -0
  623. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/aptos_governance.mv +0 -0
  624. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/block.mv +0 -0
  625. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/chain_id.mv +0 -0
  626. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/chain_status.mv +0 -0
  627. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/code.mv +0 -0
  628. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/coin.mv +0 -0
  629. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/config_buffer.mv +0 -0
  630. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/consensus_config.mv +0 -0
  631. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/create_signer.mv +0 -0
  632. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/delegation_pool.mv +0 -0
  633. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/dispatchable_fungible_asset.mv +0 -0
  634. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/dkg.mv +0 -0
  635. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/event.mv +0 -0
  636. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/execution_config.mv +0 -0
  637. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/function_info.mv +0 -0
  638. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/fungible_asset.mv +0 -0
  639. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/gas_schedule.mv +0 -0
  640. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/genesis.mv +0 -0
  641. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/governance_proposal.mv +0 -0
  642. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/guid.mv +0 -0
  643. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/jwk_consensus_config.mv +0 -0
  644. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/jwks.mv +0 -0
  645. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/keyless_account.mv +0 -0
  646. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/managed_coin.mv +0 -0
  647. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/multisig_account.mv +0 -0
  648. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/object.mv +0 -0
  649. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/object_code_deployment.mv +0 -0
  650. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/optional_aggregator.mv +0 -0
  651. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/primary_fungible_store.mv +0 -0
  652. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness.mv +0 -0
  653. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness_api_v0_config.mv +0 -0
  654. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness_config.mv +0 -0
  655. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/randomness_config_seqnum.mv +0 -0
  656. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/reconfiguration.mv +0 -0
  657. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/reconfiguration_state.mv +0 -0
  658. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/reconfiguration_with_dkg.mv +0 -0
  659. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/resource_account.mv +0 -0
  660. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/stake.mv +0 -0
  661. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/staking_config.mv +0 -0
  662. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/staking_contract.mv +0 -0
  663. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/staking_proxy.mv +0 -0
  664. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/state_storage.mv +0 -0
  665. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/storage_gas.mv +0 -0
  666. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/system_addresses.mv +0 -0
  667. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/timestamp.mv +0 -0
  668. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/transaction_context.mv +0 -0
  669. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/transaction_fee.mv +0 -0
  670. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/transaction_validation.mv +0 -0
  671. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/util.mv +0 -0
  672. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/validator_consensus_info.mv +0 -0
  673. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/version.mv +0 -0
  674. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/vesting.mv +0 -0
  675. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosFramework/voting.mv +0 -0
  676. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/any.mv +0 -0
  677. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/aptos_hash.mv +0 -0
  678. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/big_vector.mv +0 -0
  679. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/bls12381.mv +0 -0
  680. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/bls12381_algebra.mv +0 -0
  681. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/bn254_algebra.mv +0 -0
  682. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/capability.mv +0 -0
  683. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/comparator.mv +0 -0
  684. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/copyable_any.mv +0 -0
  685. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/crypto_algebra.mv +0 -0
  686. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/debug.mv +0 -0
  687. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ed25519.mv +0 -0
  688. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/fixed_point64.mv +0 -0
  689. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/from_bcs.mv +0 -0
  690. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math128.mv +0 -0
  691. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math64.mv +0 -0
  692. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math_fixed.mv +0 -0
  693. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/math_fixed64.mv +0 -0
  694. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/multi_ed25519.mv +0 -0
  695. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/pool_u64.mv +0 -0
  696. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/pool_u64_unbound.mv +0 -0
  697. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255.mv +0 -0
  698. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255_bulletproofs.mv +0 -0
  699. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255_elgamal.mv +0 -0
  700. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/ristretto255_pedersen.mv +0 -0
  701. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/secp256k1.mv +0 -0
  702. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/simple_map.mv +0 -0
  703. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/smart_table.mv +0 -0
  704. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/smart_vector.mv +0 -0
  705. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/string_utils.mv +0 -0
  706. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/table.mv +0 -0
  707. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/table_with_length.mv +0 -0
  708. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/AptosStdlib/type_info.mv +0 -0
  709. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/acl.mv +0 -0
  710. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
  711. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
  712. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
  713. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/features.mv +0 -0
  714. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
  715. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
  716. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/mem.mv +0 -0
  717. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
  718. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
  719. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
  720. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
  721. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/deploy_hook.mv +0 -0
  722. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/entity_key.mv +0 -0
  723. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/events.mv +0 -0
  724. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/init.mv +0 -0
  725. package/template/101/movement-template/contracts/counter/build/counter/bytecode_modules/world.mv +0 -0
  726. package/template/101/movement-template/contracts/counter/build/counter/source_maps/counter_schema.mvsm +0 -0
  727. package/template/101/movement-template/contracts/counter/build/counter/source_maps/counter_system.mvsm +0 -0
  728. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/account.mvsm +0 -0
  729. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aggregator.mvsm +0 -0
  730. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aggregator_factory.mvsm +0 -0
  731. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aggregator_v2.mvsm +0 -0
  732. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aptos_account.mvsm +0 -0
  733. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aptos_coin.mvsm +0 -0
  734. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/aptos_governance.mvsm +0 -0
  735. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/block.mvsm +0 -0
  736. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/chain_id.mvsm +0 -0
  737. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/chain_status.mvsm +0 -0
  738. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/code.mvsm +0 -0
  739. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/coin.mvsm +0 -0
  740. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/config_buffer.mvsm +0 -0
  741. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/consensus_config.mvsm +0 -0
  742. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/create_signer.mvsm +0 -0
  743. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/delegation_pool.mvsm +0 -0
  744. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/dispatchable_fungible_asset.mvsm +0 -0
  745. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/dkg.mvsm +0 -0
  746. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/event.mvsm +0 -0
  747. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/execution_config.mvsm +0 -0
  748. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/function_info.mvsm +0 -0
  749. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/fungible_asset.mvsm +0 -0
  750. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/gas_schedule.mvsm +0 -0
  751. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/genesis.mvsm +0 -0
  752. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/governance_proposal.mvsm +0 -0
  753. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/guid.mvsm +0 -0
  754. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/jwk_consensus_config.mvsm +0 -0
  755. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/jwks.mvsm +0 -0
  756. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/keyless_account.mvsm +0 -0
  757. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/managed_coin.mvsm +0 -0
  758. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/multisig_account.mvsm +0 -0
  759. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/object.mvsm +0 -0
  760. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/object_code_deployment.mvsm +0 -0
  761. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/optional_aggregator.mvsm +0 -0
  762. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/primary_fungible_store.mvsm +0 -0
  763. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness.mvsm +0 -0
  764. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness_api_v0_config.mvsm +0 -0
  765. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness_config.mvsm +0 -0
  766. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/randomness_config_seqnum.mvsm +0 -0
  767. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/reconfiguration.mvsm +0 -0
  768. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/reconfiguration_state.mvsm +0 -0
  769. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/reconfiguration_with_dkg.mvsm +0 -0
  770. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/resource_account.mvsm +0 -0
  771. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/stake.mvsm +0 -0
  772. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/staking_config.mvsm +0 -0
  773. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/staking_contract.mvsm +0 -0
  774. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/staking_proxy.mvsm +0 -0
  775. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/state_storage.mvsm +0 -0
  776. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/storage_gas.mvsm +0 -0
  777. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/system_addresses.mvsm +0 -0
  778. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/timestamp.mvsm +0 -0
  779. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/transaction_context.mvsm +0 -0
  780. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/transaction_fee.mvsm +0 -0
  781. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/transaction_validation.mvsm +0 -0
  782. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/util.mvsm +0 -0
  783. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/validator_consensus_info.mvsm +0 -0
  784. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/version.mvsm +0 -0
  785. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/vesting.mvsm +0 -0
  786. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosFramework/voting.mvsm +0 -0
  787. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/any.mvsm +0 -0
  788. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/aptos_hash.mvsm +0 -0
  789. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/big_vector.mvsm +0 -0
  790. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/bls12381.mvsm +0 -0
  791. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/bls12381_algebra.mvsm +0 -0
  792. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/bn254_algebra.mvsm +0 -0
  793. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/capability.mvsm +0 -0
  794. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/comparator.mvsm +0 -0
  795. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/copyable_any.mvsm +0 -0
  796. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/crypto_algebra.mvsm +0 -0
  797. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/debug.mvsm +0 -0
  798. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ed25519.mvsm +0 -0
  799. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/fixed_point64.mvsm +0 -0
  800. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/from_bcs.mvsm +0 -0
  801. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math128.mvsm +0 -0
  802. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math64.mvsm +0 -0
  803. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math_fixed.mvsm +0 -0
  804. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/math_fixed64.mvsm +0 -0
  805. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/multi_ed25519.mvsm +0 -0
  806. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/pool_u64.mvsm +0 -0
  807. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/pool_u64_unbound.mvsm +0 -0
  808. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255.mvsm +0 -0
  809. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255_bulletproofs.mvsm +0 -0
  810. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255_elgamal.mvsm +0 -0
  811. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/ristretto255_pedersen.mvsm +0 -0
  812. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/secp256k1.mvsm +0 -0
  813. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/simple_map.mvsm +0 -0
  814. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/smart_table.mvsm +0 -0
  815. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/smart_vector.mvsm +0 -0
  816. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/string_utils.mvsm +0 -0
  817. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/table.mvsm +0 -0
  818. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/table_with_length.mvsm +0 -0
  819. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/AptosStdlib/type_info.mvsm +0 -0
  820. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/acl.mvsm +0 -0
  821. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
  822. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
  823. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
  824. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/features.mvsm +0 -0
  825. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
  826. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
  827. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/mem.mvsm +0 -0
  828. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
  829. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
  830. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
  831. package/template/101/movement-template/contracts/counter/build/counter/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
  832. package/template/101/movement-template/contracts/counter/build/counter/source_maps/deploy_hook.mvsm +0 -0
  833. package/template/101/movement-template/contracts/counter/build/counter/source_maps/entity_key.mvsm +0 -0
  834. package/template/101/movement-template/contracts/counter/build/counter/source_maps/events.mvsm +0 -0
  835. package/template/101/movement-template/contracts/counter/build/counter/source_maps/init.mvsm +0 -0
  836. package/template/101/movement-template/contracts/counter/build/counter/source_maps/world.mvsm +0 -0
  837. package/template/101/movement-template/contracts/counter/build/counter/sources/counter_schema.move +59 -0
  838. package/template/101/movement-template/contracts/counter/build/counter/sources/counter_system.move +11 -0
  839. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/account.move +1604 -0
  840. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aggregator.move +48 -0
  841. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aggregator_factory.move +83 -0
  842. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aggregator_v2.move +473 -0
  843. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aptos_account.move +480 -0
  844. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aptos_coin.move +204 -0
  845. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/aptos_governance.move +1390 -0
  846. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/block.move +349 -0
  847. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/chain_id.move +41 -0
  848. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/chain_status.move +48 -0
  849. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/code.move +367 -0
  850. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/coin.move +2014 -0
  851. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/config_buffer.move +101 -0
  852. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/consensus_config.move +77 -0
  853. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/create_signer.move +21 -0
  854. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/delegation_pool.move +5568 -0
  855. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/dispatchable_fungible_asset.move +228 -0
  856. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/dkg.move +121 -0
  857. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/event.move +92 -0
  858. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/execution_config.move +66 -0
  859. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/function_info.move +100 -0
  860. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/fungible_asset.move +1673 -0
  861. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/gas_schedule.move +176 -0
  862. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/genesis.move +549 -0
  863. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/governance_proposal.move +23 -0
  864. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/guid.move +68 -0
  865. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/jwk_consensus_config.move +148 -0
  866. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/jwks.move +889 -0
  867. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/keyless_account.move +312 -0
  868. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/managed_coin.move +267 -0
  869. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/multisig_account.move +2594 -0
  870. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/object.move +1095 -0
  871. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/object_code_deployment.move +147 -0
  872. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/optional_aggregator.move +286 -0
  873. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/primary_fungible_store.move +405 -0
  874. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness.move +574 -0
  875. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness_api_v0_config.move +57 -0
  876. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness_config.move +153 -0
  877. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/randomness_config_seqnum.move +49 -0
  878. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/reconfiguration.move +222 -0
  879. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/reconfiguration_state.move +132 -0
  880. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/reconfiguration_with_dkg.move +69 -0
  881. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/resource_account.move +267 -0
  882. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/stake.move +3185 -0
  883. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/staking_config.move +686 -0
  884. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/staking_contract.move +1627 -0
  885. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/staking_proxy.move +228 -0
  886. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/state_storage.move +90 -0
  887. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/storage_gas.move +622 -0
  888. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/system_addresses.move +82 -0
  889. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/timestamp.move +88 -0
  890. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/transaction_context.move +262 -0
  891. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/transaction_fee.move +170 -0
  892. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/transaction_validation.move +486 -0
  893. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/util.move +16 -0
  894. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/validator_consensus_info.move +42 -0
  895. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/version.move +115 -0
  896. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/vesting.move +2192 -0
  897. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosFramework/voting.move +1282 -0
  898. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/any.move +57 -0
  899. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/aptos_hash.move +253 -0
  900. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/big_vector.move +469 -0
  901. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/bls12381.move +985 -0
  902. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/bls12381_algebra.move +802 -0
  903. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/bn254_algebra.move +855 -0
  904. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/capability.move +193 -0
  905. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/comparator.move +173 -0
  906. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/copyable_any.move +45 -0
  907. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/crypto_algebra.move +351 -0
  908. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/debug.move +278 -0
  909. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ed25519.move +262 -0
  910. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/fixed_point64.move +447 -0
  911. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/from_bcs.move +91 -0
  912. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math128.move +381 -0
  913. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math64.move +336 -0
  914. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math_fixed.move +139 -0
  915. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/math_fixed64.move +142 -0
  916. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/multi_ed25519.move +482 -0
  917. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/pool_u64.move +571 -0
  918. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/pool_u64_unbound.move +270 -0
  919. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255.move +1310 -0
  920. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255_bulletproofs.move +253 -0
  921. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255_elgamal.move +234 -0
  922. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/ristretto255_pedersen.move +158 -0
  923. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/secp256k1.move +114 -0
  924. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/simple_map.move +319 -0
  925. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/smart_table.move +769 -0
  926. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/smart_vector.move +766 -0
  927. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/string_utils.move +148 -0
  928. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/table.move +152 -0
  929. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/table_with_length.move +141 -0
  930. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/AptosStdlib/type_info.move +351 -0
  931. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/acl.move +46 -0
  932. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/bcs.move +46 -0
  933. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/bit_vector.move +239 -0
  934. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/error.move +88 -0
  935. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/features.move +784 -0
  936. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/fixed_point32.move +295 -0
  937. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/hash.move +8 -0
  938. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/mem.move +34 -0
  939. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/option.move +356 -0
  940. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/signer.move +21 -0
  941. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/string.move +93 -0
  942. package/template/101/movement-template/contracts/counter/build/counter/sources/dependencies/MoveStdlib/vector.move +691 -0
  943. package/template/101/movement-template/contracts/counter/build/counter/sources/deploy_hook.move +19 -0
  944. package/template/101/movement-template/contracts/counter/build/counter/sources/entity_key.move +31 -0
  945. package/template/101/movement-template/contracts/counter/build/counter/sources/events.move +34 -0
  946. package/template/101/movement-template/contracts/counter/build/counter/sources/init.move +17 -0
  947. package/template/101/movement-template/contracts/counter/build/counter/sources/world.move +65 -0
  948. package/template/101/movement-template/contracts/counter/sources/codegen/eps/events.move +34 -0
  949. package/template/101/movement-template/contracts/counter/sources/codegen/eps/world.move +65 -0
  950. package/template/101/movement-template/contracts/counter/sources/codegen/init.move +17 -0
  951. package/template/101/movement-template/contracts/counter/sources/codegen/schemas/counter.move +59 -0
  952. package/template/101/movement-template/contracts/counter/sources/entity_key.move +31 -0
  953. package/template/101/movement-template/contracts/counter/sources/script/deploy_hook.move +19 -0
  954. package/template/101/movement-template/contracts/counter/sources/system/counter_system.move +11 -0
  955. package/template/101/movement-template/dubhe.config.ts +13 -0
  956. package/template/101/movement-template/jest.config.ts +17 -0
  957. package/template/101/movement-template/next-env.d.ts +5 -0
  958. package/template/101/movement-template/next-i18next.config.js +6 -0
  959. package/template/101/movement-template/next.config.js +15 -0
  960. package/template/101/movement-template/package.json +74 -0
  961. package/template/101/movement-template/pnpm-lock.yaml +6737 -0
  962. package/template/101/movement-template/postcss.config.js +6 -0
  963. package/template/101/movement-template/public/discord.svg +9 -0
  964. package/template/101/movement-template/public/fail.svg +12 -0
  965. package/template/101/movement-template/public/favicon.ico +0 -0
  966. package/template/101/movement-template/public/locales/de/common.json +8 -0
  967. package/template/101/movement-template/public/locales/de/footer.json +3 -0
  968. package/template/101/movement-template/public/locales/de/second-page.json +5 -0
  969. package/template/101/movement-template/public/locales/en/common.json +8 -0
  970. package/template/101/movement-template/public/locales/en/footer.json +3 -0
  971. package/template/101/movement-template/public/locales/en/second-page.json +5 -0
  972. package/template/101/movement-template/public/locales/zn/common.json +8 -0
  973. package/template/101/movement-template/public/locales/zn/footer.json +3 -0
  974. package/template/101/movement-template/public/locales/zn/second-page.json +5 -0
  975. package/template/101/movement-template/public/logo.svg +1 -0
  976. package/template/101/movement-template/public/medium.svg +9 -0
  977. package/template/101/movement-template/public/successful.svg +11 -0
  978. package/template/101/movement-template/public/telegram.svg +9 -0
  979. package/template/101/movement-template/public/twitter.svg +9 -0
  980. package/template/101/movement-template/scripts/checkBalance.ts +37 -0
  981. package/template/101/movement-template/scripts/generateAccount.ts +54 -0
  982. package/template/101/movement-template/scripts/storeConfig.ts +54 -0
  983. package/template/101/movement-template/src/chain/config.ts +7 -0
  984. package/template/101/movement-template/src/css/font-awesome.css +2337 -0
  985. package/template/101/movement-template/src/css/font-awesome.min.css +4 -0
  986. package/template/101/movement-template/src/fonts/FontAwesome.otf +0 -0
  987. package/template/101/movement-template/src/fonts/fontawesome-webfont.eot +0 -0
  988. package/template/101/movement-template/src/fonts/fontawesome-webfont.svg +2671 -0
  989. package/template/101/movement-template/src/fonts/fontawesome-webfont.ttf +0 -0
  990. package/template/101/movement-template/src/fonts/fontawesome-webfont.woff +0 -0
  991. package/template/101/movement-template/src/fonts/fontawesome-webfont.woff2 +0 -0
  992. package/template/101/movement-template/src/jotai/index.tsx +12 -0
  993. package/template/101/movement-template/src/pages/_app.tsx +15 -0
  994. package/template/101/movement-template/src/pages/home/index.tsx +93 -0
  995. package/template/101/movement-template/src/pages/index.tsx +12 -0
  996. package/template/101/movement-template/tailwind.config.js +56 -0
  997. package/template/101/movement-template/tsconfig.json +25 -0
  998. package/template/101/rooch-template/package.json +3 -3
  999. package/template/101/sui-template/contracts/counter/Move.toml +4 -5
  1000. package/template/{nextjs/sui-template/contracts/counter/sources/script → 101/sui-template/contracts/counter/sources/scripts}/deploy_hook.move +13 -2
  1001. package/template/{nextjs/sui-template/contracts/counter/sources/script → 101/sui-template/contracts/counter/sources/scripts}/migrate.move +1 -0
  1002. package/template/101/sui-template/contracts/dubhe-framework/Move.toml +13 -0
  1003. package/template/{nextjs/sui-template/localnet → 101/sui-template/contracts}/dubhe-framework/sources/core/dapps/schema.move +31 -1
  1004. package/template/{nextjs/sui-template/localnet → 101/sui-template/contracts}/dubhe-framework/sources/core/dapps/system.move +28 -2
  1005. package/template/{contract/sui-template/localnet → 101/sui-template/contracts}/dubhe-framework/sources/core/dapps/tests.move +16 -2
  1006. package/template/101/sui-template/package.json +10 -9
  1007. package/template/101/sui-template/src/chain/config.ts +2 -2
  1008. package/template/cocos/sui-template/package.json +4 -4
  1009. package/template/contract/sui-template/contracts/counter/Move.toml +4 -5
  1010. package/template/{101/sui-template/contracts/counter/sources/script → contract/sui-template/contracts/counter/sources/scripts}/deploy_hook.move +20 -9
  1011. package/template/contract/sui-template/contracts/dubhe-framework/Move.toml +13 -0
  1012. package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/core/dapps/schema.move +31 -1
  1013. package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/core/dapps/system.move +28 -2
  1014. package/template/{101/sui-template/localnet → contract/sui-template/contracts}/dubhe-framework/sources/core/dapps/tests.move +16 -2
  1015. package/template/contract/sui-template/package.json +8 -6
  1016. package/template/nextjs/sui-template/contracts/counter/Move.toml +4 -5
  1017. package/template/{contract/sui-template/contracts/counter/sources/script → nextjs/sui-template/contracts/counter/sources/scripts}/deploy_hook.move +20 -9
  1018. package/template/nextjs/sui-template/contracts/dubhe-framework/Move.toml +13 -0
  1019. package/template/{101/sui-template/localnet → nextjs/sui-template/contracts}/dubhe-framework/sources/core/dapps/schema.move +31 -1
  1020. package/template/{101/sui-template/localnet → nextjs/sui-template/contracts}/dubhe-framework/sources/core/dapps/system.move +28 -2
  1021. package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/core/dapps/tests.move +16 -2
  1022. package/template/nextjs/sui-template/package.json +10 -9
  1023. package/template/nextjs/sui-template/src/chain/config.ts +3 -3
  1024. package/template/101/aptos-template/scripts/formatAccount.ts +0 -35
  1025. package/template/101/sui-template/localnet/dubhe-framework/Move.toml +0 -29
  1026. package/template/101/sui-template/scripts/deployment/common.ts +0 -60
  1027. package/template/101/sui-template/scripts/deployment/localnet/deploy.ts +0 -42
  1028. package/template/101/sui-template/scripts/deployment/testnet/deploy.ts +0 -48
  1029. package/template/101/sui-template/scripts/deployment/types.ts +0 -13
  1030. package/template/101/sui-template/scripts/framework/common.ts +0 -17
  1031. package/template/101/sui-template/scripts/framework/deploy.ts +0 -199
  1032. package/template/101/sui-template/scripts/framework/parse-history.ts +0 -76
  1033. package/template/101/sui-template/scripts/framework/types.ts +0 -8
  1034. package/template/contract/sui-template/localnet/dubhe-framework/Move.toml +0 -29
  1035. package/template/contract/sui-template/scripts/deployment/common.ts +0 -45
  1036. package/template/contract/sui-template/scripts/deployment/localnet/deploy.ts +0 -42
  1037. package/template/contract/sui-template/scripts/deployment/testnet/deploy.ts +0 -48
  1038. package/template/contract/sui-template/scripts/deployment/types.ts +0 -13
  1039. package/template/contract/sui-template/scripts/framework/common.ts +0 -17
  1040. package/template/contract/sui-template/scripts/framework/deploy.ts +0 -199
  1041. package/template/contract/sui-template/scripts/framework/parse-history.ts +0 -76
  1042. package/template/contract/sui-template/scripts/framework/types.ts +0 -8
  1043. package/template/nextjs/sui-template/localnet/dubhe-framework/Move.toml +0 -29
  1044. package/template/nextjs/sui-template/scripts/deployment/common.ts +0 -60
  1045. package/template/nextjs/sui-template/scripts/deployment/localnet/deploy.ts +0 -42
  1046. package/template/nextjs/sui-template/scripts/deployment/testnet/deploy.ts +0 -48
  1047. package/template/nextjs/sui-template/scripts/deployment/types.ts +0 -13
  1048. package/template/nextjs/sui-template/scripts/framework/common.ts +0 -17
  1049. package/template/nextjs/sui-template/scripts/framework/deploy.ts +0 -199
  1050. package/template/nextjs/sui-template/scripts/framework/parse-history.ts +0 -76
  1051. package/template/nextjs/sui-template/scripts/framework/types.ts +0 -8
  1052. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/core/dapps/metadata.move +0 -0
  1053. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/schema.move +0 -0
  1054. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/system.move +0 -0
  1055. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/tests.move +0 -0
  1056. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/frames/utils/type_info.move +0 -0
  1057. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/double_map.move +0 -0
  1058. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/map.move +0 -0
  1059. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/migrate.move +0 -0
  1060. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/tests.move +0 -0
  1061. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/value.move +0 -0
  1062. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/tests/init.move +0 -0
  1063. /package/template/101/sui-template/{localnet → contracts}/dubhe-framework/tests/obelisk_framework_tests.move +0 -0
  1064. /package/template/{101/sui-template/contracts/counter/sources/script → contract/sui-template/contracts/counter/sources/scripts}/migrate.move +0 -0
  1065. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/core/dapps/metadata.move +0 -0
  1066. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/schema.move +0 -0
  1067. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/system.move +0 -0
  1068. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/tests.move +0 -0
  1069. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/frames/utils/type_info.move +0 -0
  1070. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/double_map.move +0 -0
  1071. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/map.move +0 -0
  1072. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/migrate.move +0 -0
  1073. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/tests.move +0 -0
  1074. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/value.move +0 -0
  1075. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/tests/init.move +0 -0
  1076. /package/template/contract/sui-template/{localnet → contracts}/dubhe-framework/tests/obelisk_framework_tests.move +0 -0
  1077. /package/template/{contract/sui-template/contracts/counter/sources/script → nextjs/sui-template/contracts/counter/sources/scripts}/migrate.move +0 -0
  1078. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/core/dapps/metadata.move +0 -0
  1079. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/schema.move +0 -0
  1080. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/system.move +0 -0
  1081. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/core/root/tests.move +0 -0
  1082. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/frames/utils/type_info.move +0 -0
  1083. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/double_map.move +0 -0
  1084. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/map.move +0 -0
  1085. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/migrate.move +0 -0
  1086. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/tests.move +0 -0
  1087. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/sources/storages/value.move +0 -0
  1088. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/tests/init.move +0 -0
  1089. /package/template/nextjs/sui-template/{localnet → contracts}/dubhe-framework/tests/obelisk_framework_tests.move +0 -0
@@ -0,0 +1,3461 @@
1
+ module initia_std::minitswap {
2
+ use std::signer;
3
+ use std::error;
4
+ use std::event;
5
+ use std::option::{Self, Option};
6
+ use std::hash::{sha2_256, sha3_256};
7
+ use std::vector;
8
+
9
+ use initia_std::address::to_sdk;
10
+ use initia_std::base64;
11
+ use initia_std::bcs;
12
+ use initia_std::block;
13
+ use initia_std::cosmos;
14
+ use initia_std::bigdecimal::{Self, BigDecimal};
15
+ use initia_std::table::{Self, Table};
16
+ use initia_std::table_key;
17
+ use initia_std::object::{Self, ExtendRef, Object};
18
+ use initia_std::stableswap::{Self, Pool};
19
+ use initia_std::string::{Self, String};
20
+ use initia_std::fungible_asset::{Self, FungibleAsset, Metadata};
21
+ use initia_std::primary_fungible_store;
22
+ use initia_std::coin;
23
+ use initia_std::json;
24
+ use initia_std::string_utils::to_string;
25
+ use initia_std::hex;
26
+
27
+ // Errors
28
+ const EUNAUTHORIZED: u64 = 1;
29
+ const EPOOL_NOT_FOUND: u64 = 2;
30
+ const ENOT_INIT: u64 = 3;
31
+ const ENOT_ENOUGH_BALANCE: u64 = 4;
32
+ const EINACTIVE: u64 = 5;
33
+ const ENOT_SHARE_TOKEN: u64 = 6;
34
+ const EIBC_OP_INIT_PRICE_TOO_LOW: u64 = 7;
35
+ const EMAX_CHANGE: u64 = 8;
36
+ const EMIN_RETURN: u64 = 9;
37
+ const EPOOL_SIZE: u64 = 10;
38
+ const EVM_TYPE: u64 = 12;
39
+ const EAMOUNT_MISMATCH: u64 = 13;
40
+ const EEMERGENCY: u64 = 14;
41
+ const ERELEASE_TIME: u64 = 15;
42
+ const EINVAILD_METADATA: u64 = 16;
43
+ const ESMALL_ARB_PROFIT: u64 = 17;
44
+ const EVIRTUAL_POOL_EXISTS: u64 = 18;
45
+
46
+ const A_PRECISION: u256 = 100;
47
+ const U64_MAX: u128 = 18_446_744_073_709_551_615;
48
+ const SYMBOL: vector<u8> = b"uoinit";
49
+
50
+ // VM types
51
+ const MOVE: u8 = 0;
52
+ const COSMWASM: u8 = 1;
53
+ const EVM: u8 = 2;
54
+
55
+ const MAX_LIMIT: u64 = 30;
56
+
57
+ struct ModuleStore has key {
58
+ /// Extend reference
59
+ extend_ref: ExtendRef,
60
+ /// List of pools
61
+ pools: Table<Object<Metadata>, Pools>,
62
+ /// Max pool size change rate
63
+ max_change_rate: BigDecimal,
64
+ /// If this state is True, every depositor related transaction sent to Minitswap will fail
65
+ emergency_state: bool,
66
+ /// admin address who can change emergency_state and pool active
67
+ admin: address,
68
+
69
+ // deposit unbond related
70
+
71
+ /// Not real balance, the amount for shares
72
+ depositor_owned_init: u64,
73
+ /// unbond period
74
+ unbond_period: u64,
75
+ /// unbond wait list. key: address + release time
76
+ unbond_wait_list: Table<vector<u8>, UnbondEntity>,
77
+ /// mint capability of liquidity token
78
+ mint_cap: coin::MintCapability,
79
+ /// burn capability of liquidity token
80
+ burn_cap: coin::BurnCapability,
81
+
82
+ // stable swap configs
83
+
84
+ /// ANN
85
+ stableswap_ann: u64,
86
+ /// swap fee rate
87
+ stableswap_swap_fee_rate: BigDecimal,
88
+
89
+ // swap related configs
90
+
91
+ /// Swap fee rate
92
+ swap_fee_rate: BigDecimal,
93
+ /// Swap fee rate
94
+ arb_fee_rate: BigDecimal,
95
+
96
+ // in house arb configs
97
+
98
+ /// The amount of uinit that the user will take during finalization of in-house arb
99
+ trigger_fee: u64,
100
+ /// The minimum time needed to trigger the arbitrage
101
+ min_arb_profit: u64,
102
+ /// How much minimum pegkeeper ibc_op_init balance is needed to trigger the arb
103
+ ibc_timeout: u64,
104
+ /// Maximum arb_batch size
105
+ max_arb_batch: u64,
106
+ /// Minimum arb interval
107
+ min_arb_interval: u64,
108
+ /// global arb map. index => Virtual Pool
109
+ global_arb_batch_map: Table<vector<u8>, Object<VirtualPool>>,
110
+ /// arb batc index
111
+ arb_batch_index: u64
112
+ }
113
+
114
+ struct VirtualPool has key {
115
+ /// IBC OP init metadata
116
+ ibc_op_init_metadata: Object<Metadata>,
117
+ /// Extend reference
118
+ extend_ref: ExtendRef,
119
+ /// Z. Virtual pool size
120
+ pool_size: u64,
121
+ /// V. Recover velocity. Real recover amount = Vt
122
+ recover_velocity: BigDecimal,
123
+ /// R_max max recover ratio
124
+ max_ratio: BigDecimal,
125
+ /// f. Flexibility
126
+ recover_param: BigDecimal,
127
+ /// Virtual pool amount of INIT
128
+ init_pool_amount: u64,
129
+ /// Virtual pool amount of ibc_op_INIT
130
+ ibc_op_init_pool_amount: u64,
131
+ /// last recovered timestamp
132
+ last_recovered_timestamp: u64,
133
+ /// INIT balance of peg keeper (negative value)
134
+ virtual_init_balance: u64,
135
+ /// ibc op INIT balance of peg keeper
136
+ virtual_ibc_op_init_balance: u64,
137
+ /// ibc op INIT balance of peg keeper which also include unprocessed arb_batch state.
138
+ peg_keeper_owned_ibc_op_init_balance: u64,
139
+ /// ANN
140
+ ann: u64,
141
+ /// Is pool in active
142
+ active: bool,
143
+
144
+ // in house arb configs
145
+
146
+ /// op bridge id
147
+ op_bridge_id: u64,
148
+ /// ibc channel
149
+ ibc_channel: String,
150
+ /// layer 2 vm type. One of MOVE or COSMWASM
151
+ vm_type: u8,
152
+ /// hook contract
153
+ hook_contract: String,
154
+ /// ongoing in house arb info
155
+ arb_batch_map: Table<vector<u8>, ArbInfo>
156
+ }
157
+
158
+ struct Pools has store {
159
+ op_bridge_id: u64,
160
+ ibc_channel: String,
161
+ virtual_pool: Option<Object<VirtualPool>>,
162
+ stableswap_pool: Option<Object<Pool>>
163
+ }
164
+
165
+ struct UnbondEntity has store {
166
+ // owner of unbond entity
167
+ account: address,
168
+ // share amount that burnt
169
+ share_amount: u64,
170
+ // init withdraw amount
171
+ withdraw_amount: u64,
172
+ // release timestamp
173
+ release_time: u64
174
+ }
175
+
176
+ struct ArbInfo has store {
177
+ // executed timestamp
178
+ executed_time: u64,
179
+ // init amount that peg keeper swapped
180
+ init_used: u64,
181
+ // amount of ibc op init sent
182
+ ibc_op_init_sent: u64,
183
+ // triggering fee
184
+ triggering_fee: u64
185
+ }
186
+
187
+ #[event]
188
+ /// Event emitted when virtual pool created
189
+ struct CreatePoolEvent has drop, store {
190
+ ibc_op_init_metadata: Object<Metadata>,
191
+ recover_velocity: BigDecimal,
192
+ pool_size: u64,
193
+ ann: u64,
194
+ max_ratio: BigDecimal,
195
+ recover_param: BigDecimal
196
+ }
197
+
198
+ #[event]
199
+ /// Event emitted when virtual pool size changed
200
+ struct ChangePoolSizeEvent has drop, store {
201
+ ibc_op_init_metadata: Object<Metadata>,
202
+ pool_size: u64,
203
+ depositor_owned_init_increase: u64
204
+ }
205
+
206
+ #[event]
207
+ /// Event emitted when update param of virtual pool
208
+ struct UpdatePoolParamsEvent has drop, store {
209
+ ibc_op_init_metadata: Object<Metadata>,
210
+ recover_velocity: Option<BigDecimal>,
211
+ ann: Option<u64>,
212
+ max_ratio: Option<BigDecimal>,
213
+ recover_param: Option<BigDecimal>,
214
+ hook_contract: Option<String>
215
+ }
216
+
217
+ #[event]
218
+ /// Event emitted when provide.
219
+ struct ProvideEvent has drop, store {
220
+ provide_amount: u64,
221
+ share_amount: u64
222
+ }
223
+
224
+ #[event]
225
+ /// Event emitted when unbond.
226
+ struct UnbondEvent has drop, store {
227
+ account: address,
228
+ share_amount: u64,
229
+ withdraw_amount: u64,
230
+ release_time: u64
231
+ }
232
+
233
+ #[event]
234
+ /// Event emitted when withdraw unbond.
235
+ struct WithdrawUnbondEvent has drop, store {
236
+ account: address,
237
+ share_amount: u64,
238
+ withdraw_amount: u64,
239
+ release_time: u64
240
+ }
241
+
242
+ #[event]
243
+ /// Event emitted when swap token.
244
+ struct SwapEvent has drop, store {
245
+ offer_coin: Object<Metadata>,
246
+ return_coin: Object<Metadata>,
247
+ peg_keeper_offer_amount: u64, // always init
248
+ peg_keeper_return_amount: u64, // always ibc op init
249
+ offer_amount: u64,
250
+ return_amount: u64,
251
+ init_swap_fee_amount: u64,
252
+ init_arb_fee_amount: u64,
253
+ ibc_op_init_swap_fee_amount: u64,
254
+ ibc_op_init_arb_fee_amount: u64
255
+ }
256
+
257
+ #[event]
258
+ /// Event emitted when stable swap pool created
259
+ struct CreateStableswapPoolEvent has drop, store {
260
+ ibc_op_init_metadata: Object<Metadata>,
261
+ pool: Object<Pool>
262
+ }
263
+
264
+ #[event]
265
+ /// Event emitted when arb initiated
266
+ struct InitiateArbEvent has drop, store {
267
+ arb_index: u64,
268
+ pool: Object<VirtualPool>,
269
+ executed_time: u64,
270
+ init_used: u64,
271
+ ibc_op_init_sent: u64,
272
+ triggering_fee: u64
273
+ }
274
+
275
+ #[event]
276
+ /// Event emitted when arb finalized
277
+ struct FinalizeArbEvent has drop, store {
278
+ arb_index: u64,
279
+ pool: Object<VirtualPool>,
280
+ init_used: u64,
281
+ ibc_op_init_sent: u64,
282
+ triggering_fee: u64
283
+ }
284
+
285
+ #[event]
286
+ /// Event emitted when arb reverted
287
+ struct RevertArbEvent has drop, store {
288
+ arb_index: u64,
289
+ pool: Object<VirtualPool>,
290
+ init_used: u64,
291
+ ibc_op_init_sent: u64,
292
+ triggering_fee: u64
293
+ }
294
+
295
+ fun init_module(chain: &signer) {
296
+ let constructor_ref = object::create_object(@initia_std, false);
297
+ let extend_ref = object::generate_extend_ref(&constructor_ref);
298
+
299
+ let (mint_cap, burn_cap, _) =
300
+ coin::initialize(
301
+ chain,
302
+ option::some(U64_MAX),
303
+ string::utf8(b"minitswap liquidity token"),
304
+ string::utf8(SYMBOL),
305
+ 6,
306
+ string::utf8(b""),
307
+ string::utf8(b"")
308
+ );
309
+
310
+ move_to(
311
+ chain,
312
+ ModuleStore {
313
+ extend_ref,
314
+ pools: table::new(),
315
+ max_change_rate: bigdecimal::from_ratio_u64(1, 10), // 10%
316
+ emergency_state: false,
317
+ admin: @initia_std,
318
+ depositor_owned_init: 0,
319
+ unbond_period: 60 * 60 * 24 * 7, // 7days
320
+ unbond_wait_list: table::new(),
321
+ mint_cap,
322
+ burn_cap,
323
+ stableswap_ann: 3000,
324
+ stableswap_swap_fee_rate: bigdecimal::from_ratio_u64(1, 1000), // 0.1%
325
+ swap_fee_rate: bigdecimal::from_ratio_u64(1, 1000), // 0.1%
326
+ arb_fee_rate: bigdecimal::from_ratio_u64(1, 1000), // 0.1% TODO: set initial value
327
+ trigger_fee: 50000, // 0.5 init TODO: set initial value
328
+ min_arb_profit: 1000000, // 1 init TODO: set initial value
329
+ ibc_timeout: 60 * 10, // 10 mins
330
+ max_arb_batch: 20,
331
+ min_arb_interval: 60 * 60 * 24, // 1 day TODO: set initial value
332
+ global_arb_batch_map: table::new(),
333
+ arb_batch_index: 0
334
+ }
335
+ );
336
+ }
337
+
338
+ //
339
+ // View Functions
340
+ //
341
+
342
+ #[view]
343
+ public fun get_pool_amount(
344
+ ibc_op_init_metadata: Object<Metadata>, after_peg_keeper_swap: bool
345
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
346
+ let virtual_pool_exists = virtual_pool_exists(ibc_op_init_metadata);
347
+
348
+ assert!(
349
+ virtual_pool_exists,
350
+ error::invalid_argument(EPOOL_NOT_FOUND)
351
+ );
352
+
353
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
354
+ let pools = table::borrow(&mut module_store.pools, ibc_op_init_metadata);
355
+ let pool =
356
+ borrow_global_mut<VirtualPool>(
357
+ object::object_address(&*option::borrow(&pools.virtual_pool))
358
+ );
359
+ assert!(pool.active, error::invalid_state(EINACTIVE));
360
+ let (swap_amount, return_amount) =
361
+ if (after_peg_keeper_swap) {
362
+ calc_peg_keeper_swap(pool)
363
+ } else { (0, 0) };
364
+ return (
365
+ pool.init_pool_amount + swap_amount,
366
+ pool.ibc_op_init_pool_amount - return_amount
367
+ )
368
+ }
369
+
370
+ #[view]
371
+ public fun get_pool_amount_by_denom(
372
+ ibc_op_init_denom: String, after_peg_keeper_swap: bool
373
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
374
+ let ibc_op_init_metadata = coin::denom_to_metadata(ibc_op_init_denom);
375
+ get_pool_amount(ibc_op_init_metadata, after_peg_keeper_swap)
376
+ }
377
+
378
+ #[view]
379
+ public fun get_peg_keeper_balance(
380
+ ibc_op_init_metadata: Object<Metadata>, after_peg_keeper_swap: bool
381
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
382
+ let (_, pool) = borrow_all(ibc_op_init_metadata);
383
+ assert!(pool.active, error::invalid_state(EINACTIVE));
384
+ let (swap_amount, return_amount) =
385
+ if (after_peg_keeper_swap) {
386
+ calc_peg_keeper_swap(pool)
387
+ } else { (0, 0) };
388
+
389
+ return (
390
+ pool.virtual_init_balance + swap_amount,
391
+ pool.virtual_ibc_op_init_balance + return_amount
392
+ )
393
+ }
394
+
395
+ #[view]
396
+ public fun get_peg_keeper_balance_by_denom(
397
+ ibc_op_init_denom: String, after_peg_keeper_swap: bool
398
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
399
+ let ibc_op_init_metadata = coin::denom_to_metadata(ibc_op_init_denom);
400
+ get_peg_keeper_balance(ibc_op_init_metadata, after_peg_keeper_swap)
401
+ }
402
+
403
+ #[view]
404
+ public fun swap_simulation(
405
+ offer_metadata: Object<Metadata>,
406
+ return_metadata: Object<Metadata>,
407
+ offer_amount: u64
408
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
409
+ let (return_amount, fee_amount) =
410
+ safe_swap_simulation(offer_metadata, return_metadata, offer_amount);
411
+ assert!(
412
+ return_amount != 0,
413
+ error::invalid_state(EIBC_OP_INIT_PRICE_TOO_LOW)
414
+ );
415
+ (return_amount, fee_amount)
416
+ }
417
+
418
+ #[view]
419
+ public fun swap_simulation_given_out(
420
+ offer_metadata: Object<Metadata>,
421
+ return_metadata: Object<Metadata>,
422
+ return_amount: u64
423
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
424
+ let (return_amount, fee_amount) =
425
+ safe_swap_simulation_given_out(
426
+ offer_metadata,
427
+ return_metadata,
428
+ return_amount
429
+ );
430
+ assert!(
431
+ return_amount != (U64_MAX as u64),
432
+ error::invalid_state(EIBC_OP_INIT_PRICE_TOO_LOW)
433
+ );
434
+ (return_amount, fee_amount)
435
+ }
436
+
437
+ #[view]
438
+ public fun swap_simulation_by_denom(
439
+ offer_denom: String, return_denom: String, offer_amount: u64
440
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
441
+ let offer_metadata = coin::denom_to_metadata(offer_denom);
442
+ let return_metadata = coin::denom_to_metadata(return_denom);
443
+ swap_simulation(offer_metadata, return_metadata, offer_amount)
444
+ }
445
+
446
+ #[view]
447
+ public fun spot_price(
448
+ base_metadata: Object<Metadata>, quote_metadata: Object<Metadata>
449
+ ): BigDecimal acquires ModuleStore, VirtualPool {
450
+ let is_init_quote = is_init_metadata(quote_metadata);
451
+ let ibc_op_init_metadata = if (is_init_quote) {
452
+ base_metadata
453
+ } else {
454
+ quote_metadata
455
+ };
456
+
457
+ let virtual_pool_exists = virtual_pool_exists(ibc_op_init_metadata);
458
+
459
+ assert!(
460
+ virtual_pool_exists,
461
+ error::invalid_argument(EPOOL_NOT_FOUND)
462
+ );
463
+
464
+ let (init_pool_amount, ibc_op_init_pool_amount) =
465
+ get_pool_amount(ibc_op_init_metadata, !is_init_quote);
466
+ let (_, pool) = borrow_all(ibc_op_init_metadata);
467
+
468
+ let swap_amount = 1000000;
469
+ let ibc_op_init_return_amount =
470
+ get_return_amount(
471
+ swap_amount,
472
+ init_pool_amount,
473
+ ibc_op_init_pool_amount,
474
+ pool.pool_size,
475
+ pool.ann
476
+ );
477
+ let init_return_amount =
478
+ get_return_amount(
479
+ swap_amount,
480
+ ibc_op_init_pool_amount,
481
+ init_pool_amount,
482
+ pool.pool_size,
483
+ pool.ann
484
+ );
485
+
486
+ if (is_init_quote) {
487
+ bigdecimal::from_ratio_u64(
488
+ init_return_amount + swap_amount,
489
+ ibc_op_init_return_amount + swap_amount
490
+ )
491
+ } else {
492
+ bigdecimal::from_ratio_u64(
493
+ ibc_op_init_return_amount + swap_amount,
494
+ init_return_amount + swap_amount
495
+ )
496
+ }
497
+ }
498
+
499
+ #[view]
500
+ public fun get_unbond_list(
501
+ account: address, start_after: Option<u64>, limit: u64
502
+ ): vector<UnbondResponse> acquires ModuleStore {
503
+ let module_store = borrow_global<ModuleStore>(@initia_std);
504
+ let start_key =
505
+ if (option::is_some(&start_after)) {
506
+ generate_unbond_key(account, *option::borrow(&start_after) + 1)
507
+ } else {
508
+ generate_unbond_key(account, 0)
509
+ };
510
+
511
+ if (limit > MAX_LIMIT) {
512
+ limit = MAX_LIMIT
513
+ };
514
+
515
+ let iter =
516
+ table::iter(
517
+ &module_store.unbond_wait_list,
518
+ option::some(start_key),
519
+ option::none(),
520
+ 1
521
+ );
522
+
523
+ let i = 0;
524
+ let res: vector<UnbondResponse> = vector[];
525
+ while (i < limit && table::prepare(iter)) {
526
+ let (_, value) = table::next<vector<u8>, UnbondEntity>(iter);
527
+ if (value.account != account) break;
528
+
529
+ vector::push_back(
530
+ &mut res,
531
+ UnbondResponse {
532
+ account: value.account,
533
+ share_amount: value.share_amount,
534
+ withdraw_amount: value.withdraw_amount,
535
+ release_time: value.release_time
536
+ }
537
+ );
538
+ };
539
+
540
+ return res
541
+ }
542
+
543
+ #[view]
544
+ public fun get_arb_info(id: u64): ArbResponse acquires ModuleStore, VirtualPool {
545
+ let module_store = borrow_global<ModuleStore>(@initia_std);
546
+ let pool_obj =
547
+ table::borrow(
548
+ &module_store.global_arb_batch_map,
549
+ table_key::encode_u64(id)
550
+ );
551
+ let pool = borrow_global<VirtualPool>(object::object_address(&*pool_obj));
552
+ let arb_info = table::borrow(
553
+ &pool.arb_batch_map,
554
+ table_key::encode_u64(id)
555
+ );
556
+
557
+ return ArbResponse {
558
+ ibc_op_init_metadata: pool.ibc_op_init_metadata,
559
+ id,
560
+ executed_time: arb_info.executed_time,
561
+ init_used: arb_info.init_used,
562
+ ibc_op_init_sent: arb_info.ibc_op_init_sent,
563
+ triggering_fee: arb_info.triggering_fee
564
+ }
565
+ }
566
+
567
+ #[view]
568
+ public fun get_arb_infos(
569
+ ibc_op_init_metadata: Object<Metadata>, start_after: Option<u64>, limit: u64
570
+ ): vector<ArbResponse> acquires ModuleStore, VirtualPool {
571
+ let (_, pool) = borrow_all(ibc_op_init_metadata);
572
+ let start_key =
573
+ if (option::is_some(&start_after)) {
574
+ table_key::encode_u64(*option::borrow(&start_after) + 1)
575
+ } else {
576
+ table_key::encode_u64(0)
577
+ };
578
+
579
+ if (limit > MAX_LIMIT) {
580
+ limit = MAX_LIMIT
581
+ };
582
+
583
+ let iter =
584
+ table::iter(
585
+ &pool.arb_batch_map,
586
+ option::some(start_key),
587
+ option::none(),
588
+ 1
589
+ );
590
+
591
+ let i = 0;
592
+ let res: vector<ArbResponse> = vector[];
593
+ while (i < limit && table::prepare(iter)) {
594
+ let (key, arb_info) = table::next<vector<u8>, ArbInfo>(iter);
595
+ let id = table_key::decode_u64(key);
596
+
597
+ vector::push_back(
598
+ &mut res,
599
+ ArbResponse {
600
+ ibc_op_init_metadata: pool.ibc_op_init_metadata,
601
+ id,
602
+ executed_time: arb_info.executed_time,
603
+ init_used: arb_info.init_used,
604
+ ibc_op_init_sent: arb_info.ibc_op_init_sent,
605
+ triggering_fee: arb_info.triggering_fee
606
+ }
607
+ );
608
+ };
609
+
610
+ return res
611
+ }
612
+
613
+ #[view]
614
+ public fun get_module_store(): ModuleStoreResponse acquires ModuleStore {
615
+ let module_store = borrow_global<ModuleStore>(@initia_std);
616
+
617
+ return ModuleStoreResponse {
618
+ max_change_rate: module_store.max_change_rate,
619
+ emergency_state: module_store.emergency_state,
620
+ admin: module_store.admin,
621
+ depositor_owned_init: module_store.depositor_owned_init,
622
+ unbond_period: module_store.unbond_period,
623
+ swap_fee_rate: module_store.swap_fee_rate,
624
+ arb_fee_rate: module_store.arb_fee_rate,
625
+ trigger_fee: module_store.trigger_fee,
626
+ min_arb_profit: module_store.min_arb_profit,
627
+ ibc_timeout: module_store.ibc_timeout,
628
+ max_arb_batch: module_store.max_arb_batch,
629
+ min_arb_interval: module_store.min_arb_interval,
630
+ arb_batch_index: module_store.arb_batch_index
631
+ }
632
+ }
633
+
634
+ #[view]
635
+ public fun get_pools(ibc_op_init_metadata: Object<Metadata>): PoolsResponse acquires ModuleStore {
636
+ let module_store = borrow_global<ModuleStore>(@initia_std);
637
+ let pools = table::borrow(&module_store.pools, ibc_op_init_metadata);
638
+ return PoolsResponse {
639
+ ibc_op_init_metadata,
640
+ ibc_op_init_denom: coin::symbol(ibc_op_init_metadata),
641
+ op_bridge_id: pools.op_bridge_id,
642
+ ibc_channel: pools.ibc_channel,
643
+ virtual_pool: pools.virtual_pool,
644
+ stableswap_pool: pools.stableswap_pool
645
+ }
646
+ }
647
+
648
+ #[view]
649
+ public fun get_pools_list(
650
+ start_after: Option<Object<Metadata>>, limit: u64
651
+ ): vector<PoolsResponse> acquires ModuleStore {
652
+ let module_store = borrow_global<ModuleStore>(@initia_std);
653
+
654
+ if (limit > MAX_LIMIT) {
655
+ limit = MAX_LIMIT
656
+ };
657
+
658
+ let iter = table::iter(
659
+ &module_store.pools,
660
+ option::none(),
661
+ start_after,
662
+ 2
663
+ );
664
+
665
+ let i = 0;
666
+ let res: vector<PoolsResponse> = vector[];
667
+ while (i < limit && table::prepare(iter)) {
668
+ let (ibc_op_init_metadata, pools) = table::next<Object<Metadata>, Pools>(iter);
669
+
670
+ vector::push_back(
671
+ &mut res,
672
+ PoolsResponse {
673
+ ibc_op_init_metadata,
674
+ ibc_op_init_denom: coin::symbol(ibc_op_init_metadata),
675
+ op_bridge_id: pools.op_bridge_id,
676
+ ibc_channel: pools.ibc_channel,
677
+ virtual_pool: pools.virtual_pool,
678
+ stableswap_pool: pools.stableswap_pool
679
+ }
680
+ );
681
+ };
682
+
683
+ return res
684
+ }
685
+
686
+ #[view]
687
+ public fun get_pools_detail(
688
+ ibc_op_init_metadata: Object<Metadata>
689
+ ): PoolsDetailResponse acquires ModuleStore, VirtualPool {
690
+ let module_store = borrow_global<ModuleStore>(@initia_std);
691
+ let pools = table::borrow(&module_store.pools, ibc_op_init_metadata);
692
+ let virtual_pool =
693
+ if (option::is_some(&pools.virtual_pool)) {
694
+ let vp =
695
+ borrow_global<VirtualPool>(
696
+ object::object_address(&*option::borrow(&pools.virtual_pool))
697
+ );
698
+ option::some(
699
+ VirtualPoolDetail {
700
+ pool_size: vp.pool_size,
701
+ recover_velocity: vp.recover_velocity,
702
+ max_ratio: vp.max_ratio,
703
+ recover_param: vp.recover_param,
704
+ init_pool_amount: vp.init_pool_amount,
705
+ ibc_op_init_pool_amount: vp.ibc_op_init_pool_amount,
706
+ last_recovered_timestamp: vp.last_recovered_timestamp,
707
+ virtual_init_balance: vp.virtual_init_balance,
708
+ virtual_ibc_op_init_balance: vp.virtual_ibc_op_init_balance,
709
+ peg_keeper_owned_ibc_op_init_balance: vp.peg_keeper_owned_ibc_op_init_balance,
710
+ ann: vp.ann,
711
+ active: vp.active
712
+ }
713
+ )
714
+ } else {
715
+ option::none()
716
+ };
717
+
718
+ let stableswap_pool =
719
+ if (option::is_some(&pools.stableswap_pool)) {
720
+ option::some(
721
+ stableswap::get_pool(*option::borrow(&pools.stableswap_pool))
722
+ )
723
+ } else {
724
+ option::none()
725
+ };
726
+
727
+ return PoolsDetailResponse {
728
+ ibc_op_init_metadata,
729
+ ibc_op_init_denom: coin::symbol(ibc_op_init_metadata),
730
+ op_bridge_id: pools.op_bridge_id,
731
+ ibc_channel: pools.ibc_channel,
732
+ virtual_pool: virtual_pool,
733
+ stableswap_pool
734
+ }
735
+ }
736
+
737
+ #[view]
738
+ public fun get_pools_detail_list(
739
+ start_after: Option<Object<Metadata>>, limit: u64
740
+ ): vector<PoolsDetailResponse> acquires ModuleStore, VirtualPool {
741
+ let module_store = borrow_global<ModuleStore>(@initia_std);
742
+
743
+ if (limit > MAX_LIMIT) {
744
+ limit = MAX_LIMIT
745
+ };
746
+
747
+ let iter = table::iter(
748
+ &module_store.pools,
749
+ option::none(),
750
+ start_after,
751
+ 2
752
+ );
753
+
754
+ let i = 0;
755
+ let res: vector<PoolsDetailResponse> = vector[];
756
+ while (i < limit && table::prepare(iter)) {
757
+ let (ibc_op_init_metadata, pools) = table::next<Object<Metadata>, Pools>(iter);
758
+
759
+ let virtual_pool =
760
+ if (option::is_some(&pools.virtual_pool)) {
761
+ let vp =
762
+ borrow_global<VirtualPool>(
763
+ object::object_address(
764
+ &*option::borrow(&pools.virtual_pool)
765
+ )
766
+ );
767
+ option::some(
768
+ VirtualPoolDetail {
769
+ pool_size: vp.pool_size,
770
+ recover_velocity: vp.recover_velocity,
771
+ max_ratio: vp.max_ratio,
772
+ recover_param: vp.recover_param,
773
+ init_pool_amount: vp.init_pool_amount,
774
+ ibc_op_init_pool_amount: vp.ibc_op_init_pool_amount,
775
+ last_recovered_timestamp: vp.last_recovered_timestamp,
776
+ virtual_init_balance: vp.virtual_init_balance,
777
+ virtual_ibc_op_init_balance: vp.virtual_ibc_op_init_balance,
778
+ peg_keeper_owned_ibc_op_init_balance: vp.peg_keeper_owned_ibc_op_init_balance,
779
+ ann: vp.ann,
780
+ active: vp.active
781
+ }
782
+ )
783
+ } else {
784
+ option::none()
785
+ };
786
+
787
+ let stableswap_pool =
788
+ if (option::is_some(&pools.stableswap_pool)) {
789
+ option::some(
790
+ stableswap::get_pool(*option::borrow(&pools.stableswap_pool))
791
+ )
792
+ } else {
793
+ option::none()
794
+ };
795
+
796
+ vector::push_back(
797
+ &mut res,
798
+ PoolsDetailResponse {
799
+ ibc_op_init_metadata,
800
+ ibc_op_init_denom: coin::symbol(ibc_op_init_metadata),
801
+ op_bridge_id: pools.op_bridge_id,
802
+ ibc_channel: pools.ibc_channel,
803
+ virtual_pool: virtual_pool,
804
+ stableswap_pool
805
+ }
806
+ )
807
+ };
808
+
809
+ return res
810
+
811
+ }
812
+
813
+ //
814
+ // View Function return types
815
+ //
816
+
817
+ struct UnbondResponse has drop {
818
+ account: address,
819
+ share_amount: u64,
820
+ withdraw_amount: u64,
821
+ release_time: u64
822
+ }
823
+
824
+ public fun unpack_unbond_response(res: UnbondResponse): (address, u64, u64, u64) {
825
+ return (res.account, res.share_amount, res.withdraw_amount, res.release_time)
826
+ }
827
+
828
+ struct ArbResponse has drop {
829
+ ibc_op_init_metadata: Object<Metadata>,
830
+ id: u64,
831
+ executed_time: u64,
832
+ init_used: u64,
833
+ ibc_op_init_sent: u64,
834
+ triggering_fee: u64
835
+ }
836
+
837
+ public fun unpack_arb_response(res: ArbResponse):
838
+ (Object<Metadata>, u64, u64, u64, u64, u64) {
839
+ return (
840
+ res.ibc_op_init_metadata,
841
+ res.id,
842
+ res.executed_time,
843
+ res.init_used,
844
+ res.ibc_op_init_sent,
845
+ res.triggering_fee
846
+ )
847
+ }
848
+
849
+ struct ModuleStoreResponse has drop {
850
+ max_change_rate: BigDecimal,
851
+ emergency_state: bool,
852
+ admin: address,
853
+ depositor_owned_init: u64,
854
+ unbond_period: u64,
855
+ swap_fee_rate: BigDecimal,
856
+ arb_fee_rate: BigDecimal,
857
+ trigger_fee: u64,
858
+ min_arb_profit: u64,
859
+ ibc_timeout: u64,
860
+ max_arb_batch: u64,
861
+ min_arb_interval: u64,
862
+ arb_batch_index: u64
863
+ }
864
+
865
+ public fun unpack_module_store_response(
866
+ res: ModuleStoreResponse
867
+ ): (
868
+ BigDecimal,
869
+ bool,
870
+ address,
871
+ u64,
872
+ u64,
873
+ BigDecimal,
874
+ BigDecimal,
875
+ u64,
876
+ u64,
877
+ u64,
878
+ u64,
879
+ u64,
880
+ u64
881
+ ) {
882
+ return (
883
+ res.max_change_rate,
884
+ res.emergency_state,
885
+ res.admin,
886
+ res.depositor_owned_init,
887
+ res.unbond_period,
888
+ res.swap_fee_rate,
889
+ res.arb_fee_rate,
890
+ res.trigger_fee,
891
+ res.min_arb_profit,
892
+ res.ibc_timeout,
893
+ res.max_arb_batch,
894
+ res.min_arb_interval,
895
+ res.arb_batch_index
896
+ )
897
+ }
898
+
899
+ struct PoolsResponse has drop {
900
+ ibc_op_init_metadata: Object<Metadata>,
901
+ ibc_op_init_denom: String,
902
+ op_bridge_id: u64,
903
+ ibc_channel: String,
904
+ virtual_pool: Option<Object<VirtualPool>>,
905
+ stableswap_pool: Option<Object<Pool>>
906
+ }
907
+
908
+ public fun unpack_pools_response(
909
+ res: PoolsResponse
910
+ ): (
911
+ Object<Metadata>,
912
+ String,
913
+ u64,
914
+ String,
915
+ Option<Object<VirtualPool>>,
916
+ Option<Object<Pool>>
917
+ ) {
918
+ return (
919
+ res.ibc_op_init_metadata,
920
+ res.ibc_op_init_denom,
921
+ res.op_bridge_id,
922
+ res.ibc_channel,
923
+ res.virtual_pool,
924
+ res.stableswap_pool
925
+ )
926
+ }
927
+
928
+ struct PoolsDetailResponse has drop {
929
+ ibc_op_init_metadata: Object<Metadata>,
930
+ ibc_op_init_denom: String,
931
+ op_bridge_id: u64,
932
+ ibc_channel: String,
933
+ virtual_pool: Option<VirtualPoolDetail>,
934
+ stableswap_pool: Option<stableswap::PoolResponse>
935
+ }
936
+
937
+ public fun unpack_pools_detail_response(
938
+ res: PoolsDetailResponse
939
+ ): (
940
+ Object<Metadata>,
941
+ String,
942
+ u64,
943
+ String,
944
+ Option<VirtualPoolDetail>,
945
+ Option<stableswap::PoolResponse>
946
+ ) {
947
+ let PoolsDetailResponse {
948
+ ibc_op_init_metadata,
949
+ ibc_op_init_denom,
950
+ op_bridge_id,
951
+ ibc_channel,
952
+ virtual_pool,
953
+ stableswap_pool
954
+ } = res;
955
+ return (
956
+ ibc_op_init_metadata,
957
+ ibc_op_init_denom,
958
+ op_bridge_id,
959
+ ibc_channel,
960
+ virtual_pool,
961
+ stableswap_pool
962
+ )
963
+ }
964
+
965
+ struct VirtualPoolDetail has drop {
966
+ pool_size: u64,
967
+ recover_velocity: BigDecimal,
968
+ max_ratio: BigDecimal,
969
+ recover_param: BigDecimal,
970
+ init_pool_amount: u64,
971
+ ibc_op_init_pool_amount: u64,
972
+ last_recovered_timestamp: u64,
973
+ virtual_init_balance: u64,
974
+ virtual_ibc_op_init_balance: u64,
975
+ peg_keeper_owned_ibc_op_init_balance: u64,
976
+ ann: u64,
977
+ active: bool
978
+ }
979
+
980
+ public fun unpack_virtual_pool_detail(
981
+ res: VirtualPoolDetail
982
+ ): (u64, BigDecimal, BigDecimal, BigDecimal, u64, u64, u64, u64, u64, u64, u64, bool) {
983
+ return (
984
+ res.pool_size,
985
+ res.recover_velocity,
986
+ res.max_ratio,
987
+ res.recover_param,
988
+ res.init_pool_amount,
989
+ res.ibc_op_init_pool_amount,
990
+ res.last_recovered_timestamp,
991
+ res.virtual_init_balance,
992
+ res.virtual_ibc_op_init_balance,
993
+ res.peg_keeper_owned_ibc_op_init_balance,
994
+ res.ann,
995
+ res.active
996
+ )
997
+ }
998
+
999
+ //
1000
+ // Admin functions
1001
+ //
1002
+
1003
+ // create new virtual pool
1004
+ public entry fun create_pool(
1005
+ chain: &signer,
1006
+ ibc_op_init_metadata: Object<Metadata>,
1007
+ recover_velocity: BigDecimal,
1008
+ pool_size: u64,
1009
+ ann: u64,
1010
+ max_ratio: BigDecimal,
1011
+ recover_param: BigDecimal,
1012
+ vm_type: u8,
1013
+ hook_contract: String,
1014
+ op_bridge_id: u64,
1015
+ ibc_channel: String
1016
+ ) acquires ModuleStore {
1017
+ assert_is_chain(chain, false);
1018
+ assert!(
1019
+ pool_size > 0,
1020
+ error::invalid_argument(EPOOL_SIZE)
1021
+ );
1022
+ let constructor_ref = object::create_object(@initia_std, false);
1023
+ let extend_ref = object::generate_extend_ref(&constructor_ref);
1024
+ let pool_signer = object::generate_signer(&constructor_ref);
1025
+ let (_, timestamp) = block::get_block_info();
1026
+
1027
+ assert!(
1028
+ vm_type == MOVE || vm_type == COSMWASM || vm_type == EVM,
1029
+ error::invalid_argument(EVM_TYPE)
1030
+ );
1031
+
1032
+ check_bridge_info(
1033
+ op_bridge_id,
1034
+ ibc_channel,
1035
+ ibc_op_init_metadata
1036
+ );
1037
+
1038
+ move_to(
1039
+ &pool_signer,
1040
+ VirtualPool {
1041
+ ibc_op_init_metadata,
1042
+ extend_ref,
1043
+ recover_velocity,
1044
+ pool_size,
1045
+ max_ratio,
1046
+ recover_param,
1047
+ init_pool_amount: pool_size,
1048
+ ibc_op_init_pool_amount: pool_size,
1049
+ last_recovered_timestamp: timestamp,
1050
+ virtual_init_balance: 0,
1051
+ virtual_ibc_op_init_balance: 0,
1052
+ peg_keeper_owned_ibc_op_init_balance: 0,
1053
+ ann,
1054
+ active: true,
1055
+ op_bridge_id,
1056
+ ibc_channel,
1057
+ vm_type,
1058
+ hook_contract,
1059
+ arb_batch_map: table::new()
1060
+ }
1061
+ );
1062
+
1063
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1064
+ let pools =
1065
+ borrow_pools_with_default(
1066
+ module_store,
1067
+ ibc_op_init_metadata,
1068
+ op_bridge_id,
1069
+ ibc_channel
1070
+ );
1071
+
1072
+ assert!(
1073
+ option::is_none(&pools.virtual_pool),
1074
+ error::already_exists(EVIRTUAL_POOL_EXISTS)
1075
+ );
1076
+ pools.virtual_pool = option::some(
1077
+ object::object_from_constructor_ref<VirtualPool>(&constructor_ref)
1078
+ );
1079
+
1080
+ event::emit(
1081
+ CreatePoolEvent {
1082
+ ibc_op_init_metadata,
1083
+ recover_velocity,
1084
+ pool_size,
1085
+ ann,
1086
+ max_ratio,
1087
+ recover_param
1088
+ }
1089
+ )
1090
+ }
1091
+
1092
+ // set emergency state
1093
+ public entry fun set_emergency_state(chain: &signer, state: bool) acquires ModuleStore {
1094
+ assert_is_chain(chain, true);
1095
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1096
+ module_store.emergency_state = state
1097
+ }
1098
+
1099
+ // deactivate virtual pool
1100
+ public entry fun deactivate(
1101
+ chain: &signer, ibc_op_init_metadata: Object<Metadata>
1102
+ ) acquires ModuleStore, VirtualPool {
1103
+ assert_is_chain(chain, true);
1104
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1105
+ let pools = table::borrow(&mut module_store.pools, ibc_op_init_metadata);
1106
+ let pool =
1107
+ borrow_global_mut<VirtualPool>(
1108
+ object::object_address(&*option::borrow(&pools.virtual_pool))
1109
+ );
1110
+ pool.active = false
1111
+ }
1112
+
1113
+ // activate virtual pool
1114
+ public entry fun activate(
1115
+ chain: &signer, ibc_op_init_metadata: Object<Metadata>
1116
+ ) acquires ModuleStore, VirtualPool {
1117
+ assert_is_chain(chain, true);
1118
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1119
+ let pools = table::borrow(&mut module_store.pools, ibc_op_init_metadata);
1120
+ let pool =
1121
+ borrow_global_mut<VirtualPool>(
1122
+ object::object_address(&*option::borrow(&pools.virtual_pool))
1123
+ );
1124
+ pool.active = true
1125
+ }
1126
+
1127
+ // change pool size
1128
+ public entry fun change_pool_size(
1129
+ chain: &signer, ibc_op_init_metadata: Object<Metadata>, new_pool_size: u64
1130
+ ) acquires ModuleStore, VirtualPool {
1131
+ assert_is_chain(chain, false);
1132
+ assert!(
1133
+ new_pool_size > 0,
1134
+ error::invalid_argument(EPOOL_SIZE)
1135
+ );
1136
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1137
+ let pools = table::borrow(&mut module_store.pools, ibc_op_init_metadata);
1138
+ let pool =
1139
+ borrow_global_mut<VirtualPool>(
1140
+ object::object_address(&*option::borrow(&pools.virtual_pool))
1141
+ );
1142
+
1143
+ let change_rate =
1144
+ if (new_pool_size > pool.pool_size) {
1145
+ bigdecimal::from_ratio_u64(new_pool_size - pool.pool_size, pool.pool_size)
1146
+ } else {
1147
+ bigdecimal::from_ratio_u64(pool.pool_size - new_pool_size, pool.pool_size)
1148
+ };
1149
+
1150
+ assert!(
1151
+ bigdecimal::ge(module_store.max_change_rate, change_rate),
1152
+ error::invalid_argument(EMAX_CHANGE)
1153
+ );
1154
+
1155
+ let depositor_owned_init_increase =
1156
+ if (new_pool_size < pool.pool_size) {
1157
+ /*
1158
+ Decrease size process
1159
+ 1. Change pool amount as ratio
1160
+ 2. Calculate diff, update peg keeper's balances
1161
+
1162
+ Net Effect
1163
+ This action is same with swap INIT > ibc op INIT until pool ratio to be 5:5,
1164
+ change pool size and sell some portion of ibc op INIT at same price
1165
+ - INIT and ibc op INIT balances of peg keepers -> INIT decrease ibc op INIT increase,
1166
+ but INIT decreased amount is smaller than ibc op INIT increased amount.
1167
+ - Pool ratio doesn't change (= price not change)
1168
+ */
1169
+ let current_init_delta = pool.pool_size - pool.init_pool_amount;
1170
+ let current_ibc_op_init_delta =
1171
+ pool.ibc_op_init_pool_amount - pool.pool_size;
1172
+
1173
+ let ratio = bigdecimal::from_ratio_u64(new_pool_size, pool.pool_size);
1174
+ pool.init_pool_amount = bigdecimal::mul_by_u64_truncate(
1175
+ ratio, pool.init_pool_amount
1176
+ );
1177
+ pool.ibc_op_init_pool_amount = bigdecimal::mul_by_u64_truncate(
1178
+ ratio, pool.ibc_op_init_pool_amount
1179
+ );
1180
+ pool.pool_size = new_pool_size;
1181
+
1182
+ let init_delta = pool.pool_size - pool.init_pool_amount;
1183
+ let ibc_op_init_delta = pool.ibc_op_init_pool_amount - pool.pool_size;
1184
+
1185
+ let net_init_delta = current_init_delta - init_delta;
1186
+ let net_ibc_op_init_delta = current_ibc_op_init_delta
1187
+ - ibc_op_init_delta;
1188
+
1189
+ pool.virtual_init_balance = pool.virtual_init_balance + net_init_delta;
1190
+ pool.virtual_ibc_op_init_balance = pool.virtual_ibc_op_init_balance
1191
+ + net_ibc_op_init_delta;
1192
+ pool.peg_keeper_owned_ibc_op_init_balance = pool.peg_keeper_owned_ibc_op_init_balance
1193
+ + net_ibc_op_init_delta;
1194
+ 0
1195
+ } else {
1196
+ /*
1197
+ Increase size process
1198
+ 1. Swap INIT > ibc init INIT to make 5:5
1199
+ 2. Change pool size
1200
+ 3. Swap back ibc init INIT > INIT
1201
+ a. If INIT init balance of peg keeper is greater than 0, return it to provider
1202
+
1203
+ Net Effect
1204
+ - INIT and ibc init INIT balances of peg keepers -> + for INIT and even for ibc init INIT
1205
+ - Ratio of pool -> ibc init INIT price decrease
1206
+ */
1207
+
1208
+ // 1. swap to make 5:5
1209
+ let init_swap_amount = pool.pool_size - pool.init_pool_amount;
1210
+ let ibc_op_init_swap_amount = pool.ibc_op_init_pool_amount
1211
+ - pool.pool_size;
1212
+ // pool.init_pool_amount = pool.pool_size;
1213
+ // pool.ibc_op_init_pool_amount = pool.pool_size;
1214
+ pool.virtual_init_balance = pool.virtual_init_balance
1215
+ + init_swap_amount;
1216
+ pool.virtual_ibc_op_init_balance = pool.virtual_ibc_op_init_balance
1217
+ + ibc_op_init_swap_amount;
1218
+ pool.peg_keeper_owned_ibc_op_init_balance = pool.peg_keeper_owned_ibc_op_init_balance
1219
+ + ibc_op_init_swap_amount;
1220
+
1221
+ // 2. change pool size
1222
+ pool.init_pool_amount = new_pool_size;
1223
+ pool.ibc_op_init_pool_amount = new_pool_size;
1224
+ pool.pool_size = new_pool_size;
1225
+
1226
+ // 3. swap back
1227
+ let return_amount =
1228
+ get_return_amount(
1229
+ ibc_op_init_swap_amount,
1230
+ pool.ibc_op_init_pool_amount,
1231
+ pool.init_pool_amount,
1232
+ pool.pool_size,
1233
+ pool.ann
1234
+ );
1235
+ pool.ibc_op_init_pool_amount = pool.ibc_op_init_pool_amount
1236
+ + ibc_op_init_swap_amount;
1237
+ pool.init_pool_amount = pool.init_pool_amount - return_amount;
1238
+ pool.virtual_ibc_op_init_balance = pool.virtual_ibc_op_init_balance
1239
+ - ibc_op_init_swap_amount;
1240
+ pool.peg_keeper_owned_ibc_op_init_balance = pool.peg_keeper_owned_ibc_op_init_balance
1241
+ - ibc_op_init_swap_amount;
1242
+
1243
+ if (pool.virtual_init_balance < return_amount) {
1244
+ let remain = return_amount - pool.virtual_init_balance;
1245
+ module_store.depositor_owned_init = module_store.depositor_owned_init
1246
+ + remain;
1247
+ pool.virtual_init_balance = 0;
1248
+ remain
1249
+ } else {
1250
+ pool.virtual_init_balance = pool.virtual_init_balance
1251
+ - return_amount;
1252
+ 0
1253
+ }
1254
+ };
1255
+
1256
+ event::emit(
1257
+ ChangePoolSizeEvent {
1258
+ ibc_op_init_metadata,
1259
+ pool_size: new_pool_size,
1260
+ depositor_owned_init_increase
1261
+ }
1262
+ )
1263
+ }
1264
+
1265
+ public entry fun update_module_params(
1266
+ chain: &signer,
1267
+ max_change_rate: Option<BigDecimal>,
1268
+ admin: Option<address>,
1269
+ unbond_period: Option<u64>,
1270
+ swap_fee_rate: Option<BigDecimal>,
1271
+ arb_fee_rate: Option<BigDecimal>,
1272
+ trigger_fee: Option<u64>,
1273
+ min_arb_profit: Option<u64>,
1274
+ ibc_timeout: Option<u64>,
1275
+ max_arb_batch: Option<u64>,
1276
+ min_arb_interval: Option<u64>
1277
+ ) acquires ModuleStore {
1278
+ assert_is_chain(chain, false);
1279
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1280
+
1281
+ if (option::is_some(&max_change_rate)) {
1282
+ module_store.max_change_rate = option::extract(&mut max_change_rate);
1283
+ };
1284
+
1285
+ if (option::is_some(&admin)) {
1286
+ module_store.admin = option::extract(&mut admin);
1287
+ };
1288
+
1289
+ if (option::is_some(&unbond_period)) {
1290
+ module_store.unbond_period = option::extract(&mut unbond_period);
1291
+ };
1292
+
1293
+ if (option::is_some(&swap_fee_rate)) {
1294
+ module_store.swap_fee_rate = option::extract(&mut swap_fee_rate);
1295
+ };
1296
+
1297
+ if (option::is_some(&arb_fee_rate)) {
1298
+ module_store.arb_fee_rate = option::extract(&mut arb_fee_rate);
1299
+ };
1300
+
1301
+ if (option::is_some(&trigger_fee)) {
1302
+ module_store.trigger_fee = option::extract(&mut trigger_fee);
1303
+ };
1304
+
1305
+ if (option::is_some(&min_arb_profit)) {
1306
+ module_store.min_arb_profit = option::extract(&mut min_arb_profit);
1307
+ };
1308
+
1309
+ if (option::is_some(&ibc_timeout)) {
1310
+ module_store.ibc_timeout = option::extract(&mut ibc_timeout);
1311
+ };
1312
+
1313
+ if (option::is_some(&max_arb_batch)) {
1314
+ module_store.max_arb_batch = option::extract(&mut max_arb_batch);
1315
+ };
1316
+
1317
+ if (option::is_some(&min_arb_interval)) {
1318
+ module_store.min_arb_interval = option::extract(&mut min_arb_interval);
1319
+ };
1320
+
1321
+ assert!(
1322
+ module_store.min_arb_profit > module_store.trigger_fee,
1323
+ error::invalid_argument(ESMALL_ARB_PROFIT)
1324
+ )
1325
+ }
1326
+
1327
+ public entry fun update_pool_params(
1328
+ chain: &signer,
1329
+ ibc_op_init_metadata: Object<Metadata>,
1330
+ recover_velocity: Option<BigDecimal>,
1331
+ ann: Option<u64>,
1332
+ max_ratio: Option<BigDecimal>,
1333
+ recover_param: Option<BigDecimal>,
1334
+ hook_contract: Option<String>
1335
+ ) acquires ModuleStore, VirtualPool {
1336
+ assert_is_chain(chain, false);
1337
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1338
+ let pools = table::borrow(&mut module_store.pools, ibc_op_init_metadata);
1339
+ let pool =
1340
+ borrow_global_mut<VirtualPool>(
1341
+ object::object_address(&*option::borrow(&pools.virtual_pool))
1342
+ );
1343
+
1344
+ if (option::is_some(&recover_velocity)) {
1345
+ pool.recover_velocity = option::extract(&mut recover_velocity);
1346
+ };
1347
+
1348
+ // It is okay to change ann immediately cause there are no real provider
1349
+ if (option::is_some(&ann)) {
1350
+ pool.ann = option::extract(&mut ann);
1351
+ };
1352
+
1353
+ if (option::is_some(&max_ratio)) {
1354
+ pool.max_ratio = option::extract(&mut max_ratio);
1355
+ };
1356
+
1357
+ if (option::is_some(&recover_param)) {
1358
+ pool.recover_param = option::extract(&mut recover_param);
1359
+ };
1360
+
1361
+ if (option::is_some(&hook_contract)) {
1362
+ pool.hook_contract = option::extract(&mut hook_contract);
1363
+ };
1364
+
1365
+ event::emit(
1366
+ UpdatePoolParamsEvent {
1367
+ ibc_op_init_metadata,
1368
+ recover_velocity,
1369
+ ann,
1370
+ max_ratio,
1371
+ recover_param,
1372
+ hook_contract
1373
+ }
1374
+ )
1375
+ }
1376
+
1377
+ //
1378
+ // Entry Functions
1379
+ //
1380
+
1381
+ public entry fun provide(
1382
+ account: &signer, amount: u64, min_return_amount: Option<u64>
1383
+ ) acquires ModuleStore {
1384
+ let init = primary_fungible_store::withdraw(account, init_metadata(), amount);
1385
+ let share_token = provide_internal(init);
1386
+ assert_min_amount(&share_token, min_return_amount);
1387
+ primary_fungible_store::deposit(signer::address_of(account), share_token);
1388
+ }
1389
+
1390
+ public entry fun unbond(account: &signer, amount: u64) acquires ModuleStore {
1391
+ let share_token =
1392
+ primary_fungible_store::withdraw(account, share_token_metadata(), amount);
1393
+ unbond_internal(account, share_token);
1394
+ }
1395
+
1396
+ public entry fun withdraw_unbond(account: &signer, release_time: u64) acquires ModuleStore {
1397
+ let addr = signer::address_of(account);
1398
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1399
+
1400
+ // check emergency
1401
+ assert!(
1402
+ !module_store.emergency_state,
1403
+ error::invalid_state(EEMERGENCY)
1404
+ );
1405
+
1406
+ // remove unbond entity
1407
+ let key = generate_unbond_key(addr, release_time);
1408
+ let UnbondEntity { account: _, share_amount, withdraw_amount, release_time } =
1409
+ table::remove(&mut module_store.unbond_wait_list, key);
1410
+
1411
+ // check release time
1412
+ let (_, timestamp) = block::get_block_info();
1413
+ assert!(
1414
+ timestamp >= release_time,
1415
+ error::invalid_state(ERELEASE_TIME)
1416
+ );
1417
+
1418
+ // release init
1419
+ let module_signer =
1420
+ object::generate_signer_for_extending(&module_store.extend_ref);
1421
+ primary_fungible_store::transfer(
1422
+ &module_signer,
1423
+ init_metadata(),
1424
+ addr,
1425
+ withdraw_amount
1426
+ );
1427
+
1428
+ event::emit(
1429
+ WithdrawUnbondEvent {
1430
+ account: addr,
1431
+ share_amount,
1432
+ withdraw_amount,
1433
+ release_time
1434
+ }
1435
+ );
1436
+ }
1437
+
1438
+ public entry fun swap(
1439
+ account: &signer,
1440
+ offer_asset_metadata: Object<Metadata>,
1441
+ return_asset_metadata: Object<Metadata>,
1442
+ amount: u64,
1443
+ min_return_amount: Option<u64>
1444
+ ) acquires ModuleStore, VirtualPool {
1445
+ let offer_asset =
1446
+ primary_fungible_store::withdraw(account, offer_asset_metadata, amount);
1447
+
1448
+ let return_asset = swap_internal(offer_asset, return_asset_metadata);
1449
+ assert_min_amount(&return_asset, min_return_amount);
1450
+
1451
+ primary_fungible_store::deposit(signer::address_of(account), return_asset);
1452
+ }
1453
+
1454
+ public entry fun finalize_arb(
1455
+ account: &signer,
1456
+ arb_index: u64,
1457
+ output_index: u64,
1458
+ withdrawal_proofs: vector<String>,
1459
+ sender: address,
1460
+ sequence: u64,
1461
+ version: String,
1462
+ state_root: String,
1463
+ storage_root: String,
1464
+ latest_block_hash: String
1465
+ ) acquires ModuleStore, VirtualPool {
1466
+ // check arb info
1467
+ let module_store = borrow_global<ModuleStore>(@initia_std);
1468
+ let pool_obj =
1469
+ table::borrow(
1470
+ &module_store.global_arb_batch_map,
1471
+ table_key::encode_u64(arb_index)
1472
+ );
1473
+ let pool = borrow_global<VirtualPool>(object::object_address(&*pool_obj));
1474
+ let arb_info =
1475
+ table::borrow(
1476
+ &pool.arb_batch_map,
1477
+ table_key::encode_u64(arb_index)
1478
+ );
1479
+
1480
+ // execute finalize token withdrawal
1481
+ let pool_signer = object::generate_signer_for_extending(&pool.extend_ref);
1482
+ let withdrawal_msg =
1483
+ generate_finalize_token_withdrawal_msg(
1484
+ pool.op_bridge_id,
1485
+ output_index,
1486
+ withdrawal_proofs,
1487
+ sender,
1488
+ signer::address_of(&pool_signer),
1489
+ sequence,
1490
+ string::utf8(b"uinit"),
1491
+ arb_info.ibc_op_init_sent,
1492
+ version,
1493
+ state_root,
1494
+ storage_root,
1495
+ latest_block_hash
1496
+ );
1497
+ cosmos::stargate(&pool_signer, withdrawal_msg);
1498
+
1499
+ // execute hook
1500
+ let module_signer =
1501
+ object::generate_signer_for_extending(&module_store.extend_ref);
1502
+ cosmos::move_execute(
1503
+ &module_signer,
1504
+ @initia_std,
1505
+ string::utf8(b"minitswap"),
1506
+ string::utf8(b"finalize_arb_hook"),
1507
+ vector[],
1508
+ vector[
1509
+ bcs::to_bytes(&arb_index),
1510
+ bcs::to_bytes(&signer::address_of(account))
1511
+ ]
1512
+ );
1513
+ }
1514
+
1515
+ public entry fun finalize_arb_hook(
1516
+ module_signer: &signer, arb_index: u64, executor: address
1517
+ ) acquires ModuleStore, VirtualPool {
1518
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1519
+ assert!(
1520
+ signer::address_of(module_signer)
1521
+ == object::address_from_extend_ref(&module_store.extend_ref),
1522
+ error::permission_denied(EUNAUTHORIZED)
1523
+ );
1524
+
1525
+ let pool_obj =
1526
+ table::remove(
1527
+ &mut module_store.global_arb_batch_map,
1528
+ table_key::encode_u64(arb_index)
1529
+ );
1530
+ let pool = borrow_global_mut<VirtualPool>(object::object_address(&pool_obj));
1531
+ let ArbInfo { executed_time: _, init_used, ibc_op_init_sent, triggering_fee } =
1532
+ table::remove(
1533
+ &mut pool.arb_batch_map,
1534
+ table_key::encode_u64(arb_index)
1535
+ );
1536
+
1537
+ assert!(pool.active, error::invalid_state(EINACTIVE));
1538
+
1539
+ let pool_signer = object::generate_signer_for_extending(&pool.extend_ref);
1540
+
1541
+ // update pegkeeper owned balance
1542
+ pool.peg_keeper_owned_ibc_op_init_balance = pool.peg_keeper_owned_ibc_op_init_balance
1543
+ - ibc_op_init_sent;
1544
+
1545
+ // transfer trigger fee
1546
+ primary_fungible_store::transfer(
1547
+ &pool_signer,
1548
+ init_metadata(),
1549
+ executor,
1550
+ triggering_fee
1551
+ );
1552
+
1553
+ // transfer leftover to module_addr
1554
+ let leftover_amount = ibc_op_init_sent - triggering_fee;
1555
+ primary_fungible_store::transfer(
1556
+ &pool_signer,
1557
+ init_metadata(),
1558
+ signer::address_of(module_signer),
1559
+ leftover_amount
1560
+ );
1561
+
1562
+ // update depositor owned init
1563
+ let in_house_arb_profit = leftover_amount - init_used;
1564
+ module_store.depositor_owned_init = module_store.depositor_owned_init
1565
+ + in_house_arb_profit;
1566
+
1567
+ // emit event
1568
+ event::emit(
1569
+ FinalizeArbEvent {
1570
+ arb_index,
1571
+ pool: pool_obj,
1572
+ init_used,
1573
+ ibc_op_init_sent,
1574
+ triggering_fee
1575
+ }
1576
+ );
1577
+ }
1578
+
1579
+ // stableswap
1580
+
1581
+ public entry fun create_stableswap_pool(
1582
+ account: &signer,
1583
+ op_bridge_id: u64,
1584
+ ibc_channel: String,
1585
+ ibc_op_init_metadata: Object<Metadata>,
1586
+ init_amount: u64,
1587
+ ibc_op_init_amount: u64
1588
+ ) acquires ModuleStore {
1589
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1590
+ let (_, ibc_denom) =
1591
+ check_bridge_info(
1592
+ op_bridge_id,
1593
+ ibc_channel,
1594
+ ibc_op_init_metadata
1595
+ );
1596
+
1597
+ let creator = object::generate_signer_for_extending(&module_store.extend_ref);
1598
+ let symbol = string::utf8(b"INIT - ");
1599
+ string::append(&mut symbol, ibc_denom);
1600
+
1601
+ let coins: vector<FungibleAsset> = vector[
1602
+ coin::withdraw(account, init_metadata(), init_amount),
1603
+ coin::withdraw(
1604
+ account,
1605
+ ibc_op_init_metadata,
1606
+ ibc_op_init_amount
1607
+ )
1608
+ ];
1609
+
1610
+ let liquidity_token =
1611
+ stableswap::create_pool(
1612
+ &creator,
1613
+ symbol,
1614
+ symbol,
1615
+ module_store.stableswap_swap_fee_rate,
1616
+ coins,
1617
+ module_store.stableswap_ann
1618
+ );
1619
+ let metadata = fungible_asset::metadata_from_asset(&liquidity_token);
1620
+ let pool = object::convert<Metadata, Pool>(metadata);
1621
+
1622
+ let pools =
1623
+ borrow_pools_with_default(
1624
+ module_store,
1625
+ ibc_op_init_metadata,
1626
+ op_bridge_id,
1627
+ ibc_channel
1628
+ );
1629
+ pools.stableswap_pool = option::some(object::convert<Metadata, Pool>(metadata));
1630
+
1631
+ primary_fungible_store::deposit(signer::address_of(account), liquidity_token);
1632
+ event::emit(CreateStableswapPoolEvent { ibc_op_init_metadata, pool });
1633
+ }
1634
+
1635
+ public fun provide_internal(init: FungibleAsset): FungibleAsset acquires ModuleStore {
1636
+ // check asset metadata
1637
+ assert!(
1638
+ is_init(&init),
1639
+ error::invalid_argument(ENOT_INIT)
1640
+ );
1641
+ let provide_amount = fungible_asset::amount(&init);
1642
+
1643
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1644
+
1645
+ // check emergency
1646
+ assert!(
1647
+ !module_store.emergency_state,
1648
+ error::invalid_state(EEMERGENCY)
1649
+ );
1650
+
1651
+ // calculate share amount
1652
+ let total_share = total_share();
1653
+ let share_amount =
1654
+ if (total_share == 0) {
1655
+ provide_amount
1656
+ } else {
1657
+ mul_div(
1658
+ provide_amount,
1659
+ (total_share as u64),
1660
+ module_store.depositor_owned_init
1661
+ )
1662
+ };
1663
+
1664
+ // update depositor owned init
1665
+ module_store.depositor_owned_init = module_store.depositor_owned_init
1666
+ + provide_amount;
1667
+
1668
+ // deposit token to module
1669
+ let module_addr = object::address_from_extend_ref(&module_store.extend_ref);
1670
+ primary_fungible_store::deposit(module_addr, init);
1671
+
1672
+ // emit event
1673
+ event::emit<ProvideEvent>(ProvideEvent { provide_amount, share_amount });
1674
+
1675
+ // mint share token
1676
+ coin::mint(&module_store.mint_cap, share_amount)
1677
+ }
1678
+
1679
+ public fun unbond_internal(
1680
+ account: &signer, share_token: FungibleAsset
1681
+ ) acquires ModuleStore {
1682
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1683
+
1684
+ // check emergency
1685
+ assert!(
1686
+ !module_store.emergency_state,
1687
+ error::invalid_state(EEMERGENCY)
1688
+ );
1689
+
1690
+ // check metadata
1691
+ let share_token_metadata = fungible_asset::metadata_from_asset(&share_token);
1692
+ assert!(
1693
+ share_token_metadata == share_token_metadata(),
1694
+ error::invalid_argument(ENOT_SHARE_TOKEN)
1695
+ );
1696
+
1697
+ // calculate withdraw amount
1698
+ let share_amount = fungible_asset::amount(&share_token);
1699
+ let total_share = total_share();
1700
+ let withdraw_amount =
1701
+ mul_div(
1702
+ share_amount,
1703
+ module_store.depositor_owned_init,
1704
+ total_share
1705
+ );
1706
+
1707
+ // decrease depositor owned init
1708
+ module_store.depositor_owned_init = module_store.depositor_owned_init
1709
+ - withdraw_amount;
1710
+
1711
+ // burn share token
1712
+ coin::burn(&module_store.burn_cap, share_token);
1713
+
1714
+ // get release time
1715
+ let (_, timestamp) = block::get_block_info();
1716
+ let release_time = timestamp + module_store.unbond_period;
1717
+
1718
+ // create and store withdraw entiry
1719
+ let withdraw_entity = UnbondEntity {
1720
+ account: signer::address_of(account),
1721
+ share_amount,
1722
+ withdraw_amount,
1723
+ release_time
1724
+ };
1725
+ let key = generate_unbond_key(signer::address_of(account), release_time);
1726
+ table::add(
1727
+ &mut module_store.unbond_wait_list,
1728
+ key,
1729
+ withdraw_entity
1730
+ );
1731
+
1732
+ // emit event
1733
+ event::emit<UnbondEvent>(
1734
+ UnbondEvent {
1735
+ account: signer::address_of(account),
1736
+ share_amount,
1737
+ withdraw_amount,
1738
+ release_time
1739
+ }
1740
+ );
1741
+ }
1742
+
1743
+ public fun swap_internal(
1744
+ offer_asset: FungibleAsset, return_metadata: Object<Metadata>
1745
+ ): FungibleAsset acquires ModuleStore, VirtualPool {
1746
+ let is_init_offered = is_init(&offer_asset);
1747
+ let offer_metadata = fungible_asset::metadata_from_asset(&offer_asset);
1748
+ let offer_amount = fungible_asset::amount(&offer_asset);
1749
+ let ibc_op_init_metadata = offer_metadata;
1750
+ let (module_store, pool, module_signer, pool_signer) =
1751
+ if (is_init_offered) {
1752
+ ibc_op_init_metadata = return_metadata;
1753
+ borrow_all_mut(return_metadata)
1754
+ } else {
1755
+ borrow_all_mut(offer_metadata)
1756
+ };
1757
+ assert!(pool.active, error::invalid_state(EINACTIVE));
1758
+
1759
+ // init offered, do user swap first
1760
+ let (
1761
+ peg_keeper_offer_amount,
1762
+ peg_keeper_return_amount,
1763
+ return_asset,
1764
+ init_swap_fee_amount,
1765
+ init_arb_fee_amount,
1766
+ ibc_op_init_swap_fee_amount,
1767
+ ibc_op_init_arb_fee_amount
1768
+ ) =
1769
+ if (is_init_offered) {
1770
+ // user swap
1771
+ let (
1772
+ return_asset, swap_fee_amount, arb_fee_amount, depositor_return_amount
1773
+ ) =
1774
+ user_swap(
1775
+ offer_asset,
1776
+ return_metadata,
1777
+ module_store,
1778
+ pool,
1779
+ module_signer,
1780
+ pool_signer,
1781
+ is_init_offered
1782
+ );
1783
+
1784
+ // peg keeper swap
1785
+ let (peg_keeper_offer_amount, peg_keeper_return_amount) =
1786
+ peg_keeper_swap(pool);
1787
+
1788
+ // to prevent div by zero
1789
+ let init_arb_fee_amount =
1790
+ if (arb_fee_amount == 0) { 0 }
1791
+ else {
1792
+ mul_div(
1793
+ depositor_return_amount,
1794
+ arb_fee_amount,
1795
+ arb_fee_amount + swap_fee_amount
1796
+ )
1797
+ };
1798
+
1799
+ let init_swap_fee_amount = depositor_return_amount
1800
+ - init_arb_fee_amount;
1801
+
1802
+ (
1803
+ peg_keeper_offer_amount,
1804
+ peg_keeper_return_amount,
1805
+ return_asset,
1806
+ init_swap_fee_amount,
1807
+ init_arb_fee_amount,
1808
+ swap_fee_amount,
1809
+ arb_fee_amount
1810
+ )
1811
+ // if ibc op init offered, do peg keeper swap first
1812
+ } else {
1813
+ // peg keeper swap
1814
+ let (peg_keeper_offer_amount, peg_keeper_return_amount) =
1815
+ peg_keeper_swap(pool);
1816
+
1817
+ // user swap
1818
+ let (return_asset, swap_fee_amount, arb_fee_amount, _) =
1819
+ user_swap(
1820
+ offer_asset,
1821
+ return_metadata,
1822
+ module_store,
1823
+ pool,
1824
+ module_signer,
1825
+ pool_signer,
1826
+ is_init_offered
1827
+ );
1828
+
1829
+ (
1830
+ peg_keeper_offer_amount,
1831
+ peg_keeper_return_amount,
1832
+ return_asset,
1833
+ swap_fee_amount,
1834
+ arb_fee_amount,
1835
+ 0,
1836
+ 0
1837
+ )
1838
+ };
1839
+
1840
+ // check arb
1841
+ check_arb(module_store, pool, ibc_op_init_metadata);
1842
+
1843
+ event::emit<SwapEvent>(
1844
+ SwapEvent {
1845
+ offer_coin: offer_metadata,
1846
+ return_coin: return_metadata,
1847
+ peg_keeper_offer_amount, // always init
1848
+ peg_keeper_return_amount, // always ibc op init
1849
+ offer_amount,
1850
+ return_amount: fungible_asset::amount(&return_asset),
1851
+ init_swap_fee_amount,
1852
+ init_arb_fee_amount,
1853
+ ibc_op_init_swap_fee_amount,
1854
+ ibc_op_init_arb_fee_amount
1855
+ }
1856
+ );
1857
+
1858
+ return_asset
1859
+ }
1860
+
1861
+ //
1862
+ // ibc async callback
1863
+ //
1864
+
1865
+ public entry fun ibc_ack(
1866
+ pool_signer: &signer, callback_id: u64, success: bool
1867
+ ) acquires ModuleStore, VirtualPool {
1868
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1869
+ let pool_obj =
1870
+ table::borrow(
1871
+ &mut module_store.global_arb_batch_map,
1872
+ table_key::encode_u64(callback_id)
1873
+ );
1874
+ let pool = borrow_global_mut<VirtualPool>(object::object_address(&*pool_obj));
1875
+ assert!(
1876
+ signer::address_of(pool_signer)
1877
+ == object::address_from_extend_ref(&pool.extend_ref),
1878
+ error::permission_denied(EUNAUTHORIZED)
1879
+ );
1880
+
1881
+ // do nothing
1882
+ if (success) { return };
1883
+
1884
+ revert_arb_state(callback_id);
1885
+ }
1886
+
1887
+ public entry fun ibc_timeout(
1888
+ pool_signer: &signer, callback_id: u64
1889
+ ) acquires ModuleStore, VirtualPool {
1890
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1891
+ let pool_obj =
1892
+ table::borrow(
1893
+ &mut module_store.global_arb_batch_map,
1894
+ table_key::encode_u64(callback_id)
1895
+ );
1896
+ let pool = borrow_global_mut<VirtualPool>(object::object_address(&*pool_obj));
1897
+ assert!(
1898
+ signer::address_of(pool_signer)
1899
+ == object::address_from_extend_ref(&pool.extend_ref),
1900
+ error::permission_denied(EUNAUTHORIZED)
1901
+ );
1902
+
1903
+ revert_arb_state(callback_id);
1904
+ }
1905
+
1906
+ fun revert_arb_state(callback_id: u64) acquires ModuleStore, VirtualPool {
1907
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1908
+ let pool_obj =
1909
+ table::remove(
1910
+ &mut module_store.global_arb_batch_map,
1911
+ table_key::encode_u64(callback_id)
1912
+ );
1913
+ let pool = borrow_global_mut<VirtualPool>(object::object_address(&pool_obj));
1914
+ let ArbInfo { executed_time: _, init_used, ibc_op_init_sent, triggering_fee } =
1915
+ table::remove(
1916
+ &mut pool.arb_batch_map,
1917
+ table_key::encode_u64(callback_id)
1918
+ );
1919
+ pool.virtual_init_balance = pool.virtual_init_balance + init_used;
1920
+ pool.virtual_ibc_op_init_balance = pool.virtual_ibc_op_init_balance
1921
+ + ibc_op_init_sent;
1922
+
1923
+ event::emit<RevertArbEvent>(
1924
+ RevertArbEvent {
1925
+ arb_index: callback_id,
1926
+ pool: pool_obj,
1927
+ init_used,
1928
+ ibc_op_init_sent, // always ibc op init
1929
+ triggering_fee
1930
+ }
1931
+ );
1932
+
1933
+ }
1934
+
1935
+ //
1936
+ // Helper function
1937
+ //
1938
+
1939
+ inline fun borrow_all_mut(
1940
+ metadata: Object<Metadata>
1941
+ ): (&mut ModuleStore, &mut VirtualPool, signer, signer) acquires ModuleStore, VirtualPool {
1942
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1943
+ let module_signer =
1944
+ object::generate_signer_for_extending(&module_store.extend_ref);
1945
+ let pool_addr =
1946
+ object::object_address(
1947
+ &*option::borrow(
1948
+ &table::borrow(&module_store.pools, metadata).virtual_pool
1949
+ )
1950
+ );
1951
+ let pool = borrow_global_mut<VirtualPool>(pool_addr);
1952
+ let pool_signer = object::generate_signer_for_extending(&pool.extend_ref);
1953
+ (module_store, pool, module_signer, pool_signer)
1954
+ }
1955
+
1956
+ inline fun borrow_all(
1957
+ metadata: Object<Metadata>
1958
+ ): (&ModuleStore, &VirtualPool) acquires ModuleStore, VirtualPool {
1959
+ let module_store = borrow_global<ModuleStore>(@initia_std);
1960
+ let pool_addr =
1961
+ object::object_address(
1962
+ &*option::borrow(
1963
+ &table::borrow(&module_store.pools, metadata).virtual_pool
1964
+ )
1965
+ );
1966
+ let pool = borrow_global<VirtualPool>(pool_addr);
1967
+ (module_store, pool)
1968
+ }
1969
+
1970
+ inline fun virtual_pool_exists(metadata: Object<Metadata>): bool acquires ModuleStore {
1971
+ let module_store = borrow_global<ModuleStore>(@initia_std);
1972
+ if (!table::contains(&module_store.pools, metadata)) { false }
1973
+ else {
1974
+ option::is_some(&table::borrow(&module_store.pools, metadata).virtual_pool)
1975
+ }
1976
+ }
1977
+
1978
+ inline fun calc_peg_keeper_swap(pool: &VirtualPool): (u64, u64) acquires ModuleStore, VirtualPool {
1979
+ let (_, timestamp) = block::get_block_info();
1980
+
1981
+ let imbalance =
1982
+ bigdecimal::from_ratio_u64(
1983
+ pool.peg_keeper_owned_ibc_op_init_balance
1984
+ + pool.ibc_op_init_pool_amount - pool.pool_size, // same with real ibc op init balance
1985
+ pool.pool_size
1986
+ );
1987
+ // Peg keeper swap
1988
+ let r_fr = get_fully_recovered_ratio(
1989
+ imbalance, pool.max_ratio, pool.recover_param
1990
+ );
1991
+ let current_ratio =
1992
+ bigdecimal::from_ratio_u64(
1993
+ pool.ibc_op_init_pool_amount,
1994
+ pool.init_pool_amount + pool.ibc_op_init_pool_amount
1995
+ );
1996
+ let time_diff = timestamp - pool.last_recovered_timestamp;
1997
+ if (bigdecimal::gt(current_ratio, r_fr) && time_diff != 0) {
1998
+ let (x_fr, _) =
1999
+ get_fully_recovered_pool_amounts(pool.pool_size, r_fr, pool.ann);
2000
+ let max_recover_amount =
2001
+ bigdecimal::mul_by_u64_truncate(pool.recover_velocity, time_diff);
2002
+ let swap_amount_to_reach_fr =
2003
+ if (x_fr > pool.init_pool_amount) {
2004
+ x_fr - pool.init_pool_amount
2005
+ } else { 0 };
2006
+ let swap_amount =
2007
+ if (swap_amount_to_reach_fr < max_recover_amount) {
2008
+ swap_amount_to_reach_fr
2009
+ } else {
2010
+ max_recover_amount
2011
+ };
2012
+
2013
+ let return_amount =
2014
+ get_return_amount(
2015
+ swap_amount,
2016
+ pool.init_pool_amount,
2017
+ pool.ibc_op_init_pool_amount,
2018
+ pool.pool_size,
2019
+ pool.ann
2020
+ );
2021
+
2022
+ (swap_amount, return_amount)
2023
+ } else { (0, 0) }
2024
+ }
2025
+
2026
+ fun user_swap(
2027
+ offer_asset: FungibleAsset,
2028
+ return_metadata: Object<Metadata>,
2029
+ module_store: &mut ModuleStore,
2030
+ pool: &mut VirtualPool,
2031
+ module_signer: signer,
2032
+ pool_signer: signer,
2033
+ is_init_offered: bool
2034
+ ): (FungibleAsset, u64, u64, u64) {
2035
+ let module_addr = signer::address_of(&module_signer);
2036
+ let pool_addr = signer::address_of(&pool_signer);
2037
+
2038
+ let offer_amount = fungible_asset::amount(&offer_asset);
2039
+ let arb_fee_amount = 0;
2040
+ let (return_asset, swap_fee_amount, depositor_return_amount) =
2041
+ if (is_init_offered) {
2042
+ primary_fungible_store::deposit(module_addr, offer_asset);
2043
+
2044
+ // do swap
2045
+ let return_amount =
2046
+ get_return_amount(
2047
+ offer_amount,
2048
+ pool.init_pool_amount,
2049
+ pool.ibc_op_init_pool_amount,
2050
+ pool.pool_size,
2051
+ pool.ann
2052
+ );
2053
+ pool.init_pool_amount = pool.init_pool_amount + offer_amount;
2054
+ pool.ibc_op_init_pool_amount = pool.ibc_op_init_pool_amount
2055
+ - return_amount;
2056
+
2057
+ assert!(
2058
+ pool.ibc_op_init_pool_amount >= pool.pool_size
2059
+ && pool.init_pool_amount <= pool.pool_size,
2060
+ error::invalid_state(EIBC_OP_INIT_PRICE_TOO_LOW)
2061
+ );
2062
+
2063
+ // take swap fee
2064
+ let swap_fee_amount =
2065
+ bigdecimal::mul_by_u64_ceil(
2066
+ module_store.swap_fee_rate, return_amount
2067
+ );
2068
+ return_amount = return_amount - swap_fee_amount;
2069
+
2070
+ // take arb fee
2071
+ let arb_profit =
2072
+ if (return_amount > offer_amount) {
2073
+ return_amount - offer_amount
2074
+ } else { 0 };
2075
+ arb_fee_amount = bigdecimal::mul_by_u64_ceil(
2076
+ module_store.arb_fee_rate, arb_profit
2077
+ );
2078
+ return_amount = return_amount - arb_fee_amount;
2079
+ let total_fee_amount = swap_fee_amount + arb_fee_amount;
2080
+
2081
+ // swap ibc op init fee to init for depositor
2082
+ let depositor_return_amount =
2083
+ get_return_amount(
2084
+ total_fee_amount,
2085
+ pool.ibc_op_init_pool_amount,
2086
+ pool.init_pool_amount,
2087
+ pool.pool_size,
2088
+ pool.ann
2089
+ );
2090
+ pool.init_pool_amount = pool.init_pool_amount - depositor_return_amount;
2091
+ pool.ibc_op_init_pool_amount = pool.ibc_op_init_pool_amount
2092
+ + total_fee_amount;
2093
+
2094
+ // increase depositor amount
2095
+ module_store.depositor_owned_init = module_store.depositor_owned_init
2096
+ + depositor_return_amount;
2097
+
2098
+ (
2099
+ primary_fungible_store::withdraw(
2100
+ &pool_signer, return_metadata, return_amount
2101
+ ),
2102
+ swap_fee_amount,
2103
+ depositor_return_amount
2104
+ )
2105
+ } else {
2106
+ primary_fungible_store::deposit(pool_addr, offer_asset);
2107
+
2108
+ // do swap
2109
+ let return_amount =
2110
+ get_return_amount(
2111
+ offer_amount,
2112
+ pool.ibc_op_init_pool_amount,
2113
+ pool.init_pool_amount,
2114
+ pool.pool_size,
2115
+ pool.ann
2116
+ );
2117
+ pool.init_pool_amount = pool.init_pool_amount - return_amount;
2118
+ pool.ibc_op_init_pool_amount = pool.ibc_op_init_pool_amount
2119
+ + offer_amount;
2120
+
2121
+ // take swap fee
2122
+ let swap_fee_amount =
2123
+ bigdecimal::mul_by_u64_ceil(
2124
+ module_store.swap_fee_rate, return_amount
2125
+ );
2126
+ let return_amount = return_amount - swap_fee_amount;
2127
+
2128
+ // increase depositor amount
2129
+ module_store.depositor_owned_init = module_store.depositor_owned_init
2130
+ + swap_fee_amount;
2131
+
2132
+ (
2133
+ primary_fungible_store::withdraw(
2134
+ &module_signer,
2135
+ return_metadata,
2136
+ return_amount
2137
+ ),
2138
+ swap_fee_amount,
2139
+ swap_fee_amount
2140
+ )
2141
+ };
2142
+
2143
+ (return_asset, swap_fee_amount, arb_fee_amount, depositor_return_amount)
2144
+ }
2145
+
2146
+ fun peg_keeper_swap(pool: &mut VirtualPool): (u64, u64) {
2147
+ let (_, timestamp) = block::get_block_info();
2148
+
2149
+ let (peg_keeper_offer_amount, peg_keeper_return_amount) =
2150
+ calc_peg_keeper_swap(pool);
2151
+ pool.init_pool_amount = pool.init_pool_amount + peg_keeper_offer_amount;
2152
+ pool.ibc_op_init_pool_amount = pool.ibc_op_init_pool_amount
2153
+ - peg_keeper_return_amount;
2154
+ pool.virtual_init_balance = pool.virtual_init_balance + peg_keeper_offer_amount;
2155
+ pool.virtual_ibc_op_init_balance = pool.virtual_ibc_op_init_balance
2156
+ + peg_keeper_return_amount;
2157
+ pool.peg_keeper_owned_ibc_op_init_balance = pool.peg_keeper_owned_ibc_op_init_balance
2158
+ + peg_keeper_return_amount;
2159
+ pool.last_recovered_timestamp = timestamp;
2160
+
2161
+ (peg_keeper_offer_amount, peg_keeper_return_amount)
2162
+ }
2163
+
2164
+ fun check_arb(
2165
+ module_store: &mut ModuleStore,
2166
+ pool: &mut VirtualPool,
2167
+ ibc_op_init_metadata: Object<Metadata>
2168
+ ) {
2169
+ // check max arb batch
2170
+ if (table::length(&pool.arb_batch_map) > module_store.max_arb_batch) { return };
2171
+
2172
+ let expected_arb_profit =
2173
+ pool.virtual_ibc_op_init_balance - pool.virtual_init_balance;
2174
+
2175
+ // check min_arb_profit
2176
+ if (expected_arb_profit < module_store.min_arb_profit) { return };
2177
+
2178
+ // get latest arb timestamp
2179
+ let iter = table::iter(
2180
+ &pool.arb_batch_map,
2181
+ option::none(),
2182
+ option::none(),
2183
+ 2
2184
+ );
2185
+
2186
+ let last_arb_timestamp =
2187
+ if (table::prepare(iter)) {
2188
+ let (_, value) = table::next<vector<u8>, ArbInfo>(iter);
2189
+ value.executed_time
2190
+ } else { 0 };
2191
+
2192
+ // check min arb interval
2193
+ let (_, timestamp) = block::get_block_info();
2194
+ if (timestamp < module_store.min_arb_interval + last_arb_timestamp) { return };
2195
+
2196
+ // get new arb batch index
2197
+ let arb_index = module_store.arb_batch_index;
2198
+ module_store.arb_batch_index = module_store.arb_batch_index + 1;
2199
+
2200
+ // set arb info
2201
+ let arb_info = ArbInfo {
2202
+ executed_time: timestamp,
2203
+ init_used: pool.virtual_init_balance,
2204
+ ibc_op_init_sent: pool.virtual_ibc_op_init_balance,
2205
+ triggering_fee: module_store.trigger_fee
2206
+ };
2207
+
2208
+ // reset peg keeper balance
2209
+ pool.virtual_init_balance = 0;
2210
+ pool.virtual_ibc_op_init_balance = 0;
2211
+
2212
+ // send ibc message with hook
2213
+ send_ibc_message(
2214
+ module_store,
2215
+ pool,
2216
+ arb_index,
2217
+ ibc_op_init_metadata,
2218
+ arb_info.ibc_op_init_sent
2219
+ );
2220
+
2221
+ // emit event
2222
+ let pools = table::borrow(&mut module_store.pools, ibc_op_init_metadata);
2223
+ let pool_obj = *option::borrow(&pools.virtual_pool);
2224
+ event::emit(
2225
+ InitiateArbEvent {
2226
+ arb_index,
2227
+ pool: pool_obj,
2228
+ executed_time: arb_info.executed_time,
2229
+ init_used: arb_info.init_used,
2230
+ ibc_op_init_sent: arb_info.ibc_op_init_sent,
2231
+ triggering_fee: arb_info.triggering_fee
2232
+ }
2233
+ );
2234
+
2235
+ // store arb info
2236
+ table::add(
2237
+ &mut module_store.global_arb_batch_map,
2238
+ table_key::encode_u64(arb_index),
2239
+ pool_obj
2240
+ );
2241
+ table::add(
2242
+ &mut pool.arb_batch_map,
2243
+ table_key::encode_u64(arb_index),
2244
+ arb_info
2245
+ );
2246
+ }
2247
+
2248
+ fun borrow_pools_with_default(
2249
+ module_store: &mut ModuleStore,
2250
+ ibc_op_init_metadata: Object<Metadata>,
2251
+ op_bridge_id: u64,
2252
+ ibc_channel: String
2253
+ ): &mut Pools {
2254
+ if (table::contains(&module_store.pools, ibc_op_init_metadata)) {
2255
+ table::borrow_mut(&mut module_store.pools, ibc_op_init_metadata)
2256
+ } else {
2257
+ table::add(
2258
+ &mut module_store.pools,
2259
+ ibc_op_init_metadata,
2260
+ Pools {
2261
+ op_bridge_id,
2262
+ ibc_channel,
2263
+ virtual_pool: option::none(),
2264
+ stableswap_pool: option::none()
2265
+ }
2266
+ );
2267
+
2268
+ table::borrow_mut(&mut module_store.pools, ibc_op_init_metadata)
2269
+ }
2270
+ }
2271
+
2272
+ fun send_ibc_message(
2273
+ module_store: &ModuleStore,
2274
+ pool: &mut VirtualPool,
2275
+ batch_index: u64,
2276
+ ibc_op_init_metadata: Object<Metadata>,
2277
+ amount: u64
2278
+ ) {
2279
+ // create memo (ibc hook)
2280
+ let receiver = to_sdk(object::address_from_extend_ref(&pool.extend_ref));
2281
+ let op_denom = get_op_denom(pool.op_bridge_id, string::utf8(b"uinit"));
2282
+
2283
+ // set async callback
2284
+ let (ibc_receiver, memo) =
2285
+ generate_ibc_message(
2286
+ pool.vm_type,
2287
+ pool.hook_contract,
2288
+ batch_index,
2289
+ receiver,
2290
+ op_denom,
2291
+ amount
2292
+ );
2293
+
2294
+ // execute ibc transfer
2295
+ let pool_signer = object::generate_signer_for_extending(&pool.extend_ref);
2296
+ let (_, timestamp) = block::get_block_info();
2297
+
2298
+ cosmos::transfer(
2299
+ &pool_signer,
2300
+ ibc_receiver,
2301
+ ibc_op_init_metadata,
2302
+ amount,
2303
+ string::utf8(b"transfer"),
2304
+ pool.ibc_channel,
2305
+ 0,
2306
+ 0,
2307
+ (timestamp + module_store.ibc_timeout) * 1000000000,
2308
+ memo
2309
+ )
2310
+ }
2311
+
2312
+ struct IBCMemo has copy, drop {
2313
+ _move_: MemoMove,
2314
+ wasm: Option<MemoWasm>,
2315
+ evm: Option<MemoEvm>
2316
+ }
2317
+
2318
+ struct MemoMove has copy, drop {
2319
+ message: Option<MemoMoveMessage>,
2320
+ async_callback: MemoAsyncCallback
2321
+ }
2322
+
2323
+ struct MemoAsyncCallback has copy, drop {
2324
+ id: u64,
2325
+ module_address: address,
2326
+ module_name: String
2327
+ }
2328
+
2329
+ struct MemoMoveMessage has copy, drop {
2330
+ module_address: String,
2331
+ module_name: String,
2332
+ function_name: String,
2333
+ type_args: vector<String>,
2334
+ args: vector<String>
2335
+ }
2336
+
2337
+ struct MemoWasm has copy, drop {
2338
+ message: MemoWasmMessage
2339
+ }
2340
+
2341
+ struct MemoWasmMessage has copy, drop {
2342
+ contracts: String,
2343
+ funds: vector<MemoWasmFunds>,
2344
+ msg: MemoWasmMinitswapHook
2345
+ }
2346
+
2347
+ struct MemoWasmFunds has copy, drop {
2348
+ denom: String,
2349
+ amount: String
2350
+ }
2351
+
2352
+ struct MemoWasmMinitswapHook has copy, drop {
2353
+ minitswap_hook: MemoWasmMinitswapHookMsg
2354
+ }
2355
+
2356
+ struct MemoWasmMinitswapHookMsg has copy, drop {
2357
+ receiver: String
2358
+ }
2359
+
2360
+ struct MemoEvm has copy, drop {
2361
+ message: MemoEvmMessage
2362
+ }
2363
+
2364
+ struct MemoEvmMessage has copy, drop {
2365
+ contract_addr: String,
2366
+ input: String,
2367
+ value: String,
2368
+ access_list: vector<MemoEvmAccessList>
2369
+ }
2370
+
2371
+ struct MemoEvmAccessList has copy, drop {
2372
+ address: String,
2373
+ storage_keys: vector<String>
2374
+ }
2375
+
2376
+ fun generate_ibc_message(
2377
+ vm_type: u8,
2378
+ hook_contract: String,
2379
+ batch_index: u64,
2380
+ receiver: String,
2381
+ op_denom: String,
2382
+ amount: u64
2383
+ ): (String, String) {
2384
+ let memo = IBCMemo {
2385
+ _move_: MemoMove {
2386
+ message: option::none(),
2387
+ async_callback: MemoAsyncCallback {
2388
+ id: batch_index,
2389
+ module_address: @initia_std,
2390
+ module_name: string::utf8(b"minitswap")
2391
+ }
2392
+ },
2393
+ wasm: option::none(),
2394
+ evm: option::none()
2395
+ };
2396
+
2397
+ // set hook message
2398
+ let ibc_receiver =
2399
+ if (vm_type == MOVE) {
2400
+ memo._move_.message = option::some(
2401
+ MemoMoveMessage {
2402
+ module_address: hook_contract,
2403
+ module_name: string::utf8(b"minitswap_hook"),
2404
+ function_name: string::utf8(b"minitswap_hook"),
2405
+ type_args: vector[],
2406
+ args: vector[
2407
+ base64::to_string(bcs::to_bytes(&op_denom)),
2408
+ base64::to_string(bcs::to_bytes(&amount)),
2409
+ base64::to_string(bcs::to_bytes(&receiver))
2410
+ ]
2411
+ }
2412
+ );
2413
+
2414
+ let ibc_receiver = hook_contract;
2415
+ string::append(
2416
+ &mut ibc_receiver,
2417
+ string::utf8(b"::minitswap_hook::minitswap_hook")
2418
+ );
2419
+ ibc_receiver
2420
+ } else if (vm_type == COSMWASM) {
2421
+ memo.wasm = option::some(
2422
+ MemoWasm {
2423
+ message: MemoWasmMessage {
2424
+ contracts: hook_contract,
2425
+ funds: vector[MemoWasmFunds {
2426
+ denom: op_denom,
2427
+ amount: to_string(&amount)
2428
+ }],
2429
+ msg: MemoWasmMinitswapHook {
2430
+ minitswap_hook: MemoWasmMinitswapHookMsg { receiver }
2431
+ }
2432
+ }
2433
+ }
2434
+ );
2435
+
2436
+ hook_contract
2437
+ } else if (vm_type == EVM) {
2438
+ memo.evm = option::some(
2439
+ MemoEvm {
2440
+ message: MemoEvmMessage {
2441
+ contract_addr: hook_contract,
2442
+ input: create_evm_input(&op_denom, amount, &receiver),
2443
+ value: string::utf8(b"0"),
2444
+ access_list: vector[]
2445
+ }
2446
+ }
2447
+ );
2448
+
2449
+ hook_contract
2450
+ } else {
2451
+ abort(error::invalid_argument(EVM_TYPE))
2452
+ };
2453
+
2454
+ (ibc_receiver, json::marshal_to_string(&memo))
2455
+ }
2456
+
2457
+ // abi encode of minitswapHook(string,uint256,string)
2458
+ fun create_evm_input(denom: &String, amount: u64, receiver: &String): String {
2459
+ let denom_bytes = pad_zero(*string::bytes(denom));
2460
+ let denom_bytes_len = vector::length(&denom_bytes);
2461
+ let receiver_bytes = pad_zero(*string::bytes(receiver));
2462
+
2463
+ let hex_input = vector[0xbe, 0xed, 0x09, 0x35]; // selector: keccak256(b"minitswapHook(string,uint256,string")).slice(0, 4)
2464
+ vector::append(&mut hex_input, table_key::encode_u256(0x60)); // start position of denom: padded(0x60)
2465
+ vector::append(&mut hex_input, table_key::encode_u256((amount as u256)));
2466
+ vector::append(
2467
+ &mut hex_input, table_key::encode_u256((0x60 + 32 + denom_bytes_len as u256))
2468
+ ); // start position of receiver
2469
+ vector::append(
2470
+ &mut hex_input,
2471
+ table_key::encode_u256((string::length(denom) as u256))
2472
+ ); // denom length
2473
+ vector::append(&mut hex_input, denom_bytes); // denom bytes
2474
+ vector::append(
2475
+ &mut hex_input,
2476
+ table_key::encode_u256((string::length(receiver) as u256))
2477
+ ); // receiver length
2478
+ vector::append(&mut hex_input, receiver_bytes); // receiver bytes
2479
+
2480
+ return to_string(&hex_input)
2481
+ }
2482
+
2483
+ fun pad_zero(data: vector<u8>): vector<u8> {
2484
+ let padding = vector[
2485
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2486
+ 0, 0, 0, 0, 0, 0
2487
+ ];
2488
+ let pad_len = 32 - vector::length(&data) % 32;
2489
+ if (pad_len == 32) {
2490
+ return data
2491
+ };
2492
+
2493
+ vector::trim_reverse(&mut padding, pad_len);
2494
+ vector::append(&mut data, padding);
2495
+ return data
2496
+ }
2497
+
2498
+ struct FinalizeTokenWithdrawalRequest has copy, drop {
2499
+ _type_: String,
2500
+ bridge_id: u64,
2501
+ output_index: u64,
2502
+ withdrawal_proofs: vector<String>,
2503
+ sender: String,
2504
+ receiver: String,
2505
+ sequence: u64,
2506
+ amount: CosmosCoin,
2507
+ version: String,
2508
+ state_root: String,
2509
+ storage_root: String,
2510
+ latest_block_hash: String
2511
+ }
2512
+
2513
+ struct CosmosCoin has copy, drop {
2514
+ denom: String,
2515
+ amount: u64
2516
+ }
2517
+
2518
+ fun generate_finalize_token_withdrawal_msg(
2519
+ bridge_id: u64,
2520
+ output_index: u64,
2521
+ withdrawal_proofs: vector<String>,
2522
+ sender: address,
2523
+ receiver: address,
2524
+ sequence: u64,
2525
+ denom: String,
2526
+ amount: u64,
2527
+ version: String,
2528
+ state_root: String,
2529
+ storage_root: String,
2530
+ latest_block_hash: String
2531
+ ): vector<u8> {
2532
+ json::marshal(
2533
+ &FinalizeTokenWithdrawalRequest {
2534
+ _type_: string::utf8(b"/opinit.ophost.v1.MsgFinalizeTokenWithdrawal"),
2535
+ bridge_id,
2536
+ output_index,
2537
+ withdrawal_proofs,
2538
+ sender: to_sdk(sender),
2539
+ receiver: to_sdk(receiver),
2540
+ sequence,
2541
+ amount: CosmosCoin { denom, amount },
2542
+ version,
2543
+ state_root,
2544
+ storage_root,
2545
+ latest_block_hash
2546
+ }
2547
+ )
2548
+ }
2549
+
2550
+ fun init_metadata(): Object<Metadata> {
2551
+ let addr = object::create_object_address(&@initia_std, b"uinit");
2552
+ object::address_to_object<Metadata>(addr)
2553
+ }
2554
+
2555
+ fun share_token_metadata(): Object<Metadata> {
2556
+ let addr = object::create_object_address(&@initia_std, SYMBOL);
2557
+ object::address_to_object<Metadata>(addr)
2558
+ }
2559
+
2560
+ fun total_share(): u64 {
2561
+ let supply = fungible_asset::supply(share_token_metadata());
2562
+ (*option::borrow(&supply) as u64)
2563
+ }
2564
+
2565
+ fun assert_is_chain(account: &signer, allow_admin: bool) acquires ModuleStore {
2566
+ let addr = signer::address_of(account);
2567
+ let module_store = borrow_global<ModuleStore>(@initia_std);
2568
+ assert!(
2569
+ addr == @initia_std || (allow_admin && module_store.admin == addr),
2570
+ error::permission_denied(EUNAUTHORIZED)
2571
+ );
2572
+ }
2573
+
2574
+ fun generate_unbond_key(account: address, release_time: u64): vector<u8> {
2575
+ let key = bcs::to_bytes(&account);
2576
+ vector::append(&mut key, table_key::encode_u64(release_time));
2577
+ key
2578
+ }
2579
+
2580
+ fun get_ibc_denom(channel_id: String, denom: String): String {
2581
+ let trace = string::utf8(b"transfer/");
2582
+ string::append(&mut trace, channel_id);
2583
+ string::append(&mut trace, string::utf8(b"/"));
2584
+ string::append(&mut trace, denom);
2585
+ let hash = sha2_256(*string::bytes(&trace));
2586
+
2587
+ let denom = string::utf8(b"ibc/");
2588
+ string::append(
2589
+ &mut denom,
2590
+ hex::encode_to_string_with_option(&hash, true)
2591
+ );
2592
+ denom
2593
+ }
2594
+
2595
+ fun get_op_denom(op_bridge_id: u64, denom: String): String {
2596
+ let bytes = table_key::encode_u64(op_bridge_id);
2597
+ vector::append(&mut bytes, *string::bytes(&denom));
2598
+ let hash = sha3_256(bytes);
2599
+
2600
+ let denom = string::utf8(b"l2/");
2601
+ string::append(&mut denom, hex::encode_to_string(&hash));
2602
+ denom
2603
+ }
2604
+
2605
+ fun check_bridge_info(
2606
+ op_bridge_id: u64, ibc_channel: String, ibc_op_init_metadata: Object<Metadata>
2607
+ ): (String, String) {
2608
+ let op_denom = get_op_denom(op_bridge_id, string::utf8(b"uinit"));
2609
+ let ibc_denom = get_ibc_denom(ibc_channel, op_denom);
2610
+ let ibc_token_address =
2611
+ object::create_object_address(&@initia_std, *string::bytes(&ibc_denom));
2612
+ assert!(
2613
+ object::object_address(&ibc_op_init_metadata) == ibc_token_address,
2614
+ error::invalid_argument(EINVAILD_METADATA)
2615
+ );
2616
+
2617
+ (op_denom, ibc_denom)
2618
+ }
2619
+
2620
+ fun mul_div(a: u64, b: u64, c: u64): u64 {
2621
+ let a = (a as u128);
2622
+ let b = (b as u128);
2623
+ let c = (c as u128);
2624
+ (a * b / c as u64)
2625
+ }
2626
+
2627
+ fun is_init(init: &FungibleAsset): bool {
2628
+ let fa_metadata = fungible_asset::metadata_from_asset(init);
2629
+ is_init_metadata(fa_metadata)
2630
+ }
2631
+
2632
+ fun is_init_metadata(metadata: Object<Metadata>): bool {
2633
+ metadata == init_metadata()
2634
+ }
2635
+
2636
+ fun get_d0(pool_size: u64, ann: u64): u64 {
2637
+ get_d(pool_size, pool_size, ann)
2638
+ }
2639
+
2640
+ fun get_d(init_amount: u64, ibc_op_init_amount: u64, ann: u64): u64 {
2641
+ let init_amount = (init_amount as u256);
2642
+ let ibc_op_init_amount = (ibc_op_init_amount as u256);
2643
+ let ann = (ann as u256);
2644
+
2645
+ let sum = init_amount + ibc_op_init_amount;
2646
+ if (sum == 0) return 0;
2647
+ let d = sum;
2648
+
2649
+ let i = 0;
2650
+
2651
+ // converge
2652
+ // d = (ann * sum - d_prod) / (ann - 1)
2653
+ while (i < 255) {
2654
+ let d_prev = d;
2655
+ // D ** (n + 1) / (n ** n * prod) in our case, always n = 2
2656
+ let d_prod = d * d * d / 4 / init_amount / ibc_op_init_amount;
2657
+
2658
+ d = (ann * sum / A_PRECISION + d_prod * 2) * d
2659
+ / ((ann - A_PRECISION) * d / A_PRECISION + 3 * d_prod);
2660
+ if (d > d_prev) {
2661
+ if (d - d_prev <= 1) break
2662
+ } else {
2663
+ if (d_prev - d <= 1) break
2664
+ };
2665
+ i = i + 1;
2666
+ };
2667
+
2668
+ return (d as u64)
2669
+ }
2670
+
2671
+ fun get_return_amount(
2672
+ offer_amount: u64,
2673
+ offer_pool_amount: u64,
2674
+ return_pool_amount: u64,
2675
+ pool_size: u64,
2676
+ ann: u64
2677
+ ): u64 {
2678
+ if (offer_amount == 0) {
2679
+ return 0
2680
+ };
2681
+
2682
+ let d = get_d0(pool_size, ann);
2683
+ let offer_pool_amount_after = offer_pool_amount + offer_amount;
2684
+
2685
+ let y = get_y(d, offer_pool_amount_after, ann);
2686
+
2687
+ (return_pool_amount - y as u64)
2688
+ }
2689
+
2690
+ fun get_offer_amount(
2691
+ return_amount: u64,
2692
+ offer_pool_amount: u64,
2693
+ return_pool_amount: u64,
2694
+ pool_size: u64,
2695
+ ann: u64
2696
+ ): u64 {
2697
+ if (return_amount == 0) {
2698
+ return 0
2699
+ };
2700
+
2701
+ let d = get_d0(pool_size, ann);
2702
+ let return_pool_amount_after = return_pool_amount - return_amount;
2703
+
2704
+ let y = get_y(d, return_pool_amount_after, ann);
2705
+
2706
+ (y - offer_pool_amount as u64)
2707
+ }
2708
+
2709
+ /// get counterparty's amount
2710
+ fun get_y(d: u64, x: u64, ann: u64): u64 {
2711
+ let d = (d as u256);
2712
+ let x = (x as u256);
2713
+ let ann = (ann as u256);
2714
+
2715
+ // Done by solving quadratic equation iteratively.
2716
+ // x_1**2 + x_1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)
2717
+ // y**2 + y * (x - (A * 2**2 - 1) * D / (A * 2**2)) = D ** (2 + 1) / (2 ** (2 * 2) * x * A)
2718
+ // y**2 + b*y = c
2719
+
2720
+ // y = (y**2 + c) / (2*y + b)
2721
+
2722
+ let c = d * d * d * A_PRECISION / ann / 4 / x; // d ** (2 + 1) / ann / 2 ** 2 / x
2723
+ let b_plus_d = x + d * A_PRECISION / ann; // need to sub d but sub later due to value must be less than 0
2724
+
2725
+ let y_prev;
2726
+ let y = d;
2727
+
2728
+ let i = 0;
2729
+ // converge
2730
+ while (i < 255) {
2731
+ y_prev = y;
2732
+ y = (y * y + c) / (2 * y + b_plus_d - d); // sub d here
2733
+
2734
+ if (y > y_prev) {
2735
+ if (y - y_prev <= 1) break
2736
+ } else {
2737
+ if (y_prev - y <= 1) break
2738
+ };
2739
+ i = i + 1;
2740
+ };
2741
+
2742
+ (y as u64)
2743
+ }
2744
+
2745
+ // R_fr = 0.5 + (R_max - 0.5) * (f * I) ** 3 / (1 + (f * I) ** 3)
2746
+ fun get_fully_recovered_ratio(
2747
+ imbalance: BigDecimal, max_ratio: BigDecimal, recover_param: BigDecimal
2748
+ ): BigDecimal {
2749
+ let fi = bigdecimal::mul(recover_param, imbalance);
2750
+ let fi3 = bigdecimal::mul(fi, bigdecimal::mul(fi, fi));
2751
+ let half = bigdecimal::from_ratio_u64(1, 2); // .5
2752
+ let to_sum =
2753
+ bigdecimal::mul(
2754
+ bigdecimal::sub(max_ratio, half), // R_max - 0.5
2755
+ bigdecimal::div(fi3, bigdecimal::add(bigdecimal::one(), fi3))
2756
+ // (f * I) ** 3 / (1 + (f * I) ** 3)
2757
+ );
2758
+
2759
+ bigdecimal::add(half, to_sum)
2760
+ }
2761
+
2762
+ fun get_fully_recovered_pool_amounts(
2763
+ pool_size: u64, fully_recovered_ratio: BigDecimal, ann: u64
2764
+ ): (u64, u64) {
2765
+ let one = bigdecimal::one();
2766
+ let g =
2767
+ bigdecimal::div(
2768
+ fully_recovered_ratio, bigdecimal::sub(one, fully_recovered_ratio)
2769
+ );
2770
+ let z = pool_size;
2771
+
2772
+ // Get first point
2773
+ let d0 = get_d0(pool_size, ann);
2774
+ let x =
2775
+ bigdecimal::truncate_u64(
2776
+ bigdecimal::div(
2777
+ bigdecimal::mul_by_u64(bigdecimal::from_u64(z), 2),
2778
+ bigdecimal::add(g, one)
2779
+ )
2780
+ ); // x = 2z / (g + 1)
2781
+ if (x == z) { // fully_recovered_ratio = 0.5
2782
+ return (pool_size, pool_size)
2783
+ };
2784
+ let y = get_y(d0, (x as u64), ann);
2785
+
2786
+ let i = 0;
2787
+ let x_prev;
2788
+ // get the cross point of y = grad * x and [(pool_size, pool_size), (x_prev, y_prev)]
2789
+ // the point is (temp_x, y), get x from y
2790
+ while (i < 255) {
2791
+ x_prev = x;
2792
+ // get cross point of y = g * x and y - y' = [(z - y') / (z - x')](x - x')
2793
+ // x = z * (x' - y') / (g * (x'- z) - (y' - z))
2794
+ // x = z * (y' - x') / (g * (z - x') + (y' - z))
2795
+ let temp_x =
2796
+ bigdecimal::div(
2797
+ bigdecimal::mul_by_u64(bigdecimal::from_u64(z), y - x),
2798
+ bigdecimal::add_by_u64(bigdecimal::mul_by_u64(g, z - x), y - z)
2799
+ );
2800
+
2801
+ // get y from temp x
2802
+ y = bigdecimal::truncate_u64(bigdecimal::mul(g, temp_x));
2803
+ // get x from y
2804
+ x = get_y(d0, y, ann);
2805
+
2806
+ // when fully recovered rate is too close to 0.5 y can be same with pool_size
2807
+ if (y == z) break;
2808
+
2809
+ // when fully recovered rate is too close to 0.5 x can be slightly higher than pool_size
2810
+ if (x > z) {
2811
+ x = pool_size;
2812
+ break
2813
+ };
2814
+
2815
+ if (x >= x_prev) {
2816
+ if (x - x_prev <= 1) break
2817
+ } else {
2818
+ if (x_prev - x <= 1) break
2819
+ };
2820
+ i = i + 1;
2821
+ };
2822
+
2823
+ ((x as u64), (y as u64))
2824
+ }
2825
+
2826
+ fun assert_min_amount(fa: &FungibleAsset, min_return: Option<u64>) {
2827
+ if (option::is_some(&min_return)) {
2828
+ let amount = fungible_asset::amount(fa);
2829
+ assert!(
2830
+ amount >= option::extract(&mut min_return),
2831
+ error::invalid_state(EMIN_RETURN)
2832
+ )
2833
+ }
2834
+ }
2835
+
2836
+ // swap simulation that not returning error
2837
+ public fun safe_swap_simulation(
2838
+ offer_metadata: Object<Metadata>,
2839
+ return_metadata: Object<Metadata>,
2840
+ offer_amount: u64
2841
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
2842
+ let is_init_offered = is_init_metadata(offer_metadata);
2843
+ let ibc_op_init_metadata =
2844
+ if (is_init_offered) {
2845
+ return_metadata
2846
+ } else {
2847
+ offer_metadata
2848
+ };
2849
+
2850
+ let virtual_pool_exists = virtual_pool_exists(ibc_op_init_metadata);
2851
+
2852
+ assert!(
2853
+ virtual_pool_exists,
2854
+ error::invalid_argument(EPOOL_NOT_FOUND)
2855
+ );
2856
+
2857
+ let (init_pool_amount, ibc_op_init_pool_amount) =
2858
+ get_pool_amount(ibc_op_init_metadata, !is_init_offered);
2859
+ let (module_store, pool) = borrow_all(ibc_op_init_metadata);
2860
+ let (pool_size, ann) = (pool.pool_size, pool.ann);
2861
+ let (return_amount, fee_amount) =
2862
+ if (is_init_offered) {
2863
+ let return_amount =
2864
+ get_return_amount(
2865
+ offer_amount,
2866
+ init_pool_amount,
2867
+ ibc_op_init_pool_amount,
2868
+ pool_size,
2869
+ ann
2870
+ );
2871
+
2872
+ if (ibc_op_init_pool_amount - return_amount < pool_size) {
2873
+ return (0, 0)
2874
+ };
2875
+
2876
+ // take swap fee
2877
+ let swap_fee_amount =
2878
+ bigdecimal::mul_by_u64_ceil(
2879
+ module_store.swap_fee_rate, return_amount
2880
+ );
2881
+
2882
+ // take arb fee
2883
+ let arb_profit =
2884
+ if (return_amount > offer_amount + swap_fee_amount) {
2885
+ return_amount - swap_fee_amount - offer_amount
2886
+ } else { 0 };
2887
+ let arb_fee_amount =
2888
+ bigdecimal::mul_by_u64_ceil(module_store.arb_fee_rate, arb_profit);
2889
+ let fee_amount = swap_fee_amount + arb_fee_amount;
2890
+
2891
+ (return_amount, fee_amount)
2892
+ } else {
2893
+ let return_amount =
2894
+ get_return_amount(
2895
+ offer_amount,
2896
+ ibc_op_init_pool_amount,
2897
+ init_pool_amount,
2898
+ pool_size,
2899
+ ann
2900
+ );
2901
+ let fee_amount =
2902
+ bigdecimal::mul_by_u64_ceil(
2903
+ module_store.swap_fee_rate, return_amount
2904
+ );
2905
+
2906
+ (return_amount, fee_amount)
2907
+ };
2908
+
2909
+ return_amount = return_amount - fee_amount;
2910
+
2911
+ (return_amount, fee_amount)
2912
+ }
2913
+
2914
+ public fun safe_swap_simulation_given_out(
2915
+ offer_metadata: Object<Metadata>,
2916
+ return_metadata: Object<Metadata>,
2917
+ return_amount: u64
2918
+ ): (u64, u64) acquires ModuleStore, VirtualPool {
2919
+ let is_init_offered = is_init_metadata(offer_metadata);
2920
+ let ibc_op_init_metadata =
2921
+ if (is_init_offered) {
2922
+ return_metadata
2923
+ } else {
2924
+ offer_metadata
2925
+ };
2926
+
2927
+ let virtual_pool_exists = virtual_pool_exists(ibc_op_init_metadata);
2928
+
2929
+ assert!(
2930
+ virtual_pool_exists,
2931
+ error::invalid_argument(EPOOL_NOT_FOUND)
2932
+ );
2933
+
2934
+ let (init_pool_amount, ibc_op_init_pool_amount) =
2935
+ get_pool_amount(ibc_op_init_metadata, !is_init_offered);
2936
+ let (module_store, pool) = borrow_all(ibc_op_init_metadata);
2937
+ let (pool_size, ann) = (pool.pool_size, pool.ann);
2938
+ let (offer_amount, fee_amount) =
2939
+ if (is_init_offered) {
2940
+ // first assume there are no arb fee and calculate offer amount
2941
+ // and then calculate arb fee and get actual return amount which is same with return_amount_before_swap_fee - swap_fee_amount - arb_fee_amount
2942
+ // to make actual return amount to return amount, set return_amount_before_swap_fee = return_amount_before_swap_fee + return_diff
2943
+ // where return_diff = target return amount - actual return amount
2944
+ // and recalculate offer amount repeatedly until return amount <= actual return amount
2945
+ // note that actual return is always small or equal with target return amount
2946
+
2947
+ // adjust fee. return amount before swap fee = return amount * 1 / (1 - f)
2948
+ let return_amount_before_swap_fee =
2949
+ bigdecimal::truncate_u64(
2950
+ bigdecimal::div(
2951
+ bigdecimal::from_u64(return_amount),
2952
+ bigdecimal::sub(
2953
+ bigdecimal::one(), module_store.swap_fee_rate
2954
+ )
2955
+ )
2956
+ );
2957
+ if (ibc_op_init_pool_amount - return_amount_before_swap_fee < pool_size) {
2958
+ return ((U64_MAX as u64), (U64_MAX as u64))
2959
+ };
2960
+
2961
+ let swap_fee_amount = return_amount_before_swap_fee - return_amount;
2962
+
2963
+ let offer_amount =
2964
+ get_offer_amount(
2965
+ return_amount_before_swap_fee,
2966
+ init_pool_amount,
2967
+ ibc_op_init_pool_amount,
2968
+ pool_size,
2969
+ ann
2970
+ );
2971
+
2972
+ // calculate arb fee
2973
+ let arb_profit =
2974
+ if (return_amount > offer_amount) {
2975
+ return_amount - offer_amount
2976
+ } else { 0 };
2977
+ let arb_fee_amount =
2978
+ bigdecimal::mul_by_u64_ceil(module_store.arb_fee_rate, arb_profit);
2979
+
2980
+ // actual return amount is return amount - arb fee
2981
+ let actual_return_amount = return_amount - arb_fee_amount;
2982
+ let return_diff = arb_fee_amount;
2983
+
2984
+ // retry while actual return amount is equal to return amount
2985
+ let i = 0;
2986
+ while (return_amount > actual_return_amount && i < 255) {
2987
+ return_amount_before_swap_fee = return_amount_before_swap_fee
2988
+ + return_diff;
2989
+
2990
+ if (ibc_op_init_pool_amount - return_amount_before_swap_fee
2991
+ < pool_size) {
2992
+ return ((U64_MAX as u64), (U64_MAX as u64))
2993
+ };
2994
+
2995
+ swap_fee_amount = bigdecimal::mul_by_u64_ceil(
2996
+ module_store.swap_fee_rate,
2997
+ return_amount_before_swap_fee
2998
+ );
2999
+
3000
+ offer_amount = get_offer_amount(
3001
+ return_amount_before_swap_fee,
3002
+ init_pool_amount,
3003
+ ibc_op_init_pool_amount,
3004
+ pool_size,
3005
+ ann
3006
+ );
3007
+
3008
+ // calculate arb fee
3009
+ arb_profit = if (return_amount > offer_amount) {
3010
+ return_amount_before_swap_fee - swap_fee_amount - offer_amount
3011
+ } else { 0 };
3012
+ arb_fee_amount = bigdecimal::mul_by_u64_ceil(
3013
+ module_store.arb_fee_rate, arb_profit
3014
+ );
3015
+ actual_return_amount = return_amount_before_swap_fee
3016
+ - swap_fee_amount - arb_fee_amount;
3017
+ if (actual_return_amount >= return_amount) break;
3018
+
3019
+ return_diff = return_amount - actual_return_amount;
3020
+ i = i + 1;
3021
+ };
3022
+
3023
+ (offer_amount, swap_fee_amount + arb_fee_amount)
3024
+ } else {
3025
+ // adjust fee. amount = amount * 1 / (1 - f)
3026
+ let return_amount_ =
3027
+ bigdecimal::truncate_u64(
3028
+ bigdecimal::div(
3029
+ bigdecimal::from_u64(return_amount),
3030
+ bigdecimal::sub(
3031
+ bigdecimal::one(), module_store.swap_fee_rate
3032
+ )
3033
+ )
3034
+ );
3035
+ let fee_amount = return_amount_ - return_amount;
3036
+
3037
+ let offer_amount =
3038
+ get_offer_amount(
3039
+ return_amount_,
3040
+ ibc_op_init_pool_amount,
3041
+ init_pool_amount,
3042
+ pool_size,
3043
+ ann
3044
+ );
3045
+
3046
+ (offer_amount, fee_amount)
3047
+ };
3048
+
3049
+ (offer_amount, fee_amount)
3050
+ }
3051
+
3052
+ #[test_only]
3053
+ public fun init_module_for_test() {
3054
+ init_module(&initia_std::account::create_signer_for_test(@initia_std));
3055
+ }
3056
+
3057
+ #[test_only]
3058
+ fun initialized_coin(
3059
+ account: &signer, symbol: String
3060
+ ): (coin::BurnCapability, coin::FreezeCapability, coin::MintCapability) {
3061
+ let (mint_cap, burn_cap, freeze_cap, _) =
3062
+ coin::initialize_and_generate_extend_ref(
3063
+ account,
3064
+ option::none(),
3065
+ string::utf8(b""),
3066
+ symbol,
3067
+ 6,
3068
+ string::utf8(b""),
3069
+ string::utf8(b"")
3070
+ );
3071
+
3072
+ return (burn_cap, freeze_cap, mint_cap)
3073
+ }
3074
+
3075
+ #[test_only]
3076
+ fun finalize_arb_mock(
3077
+ account: &signer,
3078
+ arb_index: u64,
3079
+ _bridge_id: u64,
3080
+ _output_index: u64,
3081
+ _withdrawal_proofs: vector<String>,
3082
+ _sender: address,
3083
+ _sequence: u64,
3084
+ amount: u64,
3085
+ _version: String,
3086
+ _state_root: String,
3087
+ _storage_root: String,
3088
+ _latest_block_hash: String,
3089
+ init_mint_cap: &coin::MintCapability
3090
+ ) acquires ModuleStore, VirtualPool {
3091
+ // check arb info
3092
+ let module_store = borrow_global<ModuleStore>(@initia_std);
3093
+ let pool_obj =
3094
+ table::borrow(
3095
+ &module_store.global_arb_batch_map,
3096
+ table_key::encode_u64(arb_index)
3097
+ );
3098
+ let pool = borrow_global<VirtualPool>(object::object_address(&*pool_obj));
3099
+ let arb_info =
3100
+ table::borrow(
3101
+ &pool.arb_batch_map,
3102
+ table_key::encode_u64(arb_index)
3103
+ );
3104
+
3105
+ assert!(
3106
+ amount == arb_info.ibc_op_init_sent,
3107
+ error::invalid_argument(EAMOUNT_MISMATCH)
3108
+ );
3109
+
3110
+ // mock finalize withdraw
3111
+ coin::mint_to(
3112
+ init_mint_cap,
3113
+ object::address_from_extend_ref(&pool.extend_ref),
3114
+ amount
3115
+ );
3116
+
3117
+ let module_signer =
3118
+ object::generate_signer_for_extending(&module_store.extend_ref);
3119
+
3120
+ // execute hook
3121
+ finalize_arb_hook(
3122
+ &module_signer,
3123
+ arb_index,
3124
+ signer::address_of(account)
3125
+ );
3126
+ }
3127
+
3128
+ #[test]
3129
+ fun test_finalize_token_withdrawal_msg() {
3130
+ let msg =
3131
+ generate_finalize_token_withdrawal_msg(
3132
+ 1,
3133
+ 2,
3134
+ vector[string::utf8(b"abc"), string::utf8(b"123")],
3135
+ @0x1,
3136
+ @0x2,
3137
+ 3,
3138
+ string::utf8(b"uinit"),
3139
+ 100,
3140
+ string::utf8(b"version"),
3141
+ string::utf8(b"state_root"),
3142
+ string::utf8(b"storage_root"),
3143
+ string::utf8(b"latest_block_hash")
3144
+ );
3145
+ let json_str =
3146
+ b"{\"@type\":\"/opinit.ophost.v1.MsgFinalizeTokenWithdrawal\",\"amount\":{\"amount\":\"100\",\"denom\":\"uinit\"},\"bridge_id\":\"1\",\"latest_block_hash\":\"latest_block_hash\",\"output_index\":\"2\",\"receiver\":\"init1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzwsp0lj\",\"sender\":\"init1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqr5e3d\",\"sequence\":\"3\",\"state_root\":\"state_root\",\"storage_root\":\"storage_root\",\"version\":\"version\",\"withdrawal_proofs\":[\"abc\",\"123\"]}";
3147
+ assert!(msg == json_str, 0);
3148
+ }
3149
+
3150
+ #[test]
3151
+ fun test_ibc_denom() {
3152
+ let ibc_denom =
3153
+ get_ibc_denom(
3154
+ string::utf8(b"channel-0"),
3155
+ string::utf8(
3156
+ b"l2/771d639f30fbe45e3fbca954ffbe2fcc26f915f5513c67a4a2d0bc1d635bdefd"
3157
+ )
3158
+ );
3159
+ assert!(
3160
+ string::utf8(
3161
+ b"ibc/82EB1C694C571F954E68BFD68CFCFCD6123B0EBB69AAA8BAB7A082939B45E802"
3162
+ ) == ibc_denom,
3163
+ 0
3164
+ );
3165
+ }
3166
+
3167
+ #[test]
3168
+ fun test_op_denom() {
3169
+ let op_denom = get_op_denom(1, string::utf8(b"uinit"));
3170
+ assert!(
3171
+ string::utf8(
3172
+ b"l2/771d639f30fbe45e3fbca954ffbe2fcc26f915f5513c67a4a2d0bc1d635bdefd"
3173
+ ) == op_denom,
3174
+ 0
3175
+ );
3176
+ }
3177
+
3178
+ #[test(chain = @0x1)]
3179
+ fun in_house_arb_test(chain: signer) acquires ModuleStore, VirtualPool {
3180
+ initia_std::primary_fungible_store::init_module_for_test();
3181
+ init_module(&chain);
3182
+ block::set_block_info(0, 100);
3183
+ let chain_addr = signer::address_of(&chain);
3184
+
3185
+ let (_, _, initia_mint_cap) = initialized_coin(&chain, string::utf8(b"uinit"));
3186
+ let (_, _, ibc_op_init_mint_cap) =
3187
+ initialized_coin(
3188
+ &chain,
3189
+ string::utf8(
3190
+ b"ibc/82EB1C694C571F954E68BFD68CFCFCD6123B0EBB69AAA8BAB7A082939B45E802"
3191
+ )
3192
+ );
3193
+ let init_metadata = coin::metadata(chain_addr, string::utf8(b"uinit"));
3194
+ let ibc_op_init_metadata =
3195
+ coin::metadata(
3196
+ chain_addr,
3197
+ string::utf8(
3198
+ b"ibc/82EB1C694C571F954E68BFD68CFCFCD6123B0EBB69AAA8BAB7A082939B45E802"
3199
+ )
3200
+ );
3201
+ coin::mint_to(&initia_mint_cap, chain_addr, 1000000000);
3202
+ coin::mint_to(&ibc_op_init_mint_cap, chain_addr, 1000000000);
3203
+ provide(&chain, 15000000, option::none());
3204
+
3205
+ create_pool(
3206
+ &chain,
3207
+ ibc_op_init_metadata,
3208
+ bigdecimal::from_ratio_u64(100000, 1),
3209
+ 10000000,
3210
+ 3000,
3211
+ bigdecimal::from_ratio_u64(7, 10),
3212
+ bigdecimal::from_ratio_u64(2, 1),
3213
+ MOVE,
3214
+ string::utf8(b"0x1"),
3215
+ 1,
3216
+ string::utf8(b"channel-0")
3217
+ );
3218
+
3219
+ swap(
3220
+ &chain,
3221
+ ibc_op_init_metadata,
3222
+ init_metadata,
3223
+ 10000000,
3224
+ option::none()
3225
+ );
3226
+
3227
+ block::set_block_info(0, 100000);
3228
+
3229
+ // trigger check arb
3230
+ swap(
3231
+ &chain,
3232
+ ibc_op_init_metadata,
3233
+ init_metadata,
3234
+ 10000000,
3235
+ option::none()
3236
+ );
3237
+
3238
+ let arb_info = get_arb_info(0);
3239
+
3240
+ // finalize arb
3241
+ let str = string::utf8(b"");
3242
+ let excutor_balance_before = coin::balance(@0x1, init_metadata);
3243
+
3244
+ finalize_arb_mock(
3245
+ &chain,
3246
+ 0,
3247
+ 1,
3248
+ 1,
3249
+ vector[],
3250
+ @0x1,
3251
+ 1,
3252
+ arb_info.ibc_op_init_sent,
3253
+ str,
3254
+ str,
3255
+ str,
3256
+ str,
3257
+ &initia_mint_cap
3258
+ );
3259
+
3260
+ let excutor_balance_after = coin::balance(@0x1, init_metadata);
3261
+
3262
+ // check triggering fee
3263
+ assert!(
3264
+ excutor_balance_after - excutor_balance_before == arb_info.triggering_fee,
3265
+ 0
3266
+ );
3267
+ }
3268
+
3269
+ #[test(chain = @0x1)]
3270
+ fun end_to_end(chain: signer) acquires ModuleStore, VirtualPool {
3271
+ initia_std::primary_fungible_store::init_module_for_test();
3272
+ init_module(&chain);
3273
+ stableswap::init_module_for_test();
3274
+
3275
+ block::set_block_info(0, 100);
3276
+
3277
+ let chain_addr = signer::address_of(&chain);
3278
+
3279
+ let (_, _, initia_mint_cap) = initialized_coin(&chain, string::utf8(b"uinit"));
3280
+ let (_, _, ibc_op_init_1_mint_cap) =
3281
+ initialized_coin(
3282
+ &chain,
3283
+ string::utf8(
3284
+ b"ibc/82EB1C694C571F954E68BFD68CFCFCD6123B0EBB69AAA8BAB7A082939B45E802"
3285
+ )
3286
+ );
3287
+ let (_, _, ibc_op_init_2_mint_cap) =
3288
+ initialized_coin(
3289
+ &chain,
3290
+ string::utf8(
3291
+ b"ibc/AD8D520BF2D981113B652A3BCD55368EF146FCB9E016F8B1DAECAA5D570BC8A1"
3292
+ )
3293
+ );
3294
+ let init_metadata = coin::metadata(chain_addr, string::utf8(b"uinit"));
3295
+ let ibc_op_init_1_metadata =
3296
+ coin::metadata(
3297
+ chain_addr,
3298
+ string::utf8(
3299
+ b"ibc/82EB1C694C571F954E68BFD68CFCFCD6123B0EBB69AAA8BAB7A082939B45E802"
3300
+ )
3301
+ );
3302
+ let ibc_op_init_2_metadata =
3303
+ coin::metadata(
3304
+ chain_addr,
3305
+ string::utf8(
3306
+ b"ibc/AD8D520BF2D981113B652A3BCD55368EF146FCB9E016F8B1DAECAA5D570BC8A1"
3307
+ )
3308
+ );
3309
+
3310
+ coin::mint_to(&initia_mint_cap, chain_addr, 100000000);
3311
+ coin::mint_to(
3312
+ &ibc_op_init_1_mint_cap,
3313
+ chain_addr,
3314
+ 1000000000
3315
+ );
3316
+ coin::mint_to(
3317
+ &ibc_op_init_2_mint_cap,
3318
+ chain_addr,
3319
+ 1000000000
3320
+ );
3321
+ provide(&chain, 15000000, option::none());
3322
+
3323
+ create_pool(
3324
+ &chain,
3325
+ ibc_op_init_1_metadata,
3326
+ bigdecimal::from_ratio_u64(100000, 1),
3327
+ 10000000,
3328
+ 3000,
3329
+ bigdecimal::from_ratio_u64(7, 10),
3330
+ bigdecimal::from_ratio_u64(2, 1),
3331
+ MOVE,
3332
+ string::utf8(b"0x1"),
3333
+ 1,
3334
+ string::utf8(b"channel-0")
3335
+ );
3336
+
3337
+ create_pool(
3338
+ &chain,
3339
+ ibc_op_init_2_metadata,
3340
+ bigdecimal::from_ratio_u64(100000, 1),
3341
+ 10000000,
3342
+ 3000,
3343
+ bigdecimal::from_ratio_u64(7, 10),
3344
+ bigdecimal::from_ratio_u64(2, 1),
3345
+ MOVE,
3346
+ string::utf8(b"0x1"),
3347
+ 2,
3348
+ string::utf8(b"channel-2")
3349
+ );
3350
+
3351
+ create_stableswap_pool(
3352
+ &chain,
3353
+ 1,
3354
+ string::utf8(b"channel-0"),
3355
+ ibc_op_init_1_metadata,
3356
+ 10000000,
3357
+ 10000000
3358
+ );
3359
+
3360
+ // swap ibc op init to init
3361
+ let (return_amount, _) =
3362
+ swap_simulation(
3363
+ ibc_op_init_1_metadata,
3364
+ init_metadata,
3365
+ 1000000
3366
+ );
3367
+ assert!(return_amount == 992740, 0);
3368
+
3369
+ let balance_before = coin::balance(chain_addr, init_metadata);
3370
+ swap(
3371
+ &chain,
3372
+ ibc_op_init_1_metadata,
3373
+ init_metadata,
3374
+ 1000000,
3375
+ option::none()
3376
+ );
3377
+ let balance_after = coin::balance(chain_addr, init_metadata);
3378
+ assert!(
3379
+ balance_after - balance_before == return_amount,
3380
+ 0
3381
+ );
3382
+
3383
+ // swap init to ibc op init
3384
+ let (return_amount, _) =
3385
+ swap_simulation(init_metadata, ibc_op_init_1_metadata, 500000);
3386
+ assert!(return_amount == 504224, 0);
3387
+
3388
+ let balance_before = coin::balance(chain_addr, ibc_op_init_1_metadata);
3389
+ swap(
3390
+ &chain,
3391
+ init_metadata,
3392
+ ibc_op_init_1_metadata,
3393
+ 500000,
3394
+ option::none()
3395
+ );
3396
+ let balance_after = coin::balance(chain_addr, ibc_op_init_1_metadata);
3397
+ assert!(
3398
+ balance_after - balance_before == return_amount,
3399
+ 0
3400
+ );
3401
+
3402
+ change_pool_size(&chain, ibc_op_init_1_metadata, 9000000);
3403
+ }
3404
+
3405
+ #[test]
3406
+ fun test_generate_ibc_message() {
3407
+ let (ibc_receiver, memo) =
3408
+ generate_ibc_message(
3409
+ MOVE,
3410
+ string::utf8(b"0x1"),
3411
+ 1,
3412
+ string::utf8(b"receiver"),
3413
+ string::utf8(b"op_denom"),
3414
+ 1000000
3415
+ );
3416
+
3417
+ assert!(ibc_receiver == string::utf8(b"0x1::minitswap_hook::minitswap_hook"), 0);
3418
+ assert!(
3419
+ memo
3420
+ == string::utf8(
3421
+ b"{\"evm\":null,\"move\":{\"async_callback\":{\"id\":\"1\",\"module_address\":\"0x1\",\"module_name\":\"minitswap\"},\"message\":{\"args\":[\"CG9wX2Rlbm9t\",\"QEIPAAAAAAA=\",\"CHJlY2VpdmVy\"],\"function_name\":\"minitswap_hook\",\"module_address\":\"0x1\",\"module_name\":\"minitswap_hook\",\"type_args\":[]}},\"wasm\":null}"
3422
+ ),
3423
+ 1
3424
+ );
3425
+
3426
+ let (ibc_receiver, memo) =
3427
+ generate_ibc_message(
3428
+ COSMWASM,
3429
+ string::utf8(b"cosmwasm_contract_addr"),
3430
+ 1,
3431
+ string::utf8(b"receiver"),
3432
+ string::utf8(b"op_denom"),
3433
+ 1000000
3434
+ );
3435
+
3436
+ assert!(ibc_receiver == string::utf8(b"cosmwasm_contract_addr"), 2);
3437
+ assert!(
3438
+ memo
3439
+ == string::utf8(
3440
+ b"{\"evm\":null,\"move\":{\"async_callback\":{\"id\":\"1\",\"module_address\":\"0x1\",\"module_name\":\"minitswap\"},\"message\":null},\"wasm\":{\"message\":{\"contracts\":\"cosmwasm_contract_addr\",\"funds\":[{\"amount\":\"1000000\",\"denom\":\"op_denom\"}],\"msg\":{\"minitswap_hook\":{\"receiver\":\"receiver\"}}}}}"
3441
+ ),
3442
+ 3
3443
+ );
3444
+ }
3445
+
3446
+ #[test]
3447
+ fun test_evm_input() {
3448
+ assert!(
3449
+ create_evm_input(
3450
+ &string::utf8(
3451
+ b"l2/771d639f30fbe45e3fbca954ffbe2fcc26f915f5513c67a4a2d0bc1d635bdefd"
3452
+ ),
3453
+ 100,
3454
+ &string::utf8(b"init1lf0swvvhy3vqautdemmvunfmp0grfrjgzznx9s")
3455
+ ) == string::utf8(
3456
+ b"0xbeed09350000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000436c322f373731643633396633306662653435653366626361393534666662653266636332366639313566353531336336376134613264306263316436333562646566640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b696e6974316c663073777676687933767161757464656d6d76756e666d7030677266726a677a7a6e783973000000000000000000000000000000000000000000"
3457
+ ),
3458
+ 0
3459
+ )
3460
+ }
3461
+ }