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,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLaunchpadContract = createLaunchpadContract;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const contract_1 = require("./contract");
|
|
6
|
+
const helpers_1 = require("./helpers");
|
|
7
|
+
const DEFAULT_NAME = 'launchpad';
|
|
8
|
+
function createLaunchpadContract(options = {}) {
|
|
9
|
+
const name = options.name || DEFAULT_NAME;
|
|
10
|
+
const state = (0, helpers_1.createContractState)();
|
|
11
|
+
const createSaleSchema = zod_1.z.object({
|
|
12
|
+
saleId: helpers_1.identifierSchema,
|
|
13
|
+
title: zod_1.z.string().min(3).max(140),
|
|
14
|
+
tokenSymbol: zod_1.z.string().min(1).max(20),
|
|
15
|
+
purchaseAsset: helpers_1.assetSchema,
|
|
16
|
+
unitPrice: helpers_1.amountSchema,
|
|
17
|
+
totalUnits: zod_1.z.number().int().min(1).max(100000000),
|
|
18
|
+
closesAt: zod_1.z.string(),
|
|
19
|
+
minUnitsPerBuyer: zod_1.z.number().int().min(1).max(100000000).optional(),
|
|
20
|
+
maxUnitsPerBuyer: zod_1.z.number().int().min(1).max(100000000).optional(),
|
|
21
|
+
metadata: zod_1.z.record(zod_1.z.any()).optional()
|
|
22
|
+
});
|
|
23
|
+
const saleIdSchema = zod_1.z.object({
|
|
24
|
+
saleId: helpers_1.identifierSchema
|
|
25
|
+
});
|
|
26
|
+
const initialize = async () => {
|
|
27
|
+
await (0, helpers_1.initializeTables)(state.adapter, [
|
|
28
|
+
`
|
|
29
|
+
CREATE TABLE IF NOT EXISTS launchpad_sales (
|
|
30
|
+
sale_id TEXT PRIMARY KEY,
|
|
31
|
+
creator TEXT NOT NULL,
|
|
32
|
+
title TEXT NOT NULL,
|
|
33
|
+
token_symbol TEXT NOT NULL,
|
|
34
|
+
purchase_asset TEXT NOT NULL,
|
|
35
|
+
unit_price TEXT NOT NULL,
|
|
36
|
+
total_units INTEGER NOT NULL,
|
|
37
|
+
units_sold INTEGER NOT NULL,
|
|
38
|
+
closes_at DATETIME NOT NULL,
|
|
39
|
+
min_units_per_buyer INTEGER,
|
|
40
|
+
max_units_per_buyer INTEGER,
|
|
41
|
+
status TEXT NOT NULL,
|
|
42
|
+
metadata TEXT,
|
|
43
|
+
created_at DATETIME NOT NULL,
|
|
44
|
+
finalized_at DATETIME
|
|
45
|
+
)
|
|
46
|
+
`,
|
|
47
|
+
`
|
|
48
|
+
CREATE TABLE IF NOT EXISTS launchpad_allocations (
|
|
49
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
50
|
+
sale_id TEXT NOT NULL,
|
|
51
|
+
buyer TEXT NOT NULL,
|
|
52
|
+
units INTEGER NOT NULL,
|
|
53
|
+
amount_paid TEXT NOT NULL,
|
|
54
|
+
asset TEXT NOT NULL,
|
|
55
|
+
claimed INTEGER NOT NULL,
|
|
56
|
+
created_at DATETIME NOT NULL,
|
|
57
|
+
updated_at DATETIME NOT NULL,
|
|
58
|
+
UNIQUE(sale_id, buyer)
|
|
59
|
+
)
|
|
60
|
+
`
|
|
61
|
+
]);
|
|
62
|
+
};
|
|
63
|
+
const createSale = async (payload, ctx) => {
|
|
64
|
+
const creator = (0, helpers_1.requireSender)(ctx);
|
|
65
|
+
const existing = await state.adapter.query('SELECT sale_id FROM launchpad_sales WHERE sale_id = ?', [payload.saleId]);
|
|
66
|
+
if (existing.length > 0) {
|
|
67
|
+
throw new Error(`Sale ${payload.saleId} already exists`);
|
|
68
|
+
}
|
|
69
|
+
const closesAt = (0, helpers_1.parseDateValue)(payload.closesAt);
|
|
70
|
+
if (!closesAt || closesAt <= new Date()) {
|
|
71
|
+
throw new Error('Sale close time must be in the future');
|
|
72
|
+
}
|
|
73
|
+
if (payload.maxUnitsPerBuyer && payload.minUnitsPerBuyer && payload.maxUnitsPerBuyer < payload.minUnitsPerBuyer) {
|
|
74
|
+
throw new Error('Maximum units per buyer cannot be less than the minimum');
|
|
75
|
+
}
|
|
76
|
+
await state.adapter.query(`INSERT INTO launchpad_sales (
|
|
77
|
+
sale_id, creator, title, token_symbol, purchase_asset, unit_price, total_units, units_sold, closes_at,
|
|
78
|
+
min_units_per_buyer, max_units_per_buyer, status, metadata, created_at, finalized_at
|
|
79
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
80
|
+
payload.saleId,
|
|
81
|
+
creator,
|
|
82
|
+
payload.title,
|
|
83
|
+
payload.tokenSymbol,
|
|
84
|
+
payload.purchaseAsset,
|
|
85
|
+
payload.unitPrice,
|
|
86
|
+
payload.totalUnits,
|
|
87
|
+
0,
|
|
88
|
+
closesAt,
|
|
89
|
+
payload.minUnitsPerBuyer || null,
|
|
90
|
+
payload.maxUnitsPerBuyer || null,
|
|
91
|
+
'open',
|
|
92
|
+
JSON.stringify(payload.metadata || {}),
|
|
93
|
+
new Date(),
|
|
94
|
+
null
|
|
95
|
+
]);
|
|
96
|
+
await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createSale', payload, {
|
|
97
|
+
action: 'launchpad_sale_created',
|
|
98
|
+
data: {
|
|
99
|
+
saleId: payload.saleId,
|
|
100
|
+
creator
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const contribute = async (payload, ctx) => {
|
|
105
|
+
const buyer = (0, helpers_1.requireSender)(ctx);
|
|
106
|
+
const payment = (0, helpers_1.getIncomingPayment)(ctx);
|
|
107
|
+
const rows = await state.adapter.query('SELECT * FROM launchpad_sales WHERE sale_id = ?', [payload.saleId]);
|
|
108
|
+
if (rows.length === 0) {
|
|
109
|
+
throw new Error(`Sale ${payload.saleId} does not exist`);
|
|
110
|
+
}
|
|
111
|
+
const sale = rows[0];
|
|
112
|
+
if (sale.status !== 'open') {
|
|
113
|
+
throw new Error('Sale is not open');
|
|
114
|
+
}
|
|
115
|
+
if (((0, helpers_1.parseDateValue)(sale.closes_at) || new Date()) <= new Date()) {
|
|
116
|
+
throw new Error('Sale has already closed');
|
|
117
|
+
}
|
|
118
|
+
(0, helpers_1.assertAssetMatches)(payment.asset, sale.purchase_asset);
|
|
119
|
+
const units = (0, helpers_1.toBigNumber)(payment.amount).dividedBy(sale.unit_price);
|
|
120
|
+
if (!units.isInteger()) {
|
|
121
|
+
throw new Error('Contribution amount must match a whole number of sale units');
|
|
122
|
+
}
|
|
123
|
+
const unitCount = units.toNumber();
|
|
124
|
+
if (sale.min_units_per_buyer && unitCount < Number(sale.min_units_per_buyer)) {
|
|
125
|
+
throw new Error('Contribution is below the minimum purchase size');
|
|
126
|
+
}
|
|
127
|
+
const existingRows = await state.adapter.query('SELECT * FROM launchpad_allocations WHERE sale_id = ? AND buyer = ?', [payload.saleId, buyer]);
|
|
128
|
+
const existingUnits = existingRows.length > 0 ? Number(existingRows[0].units) : 0;
|
|
129
|
+
const totalBuyerUnits = existingUnits + unitCount;
|
|
130
|
+
if (sale.max_units_per_buyer && totalBuyerUnits > Number(sale.max_units_per_buyer)) {
|
|
131
|
+
throw new Error('Contribution exceeds the per-buyer cap');
|
|
132
|
+
}
|
|
133
|
+
if (Number(sale.units_sold) + unitCount > Number(sale.total_units)) {
|
|
134
|
+
throw new Error('Contribution exceeds the remaining sale allocation');
|
|
135
|
+
}
|
|
136
|
+
const totalPaid = existingRows.length > 0
|
|
137
|
+
? (0, helpers_1.toBigNumber)(existingRows[0].amount_paid).plus(payment.amount)
|
|
138
|
+
: (0, helpers_1.toBigNumber)(payment.amount);
|
|
139
|
+
await state.adapter.query(`INSERT INTO launchpad_allocations (sale_id, buyer, units, amount_paid, asset, claimed, created_at, updated_at)
|
|
140
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
141
|
+
ON CONFLICT(sale_id, buyer)
|
|
142
|
+
DO UPDATE SET units = excluded.units, amount_paid = excluded.amount_paid, asset = excluded.asset, updated_at = excluded.updated_at`, [payload.saleId, buyer, totalBuyerUnits, totalPaid.toFixed(), payment.asset, 0, new Date(), new Date()]);
|
|
143
|
+
await state.adapter.query('UPDATE launchpad_sales SET units_sold = ? WHERE sale_id = ?', [Number(sale.units_sold) + unitCount, payload.saleId]);
|
|
144
|
+
await (0, helpers_1.emitContractEvent)(state.adapter, name, 'contribute', payload, {
|
|
145
|
+
action: 'launchpad_contribution_received',
|
|
146
|
+
data: {
|
|
147
|
+
saleId: payload.saleId,
|
|
148
|
+
buyer,
|
|
149
|
+
units: unitCount,
|
|
150
|
+
totalBuyerUnits
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
const finalizeSale = async (payload, ctx) => {
|
|
155
|
+
const rows = await state.adapter.query('SELECT * FROM launchpad_sales WHERE sale_id = ?', [payload.saleId]);
|
|
156
|
+
if (rows.length === 0) {
|
|
157
|
+
throw new Error(`Sale ${payload.saleId} does not exist`);
|
|
158
|
+
}
|
|
159
|
+
const sale = rows[0];
|
|
160
|
+
if (sale.status === 'successful' || sale.status === 'closed') {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (ctx.trigger !== 'time') {
|
|
164
|
+
const sender = (0, helpers_1.requireSender)(ctx);
|
|
165
|
+
if (sender !== sale.creator) {
|
|
166
|
+
throw new Error('Only the sale creator can finalize the sale');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (((0, helpers_1.parseDateValue)(sale.closes_at) || new Date()) > new Date() && Number(sale.units_sold) < Number(sale.total_units)) {
|
|
170
|
+
throw new Error('Sale cannot be finalized before it closes unless it sells out');
|
|
171
|
+
}
|
|
172
|
+
const status = Number(sale.units_sold) > 0 ? 'successful' : 'closed';
|
|
173
|
+
await state.adapter.query('UPDATE launchpad_sales SET status = ?, finalized_at = ? WHERE sale_id = ?', [status, new Date(), payload.saleId]);
|
|
174
|
+
await (0, helpers_1.emitContractEvent)(state.adapter, name, 'finalizeSale', payload, {
|
|
175
|
+
action: 'launchpad_sale_finalized',
|
|
176
|
+
data: {
|
|
177
|
+
saleId: payload.saleId,
|
|
178
|
+
status,
|
|
179
|
+
unitsSold: sale.units_sold
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
const claimAllocation = async (payload, ctx) => {
|
|
184
|
+
const buyer = (0, helpers_1.requireSender)(ctx);
|
|
185
|
+
const saleRows = await state.adapter.query('SELECT * FROM launchpad_sales WHERE sale_id = ?', [payload.saleId]);
|
|
186
|
+
const allocationRows = await state.adapter.query('SELECT * FROM launchpad_allocations WHERE sale_id = ? AND buyer = ?', [payload.saleId, buyer]);
|
|
187
|
+
if (saleRows.length === 0 || allocationRows.length === 0) {
|
|
188
|
+
throw new Error('Sale allocation does not exist');
|
|
189
|
+
}
|
|
190
|
+
const sale = saleRows[0];
|
|
191
|
+
const allocation = allocationRows[0];
|
|
192
|
+
if (sale.status !== 'successful') {
|
|
193
|
+
throw new Error('Sale is not ready for claims');
|
|
194
|
+
}
|
|
195
|
+
if (allocation.claimed) {
|
|
196
|
+
throw new Error('Allocation already claimed');
|
|
197
|
+
}
|
|
198
|
+
await state.adapter.query('UPDATE launchpad_allocations SET claimed = ?, updated_at = ? WHERE sale_id = ? AND buyer = ?', [1, new Date(), payload.saleId, buyer]);
|
|
199
|
+
await (0, helpers_1.emitContractEvent)(state.adapter, name, 'claimAllocation', payload, {
|
|
200
|
+
action: 'launchpad_allocation_claim_requested',
|
|
201
|
+
data: {
|
|
202
|
+
saleId: payload.saleId,
|
|
203
|
+
buyer,
|
|
204
|
+
tokenSymbol: sale.token_symbol,
|
|
205
|
+
units: allocation.units
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
return (0, contract_1.defineContract)({
|
|
210
|
+
name,
|
|
211
|
+
hooks: {
|
|
212
|
+
create: async ({ adapter }) => {
|
|
213
|
+
state.adapter = adapter;
|
|
214
|
+
await initialize();
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
actions: {
|
|
218
|
+
createSale: (0, contract_1.action)(createSale, { schema: createSaleSchema, trigger: 'custom_json' }),
|
|
219
|
+
contribute: (0, contract_1.action)(contribute, { schema: saleIdSchema, trigger: ['transfer', 'recurrent_transfer'] }),
|
|
220
|
+
finalizeSale: (0, contract_1.action)(finalizeSale, { schema: saleIdSchema, trigger: ['custom_json', 'time'] }),
|
|
221
|
+
claimAllocation: (0, contract_1.action)(claimAllocation, { schema: saleIdSchema, trigger: 'custom_json' })
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=launchpad.contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchpad.contract.js","sourceRoot":"","sources":["../../src/contracts/launchpad.contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
|
8
8
|
const seedrandom_1 = __importDefault(require("seedrandom"));
|
|
9
9
|
const zod_1 = require("zod");
|
|
10
10
|
const contract_1 = require("./contract");
|
|
11
|
-
const utils_1 = require("../utils");
|
|
12
11
|
const DEFAULT_NAME = 'hivelotto';
|
|
13
12
|
const DEFAULT_ACCOUNT = 'beggars';
|
|
14
13
|
const DEFAULT_FEE_ACCOUNT = 'beggars';
|
|
@@ -57,7 +56,7 @@ function createLottoContract(options = {}) {
|
|
|
57
56
|
return null;
|
|
58
57
|
};
|
|
59
58
|
const getPreviousUserTicketsForCurrentDrawType = async (type, accountName) => {
|
|
60
|
-
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type });
|
|
59
|
+
const lotto = (await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type })) || [];
|
|
61
60
|
if (!lotto[0] || !lotto[0].entries) {
|
|
62
61
|
return 0;
|
|
63
62
|
}
|
|
@@ -71,7 +70,10 @@ function createLottoContract(options = {}) {
|
|
|
71
70
|
const sender = ctx.sender;
|
|
72
71
|
const amountRaw = ctx.transfer.rawAmount;
|
|
73
72
|
const amountTrim = amountRaw.split(' ');
|
|
74
|
-
const amountParsed =
|
|
73
|
+
const amountParsed = new bignumber_js_1.default(amountTrim[0]);
|
|
74
|
+
if (amountParsed.isNaN() || !amountParsed.isFinite() || amountParsed.isNegative()) {
|
|
75
|
+
throw new Error('Invalid ticket amount');
|
|
76
|
+
}
|
|
75
77
|
const amountCurrency = amountTrim[1].trim();
|
|
76
78
|
const transaction = await state.streamer.getTransaction(ctx.block.number, ctx.transaction.id);
|
|
77
79
|
const verify = await state.streamer.verifyTransfer(transaction, sender, account, amountRaw);
|
|
@@ -89,12 +91,16 @@ function createLottoContract(options = {}) {
|
|
|
89
91
|
await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You have exceeded the allowed number of entries');
|
|
90
92
|
return;
|
|
91
93
|
}
|
|
92
|
-
if (amountParsed
|
|
93
|
-
|
|
94
|
-
await state.streamer.transferHiveTokens(account, sender, difference, amountTrim[1], `[Refund] A ticket costs ${cost} ${tokenSymbol}. You sent ${amountRaw}. You were refunded ${difference} ${tokenSymbol}.`);
|
|
94
|
+
if (amountParsed.isLessThan(cost)) {
|
|
95
|
+
await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], `[Refund] A ticket costs ${cost} ${tokenSymbol}. You sent ${amountRaw}. Insufficient amount.`);
|
|
95
96
|
return;
|
|
96
97
|
}
|
|
97
|
-
|
|
98
|
+
if (amountParsed.isGreaterThan(cost)) {
|
|
99
|
+
const difference = amountParsed.minus(cost).toFixed(3);
|
|
100
|
+
await state.streamer.transferHiveTokens(account, sender, difference, amountTrim[1], `[Refund] A ticket costs ${cost} ${tokenSymbol}. You sent ${amountRaw}. You were refunded ${difference} ${tokenSymbol}.`);
|
|
101
|
+
// Continue to create the entry — user paid enough for a ticket
|
|
102
|
+
}
|
|
103
|
+
const lotto = (await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: payload.type })) || [];
|
|
98
104
|
if (lotto.length) {
|
|
99
105
|
const draw = lotto[0];
|
|
100
106
|
draw.entries.push({
|
|
@@ -115,21 +121,19 @@ function createLottoContract(options = {}) {
|
|
|
115
121
|
};
|
|
116
122
|
const getWinners = async (count, entries, ctx) => {
|
|
117
123
|
const winners = [];
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
else {
|
|
126
|
-
break;
|
|
124
|
+
const selectedIndices = new Set();
|
|
125
|
+
const maxEntries = Math.min(count, entries.length);
|
|
126
|
+
for (let attempt = 0; winners.length < maxEntries && attempt < maxEntries * 10; attempt++) {
|
|
127
|
+
const index = rng(ctx.block.previousId, ctx.block.id, ctx.transaction.id, attempt, entries.length) - 1; // rng returns 1-based, convert to 0-based
|
|
128
|
+
if (!selectedIndices.has(index)) {
|
|
129
|
+
selectedIndices.add(index);
|
|
130
|
+
winners.push(entries[index]);
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
133
|
return winners;
|
|
130
134
|
};
|
|
131
135
|
const drawHourlyLottery = async (_payload, ctx) => {
|
|
132
|
-
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: 'hourly' });
|
|
136
|
+
const lotto = (await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: 'hourly' })) || [];
|
|
133
137
|
if (lotto.length) {
|
|
134
138
|
const draw = lotto[0];
|
|
135
139
|
const total = draw.entries.length;
|
|
@@ -138,20 +142,25 @@ function createLottoContract(options = {}) {
|
|
|
138
142
|
arr.push(entrant.account);
|
|
139
143
|
return arr;
|
|
140
144
|
}, []);
|
|
141
|
-
|
|
145
|
+
// Mark draw as completed BEFORE refunding to prevent re-draws
|
|
146
|
+
await state.adapter.replace(COLLECTION_LOTTERY, { _id: draw._id }, { ...draw, status: 'completed' });
|
|
147
|
+
await state.streamer.transferHiveTokensMultiple(account, entrants, new bignumber_js_1.default(cost).toFixed(3), tokenSymbol, '[Refund] The hourly lotto draw did not have enough contestants.');
|
|
142
148
|
return;
|
|
143
149
|
}
|
|
144
150
|
const balance = await getBalance();
|
|
145
|
-
const winningsAmount = new bignumber_js_1.default(total).multipliedBy(cost)
|
|
146
|
-
const percentageFee =
|
|
147
|
-
const payoutTotal =
|
|
148
|
-
const amountPerWinner =
|
|
151
|
+
const winningsAmount = new bignumber_js_1.default(total).multipliedBy(cost);
|
|
152
|
+
const percentageFee = winningsAmount.dividedBy(100).multipliedBy(feePercentage);
|
|
153
|
+
const payoutTotal = winningsAmount.minus(percentageFee);
|
|
154
|
+
const amountPerWinner = payoutTotal.dividedBy(hourlyWinnersPick).toFixed(3);
|
|
155
|
+
// Check full outgoing amount (winnings + fee) against balance
|
|
156
|
+
if (balance !== null && winningsAmount.toNumber() > balance) {
|
|
157
|
+
throw new Error('Balance is less than amount to pay out');
|
|
158
|
+
}
|
|
159
|
+
// Mark draw as completed BEFORE payouts to prevent re-draws
|
|
160
|
+
await state.adapter.replace(COLLECTION_LOTTERY, { _id: draw._id }, { ...draw, status: 'completed' });
|
|
149
161
|
if (account !== feeAccount) {
|
|
150
162
|
await state.streamer.transferHiveTokens(account, feeAccount, percentageFee.toFixed(3), tokenSymbol, 'percentage fee');
|
|
151
163
|
}
|
|
152
|
-
if (balance !== null && payoutTotal.toNumber() > balance) {
|
|
153
|
-
throw new Error('Balance is less than amount to pay out');
|
|
154
|
-
}
|
|
155
164
|
const winners = await getWinners(hourlyWinnersPick, draw.entries, ctx);
|
|
156
165
|
if (winners) {
|
|
157
166
|
const winnerStrings = winners.reduce((arr, winner) => {
|
|
@@ -173,28 +182,35 @@ function createLottoContract(options = {}) {
|
|
|
173
182
|
return;
|
|
174
183
|
};
|
|
175
184
|
const drawDailyLottery = async (_payload, ctx) => {
|
|
176
|
-
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: 'daily' });
|
|
185
|
+
const lotto = (await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: 'daily' })) || [];
|
|
177
186
|
if (lotto.length) {
|
|
178
187
|
const draw = lotto[0];
|
|
179
188
|
const total = draw.entries.length;
|
|
180
189
|
if (total < minEntriesDaily) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
190
|
+
// Mark draw as completed BEFORE refunding to prevent re-draws
|
|
191
|
+
await state.adapter.replace(COLLECTION_LOTTERY, { _id: draw._id }, { ...draw, status: 'completed' });
|
|
192
|
+
// Use transferHiveTokensMultiple for error isolation (one failure doesn't kill others)
|
|
193
|
+
const entrants = draw.entries.reduce((arr, entrant) => {
|
|
194
|
+
arr.push(entrant.account);
|
|
195
|
+
return arr;
|
|
196
|
+
}, []);
|
|
197
|
+
await state.streamer.transferHiveTokensMultiple(account, entrants, new bignumber_js_1.default(cost).toFixed(3), tokenSymbol, '[Refund] The daily lotto draw did not have enough contestants.');
|
|
185
198
|
return;
|
|
186
199
|
}
|
|
187
200
|
const balance = await getBalance();
|
|
188
|
-
const winningsAmount = new bignumber_js_1.default(total).multipliedBy(cost)
|
|
189
|
-
const percentageFee =
|
|
190
|
-
const payoutTotal =
|
|
191
|
-
const amountPerWinner =
|
|
201
|
+
const winningsAmount = new bignumber_js_1.default(total).multipliedBy(cost);
|
|
202
|
+
const percentageFee = winningsAmount.dividedBy(100).multipliedBy(feePercentage);
|
|
203
|
+
const payoutTotal = winningsAmount.minus(percentageFee);
|
|
204
|
+
const amountPerWinner = payoutTotal.dividedBy(dailyWinnersPick).toFixed(3);
|
|
205
|
+
// Check full outgoing amount (winnings + fee) against balance
|
|
206
|
+
if (balance !== null && winningsAmount.toNumber() > balance) {
|
|
207
|
+
throw new Error('Balance is less than amount to pay out');
|
|
208
|
+
}
|
|
209
|
+
// Mark draw as completed BEFORE payouts to prevent re-draws
|
|
210
|
+
await state.adapter.replace(COLLECTION_LOTTERY, { _id: draw._id }, { ...draw, status: 'completed' });
|
|
192
211
|
if (account !== feeAccount) {
|
|
193
212
|
await state.streamer.transferHiveTokens(account, feeAccount, percentageFee.toFixed(3), tokenSymbol, 'percentage fee');
|
|
194
213
|
}
|
|
195
|
-
if (balance !== null && payoutTotal.toNumber() > balance) {
|
|
196
|
-
throw new Error('Balance is less than amount to pay out');
|
|
197
|
-
}
|
|
198
214
|
const winners = await getWinners(dailyWinnersPick, draw.entries, ctx);
|
|
199
215
|
if (winners) {
|
|
200
216
|
const winnerStrings = winners.reduce((arr, winner) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lotto.contract.js","sourceRoot":"","sources":["../../src/contracts/lotto.contract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lotto.contract.js","sourceRoot":"","sources":["../../src/contracts/lotto.contract.ts"],"names":[],"mappings":"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"}
|