hive-stream 3.0.0 → 3.0.1

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 (101) hide show
  1. package/AGENTS.md +35 -0
  2. package/DOCUMENTATION.md +380 -0
  3. package/README.md +113 -22
  4. package/dist/actions.d.ts +3 -3
  5. package/dist/actions.js +7 -7
  6. package/dist/actions.js.map +1 -1
  7. package/dist/adapters/base.adapter.d.ts +19 -1
  8. package/dist/adapters/base.adapter.js +16 -0
  9. package/dist/adapters/base.adapter.js.map +1 -1
  10. package/dist/adapters/mongodb.adapter.d.ts +5 -11
  11. package/dist/adapters/mongodb.adapter.js +10 -10
  12. package/dist/adapters/mongodb.adapter.js.map +1 -1
  13. package/dist/adapters/postgresql.adapter.d.ts +17 -0
  14. package/dist/adapters/postgresql.adapter.js +99 -8
  15. package/dist/adapters/postgresql.adapter.js.map +1 -1
  16. package/dist/adapters/sqlite.adapter.d.ts +17 -0
  17. package/dist/adapters/sqlite.adapter.js +99 -8
  18. package/dist/adapters/sqlite.adapter.js.map +1 -1
  19. package/dist/api.js +86 -0
  20. package/dist/api.js.map +1 -1
  21. package/dist/config.d.ts +3 -0
  22. package/dist/config.js +6 -3
  23. package/dist/config.js.map +1 -1
  24. package/dist/contracts/coinflip.contract.d.ts +8 -26
  25. package/dist/contracts/coinflip.contract.js +123 -144
  26. package/dist/contracts/coinflip.contract.js.map +1 -1
  27. package/dist/contracts/contract.d.ts +3 -0
  28. package/dist/contracts/contract.js +26 -0
  29. package/dist/contracts/contract.js.map +1 -0
  30. package/dist/contracts/dice.contract.d.ts +9 -36
  31. package/dist/contracts/dice.contract.js +135 -200
  32. package/dist/contracts/dice.contract.js.map +1 -1
  33. package/dist/contracts/exchange.contract.d.ts +11 -0
  34. package/dist/contracts/exchange.contract.js +492 -0
  35. package/dist/contracts/exchange.contract.js.map +1 -0
  36. package/dist/contracts/lotto.contract.d.ts +15 -19
  37. package/dist/contracts/lotto.contract.js +154 -162
  38. package/dist/contracts/lotto.contract.js.map +1 -1
  39. package/dist/contracts/nft.contract.d.ts +4 -0
  40. package/dist/contracts/nft.contract.js +65 -0
  41. package/dist/contracts/nft.contract.js.map +1 -1
  42. package/dist/contracts/poll.contract.d.ts +4 -0
  43. package/dist/contracts/poll.contract.js +105 -0
  44. package/dist/contracts/poll.contract.js.map +1 -0
  45. package/dist/contracts/rps.contract.d.ts +9 -0
  46. package/dist/contracts/rps.contract.js +217 -0
  47. package/dist/contracts/rps.contract.js.map +1 -0
  48. package/dist/contracts/tipjar.contract.d.ts +4 -0
  49. package/dist/contracts/tipjar.contract.js +60 -0
  50. package/dist/contracts/tipjar.contract.js.map +1 -0
  51. package/dist/contracts/token.contract.d.ts +3 -17
  52. package/dist/contracts/token.contract.js +128 -80
  53. package/dist/contracts/token.contract.js.map +1 -1
  54. package/dist/exchanges/coingecko.d.ts +7 -1
  55. package/dist/exchanges/coingecko.js +38 -21
  56. package/dist/exchanges/coingecko.js.map +1 -1
  57. package/dist/exchanges/exchange.d.ts +15 -8
  58. package/dist/exchanges/exchange.js +65 -11
  59. package/dist/exchanges/exchange.js.map +1 -1
  60. package/dist/hive-rates.d.ts +29 -4
  61. package/dist/hive-rates.js +179 -92
  62. package/dist/hive-rates.js.map +1 -1
  63. package/dist/index.d.ts +10 -3
  64. package/dist/index.js +18 -4
  65. package/dist/index.js.map +1 -1
  66. package/dist/streamer.d.ts +101 -8
  67. package/dist/streamer.js +410 -140
  68. package/dist/streamer.js.map +1 -1
  69. package/dist/test.js +11 -12
  70. package/dist/test.js.map +1 -1
  71. package/dist/types/hive-stream.d.ts +85 -14
  72. package/dist/types/rates.d.ts +47 -0
  73. package/dist/types/rates.js +29 -0
  74. package/dist/types/rates.js.map +1 -0
  75. package/dist/utils.d.ts +318 -11
  76. package/dist/utils.js +804 -115
  77. package/dist/utils.js.map +1 -1
  78. package/examples/contracts/README.md +8 -0
  79. package/examples/contracts/exchange.ts +38 -0
  80. package/examples/contracts/poll.ts +21 -0
  81. package/examples/contracts/rps.ts +19 -0
  82. package/examples/contracts/tipjar.ts +19 -0
  83. package/package.json +20 -19
  84. package/tests/actions.spec.ts +7 -7
  85. package/tests/adapters/actions-persistence.spec.ts +4 -4
  86. package/tests/adapters/sqlite.adapter.spec.ts +2 -2
  87. package/tests/contracts/coinflip.contract.spec.ts +26 -154
  88. package/tests/contracts/dice.contract.spec.ts +24 -140
  89. package/tests/contracts/exchange.contract.spec.ts +84 -0
  90. package/tests/contracts/lotto.contract.spec.ts +30 -295
  91. package/tests/contracts/token.contract.spec.ts +72 -316
  92. package/tests/exchanges/coingecko.exchange.spec.ts +169 -0
  93. package/tests/exchanges/exchange.base.spec.ts +246 -0
  94. package/tests/helpers/mock-fetch.ts +165 -0
  95. package/tests/hive-chain-features.spec.ts +238 -0
  96. package/tests/hive-rates.spec.ts +443 -0
  97. package/tests/integration/hive-rates.integration.spec.ts +35 -0
  98. package/tests/streamer-actions.spec.ts +29 -18
  99. package/tests/streamer.spec.ts +142 -49
  100. package/tests/types/rates.spec.ts +216 -0
  101. package/tests/utils.spec.ts +27 -6
