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,88 +3,63 @@ 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.DiceContract = void 0;
7
- const seedrandom_1 = __importDefault(require("seedrandom"));
6
+ exports.createDiceContract = createDiceContract;
8
7
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
- const CONTRACT_NAME = 'hivedice';
10
- const ACCOUNT = 'beggars';
11
- const TOKEN_SYMBOL = 'HIVE';
12
- const HOUSE_EDGE = 0.05;
13
- const MIN_BET = 1;
14
- const MAX_BET = 10;
8
+ const seedrandom_1 = __importDefault(require("seedrandom"));
9
+ const zod_1 = require("zod");
10
+ const contract_1 = require("./contract");
11
+ const DEFAULT_NAME = 'hivedice';
12
+ const DEFAULT_ACCOUNT = 'beggars';
13
+ const DEFAULT_TOKEN_SYMBOL = 'HIVE';
14
+ const DEFAULT_HOUSE_EDGE = 0.05;
15
+ const DEFAULT_MIN_BET = 1;
16
+ const DEFAULT_MAX_BET = 10;
15
17
  // Provably Fair Random Number Generator
16
- // Uses deterministic blockchain data to ensure results are verifiable by users
17
- // This is the correct approach for transparent, auditable gambling systems
18
18
  const rng = (previousBlockId, blockId, transactionId) => {
19
- // Validate inputs to prevent manipulation
20
19
  if (!previousBlockId || !blockId || !transactionId) {
21
20
  throw new Error('Invalid RNG parameters');
22
21
  }
23
22
  const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}`).double();
24
23
  const randomRoll = Math.floor(random * 100) + 1;
25
- // Ensure result is within expected range
26
24
  if (randomRoll < 1 || randomRoll > 100) {
27
25
  throw new Error('RNG generated invalid result');
28
26
  }
29
27
  return randomRoll;
30
28
  };
31
- // Valid betting currencies
32
- const VALID_CURRENCIES = ['HIVE'];
33
- class DiceContract {
34
- _instance;
35
- blockNumber;
36
- blockId;
37
- previousBlockId;
38
- transactionId;
39
- // Cache for account balance to reduce API calls
40
- balanceCache = null;
41
- balanceCacheTimeout = 30000; // 30 seconds
42
- // Queue system for processing bets to prevent race conditions
43
- betQueue = [];
44
- processingQueue = false;
45
- pendingPayouts = new bignumber_js_1.default(0);
46
- create() {
47
- // Runs every time register is called on this contract
48
- // Do setup logic and code in here (creating a database, etc)
49
- }
50
- destroy() {
51
- // Runs every time unregister is run for this contract
52
- // Close database connections, write to a database with state, etc
53
- }
54
- // Updates the contract with information about the current block
55
- // This is a method automatically called if it exists
56
- updateBlockInfo(blockNumber, blockId, previousBlockId, transactionId) {
57
- // Lifecycle method which sets block info
58
- this.blockNumber = blockNumber;
59
- this.blockId = blockId;
60
- this.previousBlockId = previousBlockId;
61
- this.transactionId = transactionId;
62
- }
63
- /**
64
- * Get Balance
65
- *
66
- * Helper method for getting the contract account balance with caching
67
- * We cache the balance to reduce API calls since it doesn't change frequently
68
- *
69
- * @returns number
70
- */
71
- async getBalance() {
29
+ function createDiceContract(options = {}) {
30
+ const name = options.name || DEFAULT_NAME;
31
+ const account = options.account || DEFAULT_ACCOUNT;
32
+ const tokenSymbol = options.tokenSymbol || DEFAULT_TOKEN_SYMBOL;
33
+ const houseEdge = options.houseEdge ?? DEFAULT_HOUSE_EDGE;
34
+ const minBet = options.minBet ?? DEFAULT_MIN_BET;
35
+ const maxBet = options.maxBet ?? DEFAULT_MAX_BET;
36
+ const validCurrencies = options.validCurrencies || [tokenSymbol];
37
+ const state = {
38
+ streamer: null,
39
+ adapter: null,
40
+ balanceCache: null,
41
+ balanceCacheTimeout: 30000,
42
+ betQueue: [],
43
+ processingQueue: false,
44
+ pendingPayouts: new bignumber_js_1.default(0)
45
+ };
46
+ const rollSchema = zod_1.z.object({
47
+ roll: zod_1.z.number().int().min(2).max(96)
48
+ });
49
+ const getBalance = async () => {
72
50
  const now = Date.now();
73
- // Return cached balance if still valid
74
- if (this.balanceCache && (now - this.balanceCache.timestamp) < this.balanceCacheTimeout) {
75
- return this.balanceCache.balance;
51
+ if (state.balanceCache && (now - state.balanceCache.timestamp) < state.balanceCacheTimeout) {
52
+ return state.balanceCache.balance;
76
53
  }
77
54
  try {
78
- const account = await this._instance['client'].database.getAccounts([ACCOUNT]);
79
- if (account?.[0]) {
80
- const balance = account[0].balance.split(' ');
81
- const amount = new bignumber_js_1.default(balance[0]);
82
- // Validate the amount is a valid number
55
+ const accountInfo = await state.streamer['client'].database.getAccounts([account]);
56
+ if (accountInfo?.[0]) {
57
+ const balanceParts = accountInfo[0].balance.split(' ');
58
+ const amount = new bignumber_js_1.default(balanceParts[0]);
83
59
  if (amount.isNaN() || !amount.isFinite()) {
84
60
  throw new Error('Invalid balance format received from API');
85
61
  }
86
- // Cache the balance
87
- this.balanceCache = {
62
+ state.balanceCache = {
88
63
  balance: amount,
89
64
  timestamp: now
90
65
  };
@@ -92,45 +67,20 @@ class DiceContract {
92
67
  }
93
68
  }
94
69
  catch (error) {
95
- console.error('[DiceContainer] Error fetching balance:', error);
96
- // Return cached balance if available, even if expired
97
- if (this.balanceCache) {
98
- return this.balanceCache.balance;
70
+ console.error('[DiceContract] Error fetching balance:', error);
71
+ if (state.balanceCache) {
72
+ return state.balanceCache.balance;
99
73
  }
100
74
  }
101
75
  return new bignumber_js_1.default(0);
102
- }
103
- /**
104
- * Roll
105
- *
106
- * Automatically called when a custom JSON action matches the following method
107
- *
108
- * @param payload
109
- * @param param1 - sender and amount
110
- */
111
- async roll(payload, { sender, amount }) {
112
- // Add bet to queue for processing
113
- return new Promise((resolve, reject) => {
114
- this.betQueue.push(async () => {
115
- try {
116
- await this.processRoll(payload, { sender, amount });
117
- resolve();
118
- }
119
- catch (error) {
120
- reject(error);
121
- }
122
- });
123
- // Start processing queue if not already running
124
- this.processQueue();
125
- });
126
- }
127
- async processQueue() {
128
- if (this.processingQueue || this.betQueue.length === 0) {
76
+ };
77
+ const processQueue = async () => {
78
+ if (state.processingQueue || state.betQueue.length === 0) {
129
79
  return;
130
80
  }
131
- this.processingQueue = true;
132
- while (this.betQueue.length > 0) {
133
- const nextBet = this.betQueue.shift();
81
+ state.processingQueue = true;
82
+ while (state.betQueue.length > 0) {
83
+ const nextBet = state.betQueue.shift();
134
84
  if (nextBet) {
135
85
  try {
136
86
  await nextBet();
@@ -140,144 +90,129 @@ class DiceContract {
140
90
  }
141
91
  }
142
92
  }
143
- this.processingQueue = false;
144
- }
145
- async processRoll(payload, { sender, amount }) {
93
+ state.processingQueue = false;
94
+ };
95
+ const processRoll = async (payload, ctx) => {
96
+ if (!ctx.transfer) {
97
+ throw new Error('Transfer context required for roll');
98
+ }
99
+ const sender = ctx.sender;
100
+ const amountRaw = ctx.transfer.rawAmount;
146
101
  try {
147
- // Validate payload structure
148
- if (!payload || typeof payload.roll !== 'number') {
149
- throw new Error('Invalid payload structure');
150
- }
151
- // Destructure the values from the payload
152
- const { roll } = payload;
153
- // Validate amount format
154
- if (!amount || typeof amount !== 'string' || !amount.includes(' ')) {
102
+ if (!amountRaw || typeof amountRaw !== 'string' || !amountRaw.includes(' ')) {
155
103
  throw new Error('Invalid amount format');
156
104
  }
157
- // The amount is formatted like 100 HIVE
158
- // The value is the first part, the currency symbol is the second
159
- const amountTrim = amount.split(' ');
105
+ const amountTrim = amountRaw.split(' ');
160
106
  if (amountTrim.length !== 2) {
161
107
  throw new Error('Invalid amount format');
162
108
  }
163
- // Parse the numeric value using BigNumber for precision
164
109
  const amountParsed = new bignumber_js_1.default(amountTrim[0]);
165
- // Validate the parsed amount
166
110
  if (amountParsed.isNaN() || !amountParsed.isFinite() || amountParsed.isNegative()) {
167
111
  throw new Error('Invalid amount value');
168
112
  }
169
- // Format the amount to 3 decimal places
170
- const amountFormatted = amountParsed.toFixed(3);
171
- // Trim any space from the currency symbol
172
113
  const amountCurrency = amountTrim[1].trim();
173
- // console.log(`Roll: ${roll}
174
- // Amount parsed: ${amountParsed}
175
- // Amount formatted: ${amountFormatted}
176
- // Currency: ${amountCurrency}`);
177
- // Get the transaction from the blockchain
178
- const transaction = await this._instance.getTransaction(this.blockNumber, this.transactionId);
179
- // Call the verifyTransfer method to confirm the transfer happened
180
- const verify = await this._instance.verifyTransfer(transaction, sender, 'beggars', amount);
181
- // Get the balance of our contract account
182
- const balance = await this.getBalance();
183
- // Calculate available balance (total - pending payouts)
184
- const availableBalance = balance.minus(this.pendingPayouts);
185
- // Transfer is valid
114
+ const transaction = await state.streamer.getTransaction(ctx.block.number, ctx.transaction.id);
115
+ const verify = await state.streamer.verifyTransfer(transaction, sender, account, amountRaw);
116
+ const balance = await getBalance();
117
+ const availableBalance = balance.minus(state.pendingPayouts);
186
118
  if (verify) {
187
- // Server balance is less than the minimum required, cancel and refund
188
- if (availableBalance.isLessThan(new bignumber_js_1.default(MIN_BET * 2))) {
189
- // Send back what was sent, the server is broke
190
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] The server could not fulfill your bet.`);
119
+ if (availableBalance.isLessThan(new bignumber_js_1.default(minBet * 2))) {
120
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] The server could not fulfill your bet.');
121
+ return;
122
+ }
123
+ if (!validCurrencies.includes(amountCurrency)) {
124
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] Invalid bet currency.');
191
125
  return;
192
126
  }
193
- // Bet amount is valid
194
- if (amountParsed.isGreaterThanOrEqualTo(MIN_BET) && amountParsed.isLessThanOrEqualTo(MAX_BET)) {
195
- // Validate roll is valid (integer between 2-96)
196
- if (Number.isInteger(roll) && roll >= 2 && roll <= 96 && VALID_CURRENCIES.includes(amountCurrency)) {
197
- // Calculate the multiplier percentage
198
- const multiplier = new bignumber_js_1.default(1).minus(HOUSE_EDGE).multipliedBy(100).dividedBy(roll);
199
- // Calculate the number of tokens won
200
- const tokensWonBN = amountParsed.multipliedBy(multiplier);
201
- const tokensWon = tokensWonBN.toFixed(3, bignumber_js_1.default.ROUND_DOWN);
202
- // User won more than the server can afford, refund the bet amount
203
- if (tokensWonBN.isGreaterThan(availableBalance)) {
204
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] The server could not fulfill your bet.`);
205
- return;
206
- }
207
- // Reserve the potential payout
208
- this.pendingPayouts = this.pendingPayouts.plus(tokensWonBN);
209
- // Generate cryptographically secure random number
210
- // Note: This is still deterministic based on blockchain data
211
- // In production, consider using a commit-reveal scheme
212
- const random = rng(this.previousBlockId, this.blockId, this.transactionId);
213
- // Memo that shows in users memo when they win
214
- const winningMemo = `You won ${tokensWon} ${TOKEN_SYMBOL}. Roll: ${random}, Your guess: ${roll}`;
215
- // Memo that shows in users memo when they lose
216
- const losingMemo = `You lost ${amountParsed.toFixed(3)} ${TOKEN_SYMBOL}. Roll: ${random}, Your guess: ${roll}`;
217
- try {
218
- // If random value is less than roll
219
- if (random < roll) {
220
- await this._instance.transferHiveTokens(ACCOUNT, sender, tokensWon, TOKEN_SYMBOL, winningMemo);
221
- }
222
- else {
223
- await this._instance.transferHiveTokens(ACCOUNT, sender, '0.001', TOKEN_SYMBOL, losingMemo);
224
- }
225
- }
226
- finally {
227
- // Release the reserved payout
228
- this.pendingPayouts = this.pendingPayouts.minus(tokensWonBN);
229
- }
127
+ if (amountParsed.isLessThan(minBet) || amountParsed.isGreaterThan(maxBet)) {
128
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You sent an invalid bet amount.');
129
+ return;
130
+ }
131
+ const roll = payload.roll;
132
+ const multiplier = new bignumber_js_1.default(1).minus(houseEdge).multipliedBy(100).dividedBy(roll);
133
+ const tokensWonBN = amountParsed.multipliedBy(multiplier);
134
+ const tokensWon = tokensWonBN.toFixed(3, bignumber_js_1.default.ROUND_DOWN);
135
+ if (tokensWonBN.isGreaterThan(availableBalance)) {
136
+ await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] The server could not fulfill your bet.');
137
+ return;
138
+ }
139
+ state.pendingPayouts = state.pendingPayouts.plus(tokensWonBN);
140
+ const random = rng(ctx.block.previousId, ctx.block.id, ctx.transaction.id);
141
+ const winningMemo = `You won ${tokensWon} ${tokenSymbol}. Roll: ${random}, Your guess: ${roll}`;
142
+ const losingMemo = `You lost ${amountParsed.toFixed(3)} ${tokenSymbol}. Roll: ${random}, Your guess: ${roll}`;
143
+ try {
144
+ if (random < roll) {
145
+ await state.streamer.transferHiveTokens(account, sender, tokensWon, tokenSymbol, winningMemo);
230
146
  }
231
147
  else {
232
- // Invalid bet parameters, refund the user their bet
233
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Invalid bet params.`);
148
+ await state.streamer.transferHiveTokens(account, sender, '0.001', tokenSymbol, losingMemo);
234
149
  }
235
150
  }
236
- else {
237
- try {
238
- // We need to refund the user
239
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent an invalid bet amount.`);
240
- }
241
- catch (e) {
242
- const error = e instanceof Error ? e : new Error(String(e));
243
- console.error(`[DiceContract] Refund error: ${error.message}`, {
244
- sender,
245
- amount: amountTrim[0],
246
- currency: amountTrim[1],
247
- stack: error.stack
248
- });
249
- }
151
+ finally {
152
+ state.pendingPayouts = state.pendingPayouts.minus(tokensWonBN);
250
153
  }
