hive-stream 3.0.2 → 3.0.4

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 (202) hide show
  1. package/DOCUMENTATION.md +50 -2
  2. package/README.md +282 -4
  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/builders.d.ts +176 -0
  19. package/dist/builders.js +727 -0
  20. package/dist/builders.js.map +1 -0
  21. package/dist/config.d.ts +16 -1
  22. package/dist/config.js +95 -3
  23. package/dist/config.js.map +1 -1
  24. package/dist/contracts/auctionhouse.contract.d.ts +4 -0
  25. package/dist/contracts/auctionhouse.contract.js +234 -0
  26. package/dist/contracts/auctionhouse.contract.js.map +1 -0
  27. package/dist/contracts/booking.contract.d.ts +4 -0
  28. package/dist/contracts/booking.contract.js +225 -0
  29. package/dist/contracts/booking.contract.js.map +1 -0
  30. package/dist/contracts/bountyboard.contract.d.ts +4 -0
  31. package/dist/contracts/bountyboard.contract.js +233 -0
  32. package/dist/contracts/bountyboard.contract.js.map +1 -0
  33. package/dist/contracts/bundlemarketplace.contract.d.ts +4 -0
  34. package/dist/contracts/bundlemarketplace.contract.js +195 -0
  35. package/dist/contracts/bundlemarketplace.contract.js.map +1 -0
  36. package/dist/contracts/charitymatch.contract.d.ts +4 -0
  37. package/dist/contracts/charitymatch.contract.js +172 -0
  38. package/dist/contracts/charitymatch.contract.js.map +1 -0
  39. package/dist/contracts/coinflip.contract.js +25 -22
  40. package/dist/contracts/coinflip.contract.js.map +1 -1
  41. package/dist/contracts/crowdfund.contract.d.ts +4 -0
  42. package/dist/contracts/crowdfund.contract.js +290 -0
  43. package/dist/contracts/crowdfund.contract.js.map +1 -0
  44. package/dist/contracts/dcabot.contract.d.ts +4 -0
  45. package/dist/contracts/dcabot.contract.js +217 -0
  46. package/dist/contracts/dcabot.contract.js.map +1 -0
  47. package/dist/contracts/dice.contract.js +25 -22
  48. package/dist/contracts/dice.contract.js.map +1 -1
  49. package/dist/contracts/domainregistry.contract.d.ts +4 -0
  50. package/dist/contracts/domainregistry.contract.js +232 -0
  51. package/dist/contracts/domainregistry.contract.js.map +1 -0
  52. package/dist/contracts/exchange.contract.js +209 -168
  53. package/dist/contracts/exchange.contract.js.map +1 -1
  54. package/dist/contracts/fanclub.contract.d.ts +4 -0
  55. package/dist/contracts/fanclub.contract.js +193 -0
  56. package/dist/contracts/fanclub.contract.js.map +1 -0
  57. package/dist/contracts/giftcard.contract.d.ts +4 -0
  58. package/dist/contracts/giftcard.contract.js +158 -0
  59. package/dist/contracts/giftcard.contract.js.map +1 -0
  60. package/dist/contracts/grantrounds.contract.d.ts +4 -0
  61. package/dist/contracts/grantrounds.contract.js +265 -0
  62. package/dist/contracts/grantrounds.contract.js.map +1 -0
  63. package/dist/contracts/groupbuy.contract.d.ts +4 -0
  64. package/dist/contracts/groupbuy.contract.js +198 -0
  65. package/dist/contracts/groupbuy.contract.js.map +1 -0
  66. package/dist/contracts/helpers.d.ts +66 -0
  67. package/dist/contracts/helpers.js +166 -0
  68. package/dist/contracts/helpers.js.map +1 -0
  69. package/dist/contracts/insurancepool.contract.d.ts +4 -0
  70. package/dist/contracts/insurancepool.contract.js +281 -0
  71. package/dist/contracts/insurancepool.contract.js.map +1 -0
  72. package/dist/contracts/invoice.contract.d.ts +4 -0
  73. package/dist/contracts/invoice.contract.js +193 -0
  74. package/dist/contracts/invoice.contract.js.map +1 -0
  75. package/dist/contracts/launchpad.contract.d.ts +4 -0
  76. package/dist/contracts/launchpad.contract.js +225 -0
  77. package/dist/contracts/launchpad.contract.js.map +1 -0
  78. package/dist/contracts/lotto.contract.js +53 -37
  79. package/dist/contracts/lotto.contract.js.map +1 -1
  80. package/dist/contracts/multisigtreasury.contract.d.ts +4 -0
  81. package/dist/contracts/multisigtreasury.contract.js +245 -0
  82. package/dist/contracts/multisigtreasury.contract.js.map +1 -0
  83. package/dist/contracts/nft.contract.d.ts +1 -0
  84. package/dist/contracts/nft.contract.js +234 -195
  85. package/dist/contracts/nft.contract.js.map +1 -1
  86. package/dist/contracts/oraclebounty.contract.d.ts +4 -0
  87. package/dist/contracts/oraclebounty.contract.js +250 -0
  88. package/dist/contracts/oraclebounty.contract.js.map +1 -0
  89. package/dist/contracts/payroll.contract.d.ts +4 -0
  90. package/dist/contracts/payroll.contract.js +232 -0
  91. package/dist/contracts/payroll.contract.js.map +1 -0
  92. package/dist/contracts/paywall.contract.d.ts +4 -0
  93. package/dist/contracts/paywall.contract.js +185 -0
  94. package/dist/contracts/paywall.contract.js.map +1 -0
  95. package/dist/contracts/poll.contract.js +2 -0
  96. package/dist/contracts/poll.contract.js.map +1 -1
  97. package/dist/contracts/predictionmarket.contract.d.ts +4 -0
  98. package/dist/contracts/predictionmarket.contract.js +213 -0
  99. package/dist/contracts/predictionmarket.contract.js.map +1 -0
  100. package/dist/contracts/proposaltimelock.contract.d.ts +4 -0
  101. package/dist/contracts/proposaltimelock.contract.js +250 -0
  102. package/dist/contracts/proposaltimelock.contract.js.map +1 -0
  103. package/dist/contracts/questpass.contract.d.ts +4 -0
  104. package/dist/contracts/questpass.contract.js +214 -0
  105. package/dist/contracts/questpass.contract.js.map +1 -0
  106. package/dist/contracts/referral.contract.d.ts +4 -0
  107. package/dist/contracts/referral.contract.js +238 -0
  108. package/dist/contracts/referral.contract.js.map +1 -0
  109. package/dist/contracts/rental.contract.d.ts +4 -0
  110. package/dist/contracts/rental.contract.js +221 -0
  111. package/dist/contracts/rental.contract.js.map +1 -0
  112. package/dist/contracts/revenuesplit.contract.d.ts +4 -0
  113. package/dist/contracts/revenuesplit.contract.js +211 -0
  114. package/dist/contracts/revenuesplit.contract.js.map +1 -0
  115. package/dist/contracts/rps.contract.js +48 -20
  116. package/dist/contracts/rps.contract.js.map +1 -1
  117. package/dist/contracts/savings.contract.d.ts +4 -0
  118. package/dist/contracts/savings.contract.js +208 -0
  119. package/dist/contracts/savings.contract.js.map +1 -0
  120. package/dist/contracts/subscription.contract.d.ts +4 -0
  121. package/dist/contracts/subscription.contract.js +241 -0
  122. package/dist/contracts/subscription.contract.js.map +1 -0
  123. package/dist/contracts/sweepstakes.contract.d.ts +4 -0
  124. package/dist/contracts/sweepstakes.contract.js +209 -0
  125. package/dist/contracts/sweepstakes.contract.js.map +1 -0
  126. package/dist/contracts/ticketing.contract.d.ts +4 -0
  127. package/dist/contracts/ticketing.contract.js +185 -0
  128. package/dist/contracts/ticketing.contract.js.map +1 -0
  129. package/dist/contracts/tipjar.contract.js +2 -0
  130. package/dist/contracts/tipjar.contract.js.map +1 -1
  131. package/dist/contracts/token.contract.js +135 -125
  132. package/dist/contracts/token.contract.js.map +1 -1
  133. package/dist/index.d.ts +40 -0
  134. package/dist/index.js +72 -1
  135. package/dist/index.js.map +1 -1
  136. package/dist/metadata.d.ts +20 -0
  137. package/dist/metadata.js +320 -1
  138. package/dist/metadata.js.map +1 -1
  139. package/dist/providers/block-provider.d.ts +22 -0
  140. package/dist/providers/block-provider.js +3 -0
  141. package/dist/providers/block-provider.js.map +1 -0
  142. package/dist/providers/haf-client.d.ts +30 -0
  143. package/dist/providers/haf-client.js +119 -0
  144. package/dist/providers/haf-client.js.map +1 -0
  145. package/dist/providers/haf-provider.d.ts +49 -0
  146. package/dist/providers/haf-provider.js +256 -0
  147. package/dist/providers/haf-provider.js.map +1 -0
  148. package/dist/providers/hive-provider.d.ts +13 -0
  149. package/dist/providers/hive-provider.js +25 -0
  150. package/dist/providers/hive-provider.js.map +1 -0
  151. package/dist/providers/index.d.ts +4 -0
  152. package/dist/providers/index.js +21 -0
  153. package/dist/providers/index.js.map +1 -0
  154. package/dist/streamer.d.ts +65 -4
  155. package/dist/streamer.js +768 -72
  156. package/dist/streamer.js.map +1 -1
  157. package/dist/types/hive-stream.d.ts +317 -0
  158. package/dist/utils.d.ts +33 -0
  159. package/dist/utils.js +198 -2
  160. package/dist/utils.js.map +1 -1
  161. package/package.json +16 -1
  162. package/.claude/settings.local.json +0 -12
  163. package/.env.example +0 -3
  164. package/.travis.yml +0 -11
  165. package/AGENTS.md +0 -35
  166. package/CLAUDE.md +0 -75
  167. package/ecosystem.config.js +0 -17
  168. package/examples/contracts/README.md +0 -8
  169. package/examples/contracts/exchange.ts +0 -38
  170. package/examples/contracts/poll.ts +0 -21
  171. package/examples/contracts/rps.ts +0 -19
  172. package/examples/contracts/tipjar.ts +0 -19
  173. package/jest.config.js +0 -9
  174. package/test-contract-block.md +0 -19
  175. package/tests/actions.spec.ts +0 -252
  176. package/tests/adapters/actions-persistence.spec.ts +0 -144
  177. package/tests/adapters/postgresql.adapter.spec.ts +0 -127
  178. package/tests/adapters/sqlite.adapter.spec.ts +0 -181
  179. package/tests/config-input.spec.ts +0 -90
  180. package/tests/contracts/coinflip.contract.spec.ts +0 -94
  181. package/tests/contracts/dice.contract.spec.ts +0 -87
  182. package/tests/contracts/entrants.json +0 -729
  183. package/tests/contracts/exchange.contract.spec.ts +0 -84
  184. package/tests/contracts/lotto.contract.spec.ts +0 -59
  185. package/tests/contracts/nft.contract.spec.ts +0 -948
  186. package/tests/contracts/token.contract.spec.ts +0 -90
  187. package/tests/exchanges/coingecko.exchange.spec.ts +0 -169
  188. package/tests/exchanges/exchange.base.spec.ts +0 -246
  189. package/tests/helpers/mock-adapter.ts +0 -214
  190. package/tests/helpers/mock-fetch.ts +0 -165
  191. package/tests/hive-chain-features.spec.ts +0 -319
  192. package/tests/hive-rates.spec.ts +0 -443
  193. package/tests/integration/hive-rates.integration.spec.ts +0 -35
  194. package/tests/metadata.spec.ts +0 -63
  195. package/tests/setup.ts +0 -30
  196. package/tests/streamer-actions.spec.ts +0 -274
  197. package/tests/streamer.spec.ts +0 -342
  198. package/tests/types/rates.spec.ts +0 -216
  199. package/tests/utils.spec.ts +0 -113
  200. package/tsconfig.build.json +0 -4
  201. package/tslint.json +0 -21
  202. package/wallaby.js +0 -26
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grantrounds.contract.js","sourceRoot":"","sources":["../../src/contracts/grantrounds.contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface GroupBuyContractOptions {
2
+ name?: string;
3
+ }
4
+ export declare function createGroupBuyContract(options?: GroupBuyContractOptions): import("..").ContractDefinition;
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createGroupBuyContract = createGroupBuyContract;
4
+ const zod_1 = require("zod");
5
+ const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
7
+ const DEFAULT_NAME = 'groupbuy';
8
+ function createGroupBuyContract(options = {}) {
9
+ const name = options.name || DEFAULT_NAME;
10
+ const state = (0, helpers_1.createContractState)();
11
+ const createSchema = zod_1.z.object({
12
+ groupBuyId: helpers_1.identifierSchema,
13
+ title: zod_1.z.string().min(3).max(140),
14
+ targetAmount: helpers_1.amountSchema,
15
+ asset: helpers_1.assetSchema,
16
+ deadline: zod_1.z.string(),
17
+ minParticipants: zod_1.z.number().int().min(1).max(100000).optional(),
18
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
19
+ });
20
+ const idSchema = zod_1.z.object({
21
+ groupBuyId: helpers_1.identifierSchema
22
+ });
23
+ const initialize = async () => {
24
+ await (0, helpers_1.initializeTables)(state.adapter, [
25
+ `
26
+ CREATE TABLE IF NOT EXISTS group_buy_campaigns (
27
+ group_buy_id TEXT PRIMARY KEY,
28
+ organizer TEXT NOT NULL,
29
+ title TEXT NOT NULL,
30
+ target_amount TEXT NOT NULL,
31
+ current_amount TEXT NOT NULL,
32
+ asset TEXT NOT NULL,
33
+ deadline DATETIME NOT NULL,
34
+ min_participants INTEGER NOT NULL,
35
+ participant_count INTEGER NOT NULL,
36
+ status TEXT NOT NULL,
37
+ metadata TEXT,
38
+ created_at DATETIME NOT NULL,
39
+ finalized_at DATETIME
40
+ )
41
+ `,
42
+ `
43
+ CREATE TABLE IF NOT EXISTS group_buy_commitments (
44
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
45
+ group_buy_id TEXT NOT NULL,
46
+ contributor TEXT NOT NULL,
47
+ amount TEXT NOT NULL,
48
+ asset TEXT NOT NULL,
49
+ withdrawn INTEGER NOT NULL,
50
+ transaction_id TEXT NOT NULL,
51
+ created_at DATETIME NOT NULL
52
+ )
53
+ `
54
+ ]);
55
+ };
56
+ const createGroupBuy = async (payload, ctx) => {
57
+ const organizer = (0, helpers_1.requireSender)(ctx);
58
+ const existing = await state.adapter.query('SELECT group_buy_id FROM group_buy_campaigns WHERE group_buy_id = ?', [payload.groupBuyId]);
59
+ if (existing.length > 0) {
60
+ throw new Error(`Group buy ${payload.groupBuyId} already exists`);
61
+ }
62
+ const deadline = (0, helpers_1.parseDateValue)(payload.deadline);
63
+ if (!deadline || deadline <= new Date()) {
64
+ throw new Error('Group buy deadline must be in the future');
65
+ }
66
+ await state.adapter.query(`INSERT INTO group_buy_campaigns (
67
+ group_buy_id, organizer, title, target_amount, current_amount, asset, deadline, min_participants, participant_count, status, metadata, created_at, finalized_at
68
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
69
+ payload.groupBuyId,
70
+ organizer,
71
+ payload.title,
72
+ payload.targetAmount,
73
+ '0',
74
+ payload.asset,
75
+ deadline,
76
+ payload.minParticipants || 1,
77
+ 0,
78
+ 'open',
79
+ JSON.stringify(payload.metadata || {}),
80
+ new Date(),
81
+ null
82
+ ]);
83
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createGroupBuy', payload, {
84
+ action: 'group_buy_created',
85
+ data: {
86
+ groupBuyId: payload.groupBuyId,
87
+ organizer
88
+ }
89
+ });
90
+ };
91
+ const commit = async (payload, ctx) => {
92
+ const contributor = (0, helpers_1.requireSender)(ctx);
93
+ const payment = (0, helpers_1.getIncomingPayment)(ctx);
94
+ const campaigns = await state.adapter.query('SELECT * FROM group_buy_campaigns WHERE group_buy_id = ?', [payload.groupBuyId]);
95
+ if (campaigns.length === 0) {
96
+ throw new Error(`Group buy ${payload.groupBuyId} does not exist`);
97
+ }
98
+ const campaign = campaigns[0];
99
+ if (campaign.status !== 'open') {
100
+ throw new Error('Group buy is not open');
101
+ }
102
+ (0, helpers_1.assertAssetMatches)(payment.asset, campaign.asset);
103
+ const currentAmount = (0, helpers_1.toBigNumber)(campaign.current_amount).plus(payment.amount);
104
+ const priorCommitments = await state.adapter.query('SELECT COUNT(*) AS count FROM group_buy_commitments WHERE group_buy_id = ? AND contributor = ?', [payload.groupBuyId, contributor]);
105
+ const participantCount = Number(campaign.participant_count) + (Number(priorCommitments[0]?.count || 0) > 0 ? 0 : 1);
106
+ await state.adapter.query('INSERT INTO group_buy_commitments (group_buy_id, contributor, amount, asset, withdrawn, transaction_id, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)', [payload.groupBuyId, contributor, payment.amount, payment.asset, 0, ctx.transaction.id, new Date()]);
107
+ await state.adapter.query('UPDATE group_buy_campaigns SET current_amount = ?, participant_count = ? WHERE group_buy_id = ?', [currentAmount.toFixed(), participantCount, payload.groupBuyId]);
108
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'commit', payload, {
109
+ action: 'group_buy_commitment_received',
110
+ data: {
111
+ groupBuyId: payload.groupBuyId,
112
+ contributor,
113
+ amount: payment.amount,
114
+ asset: payment.asset,
115
+ currentAmount: currentAmount.toFixed(),
116
+ participantCount
117
+ }
118
+ });
119
+ };
120
+ const finalizeGroupBuy = async (payload, ctx) => {
121
+ const campaigns = await state.adapter.query('SELECT * FROM group_buy_campaigns WHERE group_buy_id = ?', [payload.groupBuyId]);
122
+ if (campaigns.length === 0) {
123
+ throw new Error(`Group buy ${payload.groupBuyId} does not exist`);
124
+ }
125
+ const campaign = campaigns[0];
126
+ if (campaign.status === 'successful' || campaign.status === 'failed') {
127
+ return;
128
+ }
129
+ if (ctx.trigger !== 'time') {
130
+ const sender = (0, helpers_1.requireSender)(ctx);
131
+ if (sender !== campaign.organizer) {
132
+ throw new Error('Only the organizer can finalize this group buy');
133
+ }
134
+ }
135
+ const deadline = (0, helpers_1.parseDateValue)(campaign.deadline) || new Date();
136
+ const amountReached = (0, helpers_1.toBigNumber)(campaign.current_amount).gte(campaign.target_amount);
137
+ const participantReached = Number(campaign.participant_count) >= Number(campaign.min_participants);
138
+ if (!amountReached && deadline > new Date()) {
139
+ throw new Error('Group buy cannot be finalized before the deadline unless the target amount is met');
140
+ }
141
+ const status = amountReached && participantReached
142
+ ? 'successful'
143
+ : 'failed';
144
+ await state.adapter.query('UPDATE group_buy_campaigns SET status = ?, finalized_at = ? WHERE group_buy_id = ?', [status, new Date(), payload.groupBuyId]);
145
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'finalizeGroupBuy', payload, {
146
+ action: 'group_buy_finalized',
147
+ data: {
148
+ groupBuyId: payload.groupBuyId,
149
+ status,
150
+ currentAmount: campaign.current_amount,
151
+ participantCount: campaign.participant_count
152
+ }
153
+ });
154
+ };
155
+ const withdrawCommitment = async (payload, ctx) => {
156
+ const contributor = (0, helpers_1.requireSender)(ctx);
157
+ const campaigns = await state.adapter.query('SELECT * FROM group_buy_campaigns WHERE group_buy_id = ?', [payload.groupBuyId]);
158
+ if (campaigns.length === 0) {
159
+ throw new Error(`Group buy ${payload.groupBuyId} does not exist`);
160
+ }
161
+ const campaign = campaigns[0];
162
+ const deadline = (0, helpers_1.parseDateValue)(campaign.deadline);
163
+ if (campaign.status !== 'failed' && (!deadline || deadline <= new Date())) {
164
+ throw new Error('Commitments can only be withdrawn after a failed group buy');
165
+ }
166
+ const commitments = await state.adapter.query('SELECT * FROM group_buy_commitments WHERE group_buy_id = ? AND contributor = ? AND withdrawn = ?', [payload.groupBuyId, contributor, 0]);
167
+ if (commitments.length === 0) {
168
+ throw new Error('No withdrawable commitment found');
169
+ }
170
+ const totalAmount = commitments.reduce((sum, commitment) => sum.plus(commitment.amount), (0, helpers_1.toBigNumber)(0)).toFixed();
171
+ await state.adapter.query('UPDATE group_buy_commitments SET withdrawn = ? WHERE group_buy_id = ? AND contributor = ?', [1, payload.groupBuyId, contributor]);
172
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'withdrawCommitment', payload, {
173
+ action: 'group_buy_withdrawal_requested',
174
+ data: {
175
+ groupBuyId: payload.groupBuyId,
176
+ contributor,
177
+ amount: totalAmount,
178
+ asset: campaign.asset
179
+ }
180
+ });
181
+ };
182
+ return (0, contract_1.defineContract)({
183
+ name,
184
+ hooks: {
185
+ create: async ({ adapter }) => {
186
+ state.adapter = adapter;
187
+ await initialize();
188
+ }
189
+ },
190
+ actions: {
191
+ createGroupBuy: (0, contract_1.action)(createGroupBuy, { schema: createSchema, trigger: 'custom_json' }),
192
+ commit: (0, contract_1.action)(commit, { schema: idSchema, trigger: ['transfer', 'recurrent_transfer'] }),
193
+ finalizeGroupBuy: (0, contract_1.action)(finalizeGroupBuy, { schema: idSchema, trigger: ['custom_json', 'time'] }),
194
+ withdrawCommitment: (0, contract_1.action)(withdrawCommitment, { schema: idSchema, trigger: 'custom_json' })
195
+ }
196
+ });
197
+ }
198
+ //# sourceMappingURL=groupbuy.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupbuy.contract.js","sourceRoot":"","sources":["../../src/contracts/groupbuy.contract.ts"],"names":[],"mappings":";;AAsBA,wDA6OC;AAnQD,6BAAwB;AACxB,yCAAoD;AACpD,uCAYmB;AAEnB,MAAM,YAAY,GAAG,UAAU,CAAC;AAMhC,SAAgB,sBAAsB,CAAC,UAAmC,EAAE;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAA,6BAAmB,GAAE,CAAC;IAEpC,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;QAC1B,UAAU,EAAE,0BAAgB;QAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjC,YAAY,EAAE,sBAAY;QAC1B,KAAK,EAAE,qBAAW;QAClB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;QACpB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;QAC/D,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;KACzC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,OAAC,CAAC,MAAM,CAAC;QACtB,UAAU,EAAE,0BAAgB;KAC/B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,IAAA,0BAAgB,EAAC,KAAK,CAAC,OAAO,EAAE;YAClC;;;;;;;;;;;;;;;;aAgBC;YACD;;;;;;;;;;;aAWC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAAE,OAAqC,EAAE,GAAQ,EAAE,EAAE;QAC7E,MAAM,SAAS,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,qEAAqE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACtE,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,0CAA0C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB;;6DAEiD,EACjD;YACI,OAAO,CAAC,UAAU;YAClB,SAAS;YACT,OAAO,CAAC,KAAK;YACb,OAAO,CAAC,YAAY;YACpB,GAAG;YACH,OAAO,CAAC,KAAK;YACb,QAAQ;YACR,OAAO,CAAC,eAAe,IAAI,CAAC;YAC5B,CAAC;YACD,MAAM;YACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACtC,IAAI,IAAI,EAAE;YACV,IAAI;SACP,CACJ,CAAC;QAEF,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE;YACpE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS;aACZ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,OAAiC,EAAE,GAAQ,EAAE,EAAE;QACjE,MAAM,WAAW,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9H,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,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,gBAAgB,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAC9C,gGAAgG,EAChG,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CACpC,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpH,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,kJAAkJ,EAClJ,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CACtG,CAAC;QAEF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,iGAAiG,EACjG,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,CAClE,CAAC;QAEF,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC5D,MAAM,EAAE,+BAA+B;YACvC,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;gBACtC,gBAAgB;aACnB;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAiC,EAAE,GAAQ,EAAE,EAAE;QAC3E,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9H,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnE,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,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACjE,MAAM,aAAa,GAAG,IAAA,qBAAW,EAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvF,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnG,IAAI,CAAC,aAAa,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,IAAI,kBAAkB;YAC9C,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,QAAQ,CAAC;QAEf,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,oFAAoF,EACpF,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,qBAAqB;YAC7B,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM;gBACN,aAAa,EAAE,QAAQ,CAAC,cAAc;gBACtC,gBAAgB,EAAE,QAAQ,CAAC,iBAAiB;aAC/C;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAiC,EAAE,GAAQ,EAAE,EAAE;QAC7E,MAAM,WAAW,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9H,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACzC,kGAAkG,EAClG,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CACvC,CAAC;QACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,UAAe,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAA,qBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7H,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,2FAA2F,EAC3F,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CACvC,CAAC;QAEF,MAAM,IAAA,2BAAiB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE;YACxE,MAAM,EAAE,gCAAgC;YACxC,IAAI,EAAE;gBACF,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,WAAW;gBACX,MAAM,EAAE,WAAW;gBACnB,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,EAAE,EAAE;gBAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxB,MAAM,UAAU,EAAE,CAAC;YACvB,CAAC;SACJ;QACD,OAAO,EAAE;YACL,cAAc,EAAE,IAAA,iBAAM,EAAC,cAAc,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YACxF,MAAM,EAAE,IAAA,iBAAM,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACzF,gBAAgB,EAAE,IAAA,iBAAM,EAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC;YAClG,kBAAkB,EAAE,IAAA,iBAAM,EAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;SAC/F;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,66 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { z } from 'zod';
3
+ import type { ContractContext } from '../types/hive-stream';
4
+ export declare const amountSchema: z.ZodString;
5
+ export declare const identifierSchema: z.ZodString;
6
+ export declare const assetSchema: z.ZodString;
7
+ export declare function createContractState<T extends Record<string, any> = Record<string, never>>(extra?: T): {
8
+ adapter: any;
9
+ } & T;
10
+ export declare function ensureSqlAdapter(adapter: any): void;
11
+ export declare function initializeTables(adapter: any, statements: string[]): Promise<void>;
12
+ export declare function emitContractEvent(adapter: any, contract: string, action: string, payload: any, data: any): Promise<void>;
13
+ export declare function requireSender(ctx: ContractContext): string;
14
+ export declare function requireTransferContext(ctx: ContractContext): {
15
+ from: string;
16
+ to: string;
17
+ rawAmount: string;
18
+ amount: string;
19
+ asset: string;
20
+ memo?: string;
21
+ };
22
+ export declare function requireEscrowContext(ctx: ContractContext): {
23
+ type: import("../types/hive-stream").EscrowOperationType;
24
+ from: string;
25
+ to: string;
26
+ agent: string;
27
+ escrowId: number;
28
+ who?: string;
29
+ receiver?: string;
30
+ hiveAmount?: string;
31
+ hbdAmount?: string;
32
+ fee?: string;
33
+ ratificationDeadline?: string;
34
+ expiration?: string;
35
+ approved?: boolean;
36
+ };
37
+ export declare function getIncomingPayment(ctx: ContractContext): {
38
+ from: string;
39
+ to: string;
40
+ rawAmount: string;
41
+ amount: string;
42
+ asset: string;
43
+ memo: string;
44
+ source: "transfer";
45
+ } | {
46
+ from: any;
47
+ to: any;
48
+ rawAmount: string;
49
+ amount: string;
50
+ asset: string;
51
+ memo: any;
52
+ source: "recurrent_transfer";
53
+ };
54
+ export declare function getEscrowPayment(ctx: ContractContext): {
55
+ rawAmount: string;
56
+ amount: string;
57
+ asset: string;
58
+ };
59
+ export declare function parseDateValue(value?: string | Date | null): Date | null;
60
+ export declare function parseJson<T>(value: any, fallback: T): T;
61
+ export declare function toBigNumber(value: string | number | BigNumber): BigNumber;
62
+ export declare function ensurePositiveAmount(value: string, label: string): void;
63
+ export declare function assertAssetMatches(actual: string, expected: string, label?: string): void;
64
+ export declare function uniqueItems(values: string[]): string[];
65
+ export declare function parseBlockchainAmount(rawAmount: string): import("../types/hive-stream").ParsedAssetAmount;
66
+ export declare function formatBlockchainAmount(value: string | number | BigNumber, precision?: number): string;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.assetSchema = exports.identifierSchema = exports.amountSchema = void 0;
7
+ exports.createContractState = createContractState;
8
+ exports.ensureSqlAdapter = ensureSqlAdapter;
9
+ exports.initializeTables = initializeTables;
10
+ exports.emitContractEvent = emitContractEvent;
11
+ exports.requireSender = requireSender;
12
+ exports.requireTransferContext = requireTransferContext;
13
+ exports.requireEscrowContext = requireEscrowContext;
14
+ exports.getIncomingPayment = getIncomingPayment;
15
+ exports.getEscrowPayment = getEscrowPayment;
16
+ exports.parseDateValue = parseDateValue;
17
+ exports.parseJson = parseJson;
18
+ exports.toBigNumber = toBigNumber;
19
+ exports.ensurePositiveAmount = ensurePositiveAmount;
20
+ exports.assertAssetMatches = assertAssetMatches;
21
+ exports.uniqueItems = uniqueItems;
22
+ exports.parseBlockchainAmount = parseBlockchainAmount;
23
+ exports.formatBlockchainAmount = formatBlockchainAmount;
24
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
25
+ const zod_1 = require("zod");
26
+ const utils_1 = require("../utils");
27
+ exports.amountSchema = zod_1.z.string().regex(/^\d+(?:\.\d{1,8})?$/, 'Invalid amount');
28
+ exports.identifierSchema = zod_1.z.string().min(1).max(80).regex(/^[a-zA-Z0-9:_-]+$/, 'Invalid identifier');
29
+ exports.assetSchema = zod_1.z.string().min(3).max(16).regex(/^[A-Z0-9.:-]+$/, 'Invalid asset');
30
+ function createContractState(extra = {}) {
31
+ return {
32
+ adapter: null,
33
+ ...extra
34
+ };
35
+ }
36
+ function ensureSqlAdapter(adapter) {
37
+ if (!adapter?.capabilities?.sql) {
38
+ throw new Error('This contract requires a SQL-capable adapter (SQLite or PostgreSQL).');
39
+ }
40
+ }
41
+ async function initializeTables(adapter, statements) {
42
+ ensureSqlAdapter(adapter);
43
+ for (const statement of statements) {
44
+ await adapter.query(statement);
45
+ }
46
+ }
47
+ async function emitContractEvent(adapter, contract, action, payload, data) {
48
+ if (adapter?.addEvent) {
49
+ await adapter.addEvent(new Date(), contract, action, payload, data);
50
+ }
51
+ }
52
+ function requireSender(ctx) {
53
+ if (!ctx.sender) {
54
+ throw new Error('Sender required');
55
+ }
56
+ return ctx.sender;
57
+ }
58
+ function requireTransferContext(ctx) {
59
+ if (!ctx.transfer) {
60
+ throw new Error('Transfer context required');
61
+ }
62
+ return ctx.transfer;
63
+ }
64
+ function requireEscrowContext(ctx) {
65
+ if (!ctx.escrow) {
66
+ throw new Error('Escrow context required');
67
+ }
68
+ return ctx.escrow;
69
+ }
70
+ function getIncomingPayment(ctx) {
71
+ if (ctx.transfer) {
72
+ return {
73
+ from: ctx.transfer.from,
74
+ to: ctx.transfer.to,
75
+ rawAmount: ctx.transfer.rawAmount,
76
+ amount: ctx.transfer.amount,
77
+ asset: ctx.transfer.asset,
78
+ memo: ctx.transfer.memo,
79
+ source: 'transfer'
80
+ };
81
+ }
82
+ const operationAmount = ctx.operation?.data?.amount;
83
+ if (ctx.trigger === 'recurrent_transfer' && typeof operationAmount === 'string') {
84
+ const parsed = parseBlockchainAmount(operationAmount);
85
+ return {
86
+ from: ctx.operation?.data?.from,
87
+ to: ctx.operation?.data?.to,
88
+ rawAmount: parsed.rawAmount,
89
+ amount: parsed.amount,
90
+ asset: parsed.asset,
91
+ memo: ctx.operation?.data?.memo,
92
+ source: 'recurrent_transfer'
93
+ };
94
+ }
95
+ throw new Error('Payment context required');
96
+ }
97
+ function getEscrowPayment(ctx) {
98
+ const escrow = requireEscrowContext(ctx);
99
+ const candidates = [escrow.hiveAmount, escrow.hbdAmount].filter((value) => Boolean(value));
100
+ for (const candidate of candidates) {
101
+ const parsed = parseBlockchainAmount(candidate);
102
+ if (parsed.value.gt(0)) {
103
+ return {
104
+ rawAmount: parsed.rawAmount,
105
+ amount: parsed.amount,
106
+ asset: parsed.asset
107
+ };
108
+ }
109
+ }
110
+ throw new Error('Escrow payment amount required');
111
+ }
112
+ function parseDateValue(value) {
113
+ if (!value) {
114
+ return null;
115
+ }
116
+ if (value instanceof Date) {
117
+ return value;
118
+ }
119
+ const parsed = new Date(value);
120
+ if (Number.isNaN(parsed.getTime())) {
121
+ throw new Error(`Invalid date: ${value}`);
122
+ }
123
+ return parsed;
124
+ }
125
+ function parseJson(value, fallback) {
126
+ if (value === null || typeof value === 'undefined' || value === '') {
127
+ return fallback;
128
+ }
129
+ if (typeof value !== 'string') {
130
+ return value;
131
+ }
132
+ try {
133
+ return JSON.parse(value);
134
+ }
135
+ catch (error) {
136
+ return fallback;
137
+ }
138
+ }
139
+ function toBigNumber(value) {
140
+ const bn = new bignumber_js_1.default(value);
141
+ if (bn.isNaN() || !bn.isFinite()) {
142
+ throw new Error(`Invalid numeric value: ${String(value)}`);
143
+ }
144
+ return bn;
145
+ }
146
+ function ensurePositiveAmount(value, label) {
147
+ const amount = toBigNumber(value);
148
+ if (!amount.isFinite() || amount.lte(0)) {
149
+ throw new Error(`${label} must be greater than zero`);
150
+ }
151
+ }
152
+ function assertAssetMatches(actual, expected, label = 'Asset') {
153
+ if (actual !== expected) {
154
+ throw new Error(`${label} must be paid in ${expected}`);
155
+ }
156
+ }
157
+ function uniqueItems(values) {
158
+ return [...new Set(values.filter(Boolean))];
159
+ }
160
+ function parseBlockchainAmount(rawAmount) {
161
+ return utils_1.Utils.parseAssetAmount(rawAmount);
162
+ }
163
+ function formatBlockchainAmount(value, precision = 3) {
164
+ return utils_1.Utils.formatAmount(value, precision);
165
+ }
166
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/contracts/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface InsurancePoolContractOptions {
2
+ name?: string;
3
+ }
4
+ export declare function createInsurancePoolContract(options?: InsurancePoolContractOptions): import("..").ContractDefinition;