@@ -3,71 +3,62 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CoinflipContract = void 0;
6
+ exports.createCoinflipContract = createCoinflipContract;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
7
8
  const seedrandom_1 = __importDefault(require("seedrandom"));
8
9
  const uuid_1 = require("uuid");
9
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
- const CONTRACT_NAME = 'coinflip';
11
- const ACCOUNT = 'beggars';
12
- const TOKEN_SYMBOL = 'HIVE';
13
- const VALID_CURRENCIES = ['HIVE'];
14
- const MAX_AMOUNT = 20;
15
- const MIN_AMOUNT = 0.001;
16
- // Provably Fair Random Number Generator for coinflip
17
- // Uses deterministic blockchain data to ensure results are verifiable by users
10
+ const zod_1 = require("zod");
11
+ const contract_1 = require("./contract");
12
+ const DEFAULT_NAME = 'coinflip';
13
+ const DEFAULT_ACCOUNT = 'beggars';
14
+ const DEFAULT_TOKEN_SYMBOL = 'HIVE';
15
+ const DEFAULT_MIN_AMOUNT = 0.001;
16
+ const DEFAULT_MAX_AMOUNT = 20;
18
17
  function rng(previousBlockId, blockId, transactionId, serverSeed, clientSeed = '') {
19
- // Validate inputs to prevent manipulation
20
18
  if (!previousBlockId || !blockId || !transactionId || !serverSeed) {
21
19
  throw new Error('Invalid RNG parameters');
22
20
  }
23
21
  const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}${clientSeed}${serverSeed}`).double();
24
22
  const randomRoll = Math.floor(random * 2) + 1;
25
- // Ensure result is within expected range
26
23
  if (randomRoll < 1 || randomRoll > 2) {
27
24
  throw new Error('RNG generated invalid result');
28
25
  }
29
26
  return randomRoll === 1 ? 'heads' : 'tails';
30
27
  }
31
- class CoinflipContract {
32
- _instance;
33
- adapter;
34
- blockNumber;
35
- blockId;
36
- previousBlockId;
37
- transactionId;
38
- // Cache for account balance to reduce API calls
39
- balanceCache = null;
40
- balanceCacheTimeout = 30000; // 30 seconds
41
- // Queue system for processing bets to prevent race conditions
42
- betQueue = [];
43
- processingQueue = false;
44
- pendingPayouts = new bignumber_js_1.default(0);
45
- create() {
46
- this.adapter = this._instance.getAdapter();
47
- }
48
- destroy() {
49
- // Cleanup resources
50
- }
51
- /**
52
- * Get Balance with caching
53
- */
54
- async getBalance() {
28
+ function createCoinflipContract(options = {}) {
29
+ const name = options.name || DEFAULT_NAME;
30
+ const account = options.account || DEFAULT_ACCOUNT;
31
+ const tokenSymbol = options.tokenSymbol || DEFAULT_TOKEN_SYMBOL;
32
+ const validCurrencies = options.validCurrencies || [tokenSymbol];
33
+ const minAmount = options.minAmount ?? DEFAULT_MIN_AMOUNT;
34
+ const maxAmount = options.maxAmount ?? DEFAULT_MAX_AMOUNT;
35
+ const state = {
36
+ streamer: null,
37
+ adapter: null,
38
+ balanceCache: null,
39
+ balanceCacheTimeout: 30000,
40
+ betQueue: [],
41
+ processingQueue: false,
42
+ pendingPayouts: new bignumber_js_1.default(0)
43
+ };
44
+ const flipSchema = zod_1.z.object({
45
+ guess: zod_1.z.enum(['heads', 'tails']),
46
+ seed: zod_1.z.string().optional()
47
+ });
48
+ const getBalance = async () => {
55
49
  const now = Date.now();
56
- // Return cached balance if still valid
57
- if (this.balanceCache && (now - this.balanceCache.timestamp) < this.balanceCacheTimeout) {
58
- return this.balanceCache.balance;
50
+ if (state.balanceCache && (now - state.balanceCache.timestamp) < state.balanceCacheTimeout) {
51
+ return state.balanceCache.balance;
59
52
  }
60
53
  try {
61
- const account = await this._instance['client'].database.getAccounts([ACCOUNT]);
62
- if (account?.[0]) {
63
- const balance = account[0].balance.split(' ');
64
- const amount = new bignumber_js_1.default(balance[0]);
65
- // Validate the amount is a valid number
54
+ const accountInfo = await state.streamer['client'].database.getAccounts([account]);
55
+ if (accountInfo?.[0]) {
56
+ const balanceParts = accountInfo[0].balance.split(' ');
57
+ const amount = new bignumber_js_1.default(balanceParts[0]);
66
58
  if (amount.isNaN() || !amount.isFinite()) {
67
59
  throw new Error('Invalid balance format received from API');
68
60
  }
69
- // Cache the balance
70
- this.balanceCache = {
61
+ state.balanceCache = {
71
62
  balance: amount,
72
63
  timestamp: now
73
64
  };
@@ -76,43 +67,19 @@ class CoinflipContract {
76
67
  }
77
68
  catch (error) {
78
69
  console.error('[CoinflipContract] Error fetching balance:', error);
79
- // Return cached balance if available, even if expired
80
- if (this.balanceCache) {
81
- return this.balanceCache.balance;
70
+ if (state.balanceCache) {
71
+ return state.balanceCache.balance;
82
72
  }
83
73
  }
84
74
  return new bignumber_js_1.default(0);
85
- }
86
- updateBlockInfo(blockNumber, blockId, previousBlockId, transactionId) {
87
- // Lifecycle method which sets block info
88
- this.blockNumber = blockNumber;
89
- this.blockId = blockId;
90
- this.previousBlockId = previousBlockId;
91
- this.transactionId = transactionId;
92
- }
93
- async flip(payload, { sender, amount }) {
94
- // Add bet to queue for processing
95
- return new Promise((resolve, reject) => {
96
- this.betQueue.push(async () => {
97
- try {
98
- await this.processFlip(payload, { sender, amount });
99
- resolve();
100
- }
101
- catch (error) {
102
- reject(error);
103
- }
104
- });
105
- // Start processing queue if not already running
106
- this.processQueue();
107
- });
108
- }
109
- async processQueue() {
110
- if (this.processingQueue || this.betQueue.length === 0) {
75
+ };
76
+ const processQueue = async () => {
77
+ if (state.processingQueue || state.betQueue.length === 0) {
111
78
  return;
112
79
  }
113
- this.processingQueue = true;
114
- while (this.betQueue.length > 0) {
115
- const nextBet = this.betQueue.shift();
80
+ state.processingQueue = true;
81
+ while (state.betQueue.length > 0) {
82
+ const nextBet = state.betQueue.shift();
116
83
  if (nextBet) {
117
84
  try {
118
85
  await nextBet();
@@ -122,133 +89,145 @@ class CoinflipContract {
122
89
  }
123
90
  }
124
91
  }
125
- this.processingQueue = false;
126
- }
127
- async processFlip(payload, { sender, amount }) {
92
+ state.processingQueue = false;
93
+ };
94
+ const processFlip = async (payload, ctx) => {
95
+ if (!ctx.transfer) {
96
+ throw new Error('Transfer context required for flip');
97
+ }
98
+ const sender = ctx.sender;
99
+ const amountRaw = ctx.transfer.rawAmount;
128
100
  try {
129
- // Validate payload structure
130
- if (!payload || typeof payload !== 'object') {
131
- throw new Error('Invalid payload structure');
132
- }
133
- const { guess, seed } = payload;
134
- const VALID_GUESSES = ['heads', 'tails'];
135
- // Validate amount format
136
- if (!amount || typeof amount !== 'string' || !amount.includes(' ')) {
101
+ if (!amountRaw || typeof amountRaw !== 'string' || !amountRaw.includes(' ')) {
137
102
  throw new Error('Invalid amount format');
138
103
  }
139
- const amountTrim = amount.split(' ');
104
+ const amountTrim = amountRaw.split(' ');
140
105
  if (amountTrim.length !== 2) {
141
106
  throw new Error('Invalid amount format');
142
107
  }
143
- // Parse the numeric value using BigNumber for precision
144
108
  const amountParsed = new bignumber_js_1.default(amountTrim[0]);
145
- // Validate the parsed amount
146
109
  if (amountParsed.isNaN() || !amountParsed.isFinite() || amountParsed.isNegative()) {
147
110
  throw new Error('Invalid amount value');
148
111
  }
149
112
  const amountCurrency = amountTrim[1].trim();
150
- const transaction = await this._instance.getTransaction(this.blockNumber, this.transactionId);
151
- const verify = await this._instance.verifyTransfer(transaction, sender, ACCOUNT, amount);
152
- // Get the balance of our contract account
153
- const balance = await this.getBalance();
154
- // Calculate available balance (total - pending payouts)
155
- const availableBalance = balance.minus(this.pendingPayouts);
113
+ const transaction = await state.streamer.getTransaction(ctx.block.number, ctx.transaction.id);
114
+ const verify = await state.streamer.verifyTransfer(transaction, sender, account, amountRaw);
115
+ const balance = await getBalance();
116
+ const availableBalance = balance.minus(state.pendingPayouts);
156
117
  if (verify) {
157
- // User sent an invalid currency
158
- if (!VALID_CURRENCIES.includes(amountCurrency)) {
159
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent an invalid currency.`);
118
+ if (!validCurrencies.includes(amountCurrency)) {
119
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You sent an invalid currency.');
160
120
  return;
161
121
  }
