hive-stream 3.0.2 → 3.0.3

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 (197) hide show
  1. package/DOCUMENTATION.md +50 -2
  2. package/README.md +44 -3
  3. package/dist/adapters/base.adapter.d.ts +5 -0
  4. package/dist/adapters/base.adapter.js +9 -0
  5. package/dist/adapters/base.adapter.js.map +1 -1
  6. package/dist/adapters/mongodb.adapter.d.ts +6 -6
  7. package/dist/adapters/mongodb.adapter.js +36 -21
  8. package/dist/adapters/mongodb.adapter.js.map +1 -1
  9. package/dist/adapters/postgresql.adapter.d.ts +7 -0
  10. package/dist/adapters/postgresql.adapter.js +46 -19
  11. package/dist/adapters/postgresql.adapter.js.map +1 -1
  12. package/dist/adapters/sqlite.adapter.d.ts +4 -0
  13. package/dist/adapters/sqlite.adapter.js +10 -0
  14. package/dist/adapters/sqlite.adapter.js.map +1 -1
  15. package/dist/api.d.ts +13 -3
  16. package/dist/api.js +96 -62
  17. package/dist/api.js.map +1 -1
  18. package/dist/config.d.ts +7 -1
  19. package/dist/config.js +7 -1
  20. package/dist/config.js.map +1 -1
  21. package/dist/contracts/auctionhouse.contract.d.ts +4 -0
  22. package/dist/contracts/auctionhouse.contract.js +234 -0
  23. package/dist/contracts/auctionhouse.contract.js.map +1 -0
  24. package/dist/contracts/booking.contract.d.ts +4 -0
  25. package/dist/contracts/booking.contract.js +225 -0
  26. package/dist/contracts/booking.contract.js.map +1 -0
  27. package/dist/contracts/bountyboard.contract.d.ts +4 -0
  28. package/dist/contracts/bountyboard.contract.js +233 -0
  29. package/dist/contracts/bountyboard.contract.js.map +1 -0
  30. package/dist/contracts/bundlemarketplace.contract.d.ts +4 -0
  31. package/dist/contracts/bundlemarketplace.contract.js +195 -0
  32. package/dist/contracts/bundlemarketplace.contract.js.map +1 -0
  33. package/dist/contracts/charitymatch.contract.d.ts +4 -0
  34. package/dist/contracts/charitymatch.contract.js +172 -0
  35. package/dist/contracts/charitymatch.contract.js.map +1 -0
  36. package/dist/contracts/coinflip.contract.js +7 -1
  37. package/dist/contracts/coinflip.contract.js.map +1 -1
  38. package/dist/contracts/crowdfund.contract.d.ts +4 -0
  39. package/dist/contracts/crowdfund.contract.js +290 -0
  40. package/dist/contracts/crowdfund.contract.js.map +1 -0
  41. package/dist/contracts/dcabot.contract.d.ts +4 -0
  42. package/dist/contracts/dcabot.contract.js +217 -0
  43. package/dist/contracts/dcabot.contract.js.map +1 -0
  44. package/dist/contracts/dice.contract.js +7 -1
  45. package/dist/contracts/dice.contract.js.map +1 -1
  46. package/dist/contracts/domainregistry.contract.d.ts +4 -0
  47. package/dist/contracts/domainregistry.contract.js +232 -0
  48. package/dist/contracts/domainregistry.contract.js.map +1 -0
  49. package/dist/contracts/exchange.contract.js +209 -168
  50. package/dist/contracts/exchange.contract.js.map +1 -1
  51. package/dist/contracts/fanclub.contract.d.ts +4 -0
  52. package/dist/contracts/fanclub.contract.js +193 -0
  53. package/dist/contracts/fanclub.contract.js.map +1 -0
  54. package/dist/contracts/giftcard.contract.d.ts +4 -0
  55. package/dist/contracts/giftcard.contract.js +158 -0
  56. package/dist/contracts/giftcard.contract.js.map +1 -0
  57. package/dist/contracts/grantrounds.contract.d.ts +4 -0
  58. package/dist/contracts/grantrounds.contract.js +265 -0
  59. package/dist/contracts/grantrounds.contract.js.map +1 -0
  60. package/dist/contracts/groupbuy.contract.d.ts +4 -0
  61. package/dist/contracts/groupbuy.contract.js +198 -0
  62. package/dist/contracts/groupbuy.contract.js.map +1 -0
  63. package/dist/contracts/helpers.d.ts +64 -0
  64. package/dist/contracts/helpers.js +159 -0
  65. package/dist/contracts/helpers.js.map +1 -0
  66. package/dist/contracts/insurancepool.contract.d.ts +4 -0
  67. package/dist/contracts/insurancepool.contract.js +281 -0
  68. package/dist/contracts/insurancepool.contract.js.map +1 -0
  69. package/dist/contracts/invoice.contract.d.ts +4 -0
  70. package/dist/contracts/invoice.contract.js +193 -0
  71. package/dist/contracts/invoice.contract.js.map +1 -0
  72. package/dist/contracts/launchpad.contract.d.ts +4 -0
  73. package/dist/contracts/launchpad.contract.js +225 -0
  74. package/dist/contracts/launchpad.contract.js.map +1 -0
  75. package/dist/contracts/lotto.contract.js +53 -37
  76. package/dist/contracts/lotto.contract.js.map +1 -1
  77. package/dist/contracts/multisigtreasury.contract.d.ts +4 -0
  78. package/dist/contracts/multisigtreasury.contract.js +245 -0
  79. package/dist/contracts/multisigtreasury.contract.js.map +1 -0
  80. package/dist/contracts/nft.contract.d.ts +1 -0
  81. package/dist/contracts/nft.contract.js +236 -192
  82. package/dist/contracts/nft.contract.js.map +1 -1
  83. package/dist/contracts/oraclebounty.contract.d.ts +4 -0
  84. package/dist/contracts/oraclebounty.contract.js +250 -0
  85. package/dist/contracts/oraclebounty.contract.js.map +1 -0
  86. package/dist/contracts/payroll.contract.d.ts +4 -0
  87. package/dist/contracts/payroll.contract.js +232 -0
  88. package/dist/contracts/payroll.contract.js.map +1 -0
  89. package/dist/contracts/paywall.contract.d.ts +4 -0
  90. package/dist/contracts/paywall.contract.js +185 -0
  91. package/dist/contracts/paywall.contract.js.map +1 -0
  92. package/dist/contracts/poll.contract.js +2 -0
  93. package/dist/contracts/poll.contract.js.map +1 -1
  94. package/dist/contracts/predictionmarket.contract.d.ts +4 -0
  95. package/dist/contracts/predictionmarket.contract.js +213 -0
  96. package/dist/contracts/predictionmarket.contract.js.map +1 -0
  97. package/dist/contracts/proposaltimelock.contract.d.ts +4 -0
  98. package/dist/contracts/proposaltimelock.contract.js +250 -0
  99. package/dist/contracts/proposaltimelock.contract.js.map +1 -0
  100. package/dist/contracts/questpass.contract.d.ts +4 -0
  101. package/dist/contracts/questpass.contract.js +214 -0
  102. package/dist/contracts/questpass.contract.js.map +1 -0
  103. package/dist/contracts/referral.contract.d.ts +4 -0
  104. package/dist/contracts/referral.contract.js +238 -0
  105. package/dist/contracts/referral.contract.js.map +1 -0
  106. package/dist/contracts/rental.contract.d.ts +4 -0
  107. package/dist/contracts/rental.contract.js +221 -0
  108. package/dist/contracts/rental.contract.js.map +1 -0
  109. package/dist/contracts/revenuesplit.contract.d.ts +4 -0
  110. package/dist/contracts/revenuesplit.contract.js +211 -0
  111. package/dist/contracts/revenuesplit.contract.js.map +1 -0
  112. package/dist/contracts/rps.contract.js +17 -1
  113. package/dist/contracts/rps.contract.js.map +1 -1
  114. package/dist/contracts/savings.contract.d.ts +4 -0
  115. package/dist/contracts/savings.contract.js +208 -0
  116. package/dist/contracts/savings.contract.js.map +1 -0
  117. package/dist/contracts/subscription.contract.d.ts +4 -0
  118. package/dist/contracts/subscription.contract.js +241 -0
  119. package/dist/contracts/subscription.contract.js.map +1 -0
  120. package/dist/contracts/sweepstakes.contract.d.ts +4 -0
  121. package/dist/contracts/sweepstakes.contract.js +209 -0
  122. package/dist/contracts/sweepstakes.contract.js.map +1 -0
  123. package/dist/contracts/ticketing.contract.d.ts +4 -0
  124. package/dist/contracts/ticketing.contract.js +185 -0
  125. package/dist/contracts/ticketing.contract.js.map +1 -0
  126. package/dist/contracts/tipjar.contract.js +2 -0
  127. package/dist/contracts/tipjar.contract.js.map +1 -1
  128. package/dist/contracts/token.contract.js +135 -125
  129. package/dist/contracts/token.contract.js.map +1 -1
  130. package/dist/index.d.ts +39 -0
  131. package/dist/index.js +71 -1
  132. package/dist/index.js.map +1 -1
  133. package/dist/metadata.d.ts +7 -0
  134. package/dist/metadata.js +64 -1
  135. package/dist/metadata.js.map +1 -1
  136. package/dist/providers/block-provider.d.ts +22 -0
  137. package/dist/providers/block-provider.js +3 -0
  138. package/dist/providers/block-provider.js.map +1 -0
  139. package/dist/providers/haf-client.d.ts +30 -0
  140. package/dist/providers/haf-client.js +119 -0
  141. package/dist/providers/haf-client.js.map +1 -0
  142. package/dist/providers/haf-provider.d.ts +49 -0
  143. package/dist/providers/haf-provider.js +256 -0
  144. package/dist/providers/haf-provider.js.map +1 -0
  145. package/dist/providers/hive-provider.d.ts +13 -0
  146. package/dist/providers/hive-provider.js +25 -0
  147. package/dist/providers/hive-provider.js.map +1 -0
  148. package/dist/providers/index.d.ts +4 -0
  149. package/dist/providers/index.js +21 -0
  150. package/dist/providers/index.js.map +1 -0
  151. package/dist/streamer.d.ts +21 -1
  152. package/dist/streamer.js +187 -62
  153. package/dist/streamer.js.map +1 -1
  154. package/dist/utils.js +11 -2
  155. package/dist/utils.js.map +1 -1
  156. package/package.json +16 -1
  157. package/.claude/settings.local.json +0 -12
  158. package/.env.example +0 -3
  159. package/.travis.yml +0 -11
  160. package/AGENTS.md +0 -35
  161. package/CLAUDE.md +0 -75
  162. package/ecosystem.config.js +0 -17
  163. package/examples/contracts/README.md +0 -8
  164. package/examples/contracts/exchange.ts +0 -38
  165. package/examples/contracts/poll.ts +0 -21
  166. package/examples/contracts/rps.ts +0 -19
  167. package/examples/contracts/tipjar.ts +0 -19
  168. package/jest.config.js +0 -9
  169. package/test-contract-block.md +0 -19
  170. package/tests/actions.spec.ts +0 -252
  171. package/tests/adapters/actions-persistence.spec.ts +0 -144
  172. package/tests/adapters/postgresql.adapter.spec.ts +0 -127
  173. package/tests/adapters/sqlite.adapter.spec.ts +0 -181
  174. package/tests/config-input.spec.ts +0 -90
  175. package/tests/contracts/coinflip.contract.spec.ts +0 -94
  176. package/tests/contracts/dice.contract.spec.ts +0 -87
  177. package/tests/contracts/entrants.json +0 -729
  178. package/tests/contracts/exchange.contract.spec.ts +0 -84
  179. package/tests/contracts/lotto.contract.spec.ts +0 -59
  180. package/tests/contracts/nft.contract.spec.ts +0 -948
  181. package/tests/contracts/token.contract.spec.ts +0 -90
  182. package/tests/exchanges/coingecko.exchange.spec.ts +0 -169
  183. package/tests/exchanges/exchange.base.spec.ts +0 -246
  184. package/tests/helpers/mock-adapter.ts +0 -214
  185. package/tests/helpers/mock-fetch.ts +0 -165
  186. package/tests/hive-chain-features.spec.ts +0 -319
  187. package/tests/hive-rates.spec.ts +0 -443
  188. package/tests/integration/hive-rates.integration.spec.ts +0 -35
  189. package/tests/metadata.spec.ts +0 -63
  190. package/tests/setup.ts +0 -30
  191. package/tests/streamer-actions.spec.ts +0 -274
  192. package/tests/streamer.spec.ts +0 -342
  193. package/tests/types/rates.spec.ts +0 -216
  194. package/tests/utils.spec.ts +0 -113
  195. package/tsconfig.build.json +0 -4
  196. package/tslint.json +0 -21
  197. package/wallaby.js +0 -26