251
154
  }
252
155
  }
253
156
  catch (e) {
254
157
  const error = e instanceof Error ? e : new Error(String(e));
255
- console.error(`[DiceContract] Roll processing error: ${error.message}`, {
158
+ console.error('[DiceContract] Roll processing error:', {
256
159
  sender,
257
- amount,
160
+ amount: amountRaw,
258
161
  payload,
259
- stack: error.stack
162
+ message: error.message
260
163
  });
261
- // Attempt to refund on error if amount is valid
262
164
  try {
263
- if (amount && typeof amount === 'string' && amount.includes(' ')) {
264
- const [amountStr, currency] = amount.split(' ');
165
+ if (amountRaw && typeof amountRaw === 'string' && amountRaw.includes(' ')) {
166
+ const [amountStr, currency] = amountRaw.split(' ');
265
167
  const amountBN = new bignumber_js_1.default(amountStr);
266
168
  if (!amountBN.isNaN() && amountBN.isFinite() && !amountBN.isNegative()) {
267
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountStr, currency, '[Refund] Processing error occurred.');
169
+ await state.streamer.transferHiveTokens(account, sender, amountStr, currency, '[Refund] Processing error occurred.');
268
170
  }
269
171
  }
270
172
  }
271
173
  catch (refundError) {
272
- console.error(`[DiceContract] Failed to refund after error:`, refundError);
174
+ console.error('[DiceContract] Failed to refund after error:', refundError);
273
175
  }
274
176
  throw error;
275
177
  }
276
- }
277
- // Called by our time-based action
278
- testauto() {
279
- console.log('test');
280
- }
178
+ };
179
+ const roll = async (payload, ctx) => {
180
+ return new Promise((resolve, reject) => {
181
+ state.betQueue.push(async () => {
182
+ try {
183
+ await processRoll(payload, ctx);
184
+ resolve();
185
+ }
186
+ catch (error) {
187
+ reject(error);
188
+ }
189
+ });
190
+ processQueue();
191
+ });
192
+ };
193
+ return (0, contract_1.defineContract)({
194
+ name,
195
+ hooks: {
196
+ create: ({ streamer, adapter }) => {
197
+ state.streamer = streamer;
198
+ state.adapter = adapter;
199
+ },
200
+ destroy: () => {
201
+ state.betQueue = [];
202
+ state.processingQueue = false;
203
+ }
204
+ },
205
+ actions: {
206
+ roll: (0, contract_1.action)(roll, {
207
+ schema: rollSchema,
208
+ trigger: 'transfer'
209
+ }),
210
+ testauto: (0, contract_1.action)(() => {
211
+ console.log('[DiceContract] test');
212
+ }, {
213
+ trigger: 'time'
214
+ })
215
+ }
216
+ });
281
217
  }
282
- exports.DiceContract = DiceContract;
283
218
  //# sourceMappingURL=dice.contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dice.contract.js","sourceRoot":"","sources":["../../src/contracts/dice.contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dice.contract.js","sourceRoot":"","sources":["../../src/contracts/dice.contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface ExchangeContractOptions {
2
+ name?: string;
3
+ account?: string;
4
+ feeAccount?: string;
5
+ makerFeeBps?: number;
6
+ takerFeeBps?: number;
7
+ basePrecision?: number;
8
+ quotePrecision?: number;
9
+ defaultAssetPrecision?: number;
10
+ }
11
+ export declare function createExchangeContract(options?: ExchangeContractOptions): import("..").ContractDefinition;