162
- // Validate bet amount is within bounds
163
- if (amountParsed.isLessThan(MIN_AMOUNT)) {
164
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Bet amount too small. Minimum: ${MIN_AMOUNT} ${amountCurrency}.`);
122
+ if (amountParsed.isLessThan(minAmount)) {
123
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], `[Refund] Bet amount too small. Minimum: ${minAmount} ${amountCurrency}.`);
165
124
  return;
166
125
  }
167
- // User sent too much, refund the bet
168
- if (amountParsed.isGreaterThan(MAX_AMOUNT)) {
169
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent too much. Maximum: ${MAX_AMOUNT} ${amountCurrency}.`);
126
+ if (amountParsed.isGreaterThan(maxAmount)) {
127
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], `[Refund] You sent too much. Maximum: ${maxAmount} ${amountCurrency}.`);
170
128
  return;
171
129
  }
172
- // Calculate potential payout (2x bet amount)
173
130
  const potentialPayout = amountParsed.multipliedBy(2);
174
- // Check if server can afford the payout
175
131
  if (potentialPayout.isGreaterThan(availableBalance)) {
176
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] The server cannot afford this bet payout.`);
177
- return;
178
- }
179
- // Invalid guess
180
- if (!guess || !VALID_GUESSES.includes(guess)) {
181
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Invalid guess. Please only send heads or tails.`);
132
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] The server cannot afford this bet payout.');
182
133
  return;