@@ -133,6 +133,7 @@ function createCoinflipContract(options = {}) {
133
133
  return;
134
134
  }
135
135
  state.pendingPayouts = state.pendingPayouts.plus(potentialPayout);
136
+ let payoutIncremented = true;
136
137
  try {
137
138
  const serverSeed = (0, uuid_1.v4)();
138
139
  if (!serverSeed || typeof serverSeed !== 'string') {
@@ -153,6 +154,8 @@ function createCoinflipContract(options = {}) {
153
154
  }
154
155
  });
155
156
  await state.streamer.transferHiveTokens(account, sender, potentialPayout.toFixed(3), amountTrim[1], `[Winner] | Guess: ${payload.guess} | Server Roll: ${generatedGuess} | Previous block id: ${ctx.block.previousId} | BlockID: ${ctx.block.id} | Trx ID: ${ctx.transaction.id} | Server Seed: ${serverSeed}`);
157
+ // Invalidate balance cache after payout
158
+ state.balanceCache = null;
156
159
  return;
157
160
  }
158
161
  await state.adapter.addEvent(new Date(), name, 'flip', payload, {
@@ -169,7 +172,10 @@ function createCoinflipContract(options = {}) {
169
172
  await state.streamer.transferHiveTokens(account, sender, '0.001', amountTrim[1], `[Lost] | Guess: ${payload.guess} | Server Roll: ${generatedGuess} | Previous block id: ${ctx.block.previousId} | BlockID: ${ctx.block.id} | Trx ID: ${ctx.transaction.id} | Server Seed: ${serverSeed}`);
170
173
  }
171
174
  finally {
172
- state.pendingPayouts = state.pendingPayouts.minus(potentialPayout);
175
+ if (payoutIncremented) {
176
+ state.pendingPayouts = state.pendingPayouts.minus(potentialPayout);
177
+ payoutIncremented = false;
178
+ }
173
179
  }
174
180
  }
175
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coinflip.contract.js","sourceRoot":"","sources":["../../src/contracts/coinflip.contract.ts"],"names":[],"mappings":";;;;;AAoCA,wDA4OC;AAhRD,gEAAqC;AACrC,4DAAoC;AACpC,+BAAoC;AACpC,6BAAwB;AACxB,yCAAoD;AAEpD,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,GAAG,CAAC,eAAuB,EAAE,OAAe,EAAE,aAAqB,EAAE,UAAkB,EAAE,UAAU,GAAG,EAAE;IAC7G,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,GAAG,eAAe,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7G,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,CAAC;AAWD,SAAgB,sBAAsB,CAAC,UAAmC,EAAE;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAE1D,MAAM,KAAK,GAAG;QACV,QAAQ,EAAE,IAAW;QACrB,OAAO,EAAE,IAAW;QACpB,YAAY,EAAE,IAAwD;QACtE,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,EAAgC;QAC1C,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;KACnC,CAAC;IAEF,MAAM,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;QACxB,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,IAAwB,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;QACtC,CAAC;QAED,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAEnF,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAI,WAAW,CAAC,CAAC,CAAC,CAAC,OAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9C,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAChE,CAAC;gBAED,KAAK,CAAC,YAAY,GAAG;oBACjB,OAAO,EAAE,MAAM;oBACf,SAAS,EAAE,GAAG;iBACjB,CAAC;gBAEF,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;YACtC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO;QACX,CAAC;QAED,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAE7B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC;oBACD,MAAM,OAAO,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,OAAoD,EAAE,GAAQ,EAAiB,EAAE;QACxG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEzC,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,sBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;gBAChF,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAE5F,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAE7D,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC5C,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,wCAAwC,CAAC,CAAC;oBACjI,OAAO;gBACX,CAAC;gBAED,IAAI,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrC,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,2CAA2C,SAAS,IAAI,cAAc,GAAG,CAAC,CAAC;oBAClK,OAAO;gBACX,CAAC;gBAED,IAAI,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,wCAAwC,SAAS,IAAI,cAAc,GAAG,CAAC,CAAC;oBAC/J,OAAO;gBACX,CAAC;gBAED,MAAM,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAErD,IAAI,eAAe,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAClD,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAC;oBAC7I,OAAO;gBACX,CAAC;gBAED,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAElE,IAAI,CAAC;oBACD,MAAM,UAAU,GAAG,IAAA,SAAM,GAAE,CAAC;oBAC5B,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;wBAChD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBACtD,CAAC;oBAED,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;oBAEnH,IAAI,cAAc,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;wBACnC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;4BAC5D,MAAM,EAAE,UAAU;4BAClB,IAAI,EAAE;gCACF,IAAI,EAAE,IAAI,IAAI,EAAE;gCAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gCACpB,UAAU;gCACV,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;gCACrC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;gCACrB,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;gCACjC,OAAO,EAAE,MAAM;6BAClB;yBACJ,CAAC,CAAC;wBAEH,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,qBAAqB,OAAO,CAAC,KAAK,mBAAmB,cAAc,yBAAyB,GAAG,CAAC,KAAK,CAAC,UAAU,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,CAAC,WAAW,CAAC,EAAE,mBAAmB,UAAU,EAAE,CAAC,CAAC;wBAChT,OAAO;oBACX,CAAC;oBAED,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;wBAC5D,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE;4BACF,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,UAAU;4BACV,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;4BACrC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;4BACrB,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;4BACjC,OAAO,EAAE,OAAO;yBACnB;qBACJ,CAAC,CAAC;oBAEH,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,mBAAmB,OAAO,CAAC,KAAK,mBAAmB,cAAc,yBAAyB,GAAG,CAAC,KAAK,CAAC,UAAU,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,CAAC,WAAW,CAAC,EAAE,mBAAmB,UAAU,EAAE,CAAC,CAAC;gBAC/R,CAAC;wBAAS,CAAC;oBACP,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE;gBACvD,MAAM;gBACN,MAAM,EAAE,SAAS;gBACjB,OAAO;gBACP,OAAO,EAAE,KAAK,CAAC,OAAO;aACzB,CAAC,CAAC;YAEH,IAAI,CAAC;gBACD,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnD,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;oBAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;wBACrE,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,qCAAqC,CAAC,CAAC;oBACzH,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,WAAW,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,OAAoD,EAAE,GAAQ,EAAiB,EAAE;QACjG,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC3B,IAAI,CAAC;oBACD,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAChC,OAAO,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,YAAY,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,IAAA,yBAAc,EAAC;QAClB,IAAI;QACJ,KAAK,EAAE;YACH,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC9B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACV,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACpB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;YAClC,CAAC;SACJ;QACD,OAAO,EAAE;YACL,IAAI,EAAE,IAAA,iBAAM,EAAC,IAAI,EAAE;gBACf,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;aACtB,CAAC;SACL;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"coinflip.contract.js","sourceRoot":"","sources":["../../src/contracts/coinflip.contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface CrowdfundContractOptions {
2
+ name?: string;
3
+ }
4
+ export declare function createCrowdfundContract(options?: CrowdfundContractOptions): import("..").ContractDefinition;
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCrowdfundContract = createCrowdfundContract;
4
+ const zod_1 = require("zod");
5
+ const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
7
+ const DEFAULT_NAME = 'crowdfund';
8
+ function createCrowdfundContract(options = {}) {
9
+ const name = options.name || DEFAULT_NAME;
10
+ const state = (0, helpers_1.createContractState)();
11
+ const milestoneSchema = zod_1.z.object({
12
+ title: zod_1.z.string().min(1).max(140),
13
+ targetPercent: zod_1.z.number().min(1).max(100)
14
+ });
15
+ const createCampaignSchema = zod_1.z.object({
16
+ campaignId: helpers_1.identifierSchema,
17
+ title: zod_1.z.string().min(3).max(140),
18
+ description: zod_1.z.string().max(1000).optional(),
19
+ targetAmount: helpers_1.amountSchema,
20
+ asset: helpers_1.assetSchema,
21
+ deadline: zod_1.z.string(),
22
+ beneficiary: zod_1.z.string().min(3).max(32).optional(),
23
+ milestones: zod_1.z.array(milestoneSchema).max(10).optional(),
24
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
25
+ });
26
+ const campaignIdSchema = zod_1.z.object({
27
+ campaignId: helpers_1.identifierSchema
28
+ });
29
+ const releaseMilestoneSchema = zod_1.z.object({
30
+ campaignId: helpers_1.identifierSchema,
31
+ milestoneIndex: zod_1.z.number().int().min(0)
32
+ });
33
+ const initialize = async () => {
34
+ await (0, helpers_1.initializeTables)(state.adapter, [
35
+ `
36
+ CREATE TABLE IF NOT EXISTS crowdfund_campaigns (
37
+ campaign_id TEXT PRIMARY KEY,
38
+ creator TEXT NOT NULL,
39
+ beneficiary TEXT NOT NULL,
40
+ title TEXT NOT NULL,
41
+ description TEXT,
42
+ target_amount TEXT NOT NULL,
43
+ current_amount TEXT NOT NULL,
44
+ asset TEXT NOT NULL,
45
+ deadline DATETIME NOT NULL,
46
+ status TEXT NOT NULL,
47
+ metadata TEXT,
48
+ created_at DATETIME NOT NULL,
49
+ finalized_at DATETIME
50
+ )
51
+ `,
52
+ `
53
+ CREATE TABLE IF NOT EXISTS crowdfund_contributions (
54
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
55
+ campaign_id TEXT NOT NULL,
56
+ contributor TEXT NOT NULL,
57
+ amount TEXT NOT NULL,
58
+ asset TEXT NOT NULL,
59
+ transaction_id TEXT NOT NULL,
60
+ refunded INTEGER NOT NULL,
61
+ created_at DATETIME NOT NULL
62
+ )
63
+ `,
64
+ `
65
+ CREATE TABLE IF NOT EXISTS crowdfund_milestones (
66
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
67
+ campaign_id TEXT NOT NULL,
68
+ milestone_index INTEGER NOT NULL,
69
+ title TEXT NOT NULL,
70
+ target_percent REAL NOT NULL,
71
+ status TEXT NOT NULL,
72
+ released_amount TEXT,
73
+ released_at DATETIME,
74
+ created_at DATETIME NOT NULL,
75
+ UNIQUE(campaign_id, milestone_index)
76
+ )
77
+ `
78
+ ]);
79
+ };
80
+ const createCampaign = async (payload, ctx) => {
81
+ const creator = (0, helpers_1.requireSender)(ctx);
82
+ const existing = await state.adapter.query('SELECT campaign_id FROM crowdfund_campaigns WHERE campaign_id = ?', [payload.campaignId]);
83
+ if (existing.length > 0) {
84
+ throw new Error(`Campaign ${payload.campaignId} already exists`);
85
+ }
86
+ const deadline = (0, helpers_1.parseDateValue)(payload.deadline);
87
+ if (!deadline || deadline <= new Date()) {
88
+ throw new Error('Campaign deadline must be in the future');
89
+ }
90
+ await state.adapter.query(`INSERT INTO crowdfund_campaigns (
91
+ campaign_id, creator, beneficiary, title, description, target_amount, current_amount, asset, deadline, status, metadata, created_at, finalized_at
92
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
93
+ payload.campaignId,
94
+ creator,
95
+ payload.beneficiary || creator,
96
+ payload.title,
97
+ payload.description || '',
98
+ payload.targetAmount,
99
+ '0',
100
+ payload.asset,
101
+ deadline,
102
+ 'open',
103
+ JSON.stringify(payload.metadata || {}),
104
+ new Date(),
105
+ null
106
+ ]);
107
+ const milestones = payload.milestones || [];
108
+ if (milestones.length > 0) {
109
+ const totalPercent = milestones.reduce((sum, m) => sum + m.targetPercent, 0);
110
+ if (totalPercent > 100) {
111
+ throw new Error('Milestone percentages cannot exceed 100%');
112
+ }
113
+ }
114
+ for (let index = 0; index < milestones.length; index++) {
115
+ const milestone = milestones[index];
116
+ await state.adapter.query(`INSERT INTO crowdfund_milestones (
117
+ campaign_id, milestone_index, title, target_percent, status, released_amount, released_at, created_at
118
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [payload.campaignId, index, milestone.title, milestone.targetPercent, 'pending', null, null, new Date()]);
119
+ }
120
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createCampaign', payload, {
121
+ action: 'crowdfund_campaign_created',
122
+ data: {
123
+ campaignId: payload.campaignId,
124
+ creator
125
+ }
126
+ });
127
+ };
128
+ const contribute = async (payload, ctx) => {
129
+ const contributor = (0, helpers_1.requireSender)(ctx);
130
+ const payment = (0, helpers_1.getIncomingPayment)(ctx);
131
+ const rows = await state.adapter.query('SELECT * FROM crowdfund_campaigns WHERE campaign_id = ?', [payload.campaignId]);
132
+ if (rows.length === 0) {
133
+ throw new Error(`Campaign ${payload.campaignId} does not exist`);
134
+ }
135
+ const campaign = rows[0];
136
+ const deadline = (0, helpers_1.parseDateValue)(campaign.deadline) || new Date();
137
+ if (campaign.status !== 'open' && campaign.status !== 'target_met') {
138
+ throw new Error('Campaign is not accepting contributions');
139
+ }
140
+ if (deadline <= new Date()) {
141
+ throw new Error('Campaign deadline has passed');
142
+ }
143
+ (0, helpers_1.assertAssetMatches)(payment.asset, campaign.asset);
144
+ const currentAmount = (0, helpers_1.toBigNumber)(campaign.current_amount).plus(payment.amount);
145
+ const nextStatus = currentAmount.gte(campaign.target_amount)
146
+ ? 'target_met'
147
+ : campaign.status;
148
+ await state.adapter.query('INSERT INTO crowdfund_contributions (campaign_id, contributor, amount, asset, transaction_id, refunded, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)', [payload.campaignId, contributor, payment.amount, payment.asset, ctx.transaction.id, 0, new Date()]);
149
+ await state.adapter.query('UPDATE crowdfund_campaigns SET current_amount = ?, status = ? WHERE campaign_id = ?', [currentAmount.toFixed(), nextStatus, payload.campaignId]);
150
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'contribute', payload, {
151
+ action: 'crowdfund_contribution_received',
152
+ data: {
153
+ campaignId: payload.campaignId,
154
+ contributor,
155
+ amount: payment.amount,
156
+ asset: payment.asset,
157
+ currentAmount: currentAmount.toFixed()
158
+ }
159
+ });
160
+ };
161
+ const finalizeCampaign = async (payload, ctx) => {
162
+ const rows = await state.adapter.query('SELECT * FROM crowdfund_campaigns WHERE campaign_id = ?', [payload.campaignId]);
163
+ if (rows.length === 0) {
164
+ throw new Error(`Campaign ${payload.campaignId} does not exist`);
165
+ }
166
+ const campaign = rows[0];
167
+ if (campaign.status === 'funded' || campaign.status === 'failed') {
168
+ return;
169
+ }
170
+ if (ctx.trigger !== 'time') {
171
+ const sender = (0, helpers_1.requireSender)(ctx);
172
+ if (sender !== campaign.creator) {
173
+ throw new Error('Only the campaign creator can finalize this campaign');
174
+ }
175
+ }
176
+ const deadline = (0, helpers_1.parseDateValue)(campaign.deadline) || new Date();
177
+ const goalReached = (0, helpers_1.toBigNumber)(campaign.current_amount).gte(campaign.target_amount);
178
+ if (!goalReached && deadline > new Date()) {
179
+ throw new Error('Campaign cannot be finalized before the deadline unless the target is met');
180
+ }
181
+ const status = goalReached ? 'funded' : 'failed';
182
+ await state.adapter.query('UPDATE crowdfund_campaigns SET status = ?, finalized_at = ? WHERE campaign_id = ?', [status, new Date(), payload.campaignId]);
183
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'finalizeCampaign', payload, {
184
+ action: 'crowdfund_campaign_finalized',
185
+ data: {
186
+ campaignId: payload.campaignId,
187
+ status,
188
+ beneficiary: campaign.beneficiary,
189
+ amount: campaign.current_amount,
190
+ asset: campaign.asset
191
+ }
192
+ });
193
+ };
194
+ const releaseMilestone = async (payload, ctx) => {
195
+ const sender = (0, helpers_1.requireSender)(ctx);
196
+ const campaigns = await state.adapter.query('SELECT * FROM crowdfund_campaigns WHERE campaign_id = ?', [payload.campaignId]);
197
+ if (campaigns.length === 0) {
198
+ throw new Error(`Campaign ${payload.campaignId} does not exist`);
199
+ }
200
+ const campaign = campaigns[0];
201
+ if (campaign.creator !== sender) {
202
+ throw new Error('Only the campaign creator can release milestones');
203
+ }
204
+ if (campaign.status !== 'funded') {
205
+ throw new Error('Campaign must be funded before releasing milestones');
206
+ }
207
+ const rows = await state.adapter.query('SELECT * FROM crowdfund_milestones WHERE campaign_id = ? AND milestone_index = ?', [payload.campaignId, payload.milestoneIndex]);
208
+ if (rows.length === 0) {
209
+ throw new Error('Milestone does not exist');
210
+ }
211
+ const milestone = rows[0];
212
+ if (milestone.status === 'released') {
213
+ throw new Error('Milestone already released');
214
+ }
215
+ // Guard against total milestone releases exceeding campaign funds
216
+ const allMilestones = await state.adapter.query('SELECT * FROM crowdfund_milestones WHERE campaign_id = ?', [payload.campaignId]);
217
+ const totalReleasedPercent = allMilestones
218
+ .filter((m) => m.status === 'released')
219
+ .reduce((sum, m) => sum + Number(m.target_percent), 0);
220
+ if (totalReleasedPercent + Number(milestone.target_percent) > 100) {
221
+ throw new Error('Cannot release milestone: total released would exceed 100% of campaign funds');
222
+ }
223
+ const releasedAmount = (0, helpers_1.toBigNumber)(campaign.current_amount)
224
+ .multipliedBy(milestone.target_percent)
225
+ .dividedBy(100)
226
+ .toFixed();
227
+ await state.adapter.query('UPDATE crowdfund_milestones SET status = ?, released_amount = ?, released_at = ? WHERE campaign_id = ? AND milestone_index = ?', ['released', releasedAmount, new Date(), payload.campaignId, payload.milestoneIndex]);
228
+ // Transfer funds to the beneficiary
229
+ if (state.streamer) {
230
+ await state.streamer.transferHiveTokens(campaign.creator, campaign.beneficiary, (0, helpers_1.toBigNumber)(releasedAmount).toFixed(3), campaign.asset, `Crowdfund milestone release: ${payload.campaignId} #${payload.milestoneIndex}`);
231
+ }
232
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'releaseMilestone', payload, {
233
+ action: 'crowdfund_milestone_released',
234
+ data: {
235
+ campaignId: payload.campaignId,
236
+ milestoneIndex: payload.milestoneIndex,
237
+ releasedAmount,
238
+ beneficiary: campaign.beneficiary
239
+ }
240
+ });
241
+ };
242
+ const refundContribution = async (payload, ctx) => {
243
+ const sender = (0, helpers_1.requireSender)(ctx);
244
+ const campaigns = await state.adapter.query('SELECT * FROM crowdfund_campaigns WHERE campaign_id = ?', [payload.campaignId]);
245
+ if (campaigns.length === 0) {
246
+ throw new Error(`Campaign ${payload.campaignId} does not exist`);
247
+ }
248
+ const campaign = campaigns[0];
249
+ if (campaign.status !== 'failed') {
250
+ throw new Error('Refunds are only available for failed campaigns');
251
+ }
252
+ const contributions = await state.adapter.query('SELECT * FROM crowdfund_contributions WHERE campaign_id = ? AND contributor = ? AND refunded = ?', [payload.campaignId, sender, 0]);
253
+ if (contributions.length === 0) {
254
+ throw new Error('No refundable contribution found');
255
+ }
256
+ const totalRefund = contributions.reduce((sum, contribution) => sum.plus(contribution.amount), (0, helpers_1.toBigNumber)(0)).toFixed();
257
+ await state.adapter.query('UPDATE crowdfund_contributions SET refunded = ? WHERE campaign_id = ? AND contributor = ?', [1, payload.campaignId, sender]);
258
+ // Transfer refund to the contributor
259
+ if (state.streamer) {
260
+ await state.streamer.transferHiveTokens(campaign.creator, sender, (0, helpers_1.toBigNumber)(totalRefund).toFixed(3), campaign.asset, `Crowdfund refund: ${payload.campaignId}`);
261
+ }
262
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'refundContribution', payload, {
263
+ action: 'crowdfund_refund_requested',
264
+ data: {
265
+ campaignId: payload.campaignId,
266
+ contributor: sender,
267
+ refundAmount: totalRefund,
268
+ asset: campaign.asset
269
+ }
270
+ });
271
+ };
272
+ return (0, contract_1.defineContract)({
273
+ name,
274
+ hooks: {
275
+ create: async ({ adapter, streamer }) => {
276
+ state.adapter = adapter;
277
+ state.streamer = streamer;
278
+ await initialize();
279
+ }
280
+ },
281
+ actions: {
282
+ createCampaign: (0, contract_1.action)(createCampaign, { schema: createCampaignSchema, trigger: 'custom_json' }),
283
+ contribute: (0, contract_1.action)(contribute, { schema: campaignIdSchema, trigger: ['transfer', 'recurrent_transfer'] }),
284
+ finalizeCampaign: (0, contract_1.action)(finalizeCampaign, { schema: campaignIdSchema, trigger: ['custom_json', 'time'] }),
285
+ releaseMilestone: (0, contract_1.action)(releaseMilestone, { schema: releaseMilestoneSchema, trigger: 'custom_json' }),
286
+ refundContribution: (0, contract_1.action)(refundContribution, { schema: campaignIdSchema, trigger: 'custom_json' })
287
+ }
288
+ });
289
+ }
290
+ //# sourceMappingURL=crowdfund.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crowdfund.contract.js","sourceRoot":"","sources":["../../src/contracts/crowdfund.contract.ts"],"names":[],"mappings":";;AAsBA,0DA4WC;AAlYD,6BAAwB;AACxB,yCAAoD;AACpD,uCAYmB;AAEnB,MAAM,YAAY,GAAG,WAAW,CAAC;AAMjC,SAAgB,uBAAuB,CAAC,UAAoC,EAAE;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAA,6BAAmB,GAAE,CAAC;IAEpC,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;QAC7B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;QAClC,UAAU,EAAE,0BAAgB;QAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAC5C,YAAY,EAAE,sBAAY;QAC1B,KAAK,EAAE,qBAAW;QAClB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;QACpB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACjD,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACvD,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;KACzC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;QAC9B,UAAU,EAAE,0BAAgB;KAC/B,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;QACpC,UAAU,EAAE,0BAAgB;QAC5B,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1C,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,IAAA,0BAAgB,EAAC,KAAK,CAAC,OAAO,EAAE;YAClC;;;;;;;;;;;;;;;;aAgBC;YACD;;;;;;;;;;;aAWC;YACD;;;;;;;;;;;;;aAaC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAAE,OAA6C,EAAE,GAAQ,EAAE,EAAE;QACrF,MAAM,OAAO,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,mEAAmE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACtI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB;;6DAEiD,EACjD;YACI,OAAO,CAAC,UAAU;YAClB,OAAO;YACP,OAAO,CAAC,WAAW,IAAI,OAAO;YAC9B,OAAO,CAAC,KAAK;YACb,OAAO,CAAC,WAAW,IAAI,EAAE;YACzB,OAAO,CAAC,YAAY;YACpB,GAAG;YACH,OAAO,CAAC,KAAK;YACb,QAAQ;YACR,MAAM;YACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACtC,IAAI,IAAI,EAAE;YACV,IAAI;SACP,CACJ,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB;;kDAEkC,EAClC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAC3G,CAAC;QACN,CAAC;QAED,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE;YACpE,MAAM,EAAE,4BAA4B;YACpC,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO;aACV;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,EAAE,OAAyC,EAAE,GAAQ,EAAE,EAAE;QAC7E,MAAM,WAAW,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,QAAQ,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpD,CAAC;QAED,IAAA,4BAAkB,EAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,IAAA,qBAAW,EAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YACxD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEtB,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,kJAAkJ,EAClJ,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CACtG,CAAC;QAEF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,qFAAqF,EACrF,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAC5D,CAAC;QAEF,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;YAChE,MAAM,EAAE,iCAAiC;YACzC,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,WAAW;gBACX,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE;aACzC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAyC,EAAE,GAAQ,EAAE,EAAE;QACnF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC5E,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACjE,MAAM,WAAW,GAAG,IAAA,qBAAW,EAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjD,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,mFAAmF,EACnF,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,CAC3C,CAAC;QAEF,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE;YACtE,MAAM,EAAE,8BAA8B;YACtC,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM;gBACN,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,MAAM,EAAE,QAAQ,CAAC,cAAc;gBAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;aACxB;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAA+C,EAAE,GAAQ,EAAE,EAAE;QACzF,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7H,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAClC,kFAAkF,EAClF,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAC/C,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QAED,kEAAkE;QAClE,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAC3C,0DAA0D,EAC1D,CAAC,OAAO,CAAC,UAAU,CAAC,CACvB,CAAC;QACF,MAAM,oBAAoB,GAAG,aAAa;aACrC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;aAC3C,MAAM,CAAC,CAAC,GAAW,EAAE,CAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,qBAAW,EAAC,QAAQ,CAAC,cAAc,CAAC;aACtD,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC;aACtC,SAAS,CAAC,GAAG,CAAC;aACd,OAAO,EAAE,CAAC;QAEf,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,gIAAgI,EAChI,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CACvF,CAAC;QAEF,oCAAoC;QACpC,IAAK,KAAa,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAO,KAAa,CAAC,QAAQ,CAAC,kBAAkB,CAC5C,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,WAAW,EACpB,IAAA,qBAAW,EAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACtC,QAAQ,CAAC,KAAK,EACd,gCAAgC,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,cAAc,EAAE,CAClF,CAAC;QACN,CAAC;QAED,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE;YACtE,MAAM,EAAE,8BAA8B;YACtC,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,cAAc;gBACd,WAAW,EAAE,QAAQ,CAAC,WAAW;aACpC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAyC,EAAE,GAAQ,EAAE,EAAE;QACrF,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7H,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAC3C,kGAAkG,EAClG,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAClC,CAAC;QACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,YAAiB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAA,qBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnI,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,2FAA2F,EAC3F,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAClC,CAAC;QAEF,qCAAqC;QACrC,IAAK,KAAa,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAO,KAAa,CAAC,QAAQ,CAAC,kBAAkB,CAC5C,QAAQ,CAAC,OAAO,EAChB,MAAM,EACN,IAAA,qBAAW,EAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACnC,QAAQ,CAAC,KAAK,EACd,qBAAqB,OAAO,CAAC,UAAU,EAAE,CAC5C,CAAC;QACN,CAAC;QAED,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE;YACxE,MAAM,EAAE,4BAA4B;YACpC,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,WAAW,EAAE,MAAM;gBACnB,YAAY,EAAE,WAAW;gBACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACxB;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,IAAA,yBAAc,EAAC;QAClB,IAAI;QACJ,KAAK,EAAE;YACH,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACpC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,KAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACnC,MAAM,UAAU,EAAE,CAAC;YACvB,CAAC;SACJ;QACD,OAAO,EAAE;YACL,cAAc,EAAE,IAAA,iBAAM,EAAC,cAAc,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAChG,UAAU,EAAE,IAAA,iBAAM,EAAC,UAAU,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACzG,gBAAgB,EAAE,IAAA,iBAAM,EAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1G,gBAAgB,EAAE,IAAA,iBAAM,EAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YACtG,kBAAkB,EAAE,IAAA,iBAAM,EAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;SACvG;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface DcaBotContractOptions {
2
+ name?: string;
3
+ }
4
+ export declare function createDcaBotContract(options?: DcaBotContractOptions): import("..").ContractDefinition;
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDcaBotContract = createDcaBotContract;
4
+ const zod_1 = require("zod");
5
+ const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
7
+ const DEFAULT_NAME = 'dcabots';
8
+ function createDcaBotContract(options = {}) {
9
+ const name = options.name || DEFAULT_NAME;
10
+ const state = (0, helpers_1.createContractState)();
11
+ const createBotSchema = zod_1.z.object({
12
+ botId: helpers_1.identifierSchema,
13
+ baseAsset: helpers_1.assetSchema,
14
+ quoteAsset: helpers_1.assetSchema,
15
+ amountPerInterval: helpers_1.amountSchema,
16
+ intervalHours: zod_1.z.number().int().min(1).max(24 * 30),
17
+ maxExecutions: zod_1.z.number().int().min(1).max(100000).optional(),
18
+ slippageBps: zod_1.z.number().int().min(0).max(10000).optional(),
19
+ startsAt: zod_1.z.string().optional(),
20
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
21
+ });
22
+ const botIdSchema = zod_1.z.object({
23
+ botId: helpers_1.identifierSchema
24
+ });
25
+ const executeSchema = zod_1.z.object({
26
+ botId: helpers_1.identifierSchema.optional()
27
+ }).optional();
28
+ const acknowledgeSchema = zod_1.z.object({
29
+ botId: helpers_1.identifierSchema,
30
+ executionId: zod_1.z.number().int().min(1),
31
+ status: zod_1.z.enum(['placed', 'filled', 'failed', 'cancelled']),
32
+ externalRef: zod_1.z.string().max(120).optional(),
33
+ notes: zod_1.z.string().max(500).optional()
34
+ });
35
+ const initialize = async () => {
36
+ await (0, helpers_1.initializeTables)(state.adapter, [
37
+ `
38
+ CREATE TABLE IF NOT EXISTS dca_bots (
39
+ bot_id TEXT PRIMARY KEY,
40
+ owner TEXT NOT NULL,
41
+ base_asset TEXT NOT NULL,
42
+ quote_asset TEXT NOT NULL,
43
+ amount_per_interval TEXT NOT NULL,
44
+ interval_hours INTEGER NOT NULL,
45
+ max_executions INTEGER,
46
+ execution_count INTEGER NOT NULL,
47
+ slippage_bps INTEGER NOT NULL,
48
+ next_execute_at DATETIME NOT NULL,
49
+ status TEXT NOT NULL,
50
+ metadata TEXT,
51
+ created_at DATETIME NOT NULL,
52
+ updated_at DATETIME NOT NULL
53
+ )
54
+ `,
55
+ `
56
+ CREATE TABLE IF NOT EXISTS dca_executions (
57
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
58
+ bot_id TEXT NOT NULL,
59
+ execution_number INTEGER NOT NULL,
60
+ requested_at DATETIME NOT NULL,
61
+ status TEXT NOT NULL,
62
+ external_ref TEXT,
63
+ notes TEXT
64
+ )
65
+ `
66
+ ]);
67
+ };
68
+ const createBot = async (payload, ctx) => {
69
+ const owner = (0, helpers_1.requireSender)(ctx);
70
+ const existing = await state.adapter.query('SELECT bot_id FROM dca_bots WHERE bot_id = ?', [payload.botId]);
71
+ if (existing.length > 0) {
72
+ throw new Error(`Bot ${payload.botId} already exists`);
73
+ }
74
+ const startsAt = (0, helpers_1.parseDateValue)(payload.startsAt) || new Date();
75
+ await state.adapter.query(`INSERT INTO dca_bots (
76
+ bot_id, owner, base_asset, quote_asset, amount_per_interval, interval_hours, max_executions, execution_count, slippage_bps,
77
+ next_execute_at, status, metadata, created_at, updated_at
78
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
79
+ payload.botId,
80
+ owner,
81
+ payload.baseAsset,
82
+ payload.quoteAsset,
83
+ payload.amountPerInterval,
84
+ payload.intervalHours,
85
+ payload.maxExecutions || null,
86
+ 0,
87
+ payload.slippageBps || 0,
88
+ startsAt,
89
+ 'active',
90
+ JSON.stringify(payload.metadata || {}),
91
+ new Date(),
92
+ new Date()
93
+ ]);
94
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createBot', payload, {
95
+ action: 'dca_bot_created',
96
+ data: {
97
+ botId: payload.botId,
98
+ owner
99
+ }
100
+ });
101
+ };
102
+ const pauseBot = async (payload, ctx) => {
103
+ const owner = (0, helpers_1.requireSender)(ctx);
104
+ const bots = await state.adapter.query('SELECT * FROM dca_bots WHERE bot_id = ?', [payload.botId]);
105
+ if (bots.length === 0) {
106
+ throw new Error(`Bot ${payload.botId} does not exist`);
107
+ }
108
+ const bot = bots[0];
109
+ if (bot.owner !== owner) {
110
+ throw new Error('Only the bot owner can pause this bot');
111
+ }
112
+ await state.adapter.query('UPDATE dca_bots SET status = ?, updated_at = ? WHERE bot_id = ?', ['paused', new Date(), payload.botId]);
113
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'pauseBot', payload, {
114
+ action: 'dca_bot_paused',
115
+ data: {
116
+ botId: payload.botId,
117
+ owner
118
+ }
119
+ });
120
+ };
121
+ const resumeBot = async (payload, ctx) => {
122
+ const owner = (0, helpers_1.requireSender)(ctx);
123
+ const bots = await state.adapter.query('SELECT * FROM dca_bots WHERE bot_id = ?', [payload.botId]);
124
+ if (bots.length === 0) {
125
+ throw new Error(`Bot ${payload.botId} does not exist`);
126
+ }
127
+ const bot = bots[0];
128
+ if (bot.owner !== owner) {
129
+ throw new Error('Only the bot owner can resume this bot');
130
+ }
131
+ await state.adapter.query('UPDATE dca_bots SET status = ?, updated_at = ? WHERE bot_id = ?', ['active', new Date(), payload.botId]);
132
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'resumeBot', payload, {
133
+ action: 'dca_bot_resumed',
134
+ data: {
135
+ botId: payload.botId,
136
+ owner
137
+ }
138
+ });
139
+ };
140
+ const executeDueBots = async (payload = {}, _ctx) => {
141
+ const bots = payload.botId
142
+ ? await state.adapter.query('SELECT * FROM dca_bots WHERE bot_id = ?', [payload.botId])
143
+ : await state.adapter.query('SELECT * FROM dca_bots WHERE status = ?', ['active']);
144
+ const now = new Date();
145
+ for (const bot of bots) {
146
+ if (bot.status !== 'active') {
147
+ continue;
148
+ }
149
+ const nextExecuteAt = (0, helpers_1.parseDateValue)(bot.next_execute_at) || now;
150
+ if (nextExecuteAt > now) {
151
+ continue;
152
+ }
153
+ const executionNumber = Number(bot.execution_count || 0) + 1;
154
+ const maxExecutions = bot.max_executions ? Number(bot.max_executions) : null;
155
+ const nextStatus = maxExecutions && executionNumber >= maxExecutions
156
+ ? 'completed'
157
+ : 'active';
158
+ const nextSchedule = new Date(now.getTime() + Number(bot.interval_hours) * 60 * 60 * 1000);
159
+ await state.adapter.query('INSERT INTO dca_executions (bot_id, execution_number, requested_at, status, external_ref, notes) VALUES (?, ?, ?, ?, ?, ?)', [bot.bot_id, executionNumber, now, 'queued', null, null]);
160
+ await state.adapter.query('UPDATE dca_bots SET execution_count = ?, next_execute_at = ?, status = ?, updated_at = ? WHERE bot_id = ?', [executionNumber, nextSchedule, nextStatus, now, bot.bot_id]);
161
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'executeDueBots', { botId: bot.bot_id }, {
162
+ action: 'dca_execution_requested',
163
+ data: {
164
+ botId: bot.bot_id,
165
+ owner: bot.owner,
166
+ executionNumber,
167
+ baseAsset: bot.base_asset,
168
+ quoteAsset: bot.quote_asset,
169
+ amountPerInterval: bot.amount_per_interval,
170
+ slippageBps: bot.slippage_bps
171
+ }
172
+ });
173
+ }
174
+ };
175
+ const acknowledgeExecution = async (payload, ctx) => {
176
+ const owner = (0, helpers_1.requireSender)(ctx);
177
+ const bots = await state.adapter.query('SELECT * FROM dca_bots WHERE bot_id = ?', [payload.botId]);
178
+ if (bots.length === 0) {
179
+ throw new Error(`Bot ${payload.botId} does not exist`);
180
+ }
181
+ const bot = bots[0];
182
+ if (bot.owner !== owner) {
183
+ throw new Error('Only the bot owner can acknowledge executions');
184
+ }
185
+ const executions = await state.adapter.query('SELECT * FROM dca_executions WHERE id = ? AND bot_id = ?', [payload.executionId, payload.botId]);
186
+ if (executions.length === 0) {
187
+ throw new Error('Execution does not exist for this bot');
188
+ }
189
+ await state.adapter.query('UPDATE dca_executions SET status = ?, external_ref = ?, notes = ? WHERE id = ?', [payload.status, payload.externalRef || null, payload.notes || null, payload.executionId]);
190
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'acknowledgeExecution', payload, {
191
+ action: 'dca_execution_acknowledged',
192
+ data: {
193
+ botId: payload.botId,
194
+ executionId: payload.executionId,
195
+ status: payload.status,
196
+ externalRef: payload.externalRef || null
197
+ }
198
+ });
199
+ };
200
+ return (0, contract_1.defineContract)({
201
+ name,
202
+ hooks: {
203
+ create: async ({ adapter }) => {
204
+ state.adapter = adapter;
205
+ await initialize();
206
+ }
207
+ },
208
+ actions: {
209
+ createBot: (0, contract_1.action)(createBot, { schema: createBotSchema, trigger: 'custom_json' }),
210
+ pauseBot: (0, contract_1.action)(pauseBot, { schema: botIdSchema, trigger: 'custom_json' }),
211
+ resumeBot: (0, contract_1.action)(resumeBot, { schema: botIdSchema, trigger: 'custom_json' }),
212
+ executeDueBots: (0, contract_1.action)(executeDueBots, { schema: executeSchema, trigger: ['custom_json', 'time'] }),
213
+ acknowledgeExecution: (0, contract_1.action)(acknowledgeExecution, { schema: acknowledgeSchema, trigger: 'custom_json' })
214
+ }
215
+ });
216
+ }
217
+ //# sourceMappingURL=dcabot.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dcabot.contract.js","sourceRoot":"","sources":["../../src/contracts/dcabot.contract.ts"],"names":[],"mappings":"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"}