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,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBundleMarketplaceContract = createBundleMarketplaceContract;
4
+ const zod_1 = require("zod");
5
+ const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
7
+ const DEFAULT_NAME = 'bundlemarketplace';
8
+ function createBundleMarketplaceContract(options = {}) {
9
+ const name = options.name || DEFAULT_NAME;
10
+ const state = (0, helpers_1.createContractState)();
11
+ const createBundleSchema = zod_1.z.object({
12
+ bundleId: helpers_1.identifierSchema,
13
+ title: zod_1.z.string().min(3).max(140),
14
+ price: helpers_1.amountSchema,
15
+ asset: helpers_1.assetSchema,
16
+ items: zod_1.z.array(zod_1.z.string().min(1).max(140)).min(1).max(25),
17
+ inventory: zod_1.z.number().int().min(1).max(1000000).optional(),
18
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
19
+ });
20
+ const idSchema = zod_1.z.object({
21
+ bundleId: helpers_1.identifierSchema
22
+ });
23
+ const updateSchema = zod_1.z.object({
24
+ bundleId: helpers_1.identifierSchema,
25
+ title: zod_1.z.string().min(3).max(140).optional(),
26
+ price: helpers_1.amountSchema.optional(),
27
+ inventory: zod_1.z.number().int().min(0).max(1000000).optional(),
28
+ active: zod_1.z.boolean().optional(),
29
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
30
+ });
31
+ const fulfillSchema = zod_1.z.object({
32
+ purchaseId: zod_1.z.number().int().min(1),
33
+ notes: zod_1.z.string().max(280).optional()
34
+ });
35
+ const initialize = async () => {
36
+ await (0, helpers_1.initializeTables)(state.adapter, [
37
+ `
38
+ CREATE TABLE IF NOT EXISTS bundle_marketplace_bundles (
39
+ bundle_id TEXT PRIMARY KEY,
40
+ owner TEXT NOT NULL,
41
+ title TEXT NOT NULL,
42
+ price TEXT NOT NULL,
43
+ asset TEXT NOT NULL,
44
+ items_json TEXT NOT NULL,
45
+ inventory INTEGER,
46
+ sold_count INTEGER NOT NULL,
47
+ active INTEGER NOT NULL,
48
+ metadata TEXT,
49
+ created_at DATETIME NOT NULL,
50
+ updated_at DATETIME NOT NULL
51
+ )
52
+ `,
53
+ `
54
+ CREATE TABLE IF NOT EXISTS bundle_marketplace_purchases (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ bundle_id TEXT NOT NULL,
57
+ buyer TEXT NOT NULL,
58
+ amount_paid TEXT NOT NULL,
59
+ asset TEXT NOT NULL,
60
+ status TEXT NOT NULL,
61
+ notes TEXT,
62
+ created_at DATETIME NOT NULL,
63
+ updated_at DATETIME NOT NULL
64
+ )
65
+ `
66
+ ]);
67
+ };
68
+ const createBundle = async (payload, ctx) => {
69
+ const owner = (0, helpers_1.requireSender)(ctx);
70
+ const existing = await state.adapter.query('SELECT bundle_id FROM bundle_marketplace_bundles WHERE bundle_id = ?', [payload.bundleId]);
71
+ if (existing.length > 0) {
72
+ throw new Error(`Bundle ${payload.bundleId} already exists`);
73
+ }
74
+ await state.adapter.query(`INSERT INTO bundle_marketplace_bundles (
75
+ bundle_id, owner, title, price, asset, items_json, inventory, sold_count, active, metadata, created_at, updated_at
76
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
77
+ payload.bundleId,
78
+ owner,
79
+ payload.title,
80
+ payload.price,
81
+ payload.asset,
82
+ JSON.stringify(payload.items),
83
+ payload.inventory || null,
84
+ 0,
85
+ 1,
86
+ JSON.stringify(payload.metadata || {}),
87
+ new Date(),
88
+ new Date()
89
+ ]);
90
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createBundle', payload, {
91
+ action: 'bundle_created',
92
+ data: {
93
+ bundleId: payload.bundleId,
94
+ owner
95
+ }
96
+ });
97
+ };
98
+ const updateBundle = async (payload, ctx) => {
99
+ const owner = (0, helpers_1.requireSender)(ctx);
100
+ const rows = await state.adapter.query('SELECT * FROM bundle_marketplace_bundles WHERE bundle_id = ?', [payload.bundleId]);
101
+ if (rows.length === 0) {
102
+ throw new Error(`Bundle ${payload.bundleId} does not exist`);
103
+ }
104
+ const bundle = rows[0];
105
+ if (bundle.owner !== owner) {
106
+ throw new Error('Only the bundle owner can update the bundle');
107
+ }
108
+ await state.adapter.query(`UPDATE bundle_marketplace_bundles
109
+ SET title = ?, price = ?, inventory = ?, active = ?, metadata = ?, updated_at = ?
110
+ WHERE bundle_id = ?`, [
111
+ payload.title || bundle.title,
112
+ payload.price || bundle.price,
113
+ typeof payload.inventory === 'number' ? payload.inventory : bundle.inventory,
114
+ typeof payload.active === 'boolean' ? (payload.active ? 1 : 0) : bundle.active,
115
+ JSON.stringify(payload.metadata || (0, helpers_1.parseJson)(bundle.metadata, {})),
116
+ new Date(),
117
+ payload.bundleId
118
+ ]);
119
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'updateBundle', payload, {
120
+ action: 'bundle_updated',
121
+ data: {
122
+ bundleId: payload.bundleId,
123
+ owner
124
+ }
125
+ });
126
+ };
127
+ const buyBundle = async (payload, ctx) => {
128
+ const buyer = (0, helpers_1.requireSender)(ctx);
129
+ const payment = (0, helpers_1.getIncomingPayment)(ctx);
130
+ const rows = await state.adapter.query('SELECT * FROM bundle_marketplace_bundles WHERE bundle_id = ?', [payload.bundleId]);
131
+ if (rows.length === 0) {
132
+ throw new Error(`Bundle ${payload.bundleId} does not exist`);
133
+ }
134
+ const bundle = rows[0];
135
+ if (!bundle.active) {
136
+ throw new Error('Bundle is not active');
137
+ }
138
+ (0, helpers_1.assertAssetMatches)(payment.asset, bundle.asset);
139
+ if (!(0, helpers_1.toBigNumber)(payment.amount).eq(bundle.price)) {
140
+ throw new Error(`Bundle price is ${bundle.price} ${bundle.asset}`);
141
+ }
142
+ if (bundle.inventory !== null && Number(bundle.inventory) <= 0) {
143
+ throw new Error('Bundle is out of stock');
144
+ }
145
+ await state.adapter.query('INSERT INTO bundle_marketplace_purchases (bundle_id, buyer, amount_paid, asset, status, notes, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', [payload.bundleId, buyer, payment.amount, payment.asset, 'paid', '', new Date(), new Date()]);
146
+ const nextInventory = bundle.inventory === null ? null : Number(bundle.inventory) - 1;
147
+ await state.adapter.query('UPDATE bundle_marketplace_bundles SET inventory = ?, sold_count = ?, updated_at = ? WHERE bundle_id = ?', [nextInventory, Number(bundle.sold_count) + 1, new Date(), payload.bundleId]);
148
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'buyBundle', payload, {
149
+ action: 'bundle_purchased',
150
+ data: {
151
+ bundleId: payload.bundleId,
152
+ buyer,
153
+ items: (0, helpers_1.parseJson)(bundle.items_json, [])
154
+ }
155
+ });
156
+ };
157
+ const fulfillPurchase = async (payload, ctx) => {
158
+ const owner = (0, helpers_1.requireSender)(ctx);
159
+ const purchaseRows = await state.adapter.query('SELECT * FROM bundle_marketplace_purchases WHERE id = ?', [payload.purchaseId]);
160
+ if (purchaseRows.length === 0) {
161
+ throw new Error(`Purchase ${payload.purchaseId} does not exist`);
162
+ }
163
+ const purchase = purchaseRows[0];
164
+ const bundleRows = await state.adapter.query('SELECT * FROM bundle_marketplace_bundles WHERE bundle_id = ?', [purchase.bundle_id]);
165
+ const bundle = bundleRows[0];
166
+ if (bundle.owner !== owner) {
167
+ throw new Error('Only the bundle owner can fulfill purchases');
168
+ }
169
+ await state.adapter.query('UPDATE bundle_marketplace_purchases SET status = ?, notes = ?, updated_at = ? WHERE id = ?', ['fulfilled', payload.notes || '', new Date(), payload.purchaseId]);
170
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'fulfillPurchase', payload, {
171
+ action: 'bundle_purchase_fulfilled',
172
+ data: {
173
+ purchaseId: payload.purchaseId,
174
+ bundleId: purchase.bundle_id,
175
+ buyer: purchase.buyer
176
+ }
177
+ });
178
+ };
179
+ return (0, contract_1.defineContract)({
180
+ name,
181
+ hooks: {
182
+ create: async ({ adapter }) => {
183
+ state.adapter = adapter;
184
+ await initialize();
185
+ }
186
+ },
187
+ actions: {
188
+ createBundle: (0, contract_1.action)(createBundle, { schema: createBundleSchema, trigger: 'custom_json' }),
189
+ updateBundle: (0, contract_1.action)(updateBundle, { schema: updateSchema, trigger: 'custom_json' }),
190
+ buyBundle: (0, contract_1.action)(buyBundle, { schema: idSchema, trigger: ['transfer', 'recurrent_transfer'] }),
191
+ fulfillPurchase: (0, contract_1.action)(fulfillPurchase, { schema: fulfillSchema, trigger: 'custom_json' })
192
+ }
193
+ });
194
+ }
195
+ //# sourceMappingURL=bundlemarketplace.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundlemarketplace.contract.js","sourceRoot":"","sources":["../../src/contracts/bundlemarketplace.contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface CharityMatchContractOptions {
2
+ name?: string;
3
+ }
4
+ export declare function createCharityMatchContract(options?: CharityMatchContractOptions): import("..").ContractDefinition;
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCharityMatchContract = createCharityMatchContract;
4
+ const zod_1 = require("zod");
5
+ const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
7
+ const DEFAULT_NAME = 'charitymatch';
8
+ function createCharityMatchContract(options = {}) {
9
+ const name = options.name || DEFAULT_NAME;
10
+ const state = (0, helpers_1.createContractState)();
11
+ const createCampaignSchema = zod_1.z.object({
12
+ campaignId: helpers_1.identifierSchema,
13
+ title: zod_1.z.string().min(3).max(140),
14
+ beneficiary: zod_1.z.string().min(3).max(32),
15
+ asset: helpers_1.assetSchema,
16
+ matchCap: helpers_1.amountSchema,
17
+ matchBps: zod_1.z.number().int().min(0).max(100000),
18
+ closesAt: zod_1.z.string(),
19
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
20
+ });
21
+ const campaignIdSchema = zod_1.z.object({
22
+ campaignId: helpers_1.identifierSchema
23
+ });
24
+ const initialize = async () => {
25
+ await (0, helpers_1.initializeTables)(state.adapter, [
26
+ `
27
+ CREATE TABLE IF NOT EXISTS charity_match_campaigns (
28
+ campaign_id TEXT PRIMARY KEY,
29
+ sponsor TEXT NOT NULL,
30
+ title TEXT NOT NULL,
31
+ beneficiary TEXT NOT NULL,
32
+ asset TEXT NOT NULL,
33
+ match_cap TEXT NOT NULL,
34
+ match_bps INTEGER NOT NULL,
35
+ total_donations TEXT NOT NULL,
36
+ matched_total TEXT NOT NULL,
37
+ status TEXT NOT NULL,
38
+ closes_at DATETIME NOT NULL,
39
+ metadata TEXT,
40
+ created_at DATETIME NOT NULL,
41
+ closed_at DATETIME
42
+ )
43
+ `,
44
+ `
45
+ CREATE TABLE IF NOT EXISTS charity_match_donations (
46
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
47
+ campaign_id TEXT NOT NULL,
48
+ donor TEXT NOT NULL,
49
+ amount TEXT NOT NULL,
50
+ asset TEXT NOT NULL,
51
+ created_at DATETIME NOT NULL
52
+ )
53
+ `
54
+ ]);
55
+ };
56
+ const createCampaign = async (payload, ctx) => {
57
+ const sponsor = (0, helpers_1.requireSender)(ctx);
58
+ const existing = await state.adapter.query('SELECT campaign_id FROM charity_match_campaigns WHERE campaign_id = ?', [payload.campaignId]);
59
+ if (existing.length > 0) {
60
+ throw new Error(`Campaign ${payload.campaignId} already exists`);
61
+ }
62
+ const closesAt = (0, helpers_1.parseDateValue)(payload.closesAt);
63
+ if (!closesAt || closesAt <= new Date()) {
64
+ throw new Error('Campaign close time must be in the future');
65
+ }
66
+ await state.adapter.query(`INSERT INTO charity_match_campaigns (
67
+ campaign_id, sponsor, title, beneficiary, asset, match_cap, match_bps, total_donations, matched_total, status, closes_at, metadata, created_at, closed_at
68
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
69
+ payload.campaignId,
70
+ sponsor,
71
+ payload.title,
72
+ payload.beneficiary,
73
+ payload.asset,
74
+ payload.matchCap,
75
+ payload.matchBps,
76
+ '0',
77
+ '0',
78
+ 'open',
79
+ closesAt,
80
+ JSON.stringify(payload.metadata || {}),
81
+ new Date(),
82
+ null
83
+ ]);
84
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createCampaign', payload, {
85
+ action: 'charity_match_campaign_created',
86
+ data: {
87
+ campaignId: payload.campaignId,
88
+ sponsor,
89
+ beneficiary: payload.beneficiary
90
+ }
91
+ });
92
+ };
93
+ const donate = async (payload, ctx) => {
94
+ const donor = (0, helpers_1.requireSender)(ctx);
95
+ const payment = (0, helpers_1.getIncomingPayment)(ctx);
96
+ const rows = await state.adapter.query('SELECT * FROM charity_match_campaigns WHERE campaign_id = ?', [payload.campaignId]);
97
+ if (rows.length === 0) {
98
+ throw new Error(`Campaign ${payload.campaignId} does not exist`);
99
+ }
100
+ const campaign = rows[0];
101
+ if (campaign.status !== 'open') {
102
+ throw new Error('Campaign is not open');
103
+ }
104
+ if (((0, helpers_1.parseDateValue)(campaign.closes_at) || new Date()) <= new Date()) {
105
+ throw new Error('Campaign has already closed');
106
+ }
107
+ (0, helpers_1.assertAssetMatches)(payment.asset, campaign.asset);
108
+ const totalDonations = (0, helpers_1.toBigNumber)(campaign.total_donations).plus(payment.amount);
109
+ const potentialMatch = totalDonations.multipliedBy(Number(campaign.match_bps)).dividedBy(10000);
110
+ const nextMatched = potentialMatch.gt(campaign.match_cap)
111
+ ? (0, helpers_1.toBigNumber)(campaign.match_cap)
112
+ : potentialMatch;
113
+ await state.adapter.query('INSERT INTO charity_match_donations (campaign_id, donor, amount, asset, created_at) VALUES (?, ?, ?, ?, ?)', [payload.campaignId, donor, payment.amount, payment.asset, new Date()]);
114
+ await state.adapter.query('UPDATE charity_match_campaigns SET total_donations = ?, matched_total = ? WHERE campaign_id = ?', [totalDonations.toFixed(), nextMatched.toFixed(), payload.campaignId]);
115
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'donate', payload, {
116
+ action: 'charity_donation_received',
117
+ data: {
118
+ campaignId: payload.campaignId,
119
+ donor,
120
+ amount: payment.amount,
121
+ asset: payment.asset,
122
+ totalDonations: totalDonations.toFixed(),
123
+ matchedTotal: nextMatched.toFixed()
124
+ }
125
+ });
126
+ };
127
+ const closeCampaign = async (payload, ctx) => {
128
+ const rows = await state.adapter.query('SELECT * FROM charity_match_campaigns WHERE campaign_id = ?', [payload.campaignId]);
129
+ if (rows.length === 0) {
130
+ throw new Error(`Campaign ${payload.campaignId} does not exist`);
131
+ }
132
+ const campaign = rows[0];
133
+ if (campaign.status === 'closed') {
134
+ return;
135
+ }
136
+ if (ctx.trigger !== 'time') {
137
+ const sender = (0, helpers_1.requireSender)(ctx);
138
+ if (sender !== campaign.sponsor) {
139
+ throw new Error('Only the sponsor can close this campaign');
140
+ }
141
+ }
142
+ if (((0, helpers_1.parseDateValue)(campaign.closes_at) || new Date()) > new Date()) {
143
+ throw new Error('Campaign cannot be closed before its close time');
144
+ }
145
+ await state.adapter.query('UPDATE charity_match_campaigns SET status = ?, closed_at = ? WHERE campaign_id = ?', ['closed', new Date(), payload.campaignId]);
146
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'closeCampaign', payload, {
147
+ action: 'charity_match_campaign_closed',
148
+ data: {
149
+ campaignId: payload.campaignId,
150
+ beneficiary: campaign.beneficiary,
151
+ totalDonations: campaign.total_donations,
152
+ matchedTotal: campaign.matched_total,
153
+ asset: campaign.asset
154
+ }
155
+ });
156
+ };
157
+ return (0, contract_1.defineContract)({
158
+ name,
159
+ hooks: {
160
+ create: async ({ adapter }) => {
161
+ state.adapter = adapter;
162
+ await initialize();
163
+ }
164
+ },
165
+ actions: {
166
+ createCampaign: (0, contract_1.action)(createCampaign, { schema: createCampaignSchema, trigger: 'custom_json' }),
167
+ donate: (0, contract_1.action)(donate, { schema: campaignIdSchema, trigger: ['transfer', 'recurrent_transfer'] }),
168
+ closeCampaign: (0, contract_1.action)(closeCampaign, { schema: campaignIdSchema, trigger: ['custom_json', 'time'] })
169
+ }
170
+ });
171
+ }
172
+ //# sourceMappingURL=charitymatch.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charitymatch.contract.js","sourceRoot":"","sources":["../../src/contracts/charitymatch.contract.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const seedrandom_1 = __importDefault(require("seedrandom"));
9
9
  const uuid_1 = require("uuid");