183
134
  }
184
- // Reserve the potential payout
185
- this.pendingPayouts = this.pendingPayouts.plus(potentialPayout);
135
+ state.pendingPayouts = state.pendingPayouts.plus(potentialPayout);
186
136
  try {
187
137
  const serverSeed = (0, uuid_1.v4)();
188
- // Validate server seed was generated
189
138
  if (!serverSeed || typeof serverSeed !== 'string') {
190
139
  throw new Error('Failed to generate server seed');
191
140
  }
192
- const generatedGuess = rng(this.previousBlockId, this.blockId, this.transactionId, serverSeed, seed ?? '');
193
- if (generatedGuess === guess) {
194
- await this.adapter.addEvent(new Date(), CONTRACT_NAME, 'flip', payload, {
141
+ const generatedGuess = rng(ctx.block.previousId, ctx.block.id, ctx.transaction.id, serverSeed, payload.seed ?? '');
142
+ if (generatedGuess === payload.guess) {
143
+ await state.adapter.addEvent(new Date(), name, 'flip', payload, {
195
144
  action: 'transfer',
196
145
  data: {
197
146
  date: new Date(),
198
- guess,
147
+ guess: payload.guess,
199
148
  serverSeed,
200
- previousBlockId: this.previousBlockId,
201
- blockId: this.blockId,
202
- transactionId: this.transactionId,
149
+ previousBlockId: ctx.block.previousId,
150
+ blockId: ctx.block.id,
151
+ transactionId: ctx.transaction.id,
203
152
  userWon: 'true'
204
153
  }
205
154
  });
206
- await this._instance.transferHiveTokens(ACCOUNT, sender, potentialPayout.toFixed(3), amountTrim[1], `[Winner] | Guess: ${guess} | Server Roll: ${generatedGuess} | Previous block id: ${this.previousBlockId} | BlockID: ${this.blockId} | Trx ID: ${this.transactionId} | Server Seed: ${serverSeed}`);
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}`);
207
156
  return;
208
157
  }
209
- await this.adapter.addEvent(new Date(), CONTRACT_NAME, 'flip', payload, {
158
+ await state.adapter.addEvent(new Date(), name, 'flip', payload, {
210
159
  action: 'transfer',
211
160
  data: {
212
- guess,
161
+ guess: payload.guess,
213
162
  serverSeed,
214
- previousBlockId: this.previousBlockId,
215
- blockId: this.blockId,
216
- transactionId: this.transactionId,
163
+ previousBlockId: ctx.block.previousId,
164
+ blockId: ctx.block.id,
165
+ transactionId: ctx.transaction.id,
217
166
  userWon: 'false'
218
167
  }
219
168
  });
220
- await this._instance.transferHiveTokens(ACCOUNT, sender, '0.001', amountTrim[1], `[Lost] | Guess: ${guess} | Server Roll: ${generatedGuess} | Previous block id: ${this.previousBlockId} | BlockID: ${this.blockId} | Trx ID: ${this.transactionId} | Server Seed: ${serverSeed}`);
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}`);
221
170
  }
222
171
  finally {
223
- // Release the reserved payout
224
- this.pendingPayouts = this.pendingPayouts.minus(potentialPayout);
172
+ state.pendingPayouts = state.pendingPayouts.minus(potentialPayout);
225
173
  }
226
174
  }
227
175
  }
