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.
- package/DOCUMENTATION.md +50 -2
- package/README.md +282 -4
- package/dist/adapters/base.adapter.d.ts +5 -0
- package/dist/adapters/base.adapter.js +9 -0
- package/dist/adapters/base.adapter.js.map +1 -1
- package/dist/adapters/mongodb.adapter.d.ts +6 -6
- package/dist/adapters/mongodb.adapter.js +36 -21
- package/dist/adapters/mongodb.adapter.js.map +1 -1
- package/dist/adapters/postgresql.adapter.d.ts +7 -0
- package/dist/adapters/postgresql.adapter.js +46 -19
- package/dist/adapters/postgresql.adapter.js.map +1 -1
- package/dist/adapters/sqlite.adapter.d.ts +4 -0
- package/dist/adapters/sqlite.adapter.js +10 -0
- package/dist/adapters/sqlite.adapter.js.map +1 -1
- package/dist/api.d.ts +13 -3
- package/dist/api.js +96 -62
- package/dist/api.js.map +1 -1
- package/dist/builders.d.ts +176 -0
- package/dist/builders.js +727 -0
- package/dist/builders.js.map +1 -0
- package/dist/config.d.ts +16 -1
- package/dist/config.js +95 -3
- package/dist/config.js.map +1 -1
- package/dist/contracts/auctionhouse.contract.d.ts +4 -0
- package/dist/contracts/auctionhouse.contract.js +234 -0
- package/dist/contracts/auctionhouse.contract.js.map +1 -0
- package/dist/contracts/booking.contract.d.ts +4 -0
- package/dist/contracts/booking.contract.js +225 -0
- package/dist/contracts/booking.contract.js.map +1 -0
- package/dist/contracts/bountyboard.contract.d.ts +4 -0
- package/dist/contracts/bountyboard.contract.js +233 -0
- package/dist/contracts/bountyboard.contract.js.map +1 -0
- package/dist/contracts/bundlemarketplace.contract.d.ts +4 -0
- package/dist/contracts/bundlemarketplace.contract.js +195 -0
- package/dist/contracts/bundlemarketplace.contract.js.map +1 -0
- package/dist/contracts/charitymatch.contract.d.ts +4 -0
- package/dist/contracts/charitymatch.contract.js +172 -0
- package/dist/contracts/charitymatch.contract.js.map +1 -0
- package/dist/contracts/coinflip.contract.js +25 -22
- package/dist/contracts/coinflip.contract.js.map +1 -1
- package/dist/contracts/crowdfund.contract.d.ts +4 -0
- package/dist/contracts/crowdfund.contract.js +290 -0
- package/dist/contracts/crowdfund.contract.js.map +1 -0
- package/dist/contracts/dcabot.contract.d.ts +4 -0
- package/dist/contracts/dcabot.contract.js +217 -0
- package/dist/contracts/dcabot.contract.js.map +1 -0
- package/dist/contracts/dice.contract.js +25 -22
- package/dist/contracts/dice.contract.js.map +1 -1
- package/dist/contracts/domainregistry.contract.d.ts +4 -0
- package/dist/contracts/domainregistry.contract.js +232 -0
- package/dist/contracts/domainregistry.contract.js.map +1 -0
- package/dist/contracts/exchange.contract.js +209 -168
- package/dist/contracts/exchange.contract.js.map +1 -1
- package/dist/contracts/fanclub.contract.d.ts +4 -0
- package/dist/contracts/fanclub.contract.js +193 -0
- package/dist/contracts/fanclub.contract.js.map +1 -0
- package/dist/contracts/giftcard.contract.d.ts +4 -0
- package/dist/contracts/giftcard.contract.js +158 -0
- package/dist/contracts/giftcard.contract.js.map +1 -0
- package/dist/contracts/grantrounds.contract.d.ts +4 -0
- package/dist/contracts/grantrounds.contract.js +265 -0
- package/dist/contracts/grantrounds.contract.js.map +1 -0
- package/dist/contracts/groupbuy.contract.d.ts +4 -0
- package/dist/contracts/groupbuy.contract.js +198 -0
- package/dist/contracts/groupbuy.contract.js.map +1 -0
- package/dist/contracts/helpers.d.ts +66 -0
- package/dist/contracts/helpers.js +166 -0
- package/dist/contracts/helpers.js.map +1 -0
- package/dist/contracts/insurancepool.contract.d.ts +4 -0
- package/dist/contracts/insurancepool.contract.js +281 -0
- package/dist/contracts/insurancepool.contract.js.map +1 -0
- package/dist/contracts/invoice.contract.d.ts +4 -0
- package/dist/contracts/invoice.contract.js +193 -0
- package/dist/contracts/invoice.contract.js.map +1 -0
- package/dist/contracts/launchpad.contract.d.ts +4 -0
- package/dist/contracts/launchpad.contract.js +225 -0
- package/dist/contracts/launchpad.contract.js.map +1 -0
- package/dist/contracts/lotto.contract.js +53 -37
- package/dist/contracts/lotto.contract.js.map +1 -1
- package/dist/contracts/multisigtreasury.contract.d.ts +4 -0
- package/dist/contracts/multisigtreasury.contract.js +245 -0
- package/dist/contracts/multisigtreasury.contract.js.map +1 -0
- package/dist/contracts/nft.contract.d.ts +1 -0
- package/dist/contracts/nft.contract.js +234 -195
- package/dist/contracts/nft.contract.js.map +1 -1
- package/dist/contracts/oraclebounty.contract.d.ts +4 -0
- package/dist/contracts/oraclebounty.contract.js +250 -0
- package/dist/contracts/oraclebounty.contract.js.map +1 -0
- package/dist/contracts/payroll.contract.d.ts +4 -0
- package/dist/contracts/payroll.contract.js +232 -0
- package/dist/contracts/payroll.contract.js.map +1 -0
- package/dist/contracts/paywall.contract.d.ts +4 -0
- package/dist/contracts/paywall.contract.js +185 -0
- package/dist/contracts/paywall.contract.js.map +1 -0
- package/dist/contracts/poll.contract.js +2 -0
- package/dist/contracts/poll.contract.js.map +1 -1
- package/dist/contracts/predictionmarket.contract.d.ts +4 -0
- package/dist/contracts/predictionmarket.contract.js +213 -0
- package/dist/contracts/predictionmarket.contract.js.map +1 -0
- package/dist/contracts/proposaltimelock.contract.d.ts +4 -0
- package/dist/contracts/proposaltimelock.contract.js +250 -0
- package/dist/contracts/proposaltimelock.contract.js.map +1 -0
- package/dist/contracts/questpass.contract.d.ts +4 -0
- package/dist/contracts/questpass.contract.js +214 -0
- package/dist/contracts/questpass.contract.js.map +1 -0
- package/dist/contracts/referral.contract.d.ts +4 -0
- package/dist/contracts/referral.contract.js +238 -0
- package/dist/contracts/referral.contract.js.map +1 -0
- package/dist/contracts/rental.contract.d.ts +4 -0
- package/dist/contracts/rental.contract.js +221 -0
- package/dist/contracts/rental.contract.js.map +1 -0
- package/dist/contracts/revenuesplit.contract.d.ts +4 -0
- package/dist/contracts/revenuesplit.contract.js +211 -0
- package/dist/contracts/revenuesplit.contract.js.map +1 -0
- package/dist/contracts/rps.contract.js +48 -20
- package/dist/contracts/rps.contract.js.map +1 -1
- package/dist/contracts/savings.contract.d.ts +4 -0
- package/dist/contracts/savings.contract.js +208 -0
- package/dist/contracts/savings.contract.js.map +1 -0
- package/dist/contracts/subscription.contract.d.ts +4 -0
- package/dist/contracts/subscription.contract.js +241 -0
- package/dist/contracts/subscription.contract.js.map +1 -0
- package/dist/contracts/sweepstakes.contract.d.ts +4 -0
- package/dist/contracts/sweepstakes.contract.js +209 -0
- package/dist/contracts/sweepstakes.contract.js.map +1 -0
- package/dist/contracts/ticketing.contract.d.ts +4 -0
- package/dist/contracts/ticketing.contract.js +185 -0
- package/dist/contracts/ticketing.contract.js.map +1 -0
- package/dist/contracts/tipjar.contract.js +2 -0
- package/dist/contracts/tipjar.contract.js.map +1 -1
- package/dist/contracts/token.contract.js +135 -125
- package/dist/contracts/token.contract.js.map +1 -1
- package/dist/index.d.ts +40 -0
- package/dist/index.js +72 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +20 -0
- package/dist/metadata.js +320 -1
- package/dist/metadata.js.map +1 -1
- package/dist/providers/block-provider.d.ts +22 -0
- package/dist/providers/block-provider.js +3 -0
- package/dist/providers/block-provider.js.map +1 -0
- package/dist/providers/haf-client.d.ts +30 -0
- package/dist/providers/haf-client.js +119 -0
- package/dist/providers/haf-client.js.map +1 -0
- package/dist/providers/haf-provider.d.ts +49 -0
- package/dist/providers/haf-provider.js +256 -0
- package/dist/providers/haf-provider.js.map +1 -0
- package/dist/providers/hive-provider.d.ts +13 -0
- package/dist/providers/hive-provider.js +25 -0
- package/dist/providers/hive-provider.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.js +21 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/streamer.d.ts +65 -4
- package/dist/streamer.js +768 -72
- package/dist/streamer.js.map +1 -1
- package/dist/types/hive-stream.d.ts +317 -0
- package/dist/utils.d.ts +33 -0
- package/dist/utils.js +198 -2
- package/dist/utils.js.map +1 -1
- package/package.json +16 -1
- package/.claude/settings.local.json +0 -12
- package/.env.example +0 -3
- package/.travis.yml +0 -11
- package/AGENTS.md +0 -35
- package/CLAUDE.md +0 -75
- package/ecosystem.config.js +0 -17
- package/examples/contracts/README.md +0 -8
- package/examples/contracts/exchange.ts +0 -38
- package/examples/contracts/poll.ts +0 -21
- package/examples/contracts/rps.ts +0 -19
- package/examples/contracts/tipjar.ts +0 -19
- package/jest.config.js +0 -9
- package/test-contract-block.md +0 -19
- package/tests/actions.spec.ts +0 -252
- package/tests/adapters/actions-persistence.spec.ts +0 -144
- package/tests/adapters/postgresql.adapter.spec.ts +0 -127
- package/tests/adapters/sqlite.adapter.spec.ts +0 -181
- package/tests/config-input.spec.ts +0 -90
- package/tests/contracts/coinflip.contract.spec.ts +0 -94
- package/tests/contracts/dice.contract.spec.ts +0 -87
- package/tests/contracts/entrants.json +0 -729
- package/tests/contracts/exchange.contract.spec.ts +0 -84
- package/tests/contracts/lotto.contract.spec.ts +0 -59
- package/tests/contracts/nft.contract.spec.ts +0 -948
- package/tests/contracts/token.contract.spec.ts +0 -90
- package/tests/exchanges/coingecko.exchange.spec.ts +0 -169
- package/tests/exchanges/exchange.base.spec.ts +0 -246
- package/tests/helpers/mock-adapter.ts +0 -214
- package/tests/helpers/mock-fetch.ts +0 -165
- package/tests/hive-chain-features.spec.ts +0 -319
- package/tests/hive-rates.spec.ts +0 -443
- package/tests/integration/hive-rates.integration.spec.ts +0 -35
- package/tests/metadata.spec.ts +0 -63
- package/tests/setup.ts +0 -30
- package/tests/streamer-actions.spec.ts +0 -274
- package/tests/streamer.spec.ts +0 -342
- package/tests/types/rates.spec.ts +0 -216
- package/tests/utils.spec.ts +0 -113
- package/tsconfig.build.json +0 -4
- package/tslint.json +0 -21
- 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,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":"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"}
|
|
@@ -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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"}
|