10
10
  const zod_1 = require("zod");
11
11
  const contract_1 = require("./contract");
12
+ const helpers_1 = require("./helpers");
12
13
  const DEFAULT_NAME = 'coinflip';
13
14
  const DEFAULT_ACCOUNT = 'beggars';
14
15
  const DEFAULT_TOKEN_SYMBOL = 'HIVE';
@@ -53,11 +54,7 @@ function createCoinflipContract(options = {}) {
53
54
  try {
54
55
  const accountInfo = await state.streamer['client'].database.getAccounts([account]);
55
56
  if (accountInfo?.[0]) {
56
- const balanceParts = accountInfo[0].balance.split(' ');
57
- const amount = new bignumber_js_1.default(balanceParts[0]);
58
- if (amount.isNaN() || !amount.isFinite()) {
59
- throw new Error('Invalid balance format received from API');
60
- }
57
+ const amount = (0, helpers_1.parseBlockchainAmount)(accountInfo[0].balance).value;
61
58
  state.balanceCache = {
62
59
  balance: amount,
63
60
  timestamp: now
@@ -98,41 +95,42 @@ function createCoinflipContract(options = {}) {
98
95
  const sender = ctx.sender;
99
96
  const amountRaw = ctx.transfer.rawAmount;
100
97
  try {
101
- if (!amountRaw || typeof amountRaw !== 'string' || !amountRaw.includes(' ')) {
102
- throw new Error('Invalid amount format');
98
+ let parsedAmount;
99
+ try {
100
+ parsedAmount = (0, helpers_1.parseBlockchainAmount)(amountRaw);
103
101
  }
104
- const amountTrim = amountRaw.split(' ');
105
- if (amountTrim.length !== 2) {
102
+ catch (error) {
106
103
  throw new Error('Invalid amount format');
107
104
  }
108
- const amountParsed = new bignumber_js_1.default(amountTrim[0]);
109
- if (amountParsed.isNaN() || !amountParsed.isFinite() || amountParsed.isNegative()) {
105
+ const amountParsed = parsedAmount.value;
106
+ if (amountParsed.isNegative()) {
110
107
  throw new Error('Invalid amount value');
111
108
  }
112
- const amountCurrency = amountTrim[1].trim();
109
+ const amountCurrency = parsedAmount.asset;
113
110
  const transaction = await state.streamer.getTransaction(ctx.block.number, ctx.transaction.id);
114
111
  const verify = await state.streamer.verifyTransfer(transaction, sender, account, amountRaw);
115
112
  const balance = await getBalance();
116
113
  const availableBalance = balance.minus(state.pendingPayouts);
117
114
  if (verify) {
118
115
  if (!validCurrencies.includes(amountCurrency)) {
119
- await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You sent an invalid currency.');
116
+ await state.streamer.transferHiveTokens(account, sender, parsedAmount.amount, parsedAmount.asset, '[Refund] You sent an invalid currency.');
120
117
  return;
121
118
  }
122
119
  if (amountParsed.isLessThan(minAmount)) {
123
- await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], `[Refund] Bet amount too small. Minimum: ${minAmount} ${amountCurrency}.`);
120
+ await state.streamer.transferHiveTokens(account, sender, parsedAmount.amount, parsedAmount.asset, `[Refund] Bet amount too small. Minimum: ${minAmount} ${amountCurrency}.`);
124
121
  return;
125
122
  }
126
123
  if (amountParsed.isGreaterThan(maxAmount)) {
127
- await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], `[Refund] You sent too much. Maximum: ${maxAmount} ${amountCurrency}.`);
124
+ await state.streamer.transferHiveTokens(account, sender, parsedAmount.amount, parsedAmount.asset, `[Refund] You sent too much. Maximum: ${maxAmount} ${amountCurrency}.`);
128
125
  return;
129
126
  }
130
127
  const potentialPayout = amountParsed.multipliedBy(2);
131
128
  if (potentialPayout.isGreaterThan(availableBalance)) {
132
- await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] The server cannot afford this bet payout.');
129
+ await state.streamer.transferHiveTokens(account, sender, parsedAmount.amount, parsedAmount.asset, '[Refund] The server cannot afford this bet payout.');
133
130
  return;
134
131
  }
135
132
  state.pendingPayouts = state.pendingPayouts.plus(potentialPayout);
133
+ let payoutIncremented = true;
136
134
  try {
137
135
  const serverSeed = (0, uuid_1.v4)();
138
136
  if (!serverSeed || typeof serverSeed !== 'string') {
@@ -152,7 +150,9 @@ function createCoinflipContract(options = {}) {
152
150
  userWon: 'true'
153
151
  }
154
152
  });
155
- 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}`);
153
+ await state.streamer.transferHiveTokens(account, sender, (0, helpers_1.formatBlockchainAmount)(potentialPayout), parsedAmount.asset, `[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}`);
154
+ // Invalidate balance cache after payout
155
+ state.balanceCache = null;
156
156
  return;
157
157
  }
158
158
  await state.adapter.addEvent(new Date(), name, 'flip', payload, {
@@ -166,10 +166,13 @@ function createCoinflipContract(options = {}) {
166
166
  userWon: 'false'
167
167
  }
168
168
  });
169
- 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}`);
169
+ await state.streamer.transferHiveTokens(account, sender, '0.001', parsedAmount.asset, `[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
170
  }
171
171
  finally {
172
- state.pendingPayouts = state.pendingPayouts.minus(potentialPayout);
172
+ if (payoutIncremented) {
173
+ state.pendingPayouts = state.pendingPayouts.minus(potentialPayout);
174
+ payoutIncremented = false;
175
+ }
173
176
  }
174
177
  }
175
178
  }
@@ -183,10 +186,10 @@ function createCoinflipContract(options = {}) {
183
186
  });
184
187
  try {
185
188
  if (amountRaw && typeof amountRaw === 'string' && amountRaw.includes(' ')) {
186
- const [amountStr, currency] = amountRaw.split(' ');
187
- const amountBN = new bignumber_js_1.default(amountStr);
189
+ const parsedAmount = (0, helpers_1.parseBlockchainAmount)(amountRaw);
190
+ const amountBN = parsedAmount.value;
188
191
  if (!amountBN.isNaN() && amountBN.isFinite() && !amountBN.isNegative()) {
189
- await state.streamer.transferHiveTokens(account, sender, amountStr, currency, '[Refund] Processing error occurred.');
192
+ await state.streamer.transferHiveTokens(account, sender, parsedAmount.amount, parsedAmount.asset, '[Refund] Processing error occurred.');
190
193
  }
191
194
  }
192
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coinflip.contract.js","sourceRoot":"","sources":["../../src/contracts/coinflip.contract.ts"],"names":[],"mappings":"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"}
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;