228
176
  catch (e) {
229
177
  const error = e instanceof Error ? e : new Error(String(e));
230
- console.error(`[CoinflipContract] Flip processing error: ${error.message}`, {
178
+ console.error('[CoinflipContract] Flip processing error:', {
231
179
  sender,
232
- amount,
180
+ amount: amountRaw,
233
181
  payload,
234
- stack: error.stack
182
+ message: error.message
235
183
  });
236
- // Attempt to refund on error if amount is valid
237
184
  try {
238
- if (amount && typeof amount === 'string' && amount.includes(' ')) {
239
- const [amountStr, currency] = amount.split(' ');
185
+ if (amountRaw && typeof amountRaw === 'string' && amountRaw.includes(' ')) {
186
+ const [amountStr, currency] = amountRaw.split(' ');
240
187
  const amountBN = new bignumber_js_1.default(amountStr);
241
188
  if (!amountBN.isNaN() && amountBN.isFinite() && !amountBN.isNegative()) {
242
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountStr, currency, '[Refund] Processing error occurred.');
189
+ await state.streamer.transferHiveTokens(account, sender, amountStr, currency, '[Refund] Processing error occurred.');
243
190
  }
244
191
  }
245
192
  }
246
193
  catch (refundError) {
247
- console.error(`[CoinflipContract] Failed to refund after error:`, refundError);
194
+ console.error('[CoinflipContract] Failed to refund after error:', refundError);
248
195
  }
249
196
  throw error;
250
197
  }
251
- }
198
+ };
199
+ const flip = async (payload, ctx) => {
200
+ return new Promise((resolve, reject) => {
201
+ state.betQueue.push(async () => {
202
+ try {
203
+ await processFlip(payload, ctx);
204
+ resolve();
205
+ }
206
+ catch (error) {
207
+ reject(error);
208
+ }
209
+ });
210
+ processQueue();
211
+ });
212
+ };
213
+ return (0, contract_1.defineContract)({
214
+ name,
215
+ hooks: {
216
+ create: ({ streamer, adapter }) => {
217
+ state.streamer = streamer;
218
+ state.adapter = adapter;
219
+ },
220
+ destroy: () => {
221
+ state.betQueue = [];
222
+ state.processingQueue = false;
223
+ }
224
+ },
225
+ actions: {
226
+ flip: (0, contract_1.action)(flip, {
227
+ schema: flipSchema,
228
+ trigger: 'transfer'
229
+ })
230
+ }
231
+ });
252
232
  }
