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,2795 @@
1
+ module initia_std::dex {
2
+ use std::event::Self;
3
+ use std::option::{Self, Option};
4
+ use std::error;
5
+ use std::signer;
6
+ use std::vector;
7
+
8
+ use initia_std::object::{Self, Object, ExtendRef};
9
+ use initia_std::block::get_block_info;
10
+ use initia_std::fungible_asset::{Self, Metadata, FungibleAsset, FungibleStore};
11
+ use initia_std::primary_fungible_store;
12
+ use initia_std::string::{Self, String};
13
+ use initia_std::table::{Self, Table};
14
+ use initia_std::coin;
15
+ use initia_std::bigdecimal::{Self, BigDecimal};
16
+ use initia_std::biguint;
17
+
18
+ /// Pool configuration
19
+ struct Config has key {
20
+ extend_ref: ExtendRef,
21
+ weights: Weights,
22
+ swap_fee_rate: BigDecimal
23
+ }
24
+
25
+ struct Pool has key {
26
+ coin_a_store: Object<FungibleStore>,
27
+ coin_b_store: Object<FungibleStore>
28
+ }
29
+
30
+ struct FlashSwapLock has key {
31
+ coin_a_borrow_amount: u64,
32
+ coin_b_borrow_amount: u64
33
+ }
34
+
35
+ /// FlashSwapReceipt is following the hot potato pattern, so the borrower
36
+ /// need to pass the created FlashSwapReceipt object to this contract to
37
+ /// destruct it.
38
+ ///
39
+ /// https://move-book.com/programmability/hot-potato-pattern.html
40
+ struct FlashSwapReceipt {
41
+ pair_addr: address
42
+ }
43
+
44
+ struct Weights has copy, drop, store {
45
+ weights_before: Weight,
46
+ weights_after: Weight
47
+ }
48
+
49
+ struct Weight has copy, drop, store {
50
+ coin_a_weight: BigDecimal,
51
+ coin_b_weight: BigDecimal,
52
+ timestamp: u64
53
+ }
54
+
55
+ /// Key for pair
56
+ struct PairKey has copy, drop {
57
+ coin_a: address,
58
+ coin_b: address,
59
+ liquidity_token: address
60
+ }
61
+
62
+ struct PairResponse has copy, drop, store {
63
+ coin_a: address,
64
+ coin_b: address,
65
+ liquidity_token: address,
66
+ weights: Weights,
67
+ swap_fee_rate: BigDecimal
68
+ }
69
+
70
+ struct PairByDenomResponse has copy, drop, store {
71
+ coin_a: String,
72
+ coin_b: String,
73
+ liquidity_token: String,
74
+ weights: Weights,
75
+ swap_fee_rate: BigDecimal
76
+ }
77
+
78
+ /// Coin capabilities
79
+ struct CoinCapabilities has key {
80
+ burn_cap: coin::BurnCapability,
81
+ freeze_cap: coin::FreezeCapability,
82
+ mint_cap: coin::MintCapability
83
+ }
84
+
85
+ #[event]
86
+ /// Event emitted when provide liquidity.
87
+ struct ProvideEvent has drop, store {
88
+ coin_a: address,
89
+ coin_b: address,
90
+ liquidity_token: address,
91
+ coin_a_amount: u64,
92
+ coin_b_amount: u64,
93
+ liquidity: u64
94
+ }
95
+
96
+ #[event]
97
+ /// Event emitted when withdraw liquidity.
98
+ struct WithdrawEvent has drop, store {
99
+ coin_a: address,
100
+ coin_b: address,
101
+ liquidity_token: address,
102
+ coin_a_amount: u64,
103
+ coin_b_amount: u64,
104
+ liquidity: u64
105
+ }
106
+
107
+ #[event]
108
+ /// Event emitted when swap token.
109
+ struct SwapEvent has drop, store {
110
+ offer_coin: address,
111
+ return_coin: address,
112
+ liquidity_token: address,
113
+ offer_amount: u64,
114
+ return_amount: u64,
115
+ fee_amount: u64
116
+ }
117
+
118
+ #[event]
119
+ struct SingleAssetProvideEvent has drop, store {
120
+ coin_a: address,
121
+ coin_b: address,
122
+ liquidity_token: address,
123
+ provide_coin: address,
124
+ provide_amount: u64,
125
+ fee_amount: u64,
126
+ liquidity: u64
127
+ }
128
+
129
+ #[event]
130
+ struct FlashSwapEvent has drop, store {
131
+ offer_coin: address,
132
+ return_coin: address,
133
+ liquidity_token: address,
134
+ offer_amount: u64,
135
+ return_amount: u64,
136
+ fee_amount: u64
137
+ }
138
+
139
+ struct PoolInfoResponse has drop {
140
+ coin_a_amount: u64,
141
+ coin_b_amount: u64,
142
+ total_share: u128
143
+ }
144
+
145
+ struct ConfigResponse has drop {
146
+ weights: Weights,
147
+ swap_fee_rate: BigDecimal
148
+ }
149
+
150
+ struct CurrentWeightResponse has drop {
151
+ coin_a_weight: BigDecimal,
152
+ coin_b_weight: BigDecimal
153
+ }
154
+
155
+ struct PairMetadataResponse has drop {
156
+ coin_a_metadata: Object<Metadata>,
157
+ coin_b_metadata: Object<Metadata>
158
+ }
159
+
160
+ struct PairDenomResponse has drop {
161
+ coin_a_denom: String,
162
+ coin_b_denom: String
163
+ }
164
+
165
+ #[event]
166
+ struct CreatePairEvent has drop, store {
167
+ coin_a: address,
168
+ coin_b: address,
169
+ liquidity_token: address,
170
+ weights: Weights,
171
+ swap_fee_rate: BigDecimal
172
+ }
173
+
174
+ #[event]
175
+ struct SwapFeeUpdateEvent has drop, store {
176
+ coin_a: address,
177
+ coin_b: address,
178
+ liquidity_token: address,
179
+ swap_fee_rate: BigDecimal
180
+ }
181
+
182
+ /// Module store for storing pair infos
183
+ struct ModuleStore has key {
184
+ pairs: Table<PairKey, PairResponse>,
185
+ pair_count: u64
186
+ }
187
+
188
+ // Errors
189
+
190
+ /// Can not withdraw zero liquidity
191
+ const EZERO_LIQUIDITY: u64 = 2;
192
+
193
+ /// Return amount is smaller than the `min_return`
194
+ const EMIN_RETURN: u64 = 3;
195
+
196
+ /// Return liquidity amount is smaller than the `min_liquidity_amount`
197
+ const EMIN_LIQUIDITY: u64 = 4;
198
+
199
+ /// Returning coin amount of the result of the liquidity withdraw is smaller than min return
200
+ const EMIN_WITHDRAW: u64 = 5;
201
+
202
+ /// Base must be in the range of 0 < base < 2
203
+ const EOUT_OF_BASE_RANGE: u64 = 6;
204
+
205
+ /// Only chain can execute.
206
+ const EUNAUTHORIZED: u64 = 7;
207
+
208
+ /// Fee rate must be smaller than max fee rate
209
+ const EOUT_OF_SWAP_FEE_RATE_RANGE: u64 = 8;
210
+
211
+ /// end time must be larger than start time
212
+ const EWEIGHTS_TIMESTAMP: u64 = 9;
213
+
214
+ /// Wrong coin type given
215
+ const ECOIN_TYPE: u64 = 10;
216
+
217
+ /// Exceed max price impact
218
+ const EPRICE_IMPACT: u64 = 11;
219
+
220
+ /// LBP is not started, can not swap yet
221
+ const ELBP_NOT_STARTED: u64 = 14;
222
+
223
+ /// LBP is not ended, only swap allowed
224
+ const ELBP_NOT_ENDED: u64 = 15;
225
+
226
+ /// LBP start time must be larger than current time
227
+ const ELBP_START_TIME: u64 = 16;
228
+
229
+ /// All start_after must be provided or not
230
+ const ESTART_AFTER: u64 = 17;
231
+
232
+ // Cannot create pair with the same coin type
233
+ const ESAME_COIN_TYPE: u64 = 19;
234
+
235
+ /// Zero amount in the swap simulation is not allowed
236
+ const EZERO_AMOUNT_IN: u64 = 20;
237
+
238
+ /// Weights sum must be 1.0
239
+ const EINVALID_WEIGHTS: u64 = 21;
240
+
241
+ /// Pool is locked by flash swap
242
+ const EPOOL_LOCKED: u64 = 22;
243
+
244
+ /// Failed to repay flash swap due to incorrect repay amount
245
+ const EFAILED_TO_REPAY_FLASH_SWAP: u64 = 23;
246
+
247
+ // Constants
248
+
249
+ const MAX_LIMIT: u8 = 30;
250
+
251
+ // TODO - find the reasonable precision
252
+ /// Result Precision of `pow` and `ln` function
253
+ const PRECISION: u64 = 100000;
254
+
255
+ #[view]
256
+ public fun get_pair_metadata(pair: Object<Config>): PairMetadataResponse acquires Pool {
257
+ let pool = borrow_global<Pool>(object::object_address(&pair));
258
+ let coin_a_metadata = fungible_asset::store_metadata(pool.coin_a_store);
259
+ let coin_b_metadata = fungible_asset::store_metadata(pool.coin_b_store);
260
+
261
+ PairMetadataResponse { coin_a_metadata, coin_b_metadata }
262
+ }
263
+
264
+ #[view]
265
+ public fun get_pair_denom(pair: Object<Config>): PairDenomResponse acquires Pool {
266
+ let pair_metadata = get_pair_metadata(pair);
267
+
268
+ PairDenomResponse {
269
+ coin_a_denom: coin::metadata_to_denom(pair_metadata.coin_a_metadata),
270
+ coin_b_denom: coin::metadata_to_denom(pair_metadata.coin_b_metadata)
271
+ }
272
+ }
273
+
274
+ #[view]
275
+ /// Calculate spot price
276
+ /// https://balancer.fi/whitepaper.pdf (2)
277
+ public fun get_spot_price(
278
+ pair: Object<Config>, base_coin: Object<Metadata>
279
+ ): BigDecimal acquires Config, Pool, FlashSwapLock {
280
+ let (coin_a_pool, coin_b_pool, coin_a_weight, coin_b_weight, _) =
281
+ pool_info(pair, false);
282
+
283
+ let pair_key = generate_pair_key(pair);
284
+ let base_addr = object::object_address(&base_coin);
285
+ assert!(
286
+ base_addr == pair_key.coin_a || base_addr == pair_key.coin_b,
287
+ error::invalid_argument(ECOIN_TYPE)
288
+ );
289
+ let is_base_a = base_addr == pair_key.coin_a;
290
+ let (base_pool, quote_pool, base_weight, quote_weight) =
291
+ if (is_base_a) {
292
+ (coin_a_pool, coin_b_pool, coin_a_weight, coin_b_weight)
293
+ } else {
294
+ (coin_b_pool, coin_a_pool, coin_b_weight, coin_a_weight)
295
+ };
296
+
297
+ bigdecimal::div(
298
+ bigdecimal::mul_by_u64(base_weight, quote_pool),
299
+ bigdecimal::mul_by_u64(quote_weight, base_pool)
300
+ )
301
+ }
302
+
303
+ #[view]
304
+ public fun get_spot_price_by_denom(
305
+ pair_denom: String, base_coin: String
306
+ ): BigDecimal acquires Config, Pool, FlashSwapLock {
307
+ let pair_metadata = coin::denom_to_metadata(pair_denom);
308
+ let base_metadata = coin::denom_to_metadata(base_coin);
309
+ get_spot_price(object::convert(pair_metadata), base_metadata)
310
+ }
311
+
312
+ #[view]
313
+ /// Return swap simulation result
314
+ public fun get_swap_simulation(
315
+ pair: Object<Config>, offer_metadata: Object<Metadata>, offer_amount: u64
316
+ ): u64 acquires Config, Pool, FlashSwapLock {
317
+ let (return_amount, _fee_amount) =
318
+ get_swap_simulation_with_fee(pair, offer_metadata, offer_amount);
319
+ return_amount
320
+ }
321
+
322
+ #[view]
323
+ /// Return swap simulation result
324
+ public fun get_swap_simulation_with_fee(
325
+ pair: Object<Config>, offer_metadata: Object<Metadata>, offer_amount: u64
326
+ ): (u64, u64) acquires Config, Pool, FlashSwapLock {
327
+ let pair_key = generate_pair_key(pair);
328
+ let offer_address = object::object_address(&offer_metadata);
329
+ assert!(
330
+ offer_address == pair_key.coin_a || offer_address == pair_key.coin_b,
331
+ error::invalid_argument(ECOIN_TYPE)
332
+ );
333
+ let is_offer_a = offer_address == pair_key.coin_a;
334
+ let (pool_a, pool_b, weight_a, weight_b, swap_fee_rate) = pool_info(pair, true);
335
+ let (offer_pool, return_pool, offer_weight, return_weight) =
336
+ if (is_offer_a) {
337
+ (pool_a, pool_b, weight_a, weight_b)
338
+ } else {
339
+ (pool_b, pool_a, weight_b, weight_a)
340
+ };
341
+
342
+ swap_simulation(
343
+ offer_pool,
344
+ return_pool,
345
+ offer_weight,
346
+ return_weight,
347
+ offer_amount,
348
+ swap_fee_rate
349
+ )
350
+ }
351
+
352
+ #[view]
353
+ public fun get_swap_simulation_by_denom(
354
+ pair_denom: String, offer_denom: String, offer_amount: u64
355
+ ): u64 acquires Config, Pool, FlashSwapLock {
356
+ let pair_metadata = coin::denom_to_metadata(pair_denom);
357
+ let offer_metadata = coin::denom_to_metadata(offer_denom);
358
+ get_swap_simulation(
359
+ object::convert(pair_metadata),
360
+ offer_metadata,
361
+ offer_amount
362
+ )
363
+ }
364
+
365
+ #[view]
366
+ /// Return swap simulation result
367
+ public fun get_swap_simulation_given_out(
368
+ pair: Object<Config>, offer_metadata: Object<Metadata>, return_amount: u64
369
+ ): u64 acquires Config, Pool, FlashSwapLock {
370
+ let pair_key = generate_pair_key(pair);
371
+ let offer_address = object::object_address(&offer_metadata);
372
+ assert!(
373
+ offer_address == pair_key.coin_a || offer_address == pair_key.coin_b,
374
+ error::invalid_argument(ECOIN_TYPE)
375
+ );
376
+ let is_offer_a = offer_address == pair_key.coin_a;
377
+ let (pool_a, pool_b, weight_a, weight_b, swap_fee_rate) = pool_info(pair, true);
378
+ let (offer_pool, return_pool, offer_weight, return_weight) =
379
+ if (is_offer_a) {
380
+ (pool_a, pool_b, weight_a, weight_b)
381
+ } else {
382
+ (pool_b, pool_a, weight_b, weight_a)
383
+ };
384
+ let (offer_amount, _fee_amount) =
385
+ swap_simulation_given_out(
386
+ offer_pool,
387
+ return_pool,
388
+ offer_weight,
389
+ return_weight,
390
+ return_amount,
391
+ swap_fee_rate
392
+ );
393
+
394
+ offer_amount
395
+ }
396
+
397
+ #[view]
398
+ public fun get_swap_simulation_given_out_by_denom(
399
+ pair_denom: String, offer_denom: String, return_amount: u64
400
+ ): u64 acquires Config, Pool, FlashSwapLock {
401
+ let pair_metadata = coin::denom_to_metadata(pair_denom);
402
+ let offer_metadata = coin::denom_to_metadata(offer_denom);
403
+ get_swap_simulation_given_out(
404
+ object::convert(pair_metadata),
405
+ offer_metadata,
406
+ return_amount
407
+ )
408
+ }
409
+
410
+ #[view]
411
+ public fun get_provide_simulation(
412
+ pair: Object<Config>, coin_a_amount_in: u64, coin_b_amount_in: u64
413
+ ): u64 acquires Pool, FlashSwapLock {
414
+ let pool_addr = object::object_address(&pair);
415
+ let pool = borrow_global<Pool>(pool_addr);
416
+
417
+ calculate_provide_liquidity_return_amount(
418
+ pool, pair, coin_a_amount_in, coin_b_amount_in
419
+ )
420
+ }
421
+
422
+ #[view]
423
+ public fun get_single_asset_provide_simulation(
424
+ pair: Object<Config>, offer_asset_metadata: Object<Metadata>, amount_in: u64
425
+ ): u64 acquires Config, Pool, FlashSwapLock {
426
+ let pair_addr = object::object_address(&pair);
427
+ let pool = borrow_global<Pool>(pair_addr);
428
+
429
+ let (liquidity_amount, _, _) =
430
+ calculate_single_asset_provide_liquidity_return_amount(
431
+ pool, pair, offer_asset_metadata, amount_in
432
+ );
433
+
434
+ liquidity_amount
435
+ }
436
+
437
+ #[view]
438
+ /// get pool info
439
+ public fun get_pool_info(pair: Object<Config>): PoolInfoResponse acquires Pool, FlashSwapLock {
440
+ let pair_addr = object::object_address(&pair);
441
+ let pool = borrow_global<Pool>(pair_addr);
442
+ let (pool_coin_a, pool_coin_b) = pool_amounts(pool, pair_addr);
443
+ PoolInfoResponse {
444
+ coin_a_amount: pool_coin_a,
445
+ coin_b_amount: pool_coin_b,
446
+ total_share: option::extract(&mut fungible_asset::supply(pair))
447
+ }
448
+ }
449
+
450
+ #[view]
451
+ /// get pool info
452
+ public fun get_pool_info_by_denom(
453
+ pair_denom: String
454
+ ): PoolInfoResponse acquires Pool, FlashSwapLock {
455
+ let pair_metadata = coin::denom_to_metadata(pair_denom);
456
+ get_pool_info(object::convert(pair_metadata))
457
+ }
458
+
459
+ #[view]
460
+ /// get config
461
+ public fun get_config(pair: Object<Config>): ConfigResponse acquires Config {
462
+ let pair_addr = object::object_address(&pair);
463
+ let config = borrow_global<Config>(pair_addr);
464
+
465
+ ConfigResponse { weights: config.weights, swap_fee_rate: config.swap_fee_rate }
466
+ }
467
+
468
+ #[view]
469
+ /// get config
470
+ public fun get_config_by_denom(pair_denom: String): ConfigResponse acquires Config {
471
+ let pair_metadata = coin::denom_to_metadata(pair_denom);
472
+ get_config(object::convert(pair_metadata))
473
+ }
474
+
475
+ #[view]
476
+ public fun get_current_weight(pair: Object<Config>): CurrentWeightResponse acquires Config {
477
+ let pair_addr = object::object_address(&pair);
478
+ let config = borrow_global<Config>(pair_addr);
479
+ let (coin_a_weight, coin_b_weight) = get_weight(&config.weights);
480
+ CurrentWeightResponse { coin_a_weight, coin_b_weight }
481
+ }
482
+
483
+ #[view]
484
+ public fun get_current_weight_by_denom(
485
+ pair_denom: String
486
+ ): CurrentWeightResponse acquires Config {
487
+ let pair_metadata = coin::denom_to_metadata(pair_denom);
488
+ get_current_weight(object::convert(pair_metadata))
489
+ }
490
+
491
+ #[view]
492
+ // get all kinds of pair
493
+ // return vector of PairResponse
494
+ public fun get_all_pairs(
495
+ coin_a_start_after: Option<address>,
496
+ coin_b_start_after: Option<address>,
497
+ liquidity_token_start_after: Option<address>,
498
+ limit: u8
499
+ ): vector<PairResponse> acquires ModuleStore {
500
+ if (limit > MAX_LIMIT) {
501
+ limit = MAX_LIMIT;
502
+ };
503
+
504
+ assert!(
505
+ option::is_some(&coin_a_start_after)
506
+ == option::is_some(&coin_b_start_after)
507
+ && option::is_some(&coin_b_start_after)
508
+ == option::is_some(&liquidity_token_start_after),
509
+ ESTART_AFTER
510
+ );
511
+
512
+ let module_store = borrow_global<ModuleStore>(@initia_std);
513
+
514
+ let start_after =
515
+ if (option::is_some(&coin_a_start_after)) {
516
+ option::some(
517
+ PairKey {
518
+ coin_a: option::extract(&mut coin_a_start_after),
519
+ coin_b: option::extract(&mut coin_b_start_after),
520
+ liquidity_token: option::extract(
521
+ &mut liquidity_token_start_after
522
+ )
523
+ }
524
+ )
525
+ } else {
526
+ option::some(
527
+ PairKey { coin_a: @0x0, coin_b: @0x0, liquidity_token: @0x0 }
528
+ )
529
+ };
530
+
531
+ let res = vector[];
532
+ let pairs_iter = table::iter(
533
+ &module_store.pairs,
534
+ start_after,
535
+ option::none(),
536
+ 1
537
+ );
538
+
539
+ while (vector::length(&res) < (limit as u64)
540
+ && table::prepare<PairKey, PairResponse>(pairs_iter)) {
541
+ let (key, value) = table::next<PairKey, PairResponse>(pairs_iter);
542
+ if (&key != option::borrow(&start_after)) {
543
+ vector::push_back(&mut res, *value)
544
+ }
545
+ };
546
+
547
+ res
548
+ }
549
+
550
+ #[view]
551
+ // get all kinds of pair
552
+ // return vector of PairResponse
553
+ public fun get_all_pairs_by_denom(
554
+ coin_a_start_after: Option<String>,
555
+ coin_b_start_after: Option<String>,
556
+ liquidity_token_start_after: Option<String>,
557
+ limit: u8
558
+ ): vector<PairByDenomResponse> acquires ModuleStore {
559
+ if (limit > MAX_LIMIT) {
560
+ limit = MAX_LIMIT;
561
+ };
562
+
563
+ assert!(
564
+ option::is_some(&coin_a_start_after)
565
+ == option::is_some(&coin_b_start_after)
566
+ && option::is_some(&coin_b_start_after)
567
+ == option::is_some(&liquidity_token_start_after),
568
+ ESTART_AFTER
569
+ );
570
+
571
+ let module_store = borrow_global<ModuleStore>(@initia_std);
572
+
573
+ let start_after =
574
+ if (option::is_some(&coin_a_start_after)) {
575
+ let coin_a_start_after =
576
+ coin::denom_to_metadata(option::extract(&mut coin_a_start_after));
577
+ let coin_b_start_after =
578
+ coin::denom_to_metadata(option::extract(&mut coin_b_start_after));
579
+ let liquidity_token_start_after =
580
+ coin::denom_to_metadata(
581
+ option::extract(&mut liquidity_token_start_after)
582
+ );
583
+ option::some(
584
+ PairKey {
585
+ coin_a: object::object_address(&coin_a_start_after),
586
+ coin_b: object::object_address(&coin_b_start_after),
587
+ liquidity_token: object::object_address(
588
+ &liquidity_token_start_after
589
+ )
590
+ }
591
+ )
592
+ } else {
593
+ option::some(
594
+ PairKey { coin_a: @0x0, coin_b: @0x0, liquidity_token: @0x0 }
595
+ )
596
+ };
597
+
598
+ let res = vector[];
599
+ let pairs_iter = table::iter(
600
+ &module_store.pairs,
601
+ start_after,
602
+ option::none(),
603
+ 1
604
+ );
605
+
606
+ while (vector::length(&res) < (limit as u64)
607
+ && table::prepare<PairKey, PairResponse>(pairs_iter)) {
608
+ let (key, value) = table::next<PairKey, PairResponse>(pairs_iter);
609
+ if (&key != option::borrow(&start_after)) {
610
+ vector::push_back(
611
+ &mut res,
612
+ PairByDenomResponse {
613
+ coin_a: coin::metadata_to_denom(
614
+ object::address_to_object(value.coin_a)
615
+ ),
616
+ coin_b: coin::metadata_to_denom(
617
+ object::address_to_object(value.coin_b)
618
+ ),
619
+ liquidity_token: coin::metadata_to_denom(
620
+ object::address_to_object(value.liquidity_token)
621
+ ),
622
+ weights: value.weights,
623
+ swap_fee_rate: value.swap_fee_rate
624
+ }
625
+ )
626
+ }
627
+ };
628
+
629
+ res
630
+ }
631
+
632
+ #[view]
633
+ // get pairs by coin types
634
+ // return vector of PairResponse
635
+ public fun get_pairs(
636
+ coin_a: address,
637
+ coin_b: address,
638
+ start_after: Option<address>,
639
+ limit: u8
640
+ ): vector<PairResponse> acquires ModuleStore {
641
+ if (limit > MAX_LIMIT) {
642
+ limit = MAX_LIMIT;
643
+ };
644
+
645
+ let module_store = borrow_global<ModuleStore>(@initia_std);
646
+
647
+ let start_after =
648
+ if (option::is_some(&start_after)) {
649
+ option::some(
650
+ PairKey {
651
+ coin_a,
652
+ coin_b,
653
+ liquidity_token: option::extract(&mut start_after)
654
+ }
655
+ )
656
+ } else {
657
+ option::some(PairKey { coin_a, coin_b, liquidity_token: @0x0 })
658
+ };
659
+
660
+ let res = vector[];
661
+ let pairs_iter = table::iter(
662
+ &module_store.pairs,
663
+ start_after,
664
+ option::none(),
665
+ 1
666
+ );
667
+
668
+ while (vector::length(&res) < (limit as u64)
669
+ && table::prepare<PairKey, PairResponse>(pairs_iter)) {
670
+ let (key, value) = table::next<PairKey, PairResponse>(pairs_iter);
671
+ if (coin_a != key.coin_a || coin_b != key.coin_b)
672
+ break;
673
+ if (&key != option::borrow(&start_after)) {
674
+ vector::push_back(&mut res, *value)
675
+ }
676
+ };
677
+
678
+ res
679
+ }
680
+
681
+ // Query functions
682
+
683
+ public fun get_coin_a_amount_from_pool_info_response(
684
+ res: &PoolInfoResponse
685
+ ): u64 {
686
+ res.coin_a_amount
687
+ }
688
+
689
+ public fun get_coin_b_amount_from_pool_info_response(
690
+ res: &PoolInfoResponse
691
+ ): u64 {
692
+ res.coin_b_amount
693
+ }
694
+
695
+ public fun get_total_share_from_pool_info_response(
696
+ res: &PoolInfoResponse
697
+ ): u128 {
698
+ res.total_share
699
+ }
700
+
701
+ public fun get_swap_fee_rate_from_config_response(
702
+ res: &ConfigResponse
703
+ ): BigDecimal {
704
+ res.swap_fee_rate
705
+ }
706
+
707
+ public fun get_weight_before_from_config_response(
708
+ res: &ConfigResponse
709
+ ): Weight {
710
+ res.weights.weights_before
711
+ }
712
+
713
+ public fun get_weight_after_from_config_response(res: &ConfigResponse): Weight {
714
+ res.weights.weights_after
715
+ }
716
+
717
+ public fun get_coin_a_weight_from_weight(weight: &Weight): BigDecimal {
718
+ weight.coin_a_weight
719
+ }
720
+
721
+ public fun get_coin_b_weight_from_weight(weight: &Weight): BigDecimal {
722
+ weight.coin_b_weight
723
+ }
724
+
725
+ public fun get_timestamp_from_weight(weight: &Weight): u64 {
726
+ weight.timestamp
727
+ }
728
+
729
+ public fun unpack_pair_response(
730
+ pair_response: &PairResponse
731
+ ): (address, address, address, Weights, BigDecimal) {
732
+ (
733
+ pair_response.coin_a,
734
+ pair_response.coin_b,
735
+ pair_response.liquidity_token,
736
+ pair_response.weights,
737
+ pair_response.swap_fee_rate
738
+ )
739
+ }
740
+
741
+ public fun unpack_current_weight_response(
742
+ current_weight_response: &CurrentWeightResponse
743
+ ): (BigDecimal, BigDecimal) {
744
+ (current_weight_response.coin_a_weight, current_weight_response.coin_b_weight)
745
+ }
746
+
747
+ /// Check signer is chain
748
+ fun check_chain_permission(chain: &signer) {
749
+ assert!(
750
+ signer::address_of(chain) == @initia_std,
751
+ error::permission_denied(EUNAUTHORIZED)
752
+ );
753
+ }
754
+
755
+ fun init_module(chain: &signer) {
756
+ move_to(
757
+ chain,
758
+ ModuleStore {
759
+ pairs: table::new<PairKey, PairResponse>(),
760
+ pair_count: 0
761
+ }
762
+ );
763
+ }
764
+
765
+ public entry fun create_pair_script(
766
+ creator: &signer,
767
+ name: String,
768
+ symbol: String,
769
+ swap_fee_rate: BigDecimal,
770
+ coin_a_weight: BigDecimal,
771
+ coin_b_weight: BigDecimal,
772
+ coin_a_metadata: Object<Metadata>,
773
+ coin_b_metadata: Object<Metadata>,
774
+ coin_a_amount: u64,
775
+ coin_b_amount: u64
776
+ ) acquires CoinCapabilities, Config, Pool, ModuleStore, FlashSwapLock {
777
+ let (_, timestamp) = get_block_info();
778
+ let weights = Weights {
779
+ weights_before: Weight { coin_a_weight, coin_b_weight, timestamp },
780
+ weights_after: Weight { coin_a_weight, coin_b_weight, timestamp }
781
+ };
782
+
783
+ let coin_a = coin::withdraw(creator, coin_a_metadata, coin_a_amount);
784
+ let coin_b = coin::withdraw(creator, coin_b_metadata, coin_b_amount);
785
+
786
+ let liquidity_token =
787
+ create_pair(
788
+ creator,
789
+ name,
790
+ symbol,
791
+ swap_fee_rate,
792
+ coin_a,
793
+ coin_b,
794
+ weights
795
+ );
796
+ coin::deposit(signer::address_of(creator), liquidity_token);
797
+ }
798
+
799
+ /// Create LBP pair
800
+ /// permission check will be done in LP coin initialize
801
+ /// only LP struct owner can initialize
802
+ public entry fun create_lbp_pair_script(
803
+ creator: &signer,
804
+ name: String,
805
+ symbol: String,
806
+ swap_fee_rate: BigDecimal,
807
+ start_time: u64,
808
+ coin_a_start_weight: BigDecimal,
809
+ coin_b_start_weight: BigDecimal,
810
+ end_time: u64,
811
+ coin_a_end_weight: BigDecimal,
812
+ coin_b_end_weight: BigDecimal,
813
+ coin_a_metadata: Object<Metadata>,
814
+ coin_b_metadata: Object<Metadata>,
815
+ coin_a_amount: u64,
816
+ coin_b_amount: u64
817
+ ) acquires CoinCapabilities, Config, ModuleStore, Pool, FlashSwapLock {
818
+ let (_, timestamp) = get_block_info();
819
+ assert!(
820
+ start_time > timestamp,
821
+ error::invalid_argument(ELBP_START_TIME)
822
+ );
823
+ assert!(
824
+ end_time > start_time,
825
+ error::invalid_argument(EWEIGHTS_TIMESTAMP)
826
+ );
827
+ let weights = Weights {
828
+ weights_before: Weight {
829
+ coin_a_weight: coin_a_start_weight,
830
+ coin_b_weight: coin_b_start_weight,
831
+ timestamp: start_time
832
+ },
833
+ weights_after: Weight {
834
+ coin_a_weight: coin_a_end_weight,
835
+ coin_b_weight: coin_b_end_weight,
836
+ timestamp: end_time
837
+ }
838
+ };
839
+
840
+ let coin_a = coin::withdraw(creator, coin_a_metadata, coin_a_amount);
841
+ let coin_b = coin::withdraw(creator, coin_b_metadata, coin_b_amount);
842
+
843
+ let liquidity_token =
844
+ create_pair(
845
+ creator,
846
+ name,
847
+ symbol,
848
+ swap_fee_rate,
849
+ coin_a,
850
+ coin_b,
851
+ weights
852
+ );
853
+ coin::deposit(signer::address_of(creator), liquidity_token);
854
+ }
855
+
856
+ fun max_fee_rate(): BigDecimal {
857
+ bigdecimal::from_ratio_u64(5, 100)
858
+ }
859
+
860
+ /// update swap fee rate
861
+ public entry fun update_swap_fee_rate(
862
+ chain: &signer, pair: Object<Config>, swap_fee_rate: BigDecimal
863
+ ) acquires Config, Pool, ModuleStore {
864
+ check_chain_permission(chain);
865
+
866
+ let config = borrow_global_mut<Config>(object::object_address(&pair));
867
+ assert!(
868
+ bigdecimal::le(swap_fee_rate, max_fee_rate()),
869
+ error::invalid_argument(EOUT_OF_SWAP_FEE_RATE_RANGE)
870
+ );
871
+
872
+ config.swap_fee_rate = swap_fee_rate;
873
+ let pair_key = generate_pair_key(pair);
874
+
875
+ // update PairResponse
876
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
877
+ let pair_response = table::borrow_mut(&mut module_store.pairs, pair_key);
878
+
879
+ pair_response.swap_fee_rate = swap_fee_rate;
880
+
881
+ // emit event
882
+ event::emit<SwapFeeUpdateEvent>(
883
+ SwapFeeUpdateEvent {
884
+ coin_a: pair_key.coin_a,
885
+ coin_b: pair_key.coin_b,
886
+ liquidity_token: pair_key.liquidity_token,
887
+ swap_fee_rate
888
+ }
889
+ );
890
+ }
891
+
892
+ /// script of `provide_liquidity_from_coin_store`
893
+ public entry fun provide_liquidity_script(
894
+ account: &signer,
895
+ pair: Object<Config>,
896
+ coin_a_amount_in: u64,
897
+ coin_b_amount_in: u64,
898
+ min_liquidity: Option<u64>
899
+ ) acquires CoinCapabilities, Config, Pool, FlashSwapLock {
900
+ provide_liquidity_from_coin_store(
901
+ account,
902
+ pair,
903
+ coin_a_amount_in,
904
+ coin_b_amount_in,
905
+ min_liquidity
906
+ );
907
+ }
908
+
909
+ /// Provide liquidity with 0x1::coin::CoinStore coins
910
+ public fun provide_liquidity_from_coin_store(
911
+ account: &signer,
912
+ pair: Object<Config>,
913
+ coin_a_amount_in: u64,
914
+ coin_b_amount_in: u64,
915
+ min_liquidity: Option<u64>
916
+ ): (u64, u64, u64) acquires CoinCapabilities, Config, Pool, FlashSwapLock {
917
+ let pair_addr = object::object_address(&pair);
918
+ let pool = borrow_global<Pool>(pair_addr);
919
+ let (coin_a_amount, coin_b_amount) = pool_amounts(pool, pair_addr);
920
+ let total_share = option::extract(&mut fungible_asset::supply(pair));
921
+
922
+ // calculate the best coin amount
923
+ let (coin_a, coin_b) =
924
+ if (total_share == 0) {
925
+ (
926
+ coin::withdraw(
927
+ account,
928
+ fungible_asset::store_metadata(pool.coin_a_store),
929
+ coin_a_amount_in
930
+ ),
931
+ coin::withdraw(
932
+ account,
933
+ fungible_asset::store_metadata(pool.coin_b_store),
934
+ coin_b_amount_in
935
+ )
936
+ )
937
+ } else {
938
+ let coin_a_share_ratio =
939
+ bigdecimal::from_ratio_u64(coin_a_amount_in, coin_a_amount);
940
+ let coin_b_share_ratio =
941
+ bigdecimal::from_ratio_u64(coin_b_amount_in, coin_b_amount);
942
+ if (bigdecimal::gt(coin_a_share_ratio, coin_b_share_ratio)) {
943
+ coin_a_amount_in = bigdecimal::mul_by_u64_truncate(
944
+ coin_b_share_ratio, coin_a_amount
945
+ );
946
+ } else {
947
+ coin_b_amount_in = bigdecimal::mul_by_u64_truncate(
948
+ coin_a_share_ratio, coin_b_amount
949
+ );
950
+ };
951
+
952
+ (
953
+ coin::withdraw(
954
+ account,
955
+ fungible_asset::store_metadata(pool.coin_a_store),
956
+ coin_a_amount_in
957
+ ),
958
+ coin::withdraw(
959
+ account,
960
+ fungible_asset::store_metadata(pool.coin_b_store),
961
+ coin_b_amount_in
962
+ )
963
+ )
964
+ };
965
+
966
+ let liquidity_token = provide_liquidity(pair, coin_a, coin_b, min_liquidity);
967
+
968
+ let liquidity_token_amount = fungible_asset::amount(&liquidity_token);
969
+ coin::deposit(signer::address_of(account), liquidity_token);
970
+
971
+ (coin_a_amount_in, coin_b_amount_in, liquidity_token_amount)
972
+ }
973
+
974
+ /// Withdraw liquidity with liquidity token in the token store
975
+ public entry fun withdraw_liquidity_script(
976
+ account: &signer,
977
+ pair: Object<Config>,
978
+ liquidity: u64,
979
+ min_coin_a_amount: Option<u64>,
980
+ min_coin_b_amount: Option<u64>
981
+ ) acquires CoinCapabilities, Config, Pool, FlashSwapLock {
982
+ assert!(
983
+ liquidity != 0,
984
+ error::invalid_argument(EZERO_LIQUIDITY)
985
+ );
986
+
987
+ let addr = signer::address_of(account);
988
+ let liquidity_token =
989
+ coin::withdraw(
990
+ account,
991
+ object::convert<Config, Metadata>(pair),
992
+ liquidity
993
+ );
994
+ let (coin_a, coin_b) =
995
+ withdraw_liquidity(
996
+ liquidity_token,
997
+ min_coin_a_amount,
998
+ min_coin_b_amount
999
+ );
1000
+
1001
+ coin::deposit(addr, coin_a);
1002
+ coin::deposit(addr, coin_b);
1003
+ }
1004
+
1005
+ /// Swap with the coin in the coin store
1006
+ public entry fun swap_script(
1007
+ account: &signer,
1008
+ pair: Object<Config>,
1009
+ offer_coin: Object<Metadata>,
1010
+ offer_coin_amount: u64,
1011
+ min_return: Option<u64>
1012
+ ) acquires Config, Pool, FlashSwapLock {
1013
+ let offer_coin = coin::withdraw(account, offer_coin, offer_coin_amount);
1014
+ let return_coin = swap(pair, offer_coin);
1015
+
1016
+ assert!(
1017
+ option::is_none(&min_return)
1018
+ || *option::borrow(&min_return) <= fungible_asset::amount(&return_coin),
1019
+ error::invalid_state(EMIN_RETURN)
1020
+ );
1021
+
1022
+ coin::deposit(signer::address_of(account), return_coin);
1023
+ }
1024
+
1025
+ /// Single asset provide liquidity with token in the token store
1026
+ public entry fun single_asset_provide_liquidity_script(
1027
+ account: &signer,
1028
+ pair: Object<Config>,
1029
+ provide_coin: Object<Metadata>,
1030
+ amount_in: u64,
1031
+ min_liquidity: Option<u64>
1032
+ ) acquires Config, CoinCapabilities, Pool, FlashSwapLock {
1033
+ let addr = signer::address_of(account);
1034
+ let provide_coin = coin::withdraw(account, provide_coin, amount_in);
1035
+ let liquidity_token =
1036
+ single_asset_provide_liquidity(pair, provide_coin, min_liquidity);
1037
+
1038
+ coin::deposit(addr, liquidity_token);
1039
+ }
1040
+
1041
+ /// Withdraw liquidity directly
1042
+ /// CONTRACT: not allow until LBP is ended
1043
+ public fun withdraw_liquidity(
1044
+ lp_token: FungibleAsset,
1045
+ min_coin_a_amount: Option<u64>,
1046
+ min_coin_b_amount: Option<u64>
1047
+ ): (FungibleAsset, FungibleAsset) acquires CoinCapabilities, Config, Pool, FlashSwapLock {
1048
+ let pair_addr = coin_address(&lp_token);
1049
+
1050
+ // check pool is not locked by flash swap
1051
+ assert_pool_unlocked(pair_addr);
1052
+
1053
+ let pool = borrow_global<Pool>(pair_addr);
1054
+ let config = borrow_global<Config>(pair_addr);
1055
+ let total_share =
1056
+ option::extract(
1057
+ &mut fungible_asset::supply(
1058
+ fungible_asset::metadata_from_asset(&lp_token)
1059
+ )
1060
+ );
1061
+ let (coin_a_amount, coin_b_amount) = pool_amounts(pool, pair_addr);
1062
+ let (coin_a_store, coin_b_store) = (pool.coin_a_store, pool.coin_b_store);
1063
+ let given_token_amount = fungible_asset::amount(&lp_token);
1064
+ let given_share_ratio =
1065
+ bigdecimal::from_ratio_u128((given_token_amount as u128), total_share);
1066
+ let coin_a_amount_out =
1067
+ bigdecimal::mul_by_u64_truncate(given_share_ratio, coin_a_amount);
1068
+ let coin_b_amount_out =
1069
+ bigdecimal::mul_by_u64_truncate(given_share_ratio, coin_b_amount);
1070
+ check_lbp_ended(&config.weights);
1071
+
1072
+ assert!(
1073
+ option::is_none(&min_coin_a_amount)
1074
+ || *option::borrow(&min_coin_a_amount) <= coin_a_amount_out,
1075
+ error::invalid_state(EMIN_WITHDRAW)
1076
+ );
1077
+ assert!(
1078
+ option::is_none(&min_coin_b_amount)
1079
+ || *option::borrow(&min_coin_b_amount) <= coin_b_amount_out,
1080
+ error::invalid_state(EMIN_WITHDRAW)
1081
+ );
1082
+
1083
+ // burn liquidity token
1084
+ let liquidity_token_capabilities = borrow_global<CoinCapabilities>(pair_addr);
1085
+ coin::burn(
1086
+ &liquidity_token_capabilities.burn_cap,
1087
+ lp_token
1088
+ );
1089
+
1090
+ // emit events
1091
+ let pair_key = generate_pair_key(object::address_to_object<Config>(pair_addr));
1092
+ event::emit<WithdrawEvent>(
1093
+ WithdrawEvent {
1094
+ coin_a: pair_key.coin_a,
1095
+ coin_b: pair_key.coin_b,
1096
+ liquidity_token: pair_addr,
1097
+ coin_a_amount: coin_a_amount_out,
1098
+ coin_b_amount: coin_b_amount_out,
1099
+ liquidity: given_token_amount
1100
+ }
1101
+ );
1102
+
1103
+ // withdraw and return the coins
1104
+ let pair_signer = &object::generate_signer_for_extending(&config.extend_ref);
1105
+ (
1106
+ fungible_asset::withdraw(pair_signer, coin_a_store, coin_a_amount_out),
1107
+ fungible_asset::withdraw(pair_signer, coin_b_store, coin_b_amount_out)
1108
+ )
1109
+ }
1110
+
1111
+ /// Single asset provide liquidity directly
1112
+ /// CONTRACT: cannot provide more than the pool amount to prevent huge price impact
1113
+ /// CONTRACT: not allow until LBP is ended
1114
+ public fun single_asset_provide_liquidity(
1115
+ pair: Object<Config>,
1116
+ provide_coin: FungibleAsset,
1117
+ min_liquidity_amount: Option<u64>
1118
+ ): FungibleAsset acquires Config, CoinCapabilities, Pool, FlashSwapLock {
1119
+ let pair_addr = object::object_address(&pair);
1120
+
1121
+ // check pool is not locked by flash swap
1122
+ assert_pool_unlocked(pair_addr);
1123
+
1124
+ let pool = borrow_global<Pool>(pair_addr);
1125
+
1126
+ let provide_metadata = fungible_asset::metadata_from_asset(&provide_coin);
1127
+ let provide_amount = fungible_asset::amount(&provide_coin);
1128
+
1129
+ let (liquidity, fee_amount, is_provide_a) =
1130
+ calculate_single_asset_provide_liquidity_return_amount(
1131
+ pool, pair, provide_metadata, provide_amount
1132
+ );
1133
+
1134
+ // deposit token
1135
+ if (is_provide_a) {
1136
+ fungible_asset::deposit(pool.coin_a_store, provide_coin);
1137
+ } else {
1138
+ fungible_asset::deposit(pool.coin_b_store, provide_coin);
1139
+ };
1140
+
1141
+ let pair_key = generate_pair_key(pair);
1142
+
1143
+ // check min liquidity assertion
1144
+ assert!(
1145
+ option::is_none(&min_liquidity_amount)
1146
+ || *option::borrow(&min_liquidity_amount) <= liquidity,
1147
+ error::invalid_state(EMIN_LIQUIDITY)
1148
+ );
1149
+
1150
+ // emit events
1151
+ event::emit<SingleAssetProvideEvent>(
1152
+ SingleAssetProvideEvent {
1153
+ coin_a: pair_key.coin_a,
1154
+ coin_b: pair_key.coin_b,
1155
+ provide_coin: object::object_address(&provide_metadata),
1156
+ liquidity_token: pair_addr,
1157
+ provide_amount,
1158
+ fee_amount,
1159
+ liquidity
1160
+ }
1161
+ );
1162
+
1163
+ // mint liquidity tokens to provider
1164
+ let liquidity_token_capabilities = borrow_global<CoinCapabilities>(pair_addr);
1165
+ coin::mint(
1166
+ &liquidity_token_capabilities.mint_cap,
1167
+ liquidity
1168
+ )
1169
+ }
1170
+
1171
+ /// Swap directly
1172
+ public fun swap(
1173
+ pair: Object<Config>, offer_coin: FungibleAsset
1174
+ ): FungibleAsset acquires Config, Pool, FlashSwapLock {
1175
+ let pair_addr = object::object_address(&pair);
1176
+
1177
+ // check pool is not locked by flash swap
1178
+ assert_pool_unlocked(pair_addr);
1179
+
1180
+ let offer_amount = fungible_asset::amount(&offer_coin);
1181
+ let offer_metadata = fungible_asset::metadata_from_asset(&offer_coin);
1182
+ let offer_address = object::object_address(&offer_metadata);
1183
+ let pair_key = generate_pair_key(pair);
1184
+ assert!(
1185
+ offer_address == pair_key.coin_a || offer_address == pair_key.coin_b,
1186
+ error::invalid_argument(ECOIN_TYPE)
1187
+ );
1188
+ let is_offer_a = offer_address == pair_key.coin_a;
1189
+
1190
+ let (pool_a, pool_b, weight_a, weight_b, swap_fee_rate) = pool_info(pair, true);
1191
+ let (
1192
+ offer_coin_addr,
1193
+ return_coin_addr,
1194
+ offer_pool,
1195
+ return_pool,
1196
+ offer_weight,
1197
+ return_weight
1198
+ ) =
1199
+ if (is_offer_a) {
1200
+ (pair_key.coin_a, pair_key.coin_b, pool_a, pool_b, weight_a, weight_b)
1201
+ } else {
1202
+ (pair_key.coin_b, pair_key.coin_a, pool_b, pool_a, weight_b, weight_a)
1203
+ };
1204
+ let (return_amount, fee_amount) =
1205
+ swap_simulation(
1206
+ offer_pool,
1207
+ return_pool,
1208
+ offer_weight,
1209
+ return_weight,
1210
+ fungible_asset::amount(&offer_coin),
1211
+ swap_fee_rate
1212
+ );
1213
+
1214
+ // apply swap result to pool
1215
+ let pool = borrow_global<Pool>(pair_addr);
1216
+ let config = borrow_global<Config>(pair_addr);
1217
+ let pair_signer = &object::generate_signer_for_extending(&config.extend_ref);
1218
+ let return_coin =
1219
+ if (is_offer_a) {
1220
+ fungible_asset::deposit(pool.coin_a_store, offer_coin);
1221
+ fungible_asset::withdraw(pair_signer, pool.coin_b_store, return_amount)
1222
+ } else {
1223
+ fungible_asset::deposit(pool.coin_b_store, offer_coin);
1224
+ fungible_asset::withdraw(pair_signer, pool.coin_a_store, return_amount)
1225
+ };
1226
+
1227
+ // emit events
1228
+ event::emit<SwapEvent>(
1229
+ SwapEvent {
1230
+ offer_coin: offer_coin_addr,
1231
+ return_coin: return_coin_addr,
1232
+ liquidity_token: pair_addr,
1233
+ fee_amount,
1234
+ offer_amount,
1235
+ return_amount
1236
+ }
1237
+ );
1238
+
1239
+ return_coin
1240
+ }
1241
+
1242
+ /// FlashSwap is a special swap that allows the user to use return coin first and repay the offer coin later.
1243
+ /// The borrower should repay the offer coin by calling `repay_flash_swap` function with FlashSwapReceipt object.
1244
+ ///
1245
+ /// https://move-book.com/programmability/hot-potato-pattern.html
1246
+ public fun flash_swap(
1247
+ pair: Object<Config>,
1248
+ offer_coin: Object<Metadata>,
1249
+ offer_amount: u64,
1250
+ min_return: Option<u64>
1251
+ ): (FungibleAsset, FlashSwapReceipt) acquires Config, Pool, FlashSwapLock {
1252
+ let pair_addr = object::object_address(&pair);
1253
+
1254
+ // check pool is not locked by flash swap
1255
+ assert_pool_unlocked(pair_addr);
1256
+
1257
+ // zero offer amount would be invalidated in swap_simulation
1258
+ let (return_amount, fee_amount) =
1259
+ get_swap_simulation_with_fee(pair, offer_coin, offer_amount);
1260
+ assert!(
1261
+ option::is_none(&min_return)
1262
+ || *option::borrow(&min_return) <= return_amount,
1263
+ error::invalid_state(EMIN_RETURN)
1264
+ );
1265
+
1266
+ let pool = borrow_global<Pool>(pair_addr);
1267
+ let pool_config = borrow_global<Config>(pair_addr);
1268
+ let pair_signer = &object::generate_signer_for_extending(&pool_config.extend_ref);
1269
+
1270
+ let coin_a_metadata = fungible_asset::store_metadata(pool.coin_a_store);
1271
+ let (return_coin_store, coin_a_borrow_amount, coin_b_borrow_amount) =
1272
+ if (offer_coin == coin_a_metadata) {
1273
+ (pool.coin_b_store, offer_amount, 0)
1274
+ } else {
1275
+ (pool.coin_a_store, 0, offer_amount)
1276
+ };
1277
+
1278
+ // store flash swap to prevent recursive flash swap
1279
+ move_to(pair_signer, FlashSwapLock { coin_a_borrow_amount, coin_b_borrow_amount });
1280
+
1281
+ let return_coin =
1282
+ fungible_asset::withdraw(pair_signer, return_coin_store, return_amount);
1283
+
1284
+ // emit events
1285
+ event::emit<FlashSwapEvent>(
1286
+ FlashSwapEvent {
1287
+ offer_coin: object::object_address(&offer_coin),
1288
+ return_coin: coin_address(&return_coin),
1289
+ liquidity_token: pair_addr,
1290
+ offer_amount,
1291
+ return_amount,
1292
+ fee_amount
1293
+ }
1294
+ );
1295
+
1296
+ (return_coin, FlashSwapReceipt { pair_addr })
1297
+ }
1298
+
1299
+ public fun repay_flash_swap(
1300
+ repay_fa: FungibleAsset, receipt: FlashSwapReceipt
1301
+ ) acquires Pool, FlashSwapLock {
1302
+ let FlashSwapReceipt { pair_addr } = receipt;
1303
+ let FlashSwapLock { coin_a_borrow_amount, coin_b_borrow_amount } =
1304
+ move_from(pair_addr);
1305
+
1306
+ let pool = borrow_global<Pool>(pair_addr);
1307
+ let (repay_amount, repay_store) =
1308
+ if (coin_a_borrow_amount > 0) {
1309
+ (coin_a_borrow_amount, pool.coin_a_store)
1310
+ } else {
1311
+ (coin_b_borrow_amount, pool.coin_b_store)
1312
+ };
1313
+
1314
+ assert!(
1315
+ fungible_asset::amount(&repay_fa) == repay_amount,
1316
+ error::invalid_argument(EFAILED_TO_REPAY_FLASH_SWAP)
1317
+ );
1318
+
1319
+ fungible_asset::deposit(repay_store, repay_fa);
1320
+ }
1321
+
1322
+ /// Sum of weights must be 1
1323
+ fun assert_weights(weights: Weights) {
1324
+ assert!(
1325
+ bigdecimal::eq(
1326
+ bigdecimal::one(),
1327
+ bigdecimal::add(
1328
+ weights.weights_before.coin_a_weight,
1329
+ weights.weights_before.coin_b_weight
1330
+ )
1331
+ ),
1332
+ EINVALID_WEIGHTS
1333
+ );
1334
+ assert!(
1335
+ bigdecimal::eq(
1336
+ bigdecimal::one(),
1337
+ bigdecimal::add(
1338
+ weights.weights_after.coin_a_weight,
1339
+ weights.weights_after.coin_b_weight
1340
+ )
1341
+ ),
1342
+ EINVALID_WEIGHTS
1343
+ );
1344
+ }
1345
+
1346
+ fun assert_pool_unlocked(pair_addr: address) {
1347
+ assert!(
1348
+ !exists<FlashSwapLock>(pair_addr),
1349
+ error::invalid_state(EPOOL_LOCKED)
1350
+ );
1351
+ }
1352
+
1353
+ public fun create_pair(
1354
+ creator: &signer,
1355
+ name: String,
1356
+ symbol: String,
1357
+ swap_fee_rate: BigDecimal,
1358
+ coin_a: FungibleAsset,
1359
+ coin_b: FungibleAsset,
1360
+ weights: Weights
1361
+ ): FungibleAsset acquires CoinCapabilities, Config, ModuleStore, Pool, FlashSwapLock {
1362
+ let (mint_cap, burn_cap, freeze_cap, extend_ref) =
1363
+ coin::initialize_and_generate_extend_ref(
1364
+ creator,
1365
+ option::none(),
1366
+ name,
1367
+ symbol,
1368
+ 6,
1369
+ string::utf8(b""),
1370
+ string::utf8(b"")
1371
+ );
1372
+
1373
+ assert_weights(weights);
1374
+
1375
+ assert!(
1376
+ bigdecimal::le(swap_fee_rate, max_fee_rate()),
1377
+ error::invalid_argument(EOUT_OF_SWAP_FEE_RATE_RANGE)
1378
+ );
1379
+
1380
+ assert!(
1381
+ coin_address(&coin_a) != coin_address(&coin_b),
1382
+ error::invalid_argument(ESAME_COIN_TYPE)
1383
+ );
1384
+
1385
+ let pair_signer = &object::generate_signer_for_extending(&extend_ref);
1386
+ let pair_addr = signer::address_of(pair_signer);
1387
+ // transfer pair object's ownership to initia_std
1388
+ object::transfer_raw(creator, pair_addr, @initia_std);
1389
+
1390
+ let coin_a_store =
1391
+ primary_fungible_store::create_primary_store(
1392
+ pair_addr,
1393
+ fungible_asset::asset_metadata(&coin_a)
1394
+ );
1395
+ let coin_b_store =
1396
+ primary_fungible_store::create_primary_store(
1397
+ pair_addr,
1398
+ fungible_asset::asset_metadata(&coin_b)
1399
+ );
1400
+ let coin_a_addr = coin_address(&coin_a);
1401
+ let coin_b_addr = coin_address(&coin_b);
1402
+
1403
+ move_to(pair_signer, Pool { coin_a_store, coin_b_store });
1404
+
1405
+ move_to(
1406
+ pair_signer,
1407
+ CoinCapabilities { mint_cap, freeze_cap, burn_cap }
1408
+ );
1409
+
1410
+ move_to(
1411
+ pair_signer,
1412
+ Config {
1413
+ extend_ref,
1414
+ // temp weights for initial provide
1415
+ weights: Weights {
1416
+ weights_before: Weight {
1417
+ coin_a_weight: bigdecimal::one(),
1418
+ coin_b_weight: bigdecimal::one(),
1419
+ timestamp: 0
1420
+ },
1421
+ weights_after: Weight {
1422
+ coin_a_weight: bigdecimal::one(),
1423
+ coin_b_weight: bigdecimal::one(),
1424
+ timestamp: 0
1425
+ }
1426
+ },
1427
+ swap_fee_rate
1428
+ }
1429
+ );
1430
+
1431
+ let liquidity_token =
1432
+ provide_liquidity(
1433
+ object::address_to_object<Config>(pair_addr),
1434
+ coin_a,
1435
+ coin_b,
1436
+ option::none()
1437
+ );
1438
+
1439
+ // update weights
1440
+ let config = borrow_global_mut<Config>(pair_addr);
1441
+ config.weights = weights;
1442
+
1443
+ // update module store
1444
+ let module_store = borrow_global_mut<ModuleStore>(@initia_std);
1445
+ module_store.pair_count = module_store.pair_count + 1;
1446
+
1447
+ // let coin_a_type = type_info::type_name<CoinA>();
1448
+ // let coin_b_type = type_info::type_name<CoinB>();
1449
+ // let liquidity_token_type = type_info::type_name<LiquidityToken>();
1450
+ let pair_key = PairKey {
1451
+ coin_a: coin_a_addr,
1452
+ coin_b: coin_b_addr,
1453
+ liquidity_token: pair_addr
1454
+ };
1455
+
1456
+ // add pair to table for queries
1457
+ table::add(
1458
+ &mut module_store.pairs,
1459
+ pair_key,
1460
+ PairResponse {
1461
+ coin_a: coin_a_addr,
1462
+ coin_b: coin_b_addr,
1463
+ liquidity_token: pair_addr,
1464
+ weights,
1465
+ swap_fee_rate
1466
+ }
1467
+ );
1468
+
1469
+ // emit create pair event
1470
+ event::emit<CreatePairEvent>(
1471
+ CreatePairEvent {
1472
+ coin_a: coin_a_addr,
1473
+ coin_b: coin_b_addr,
1474
+ liquidity_token: pair_addr,
1475
+ weights,
1476
+ swap_fee_rate
1477
+ }
1478
+ );
1479
+
1480
+ liquidity_token
1481
+ }
1482
+
1483
+ /// Provide liquidity directly
1484
+ /// CONTRACT: not allow until LBP is ended
1485
+ public fun provide_liquidity(
1486
+ pair: Object<Config>,
1487
+ coin_a: FungibleAsset,
1488
+ coin_b: FungibleAsset,
1489
+ min_liquidity_amount: Option<u64>
1490
+ ): FungibleAsset acquires Config, Pool, CoinCapabilities, FlashSwapLock {
1491
+ let pair_addr = object::object_address(&pair);
1492
+
1493
+ // check pool is not locked by flash swap
1494
+ assert_pool_unlocked(pair_addr);
1495
+
1496
+ let config = borrow_global<Config>(pair_addr);
1497
+ let pool = borrow_global<Pool>(pair_addr);
1498
+ check_lbp_ended(&config.weights);
1499
+
1500
+ let coin_a_amount_in = fungible_asset::amount(&coin_a);
1501
+ let coin_b_amount_in = fungible_asset::amount(&coin_b);
1502
+
1503
+ let liquidity =
1504
+ calculate_provide_liquidity_return_amount(
1505
+ pool, pair, coin_a_amount_in, coin_b_amount_in
1506
+ );
1507
+
1508
+ assert!(
1509
+ option::is_none(&min_liquidity_amount)
1510
+ || *option::borrow(&min_liquidity_amount) <= liquidity,
1511
+ error::invalid_state(EMIN_LIQUIDITY)
1512
+ );
1513
+
1514
+ event::emit<ProvideEvent>(
1515
+ ProvideEvent {
1516
+ coin_a: coin_address(&coin_a),
1517
+ coin_b: coin_address(&coin_b),
1518
+ liquidity_token: pair_addr,
1519
+ coin_a_amount: coin_a_amount_in,
1520
+ coin_b_amount: coin_b_amount_in,
1521
+ liquidity
1522
+ }
1523
+ );
1524
+
1525
+ fungible_asset::deposit(pool.coin_a_store, coin_a);
1526
+ fungible_asset::deposit(pool.coin_b_store, coin_b);
1527
+
1528
+ let liquidity_token_capabilities = borrow_global<CoinCapabilities>(pair_addr);
1529
+ coin::mint(
1530
+ &liquidity_token_capabilities.mint_cap,
1531
+ liquidity
1532
+ )
1533
+ }
1534
+
1535
+ fun coin_address(fa: &FungibleAsset): address {
1536
+ let metadata = fungible_asset::asset_metadata(fa);
1537
+ object::object_address(&metadata)
1538
+ }
1539
+
1540
+ fun check_lbp_ended(weights: &Weights) {
1541
+ let (_, timestamp) = get_block_info();
1542
+
1543
+ assert!(
1544
+ timestamp >= weights.weights_after.timestamp,
1545
+ error::invalid_state(ELBP_NOT_ENDED)
1546
+ )
1547
+ }
1548
+
1549
+ fun generate_pair_key<T: key>(pair: Object<T>): PairKey acquires Pool {
1550
+ let addr = object::object_address(&pair);
1551
+ let pool = borrow_global<Pool>(addr);
1552
+ let coin_a_metadata = fungible_asset::store_metadata(pool.coin_a_store);
1553
+ let coin_b_metadata = fungible_asset::store_metadata(pool.coin_b_store);
1554
+ PairKey {
1555
+ coin_a: object::object_address(&coin_a_metadata),
1556
+ coin_b: object::object_address(&coin_b_metadata),
1557
+ liquidity_token: addr
1558
+ }
1559
+ }
1560
+
1561
+ /// return (coin_a_weight, coin_b_weight)
1562
+ fun get_weight(weights: &Weights): (BigDecimal, BigDecimal) {
1563
+ let (_, timestamp) = get_block_info();
1564
+ if (timestamp <= weights.weights_before.timestamp) {
1565
+ (weights.weights_before.coin_a_weight, weights.weights_before.coin_b_weight)
1566
+ } else if (timestamp < weights.weights_after.timestamp) {
1567
+ let interval =
1568
+ weights.weights_after.timestamp - weights.weights_before.timestamp;
1569
+
1570
+ let time_diff_after = weights.weights_after.timestamp - timestamp;
1571
+ let time_diff_before = timestamp - weights.weights_before.timestamp;
1572
+
1573
+ // when timestamp_before < timestamp < timestamp_after
1574
+ // weight is linearly change from before to after
1575
+ //
1576
+ // weight = g * timestamp + c
1577
+ // where g is gradient of line and c is the weight-intercept (weight value when timestamp is 0)
1578
+ //
1579
+ // n = (g * timestamp_before + c) * (timestamp_after - timestamp)
1580
+ // = g * t_b * t_a - g * t_b * t + c * t_a - c * t
1581
+ // m = (g * timestamp_after + c) * (timestamp - timestamp_before)
1582
+ // = g * t_a * t - g * t_a * t_b + c * t - c * t_b
1583
+ // l = m + n = g * t * (t_a - t_b) + c * (t_a - t_b)
1584
+ // weight = l / (t_a - t_b) = g * t + c
1585
+ let coin_a_m =
1586
+ bigdecimal::mul_by_u64(
1587
+ weights.weights_after.coin_a_weight, time_diff_before
1588
+ );
1589
+ let coin_a_n =
1590
+ bigdecimal::mul_by_u64(
1591
+ weights.weights_before.coin_a_weight, time_diff_after
1592
+ );
1593
+ let coin_a_l = bigdecimal::add(coin_a_m, coin_a_n);
1594
+
1595
+ let coin_b_m =
1596
+ bigdecimal::mul_by_u64(
1597
+ weights.weights_after.coin_b_weight, time_diff_before
1598
+ );
1599
+ let coin_b_n =
1600
+ bigdecimal::mul_by_u64(
1601
+ weights.weights_before.coin_b_weight, time_diff_after
1602
+ );
1603
+ let coin_b_l = bigdecimal::add(coin_b_m, coin_b_n);
1604
+ (
1605
+ bigdecimal::div_by_u64(coin_a_l, interval),
1606
+ bigdecimal::div_by_u64(coin_b_l, interval)
1607
+ )
1608
+ } else {
1609
+ (weights.weights_after.coin_a_weight, weights.weights_after.coin_b_weight)
1610
+ }
1611
+ }
1612
+
1613
+ fun calculate_provide_liquidity_return_amount(
1614
+ pool: &Pool,
1615
+ pair: Object<Config>,
1616
+ coin_a_amount_in: u64,
1617
+ coin_b_amount_in: u64
1618
+ ): u64 acquires FlashSwapLock {
1619
+ let pair_addr = object::object_address(&pair);
1620
+ let (coin_a_amount, coin_b_amount) = pool_amounts(pool, pair_addr);
1621
+ let total_share = option::extract(&mut fungible_asset::supply(pair));
1622
+
1623
+ if (total_share == 0) {
1624
+ if (coin_a_amount_in > coin_b_amount_in) {
1625
+ coin_a_amount_in
1626
+ } else {
1627
+ coin_b_amount_in
1628
+ }
1629
+ } else {
1630
+ let coin_a_share_ratio =
1631
+ bigdecimal::from_ratio_u64(coin_a_amount_in, coin_a_amount);
1632
+ let coin_b_share_ratio =
1633
+ bigdecimal::from_ratio_u64(coin_b_amount_in, coin_b_amount);
1634
+ if (bigdecimal::gt(coin_a_share_ratio, coin_b_share_ratio)) {
1635
+ (bigdecimal::mul_by_u128_truncate(coin_b_share_ratio, total_share) as u64)
1636
+ } else {
1637
+ (bigdecimal::mul_by_u128_truncate(coin_a_share_ratio, total_share) as u64)
1638
+ }
1639
+ }
1640
+ }
1641
+
1642
+ fun calculate_single_asset_provide_liquidity_return_amount(
1643
+ pool: &Pool,
1644
+ pair: Object<Config>,
1645
+ provide_metadata: Object<Metadata>,
1646
+ amount_in: u64
1647
+ ): (u64, u64, bool) acquires Config, FlashSwapLock {
1648
+ let pair_addr = object::object_address(&pair);
1649
+ let config = borrow_global<Config>(pair_addr);
1650
+ check_lbp_ended(&config.weights);
1651
+
1652
+ // provide coin type must be one of coin a or coin b coin type
1653
+ assert!(
1654
+ provide_metadata == fungible_asset::store_metadata(pool.coin_a_store)
1655
+ || provide_metadata
1656
+ == fungible_asset::store_metadata(pool.coin_b_store),
1657
+ error::invalid_argument(ECOIN_TYPE)
1658
+ );
1659
+ let is_provide_a =
1660
+ provide_metadata == fungible_asset::store_metadata(pool.coin_a_store);
1661
+
1662
+ let total_share = option::extract(&mut fungible_asset::supply(pair));
1663
+ assert!(
1664
+ total_share != 0,
1665
+ error::invalid_state(EZERO_LIQUIDITY)
1666
+ );
1667
+
1668
+ // load values for fee and increased liquidity amount calculation
1669
+ let (coin_a_weight, coin_b_weight) = get_weight(&config.weights);
1670
+ let (pool_amount_a, pool_amount_b) = pool_amounts(pool, pair_addr);
1671
+ let (normalized_weight, pool_amount_in) =
1672
+ if (is_provide_a) {
1673
+ let normalized_weight =
1674
+ bigdecimal::div(
1675
+ coin_a_weight,
1676
+ bigdecimal::add(coin_a_weight, coin_b_weight)
1677
+ );
1678
+
1679
+ (normalized_weight, pool_amount_a)
1680
+ } else {
1681
+ let normalized_weight =
1682
+ bigdecimal::div(
1683
+ coin_b_weight,
1684
+ bigdecimal::add(coin_a_weight, coin_b_weight)
1685
+ );
1686
+
1687
+ (normalized_weight, pool_amount_b)
1688
+ };
1689
+
1690
+ // CONTRACT: cannot provide more than the pool amount to prevent huge price impact
1691
+ assert!(
1692
+ pool_amount_in >= amount_in,
1693
+ error::invalid_argument(EPRICE_IMPACT)
1694
+ );
1695
+
1696
+ // compute fee amount with the assumption that we will swap (1 - normalized_weight) of amount_in
1697
+ let adjusted_swap_amount =
1698
+ bigdecimal::mul_by_u64_truncate(
1699
+ bigdecimal::sub(bigdecimal::one(), normalized_weight),
1700
+ amount_in
1701
+ );
1702
+ let fee_amount =
1703
+ calculate_fee_with_minimum(config.swap_fee_rate, adjusted_swap_amount);
1704
+
1705
+ // actual amount in after deducting fee amount
1706
+ let adjusted_amount_in = amount_in - fee_amount;
1707
+
1708
+ // calculate new total share and new liquidity
1709
+ let base =
1710
+ bigdecimal::from_ratio_u64(
1711
+ adjusted_amount_in + pool_amount_in,
1712
+ pool_amount_in
1713
+ );
1714
+ let pool_ratio = pow(base, normalized_weight);
1715
+ let new_total_share = bigdecimal::mul_by_u128_truncate(pool_ratio, total_share);
1716
+ ((new_total_share - total_share as u64), fee_amount, is_provide_a)
1717
+ }
1718
+
1719
+ /// get all pool info at once (a_amount, b_amount, a_weight, b_weight, fee_rate)
1720
+ public fun pool_info(
1721
+ pair: Object<Config>, lbp_assertion: bool
1722
+ ): (u64, u64, BigDecimal, BigDecimal, BigDecimal) acquires Config, Pool, FlashSwapLock {
1723
+ let pair_addr = object::object_address(&pair);
1724
+ let config = borrow_global<Config>(pair_addr);
1725
+ if (lbp_assertion) {
1726
+ // assert LBP start time
1727
+ let (_, timestamp) = get_block_info();
1728
+ assert!(
1729
+ timestamp >= config.weights.weights_before.timestamp,
1730
+ error::invalid_state(ELBP_NOT_STARTED)
1731
+ );
1732
+ };
1733
+
1734
+ let pool = borrow_global<Pool>(pair_addr);
1735
+ let (coin_a_amount, coin_b_amount) = pool_amounts(pool, pair_addr);
1736
+ let (coin_a_weight, coin_b_weight) = get_weight(&config.weights);
1737
+
1738
+ (
1739
+ coin_a_amount,
1740
+ coin_b_amount,
1741
+ coin_a_weight,
1742
+ coin_b_weight,
1743
+ config.swap_fee_rate
1744
+ )
1745
+ }
1746
+
1747
+ // avoid zero fee amount to prevent fee bypass attack
1748
+ fun calculate_fee_with_minimum(
1749
+ swap_fee_rate: BigDecimal, amount_in: u64
1750
+ ): u64 {
1751
+ let fee_amount = bigdecimal::mul_by_u64_ceil(swap_fee_rate, amount_in);
1752
+ if (fee_amount == 0) {
1753
+ fee_amount = 1;
1754
+ };
1755
+
1756
+ fee_amount
1757
+ }
1758
+
1759
+ /// Calculate out amount
1760
+ /// https://balancer.fi/whitepaper.pdf (15)
1761
+ /// return (return_amount, fee_amount)
1762
+ public fun swap_simulation(
1763
+ pool_amount_in: u64,
1764
+ pool_amount_out: u64,
1765
+ weight_in: BigDecimal,
1766
+ weight_out: BigDecimal,
1767
+ amount_in: u64,
1768
+ swap_fee_rate: BigDecimal
1769
+ ): (u64, u64) {
1770
+ assert!(
1771
+ amount_in > 0,
1772
+ error::invalid_argument(EZERO_AMOUNT_IN)
1773
+ );
1774
+
1775
+ let one = bigdecimal::one();
1776
+ let exp = bigdecimal::div(weight_in, weight_out);
1777
+
1778
+ let fee_amount = calculate_fee_with_minimum(swap_fee_rate, amount_in);
1779
+ let adjusted_amount_in = amount_in - fee_amount;
1780
+ let base =
1781
+ bigdecimal::from_ratio_u64(
1782
+ pool_amount_in,
1783
+ pool_amount_in + adjusted_amount_in
1784
+ );
1785
+ let sub_amount = pow(base, exp);
1786
+ (
1787
+ bigdecimal::mul_by_u64_truncate(
1788
+ bigdecimal::sub(one, sub_amount),
1789
+ pool_amount_out
1790
+ ),
1791
+ fee_amount
1792
+ )
1793
+ }
1794
+
1795
+ public fun swap_simulation_given_out(
1796
+ pool_amount_in: u64,
1797
+ pool_amount_out: u64,
1798
+ weight_in: BigDecimal,
1799
+ weight_out: BigDecimal,
1800
+ amount_out: u64,
1801
+ swap_fee_rate: BigDecimal
1802
+ ): (u64, u64) {
1803
+ let one = bigdecimal::one();
1804
+ let exp = bigdecimal::div(weight_out, weight_in);
1805
+ let base = bigdecimal::from_ratio_u64(
1806
+ pool_amount_out, pool_amount_out - amount_out
1807
+ );
1808
+ let base_exp = pow(base, exp);
1809
+ let adjusted_amount_in =
1810
+ bigdecimal::mul_by_u64(bigdecimal::sub(base_exp, one), pool_amount_in);
1811
+ let sub_one_fee = bigdecimal::sub(one, swap_fee_rate);
1812
+ let amount_in =
1813
+ bigdecimal::truncate_u64(bigdecimal::div(adjusted_amount_in, sub_one_fee));
1814
+ let fee_amount = calculate_fee_with_minimum(swap_fee_rate, amount_in);
1815
+
1816
+ (amount_in, fee_amount)
1817
+ }
1818
+
1819
+ public fun pool_metadata(
1820
+ pair: Object<Config>
1821
+ ): (Object<Metadata>, Object<Metadata>) acquires Pool {
1822
+ let pair_addr = object::object_address(&pair);
1823
+ let pool = borrow_global<Pool>(pair_addr);
1824
+ (
1825
+ fungible_asset::store_metadata(pool.coin_a_store),
1826
+ fungible_asset::store_metadata(pool.coin_b_store)
1827
+ )
1828
+ }
1829
+
1830
+ public fun pool_amounts(pool: &Pool, pair_addr: address): (u64, u64) acquires FlashSwapLock {
1831
+ let amount_a = fungible_asset::balance(pool.coin_a_store);
1832
+ let amount_b = fungible_asset::balance(pool.coin_b_store);
1833
+
1834
+ if (exists<FlashSwapLock>(pair_addr)) {
1835
+ let flash_swap = borrow_global<FlashSwapLock>(pair_addr);
1836
+ (
1837
+ amount_a + flash_swap.coin_a_borrow_amount,
1838
+ amount_b + flash_swap.coin_b_borrow_amount
1839
+ )
1840
+ } else {
1841
+ (amount_a, amount_b)
1842
+ }
1843
+ }
1844
+
1845
+ /// a^x = 1 + sigma[(k^n)/n!]
1846
+ /// k = x * ln(a)
1847
+ fun pow(base: BigDecimal, exp: BigDecimal): BigDecimal {
1848
+ assert!(
1849
+ !bigdecimal::is_zero(base) && bigdecimal::lt(base, bigdecimal::from_u64(2)),
1850
+ error::invalid_argument(EOUT_OF_BASE_RANGE)
1851
+ );
1852
+
1853
+ let res = bigdecimal::one();
1854
+ let (ln_a, neg) = ln(base);
1855
+ let k = bigdecimal::mul(ln_a, exp);
1856
+ let comp = k;
1857
+ let index = 1;
1858
+ let subs: vector<BigDecimal> = vector[];
1859
+
1860
+ let precision = bigdecimal::from_scaled(biguint::from_u64(PRECISION));
1861
+ while (bigdecimal::gt(comp, precision)) {
1862
+ if (index & 1 == 1 && neg) {
1863
+ vector::push_back(&mut subs, comp)
1864
+ } else {
1865
+ res = bigdecimal::add(res, comp)
1866
+ };
1867
+
1868
+ comp = bigdecimal::div_by_u64(bigdecimal::mul(comp, k), index + 1);
1869
+ index = index + 1;
1870
+ };
1871
+
1872
+ let index = 0;
1873
+ while (index < vector::length(&subs)) {
1874
+ let comp = vector::borrow(&subs, index);
1875
+ res = bigdecimal::sub(res, *comp);
1876
+ index = index + 1;
1877
+ };
1878
+
1879
+ res
1880
+ }
1881
+
1882
+ /// ln(1 + a) = sigma[(-1) ^ (n + 1) * (a ^ n / n)]
1883
+ /// https://en.wikipedia.org/wiki/Taylor_series#Natural_logarithm
1884
+ fun ln(num: BigDecimal): (BigDecimal, bool) {
1885
+ let one = bigdecimal::one();
1886
+ let (a, a_neg) =
1887
+ if (bigdecimal::ge(num, one)) {
1888
+ (bigdecimal::sub(num, one), false)
1889
+ } else {
1890
+ (bigdecimal::sub(one, num), true)
1891
+ };
1892
+
1893
+ let res = bigdecimal::zero();
1894
+ let comp = a;
1895
+ let index = 1;
1896
+
1897
+ let precision = bigdecimal::from_scaled(biguint::from_u64(PRECISION));
1898
+ while (bigdecimal::gt(comp, precision)) {
1899
+ if (index & 1 == 0 && !a_neg) {
1900
+ res = bigdecimal::sub(res, comp);
1901
+ } else {
1902
+ res = bigdecimal::add(res, comp);
1903
+ };
1904
+
1905
+ // comp(old) = a ^ n / n
1906
+ // comp(new) = comp(old) * a * n / (n + 1) = a ^ (n + 1) / (n + 1)
1907
+ comp = bigdecimal::div_by_u64(
1908
+ bigdecimal::mul_by_u64(bigdecimal::mul(comp, a), index), // comp * a * index
1909
+ index + 1
1910
+ );
1911
+
1912
+ index = index + 1;
1913
+ };
1914
+
1915
+ (res, a_neg)
1916
+ }
1917
+
1918
+ #[test_only]
1919
+ public fun init_module_for_test() {
1920
+ init_module(&initia_std::account::create_signer_for_test(@initia_std));
1921
+ }
1922
+
1923
+ #[test_only]
1924
+ use initia_std::block::set_block_info;
1925
+
1926
+ #[test_only]
1927
+ struct CoinCapsInit has key {
1928
+ burn_cap: coin::BurnCapability,
1929
+ freeze_cap: coin::FreezeCapability,
1930
+ mint_cap: coin::MintCapability
1931
+ }
1932
+
1933
+ #[test_only]
1934
+ struct CoinCapsUsdc has key {
1935
+ burn_cap: coin::BurnCapability,
1936
+ freeze_cap: coin::FreezeCapability,
1937
+ mint_cap: coin::MintCapability
1938
+ }
1939
+
1940
+ #[test_only]
1941
+ fun initialized_coin(
1942
+ account: &signer, symbol: String
1943
+ ): (coin::BurnCapability, coin::FreezeCapability, coin::MintCapability) {
1944
+ let (mint_cap, burn_cap, freeze_cap, _) =
1945
+ coin::initialize_and_generate_extend_ref(
1946
+ account,
1947
+ option::none(),
1948
+ string::utf8(b""),
1949
+ symbol,
1950
+ 6,
1951
+ string::utf8(b""),
1952
+ string::utf8(b"")
1953
+ );
1954
+
1955
+ return (burn_cap, freeze_cap, mint_cap)
1956
+ }
1957
+
1958
+ #[test(chain = @0x1)]
1959
+ fun end_to_end(chain: signer) acquires Config, CoinCapabilities, ModuleStore, Pool, FlashSwapLock {
1960
+ init_module(&chain);
1961
+ initia_std::primary_fungible_store::init_module_for_test();
1962
+
1963
+ let chain_addr = signer::address_of(&chain);
1964
+
1965
+ let (initia_burn_cap, initia_freeze_cap, initia_mint_cap) =
1966
+ initialized_coin(&chain, string::utf8(b"INIT"));
1967
+ let (usdc_burn_cap, usdc_freeze_cap, usdc_mint_cap) =
1968
+ initialized_coin(&chain, string::utf8(b"USDC"));
1969
+ let init_metadata = coin::metadata(chain_addr, string::utf8(b"INIT"));
1970
+ let usdc_metadata = coin::metadata(chain_addr, string::utf8(b"USDC"));
1971
+
1972
+ coin::mint_to(&initia_mint_cap, chain_addr, 100000000);
1973
+ coin::mint_to(&usdc_mint_cap, chain_addr, 100000000);
1974
+
1975
+ // spot price is 1
1976
+ create_pair_script(
1977
+ &chain,
1978
+ std::string::utf8(b"name"),
1979
+ std::string::utf8(b"SYMBOL"),
1980
+ bigdecimal::from_ratio_u64(3, 1000),
1981
+ bigdecimal::from_ratio_u64(8, 10),
1982
+ bigdecimal::from_ratio_u64(2, 10),
1983
+ coin::metadata(chain_addr, string::utf8(b"INIT")),
1984
+ coin::metadata(chain_addr, string::utf8(b"USDC")),
1985
+ 80000000,
1986
+ 20000000
1987
+ );
1988
+
1989
+ let lp_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL"));
1990
+ let pair = object::convert<Metadata, Config>(lp_metadata);
1991
+
1992
+ assert!(
1993
+ coin::balance(chain_addr, init_metadata) == 20000000,
1994
+ 0
1995
+ );
1996
+ assert!(
1997
+ coin::balance(chain_addr, usdc_metadata) == 80000000,
1998
+ 1
1999
+ );
2000
+ assert!(
2001
+ coin::balance(chain_addr, lp_metadata) == 80000000,
2002
+ 2
2003
+ );
2004
+
2005
+ // swap init to usdc
2006
+ swap_script(
2007
+ &chain,
2008
+ pair,
2009
+ init_metadata,
2010
+ 1000,
2011
+ option::none()
2012
+ );
2013
+ assert!(
2014
+ coin::balance(chain_addr, init_metadata) == 20000000 - 1000,
2015
+ 3
2016
+ );
2017
+ assert!(
2018
+ coin::balance(chain_addr, usdc_metadata) == 80000000 + 996,
2019
+ 4
2020
+ ); // return 999 commission 3
2021
+
2022
+ // swap usdc to init
2023
+ swap_script(
2024
+ &chain,
2025
+ pair,
2026
+ usdc_metadata,
2027
+ 1000,
2028
+ option::none()
2029
+ );
2030
+ assert!(
2031
+ coin::balance(chain_addr, init_metadata) == 20000000 - 1000 + 997,
2032
+ 5
2033
+ ); // return 1000 commission 3
2034
+ assert!(
2035
+ coin::balance(chain_addr, usdc_metadata) == 80000000 + 996 - 1000,
2036
+ 6
2037
+ );
2038
+
2039
+ // withdraw liquidity
2040
+ withdraw_liquidity_script(
2041
+ &chain,
2042
+ pair,
2043
+ 40000000,
2044
+ option::none(),
2045
+ option::none()
2046
+ );
2047
+ assert!(
2048
+ coin::balance(chain_addr, init_metadata) == 20000000 - 1000 + 997
2049
+ + 40000001,
2050
+ 7
2051
+ );
2052
+ assert!(
2053
+ coin::balance(chain_addr, usdc_metadata) == 80000000 + 996 - 1000
2054
+ + 10000002,
2055
+ 8
2056
+ );
2057
+
2058
+ // single asset provide liquidity (coin b)
2059
+ // pool balance - init: 40000002, usdc: 10000002
2060
+ single_asset_provide_liquidity_script(
2061
+ &chain,
2062
+ pair,
2063
+ usdc_metadata,
2064
+ 100000,
2065
+ option::none()
2066
+ );
2067
+ assert!(
2068
+ coin::balance(chain_addr, lp_metadata) == 40000000 + 79491,
2069
+ 9
2070
+ );
2071
+
2072
+ // single asset provide liquidity (coin a)
2073
+ // pool balance - init: 40000002, usdc: 10100002
2074
+ single_asset_provide_liquidity_script(
2075
+ &chain,
2076
+ pair,
2077
+ init_metadata,
2078
+ 100000,
2079
+ option::none()
2080
+ );
2081
+ assert!(
2082
+ coin::balance(chain_addr, lp_metadata) == 40000000 + 79491 + 80090,
2083
+ 10
2084
+ );
2085
+
2086
+ move_to(
2087
+ &chain,
2088
+ CoinCapsInit {
2089
+ burn_cap: initia_burn_cap,
2090
+ freeze_cap: initia_freeze_cap,
2091
+ mint_cap: initia_mint_cap
2092
+ }
2093
+ );
2094
+
2095
+ move_to(
2096
+ &chain,
2097
+ CoinCapsUsdc {
2098
+ burn_cap: usdc_burn_cap,
2099
+ freeze_cap: usdc_freeze_cap,
2100
+ mint_cap: usdc_mint_cap
2101
+ }
2102
+ );
2103
+ }
2104
+
2105
+ #[test(chain = @0x1)]
2106
+ fun lbp_end_to_end(
2107
+ chain: signer
2108
+ ) acquires Config, CoinCapabilities, ModuleStore, Pool, FlashSwapLock {
2109
+ init_module(&chain);
2110
+ initia_std::primary_fungible_store::init_module_for_test();
2111
+
2112
+ let chain_addr = signer::address_of(&chain);
2113
+
2114
+ let (initia_burn_cap, initia_freeze_cap, initia_mint_cap) =
2115
+ initialized_coin(&chain, string::utf8(b"INIT"));
2116
+ let (usdc_burn_cap, usdc_freeze_cap, usdc_mint_cap) =
2117
+ initialized_coin(&chain, string::utf8(b"USDC"));
2118
+ let init_metadata = coin::metadata(chain_addr, string::utf8(b"INIT"));
2119
+ let usdc_metadata = coin::metadata(chain_addr, string::utf8(b"USDC"));
2120
+
2121
+ coin::mint_to(&initia_mint_cap, chain_addr, 100000000);
2122
+ coin::mint_to(&usdc_mint_cap, chain_addr, 100000000);
2123
+
2124
+ set_block_info(10, 1000);
2125
+
2126
+ create_lbp_pair_script(
2127
+ &chain,
2128
+ std::string::utf8(b"name"),
2129
+ std::string::utf8(b"SYMBOL"),
2130
+ bigdecimal::from_ratio_u64(3, 1000),
2131
+ 2000,
2132
+ bigdecimal::from_ratio_u64(99, 100),
2133
+ bigdecimal::from_ratio_u64(1, 100),
2134
+ 3000,
2135
+ bigdecimal::from_ratio_u64(61, 100),
2136
+ bigdecimal::from_ratio_u64(39, 100),
2137
+ init_metadata,
2138
+ usdc_metadata,
2139
+ 80000000,
2140
+ 20000000
2141
+ );
2142
+ let lp_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL"));
2143
+ let pair = object::convert<Metadata, Config>(lp_metadata);
2144
+
2145
+ assert!(
2146
+ get_spot_price(pair, init_metadata) == bigdecimal::from_ratio_u64(2475, 100),
2147
+ 0
2148
+ );
2149
+
2150
+ // 0.8 : 0.2
2151
+ set_block_info(11, 2500);
2152
+ assert!(
2153
+ get_spot_price(pair, init_metadata) == bigdecimal::one(),
2154
+ 1
2155
+ );
2156
+
2157
+ // 0.61 : 0.39
2158
+ set_block_info(12, 3500);
2159
+ assert!(
2160
+ get_spot_price(pair, init_metadata)
2161
+ == bigdecimal::from_ratio_u64(391025641025641025, 1000000000000000000),
2162
+ 2
2163
+ );
2164
+
2165
+ assert!(
2166
+ coin::balance(chain_addr, init_metadata) == 20000000,
2167
+ 0
2168
+ );
2169
+ assert!(
2170
+ coin::balance(chain_addr, usdc_metadata) == 80000000,
2171
+ 1
2172
+ );
2173
+ assert!(
2174
+ coin::balance(chain_addr, lp_metadata) == 80000000,
2175
+ 3
2176
+ );
2177
+
2178
+ // swap test during LBP (0.8: 0.2)
2179
+ set_block_info(11, 2500);
2180
+
2181
+ // swap init to usdc
2182
+ swap_script(
2183
+ &chain,
2184
+ pair,
2185
+ init_metadata,
2186
+ 1000,
2187
+ option::none()
2188
+ );
2189
+ assert!(
2190
+ coin::balance(chain_addr, init_metadata) == 20000000 - 1000,
2191
+ 4
2192
+ );
2193
+ assert!(
2194
+ coin::balance(chain_addr, usdc_metadata) == 80000000 + 996,
2195
+ 5
2196
+ ); // return 999 commission 3
2197
+
2198
+ // swap usdc to init
2199
+ swap_script(
2200
+ &chain,
2201
+ pair,
2202
+ usdc_metadata,
2203
+ 1000,
2204
+ option::none()
2205
+ );
2206
+ assert!(
2207
+ coin::balance(chain_addr, init_metadata) == 20000000 - 1000 + 997,
2208
+ 6
2209
+ ); // return 1000 commission 3
2210
+ assert!(
2211
+ coin::balance(chain_addr, usdc_metadata) == 80000000 + 996 - 1000,
2212
+ 7
2213
+ );
2214
+
2215
+ move_to(
2216
+ &chain,
2217
+ CoinCapsInit {
2218
+ burn_cap: initia_burn_cap,
2219
+ freeze_cap: initia_freeze_cap,
2220
+ mint_cap: initia_mint_cap
2221
+ }
2222
+ );
2223
+
2224
+ move_to(
2225
+ &chain,
2226
+ CoinCapsUsdc {
2227
+ burn_cap: usdc_burn_cap,
2228
+ freeze_cap: usdc_freeze_cap,
2229
+ mint_cap: usdc_mint_cap
2230
+ }
2231
+ );
2232
+ }
2233
+
2234
+ #[test]
2235
+ fun get_weight_test() {
2236
+ let weights = Weights {
2237
+ weights_before: Weight {
2238
+ coin_a_weight: bigdecimal::from_ratio_u64(2, 10),
2239
+ coin_b_weight: bigdecimal::from_ratio_u64(8, 10),
2240
+ timestamp: 1000
2241
+ },
2242
+ weights_after: Weight {
2243
+ coin_a_weight: bigdecimal::from_ratio_u64(8, 10),
2244
+ coin_b_weight: bigdecimal::from_ratio_u64(2, 10),
2245
+ timestamp: 2000
2246
+ }
2247
+ };
2248
+
2249
+ set_block_info(10, 1000);
2250
+ let (coin_a_weight, coin_b_weight) = get_weight(&weights);
2251
+ assert!(
2252
+ coin_a_weight == bigdecimal::from_ratio_u64(2, 10)
2253
+ && coin_b_weight == bigdecimal::from_ratio_u64(8, 10),
2254
+ 0
2255
+ );
2256
+
2257
+ set_block_info(15, 1500);
2258
+ let (coin_a_weight, coin_b_weight) = get_weight(&weights);
2259
+ assert!(
2260
+ coin_a_weight == bigdecimal::from_ratio_u64(5, 10)
2261
+ && coin_b_weight == bigdecimal::from_ratio_u64(5, 10),
2262
+ 1
2263
+ );
2264
+
2265
+ set_block_info(20, 2000);
2266
+ let (coin_a_weight, coin_b_weight) = get_weight(&weights);
2267
+ assert!(
2268
+ coin_a_weight == bigdecimal::from_ratio_u64(8, 10)
2269
+ && coin_b_weight == bigdecimal::from_ratio_u64(2, 10),
2270
+ 2
2271
+ );
2272
+
2273
+ set_block_info(30, 3000);
2274
+ let (coin_a_weight, coin_b_weight) = get_weight(&weights);
2275
+ assert!(
2276
+ coin_a_weight == bigdecimal::from_ratio_u64(8, 10)
2277
+ && coin_b_weight == bigdecimal::from_ratio_u64(2, 10),
2278
+ 3
2279
+ );
2280
+ }
2281
+
2282
+ #[test(chain = @0x1)]
2283
+ fun get_pair_test(
2284
+ chain: signer
2285
+ ) acquires CoinCapabilities, Config, Pool, ModuleStore, FlashSwapLock {
2286
+ init_module(&chain);
2287
+ initia_std::primary_fungible_store::init_module_for_test();
2288
+
2289
+ let chain_addr = signer::address_of(&chain);
2290
+
2291
+ let (_, _, coin_a_mint_cap) = initialized_coin(&chain, string::utf8(b"A"));
2292
+ let (_, _, coin_b_mint_cap) = initialized_coin(&chain, string::utf8(b"B"));
2293
+ let (_, _, coin_c_mint_cap) = initialized_coin(&chain, string::utf8(b"C"));
2294
+
2295
+ let a_metadata = coin::metadata(chain_addr, string::utf8(b"A"));
2296
+ let b_metadata = coin::metadata(chain_addr, string::utf8(b"B"));
2297
+ let c_metadata = coin::metadata(chain_addr, string::utf8(b"C"));
2298
+ let a_addr = object::object_address(&a_metadata);
2299
+ let b_addr = object::object_address(&b_metadata);
2300
+ let c_addr = object::object_address(&c_metadata);
2301
+
2302
+ coin::mint_to(&coin_a_mint_cap, chain_addr, 100000000);
2303
+ coin::mint_to(&coin_b_mint_cap, chain_addr, 100000000);
2304
+ coin::mint_to(&coin_c_mint_cap, chain_addr, 100000000);
2305
+
2306
+ create_pair_script(
2307
+ &chain,
2308
+ std::string::utf8(b"name"),
2309
+ std::string::utf8(b"SYMBOL1"),
2310
+ bigdecimal::from_ratio_u64(3, 1000),
2311
+ bigdecimal::from_ratio_u64(5, 10),
2312
+ bigdecimal::from_ratio_u64(5, 10),
2313
+ a_metadata,
2314
+ b_metadata,
2315
+ 1,
2316
+ 1
2317
+ );
2318
+ let lp_1_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL1"));
2319
+ let pair_1 = object::convert<Metadata, Config>(lp_1_metadata);
2320
+ let pair_1_addr = object::object_address(&pair_1);
2321
+
2322
+ create_pair_script(
2323
+ &chain,
2324
+ std::string::utf8(b"name"),
2325
+ std::string::utf8(b"SYMBOL2"),
2326
+ bigdecimal::from_ratio_u64(3, 1000),
2327
+ bigdecimal::from_ratio_u64(5, 10),
2328
+ bigdecimal::from_ratio_u64(5, 10),
2329
+ a_metadata,
2330
+ b_metadata,
2331
+ 1,
2332
+ 1
2333
+ );
2334
+ let lp_2_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL2"));
2335
+ let pair_2 = object::convert<Metadata, Config>(lp_2_metadata);
2336
+ let pair_2_addr = object::object_address(&pair_2);
2337
+
2338
+ create_pair_script(
2339
+ &chain,
2340
+ std::string::utf8(b"name"),
2341
+ std::string::utf8(b"SYMBOL3"),
2342
+ bigdecimal::from_ratio_u64(3, 1000),
2343
+ bigdecimal::from_ratio_u64(5, 10),
2344
+ bigdecimal::from_ratio_u64(5, 10),
2345
+ a_metadata,
2346
+ c_metadata,
2347
+ 1,
2348
+ 1
2349
+ );
2350
+ let lp_3_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL3"));
2351
+ let pair_3 = object::convert<Metadata, Config>(lp_3_metadata);
2352
+ let pair_3_addr = object::object_address(&pair_3);
2353
+
2354
+ create_pair_script(
2355
+ &chain,
2356
+ std::string::utf8(b"name"),
2357
+ std::string::utf8(b"SYMBOL4"),
2358
+ bigdecimal::from_ratio_u64(3, 1000),
2359
+ bigdecimal::from_ratio_u64(5, 10),
2360
+ bigdecimal::from_ratio_u64(5, 10),
2361
+ a_metadata,
2362
+ c_metadata,
2363
+ 1,
2364
+ 1
2365
+ );
2366
+ let lp_4_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL4"));
2367
+ let pair_4 = object::convert<Metadata, Config>(lp_4_metadata);
2368
+ let pair_4_addr = object::object_address(&pair_4);
2369
+
2370
+ let (_, timestamp) = get_block_info();
2371
+ let weight = bigdecimal::from_ratio_u64(5, 10);
2372
+ let swap_fee_rate = bigdecimal::from_ratio_u64(3, 1000);
2373
+ let weights = Weights {
2374
+ weights_before: Weight {
2375
+ coin_a_weight: weight,
2376
+ coin_b_weight: weight,
2377
+ timestamp
2378
+ },
2379
+ weights_after: Weight {
2380
+ coin_a_weight: weight,
2381
+ coin_b_weight: weight,
2382
+ timestamp
2383
+ }
2384
+ };
2385
+
2386
+ let res = get_all_pairs(
2387
+ option::none(),
2388
+ option::none(),
2389
+ option::none(),
2390
+ 10
2391
+ );
2392
+ assert!(
2393
+ res
2394
+ == vector[
2395
+ PairResponse {
2396
+ coin_a: a_addr,
2397
+ coin_b: b_addr,
2398
+ liquidity_token: pair_1_addr,
2399
+ weights,
2400
+ swap_fee_rate
2401
+ },
2402
+ PairResponse {
2403
+ coin_a: a_addr,
2404
+ coin_b: b_addr,
2405
+ liquidity_token: pair_2_addr,
2406
+ weights,
2407
+ swap_fee_rate
2408
+ },
2409
+ PairResponse {
2410
+ coin_a: a_addr,
2411
+ coin_b: c_addr,
2412
+ liquidity_token: pair_3_addr,
2413
+ weights,
2414
+ swap_fee_rate
2415
+ },
2416
+ PairResponse {
2417
+ coin_a: a_addr,
2418
+ coin_b: c_addr,
2419
+ liquidity_token: pair_4_addr,
2420
+ weights,
2421
+ swap_fee_rate
2422
+ }
2423
+ ],
2424
+ 0
2425
+ );
2426
+
2427
+ let res =
2428
+ get_all_pairs(
2429
+ option::some(a_addr),
2430
+ option::some(b_addr),
2431
+ option::some(pair_1_addr),
2432
+ 10
2433
+ );
2434
+ assert!(
2435
+ res
2436
+ == vector[
2437
+ PairResponse {
2438
+ coin_a: a_addr,
2439
+ coin_b: b_addr,
2440
+ liquidity_token: pair_2_addr,
2441
+ weights,
2442
+ swap_fee_rate
2443
+ },
2444
+ PairResponse {
2445
+ coin_a: a_addr,
2446
+ coin_b: c_addr,
2447
+ liquidity_token: pair_3_addr,
2448
+ weights,
2449
+ swap_fee_rate
2450
+ },
2451
+ PairResponse {
2452
+ coin_a: a_addr,
2453
+ coin_b: c_addr,
2454
+ liquidity_token: pair_4_addr,
2455
+ weights,
2456
+ swap_fee_rate
2457
+ }
2458
+ ],
2459
+ 1
2460
+ );
2461
+
2462
+ let res =
2463
+ get_all_pairs(
2464
+ option::some(a_addr),
2465
+ option::some(a_addr),
2466
+ option::some(pair_1_addr),
2467
+ 10
2468
+ );
2469
+ assert!(
2470
+ res
2471
+ == vector[
2472
+ PairResponse {
2473
+ coin_a: a_addr,
2474
+ coin_b: b_addr,
2475
+ liquidity_token: pair_1_addr,
2476
+ weights,
2477
+ swap_fee_rate
2478
+ },
2479
+ PairResponse {
2480
+ coin_a: a_addr,
2481
+ coin_b: b_addr,
2482
+ liquidity_token: pair_2_addr,
2483
+ weights,
2484
+ swap_fee_rate
2485
+ },
2486
+ PairResponse {
2487
+ coin_a: a_addr,
2488
+ coin_b: c_addr,
2489
+ liquidity_token: pair_3_addr,
2490
+ weights,
2491
+ swap_fee_rate
2492
+ },
2493
+ PairResponse {
2494
+ coin_a: a_addr,
2495
+ coin_b: c_addr,
2496
+ liquidity_token: pair_4_addr,
2497
+ weights,
2498
+ swap_fee_rate
2499
+ }
2500
+ ],
2501
+ 2
2502
+ );
2503
+
2504
+ let res = get_pairs(a_addr, b_addr, option::none(), 10);
2505
+ assert!(
2506
+ res
2507
+ == vector[
2508
+ PairResponse {
2509
+ coin_a: a_addr,
2510
+ coin_b: b_addr,
2511
+ liquidity_token: pair_1_addr,
2512
+ weights,
2513
+ swap_fee_rate
2514
+ },
2515
+ PairResponse {
2516
+ coin_a: a_addr,
2517
+ coin_b: b_addr,
2518
+ liquidity_token: pair_2_addr,
2519
+ weights,
2520
+ swap_fee_rate
2521
+ }
2522
+ ],
2523
+ 3
2524
+ );
2525
+
2526
+ let res = get_pairs(a_addr, b_addr, option::some(pair_1_addr), 10);
2527
+ assert!(
2528
+ res
2529
+ == vector[
2530
+ PairResponse {
2531
+ coin_a: a_addr,
2532
+ coin_b: b_addr,
2533
+ liquidity_token: pair_2_addr,
2534
+ weights,
2535
+ swap_fee_rate
2536
+ }
2537
+ ],
2538
+ 3
2539
+ );
2540
+ }
2541
+
2542
+ #[test_only]
2543
+ fun test_setup(chain: &signer) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock {
2544
+ init_module(chain);
2545
+ initia_std::primary_fungible_store::init_module_for_test();
2546
+
2547
+ let chain_addr = signer::address_of(chain);
2548
+
2549
+ let (initia_burn_cap, initia_freeze_cap, initia_mint_cap) =
2550
+ initialized_coin(chain, string::utf8(b"INIT"));
2551
+ let (usdc_burn_cap, usdc_freeze_cap, usdc_mint_cap) =
2552
+ initialized_coin(chain, string::utf8(b"USDC"));
2553
+ let init_metadata = coin::metadata(chain_addr, string::utf8(b"INIT"));
2554
+ let usdc_metadata = coin::metadata(chain_addr, string::utf8(b"USDC"));
2555
+
2556
+ coin::mint_to(&initia_mint_cap, chain_addr, 100000000);
2557
+ coin::mint_to(&usdc_mint_cap, chain_addr, 100000000);
2558
+
2559
+ // spot price is 1
2560
+ create_pair_script(
2561
+ chain,
2562
+ std::string::utf8(b"name"),
2563
+ std::string::utf8(b"SYMBOL"),
2564
+ bigdecimal::from_ratio_u64(3, 1000),
2565
+ bigdecimal::from_ratio_u64(8, 10),
2566
+ bigdecimal::from_ratio_u64(2, 10),
2567
+ coin::metadata(chain_addr, string::utf8(b"INIT")),
2568
+ coin::metadata(chain_addr, string::utf8(b"USDC")),
2569
+ 80000000,
2570
+ 20000000
2571
+ );
2572
+
2573
+ assert!(
2574
+ coin::balance(chain_addr, init_metadata) == 20000000,
2575
+ 0
2576
+ );
2577
+ assert!(
2578
+ coin::balance(chain_addr, usdc_metadata) == 80000000,
2579
+ 1
2580
+ );
2581
+
2582
+ let lp_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL"));
2583
+ assert!(
2584
+ coin::balance(chain_addr, lp_metadata) == 80000000,
2585
+ 2
2586
+ );
2587
+
2588
+ move_to(
2589
+ chain,
2590
+ CoinCapsInit {
2591
+ burn_cap: initia_burn_cap,
2592
+ freeze_cap: initia_freeze_cap,
2593
+ mint_cap: initia_mint_cap
2594
+ }
2595
+ );
2596
+
2597
+ move_to(
2598
+ chain,
2599
+ CoinCapsUsdc {
2600
+ burn_cap: usdc_burn_cap,
2601
+ freeze_cap: usdc_freeze_cap,
2602
+ mint_cap: usdc_mint_cap
2603
+ }
2604
+ );
2605
+ }
2606
+
2607
+ struct TestMetadata has drop {
2608
+ lp_metadata: Object<Metadata>,
2609
+ offer_metadata: Object<Metadata>,
2610
+ return_metadata: Object<Metadata>
2611
+ }
2612
+
2613
+ #[test_only]
2614
+ fun test_setup_flash_swap(
2615
+ chain: &signer,
2616
+ borrower: &signer,
2617
+ borrow_amount: u64,
2618
+ mint_amount: u64
2619
+ ): (TestMetadata, FungibleAsset, FungibleAsset, FlashSwapReceipt) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2620
+ test_setup(chain);
2621
+
2622
+ let chain_addr = signer::address_of(chain);
2623
+ let borrower_addr = signer::address_of(borrower);
2624
+
2625
+ let init_metadata = coin::metadata(chain_addr, string::utf8(b"INIT"));
2626
+ let usdc_metadata = coin::metadata(chain_addr, string::utf8(b"USDC"));
2627
+ let lp_metadata = coin::metadata(chain_addr, string::utf8(b"SYMBOL"));
2628
+ let pair = object::convert<Metadata, Config>(lp_metadata);
2629
+
2630
+ coin::mint_to(
2631
+ &borrow_global<CoinCapsInit>(chain_addr).mint_cap,
2632
+ borrower_addr,
2633
+ mint_amount
2634
+ );
2635
+ let offer_fa = coin::withdraw(borrower, init_metadata, mint_amount);
2636
+ // flash_swap init to usdc
2637
+ let (return_fa, receipt) =
2638
+ flash_swap(
2639
+ pair,
2640
+ init_metadata,
2641
+ borrow_amount,
2642
+ option::none()
2643
+ );
2644
+
2645
+ (
2646
+ TestMetadata {
2647
+ lp_metadata,
2648
+ offer_metadata: init_metadata,
2649
+ return_metadata: usdc_metadata
2650
+ },
2651
+ offer_fa,
2652
+ return_fa,
2653
+ receipt
2654
+ )
2655
+ }
2656
+
2657
+ #[test(chain = @0x1, borrower = @0x1782)]
2658
+ fun test_dex_flash_swap(
2659
+ chain: &signer, borrower: &signer
2660
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2661
+ let (test_metadata, offer_fa, return_fa, receipt) =
2662
+ test_setup_flash_swap(chain, borrower, 1000, 1000);
2663
+ let borrower_addr = signer::address_of(borrower);
2664
+ coin::deposit(borrower_addr, return_fa);
2665
+
2666
+ repay_flash_swap(offer_fa, receipt);
2667
+ assert!(
2668
+ !exists<FlashSwapLock>(object::object_address(&test_metadata.lp_metadata)),
2669
+ 5
2670
+ );
2671
+ }
2672
+
2673
+ #[test(chain = @0x1, borrower = @0x1782)]
2674
+ #[expected_failure(abort_code = 0x10017, location = Self)]
2675
+ fun test_dex_flash_swap_not_enough_repayment(
2676
+ chain: &signer, borrower: &signer
2677
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2678
+ let (_, offer_fa, return_fa, receipt) =
2679
+ test_setup_flash_swap(chain, borrower, 1000, 999);
2680
+ let borrower_addr = signer::address_of(borrower);
2681
+ coin::deposit(borrower_addr, return_fa);
2682
+
2683
+ repay_flash_swap(offer_fa, receipt);
2684
+ }
2685
+
2686
+ #[test(chain = @0x1, borrower = @0x1782)]
2687
+ #[expected_failure(abort_code = 0x10017, location = Self)]
2688
+ fun test_dex_flash_swap_extra_repayment(
2689
+ chain: &signer, borrower: &signer
2690
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2691
+ let (_, offer_fa, return_fa, receipt) =
2692
+ test_setup_flash_swap(chain, borrower, 1000, 1001);
2693
+ let borrower_addr = signer::address_of(borrower);
2694
+ coin::deposit(borrower_addr, return_fa);
2695
+
2696
+ repay_flash_swap(offer_fa, receipt);
2697
+ }
2698
+
2699
+ #[test(chain = @0x1, borrower = @0x1782)]
2700
+ #[expected_failure(abort_code = 0x30016, location = Self)]
2701
+ fun test_dex_flash_swap_recursive(
2702
+ chain: &signer, borrower: &signer
2703
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2704
+ let (test_metadata, offer_fa, return_fa, receipt) =
2705
+ test_setup_flash_swap(chain, borrower, 1000, 1000);
2706
+ let borrower_addr = signer::address_of(borrower);
2707
+ coin::deposit(borrower_addr, offer_fa);
2708
+ coin::deposit(borrower_addr, return_fa);
2709
+ let FlashSwapReceipt { pair_addr: _ } = receipt;
2710
+
2711
+ // recursive flash_swap
2712
+ let pair = object::convert<Metadata, Config>(test_metadata.lp_metadata);
2713
+ let (return_fa, receipt) =
2714
+ flash_swap(
2715
+ pair,
2716
+ test_metadata.offer_metadata,
2717
+ 1000,
2718
+ option::none()
2719
+ );
2720
+ coin::deposit(borrower_addr, return_fa);
2721
+ let FlashSwapReceipt { pair_addr: _ } = receipt;
2722
+ }
2723
+
2724
+ #[test(chain = @0x1, borrower = @0x1782)]
2725
+ #[expected_failure(abort_code = 0x30016, location = Self)]
2726
+ fun test_dex_flash_swap_block_swap(
2727
+ chain: &signer, borrower: &signer
2728
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2729
+ let (test_metadata, offer_fa, return_fa, receipt) =
2730
+ test_setup_flash_swap(chain, borrower, 1000, 1000);
2731
+ let borrower_addr = signer::address_of(borrower);
2732
+ coin::deposit(borrower_addr, return_fa);
2733
+ let FlashSwapReceipt { pair_addr: _ } = receipt;
2734
+
2735
+ // execute swap
2736
+ let pair = object::convert<Metadata, Config>(test_metadata.lp_metadata);
2737
+ let return_fa = swap(pair, offer_fa);
2738
+ coin::deposit(borrower_addr, return_fa);
2739
+ }
2740
+
2741
+ #[test(chain = @0x1, borrower = @0x1782)]
2742
+ #[expected_failure(abort_code = 0x30016, location = Self)]
2743
+ fun test_dex_flash_swap_block_provide_liquidity(
2744
+ chain: &signer, borrower: &signer
2745
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2746
+ let (test_metadata, offer_fa, return_fa, receipt) =
2747
+ test_setup_flash_swap(chain, borrower, 1000, 1000);
2748
+ let borrower_addr = signer::address_of(borrower);
2749
+ let FlashSwapReceipt { pair_addr: _ } = receipt;
2750
+
2751
+ // execute provide_liquidity
2752
+ let pair = object::convert<Metadata, Config>(test_metadata.lp_metadata);
2753
+ let lp_fa = provide_liquidity(pair, offer_fa, return_fa, option::none());
2754
+
2755
+ coin::deposit(borrower_addr, lp_fa);
2756
+ }
2757
+
2758
+ #[test(chain = @0x1, borrower = @0x1782)]
2759
+ #[expected_failure(abort_code = 0x30016, location = Self)]
2760
+ fun test_dex_flash_swap_block_single_asset_provide_liquidity(
2761
+ chain: &signer, borrower: &signer
2762
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2763
+ let (test_metadata, offer_fa, return_fa, receipt) =
2764
+ test_setup_flash_swap(chain, borrower, 1000, 1000);
2765
+ let borrower_addr = signer::address_of(borrower);
2766
+ coin::deposit(borrower_addr, return_fa);
2767
+ let FlashSwapReceipt { pair_addr: _ } = receipt;
2768
+
2769
+ // execute provide_liquidity
2770
+ let pair = object::convert<Metadata, Config>(test_metadata.lp_metadata);
2771
+ let lp_fa = single_asset_provide_liquidity(pair, offer_fa, option::none());
2772
+
2773
+ coin::deposit(borrower_addr, lp_fa);
2774
+ }
2775
+
2776
+ #[test(chain = @0x1, borrower = @0x1782)]
2777
+ #[expected_failure(abort_code = 0x30016, location = Self)]
2778
+ fun test_dex_flash_swap_block_withdraw_liquidity(
2779
+ chain: &signer, borrower: &signer
2780
+ ) acquires ModuleStore, Pool, CoinCapabilities, Config, FlashSwapLock, CoinCapsInit {
2781
+ let (test_metadata, offer_fa, return_fa, receipt) =
2782
+ test_setup_flash_swap(chain, borrower, 1000, 1000);
2783
+ let borrower_addr = signer::address_of(borrower);
2784
+ coin::deposit(borrower_addr, offer_fa);
2785
+ coin::deposit(borrower_addr, return_fa);
2786
+ let FlashSwapReceipt { pair_addr: _ } = receipt;
2787
+
2788
+ // execute provide_liquidity
2789
+ let lp_fa = coin::withdraw(chain, test_metadata.lp_metadata, 1);
2790
+ let (a_fa, b_fa) = withdraw_liquidity(lp_fa, option::none(), option::none());
2791
+
2792
+ coin::deposit(borrower_addr, a_fa);
2793
+ coin::deposit(borrower_addr, b_fa);
2794
+ }
2795
+ }