253
- exports.CoinflipContract = CoinflipContract;
254
233
  //# sourceMappingURL=coinflip.contract.js.map
@@ -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,3 @@
1
+ import type { ContractActionDefinition, ContractContext, ContractDefinition } from '../types/hive-stream';
2
+ export declare function action<Payload>(handler: (payload: Payload, ctx: ContractContext) => void | Promise<void>, options?: Omit<ContractActionDefinition<Payload>, 'handler'>): ContractActionDefinition<Payload>;
3
+ export declare function defineContract(definition: ContractDefinition): ContractDefinition;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.action = action;
4
+ exports.defineContract = defineContract;
5
+ function action(handler, options = {}) {
6
+ return {
7
+ handler,
8
+ ...options,
9
+ };
10
+ }
11
+ function defineContract(definition) {
12
+ if (!definition || typeof definition !== 'object') {
13
+ throw new Error('Contract definition must be an object');
14
+ }
15
+ if (!definition.name || typeof definition.name !== 'string') {
16
+ throw new Error('Contract definition requires a name');
17
+ }
18
+ if (!definition.actions || typeof definition.actions !== 'object') {
19
+ throw new Error(`Contract '${definition.name}' must define actions`);
20
+ }
21
+ if (Object.keys(definition.actions).length === 0) {
22
+ throw new Error(`Contract '${definition.name}' must define at least one action`);
23
+ }
24
+ return definition;
25
+ }
26
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/contracts/contract.ts"],"names":[],"mappings":";;AAEA,wBAQC;AAED,wCAkBC;AA5BD,SAAgB,MAAM,CAClB,OAAyE,EACzE,UAA8D,EAAE;IAEhE,OAAO;QACH,OAAO;QACP,GAAG,OAAO;KACb,CAAC;AACN,CAAC;AAED,SAAgB,cAAc,CAAC,UAA8B;IACzD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,CAAC,IAAI,uBAAuB,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,CAAC,IAAI,mCAAmC,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -1,37 +1,10 @@
1
- import { Streamer } from './../streamer';
2
- export declare class DiceContract {
3
- _instance: Streamer;
4
- private blockNumber;
5
- private blockId;
6
- private previousBlockId;
7
- private transactionId;
8
- private balanceCache;
9
- private readonly balanceCacheTimeout;
10
- private betQueue;
11
- private processingQueue;
12
- private pendingPayouts;
13
- create(): void;
14
- destroy(): void;
15
- updateBlockInfo(blockNumber: any, blockId: any, previousBlockId: any, transactionId: any): void;
16
- /**
17
- * Get Balance
18
- *
19
- * Helper method for getting the contract account balance with caching
20
- * We cache the balance to reduce API calls since it doesn't change frequently
21
- *
22
- * @returns number
23
- */
24
- private getBalance;
25
- /**
26
- * Roll
27
- *
28
- * Automatically called when a custom JSON action matches the following method
29
- *
30
- * @param payload
31
- * @param param1 - sender and amount
32
- */
33
- private roll;
34
- private processQueue;
35
- private processRoll;
36
- private testauto;
1
+ export interface DiceContractOptions {
2
+ name?: string;
3
+ account?: string;
4
+ tokenSymbol?: string;
5
+ validCurrencies?: string[];
6
+ houseEdge?: number;
7
+ minBet?: number;
8
+ maxBet?: number;
37
9
  }
10
+ export declare function createDiceContract(options?: DiceContractOptions): import("..").ContractDefinition;