hive-stream 2.0.6 → 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 (123) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +2 -2
  3. package/.travis.yml +11 -11
  4. package/AGENTS.md +35 -0
  5. package/CHANGELOG.md +166 -0
  6. package/CLAUDE.md +75 -0
  7. package/DOCUMENTATION.md +380 -0
  8. package/LICENSE +21 -21
  9. package/README.md +429 -238
  10. package/dist/actions.d.ts +41 -10
  11. package/dist/actions.js +126 -23
  12. package/dist/actions.js.map +1 -1
  13. package/dist/adapters/base.adapter.d.ts +43 -25
  14. package/dist/adapters/base.adapter.js +79 -49
  15. package/dist/adapters/base.adapter.js.map +1 -1
  16. package/dist/adapters/mongodb.adapter.d.ts +44 -37
  17. package/dist/adapters/mongodb.adapter.js +363 -158
  18. package/dist/adapters/mongodb.adapter.js.map +1 -1
  19. package/dist/adapters/postgresql.adapter.d.ts +66 -0
  20. package/dist/adapters/postgresql.adapter.js +598 -0
  21. package/dist/adapters/postgresql.adapter.js.map +1 -0
  22. package/dist/adapters/sqlite.adapter.d.ts +57 -41
  23. package/dist/adapters/sqlite.adapter.js +561 -397
  24. package/dist/adapters/sqlite.adapter.js.map +1 -1
  25. package/dist/api.d.ts +6 -6
  26. package/dist/api.js +181 -55
  27. package/dist/api.js.map +1 -1
  28. package/dist/config.d.ts +19 -16
  29. package/dist/config.js +21 -18
  30. package/dist/config.js.map +1 -1
  31. package/dist/contracts/coinflip.contract.d.ts +9 -14
  32. package/dist/contracts/coinflip.contract.js +232 -94
  33. package/dist/contracts/coinflip.contract.js.map +1 -1
  34. package/dist/contracts/contract.d.ts +3 -0
  35. package/dist/contracts/contract.js +26 -0
  36. package/dist/contracts/contract.js.map +1 -0
  37. package/dist/contracts/dice.contract.d.ts +10 -29
  38. package/dist/contracts/dice.contract.js +217 -155
  39. package/dist/contracts/dice.contract.js.map +1 -1
  40. package/dist/contracts/exchange.contract.d.ts +11 -0
  41. package/dist/contracts/exchange.contract.js +492 -0
  42. package/dist/contracts/exchange.contract.js.map +1 -0
  43. package/dist/contracts/lotto.contract.d.ts +16 -20
  44. package/dist/contracts/lotto.contract.js +238 -246
  45. package/dist/contracts/lotto.contract.js.map +1 -1
  46. package/dist/contracts/nft.contract.d.ts +28 -0
  47. package/dist/contracts/nft.contract.js +598 -0
  48. package/dist/contracts/nft.contract.js.map +1 -0
  49. package/dist/contracts/poll.contract.d.ts +4 -0
  50. package/dist/contracts/poll.contract.js +105 -0
  51. package/dist/contracts/poll.contract.js.map +1 -0
  52. package/dist/contracts/rps.contract.d.ts +9 -0
  53. package/dist/contracts/rps.contract.js +217 -0
  54. package/dist/contracts/rps.contract.js.map +1 -0
  55. package/dist/contracts/tipjar.contract.d.ts +4 -0
  56. package/dist/contracts/tipjar.contract.js +60 -0
  57. package/dist/contracts/tipjar.contract.js.map +1 -0
  58. package/dist/contracts/token.contract.d.ts +4 -0
  59. package/dist/contracts/token.contract.js +311 -0
  60. package/dist/contracts/token.contract.js.map +1 -0
  61. package/dist/exchanges/bittrex.d.ts +6 -6
  62. package/dist/exchanges/bittrex.js +34 -34
  63. package/dist/exchanges/coingecko.d.ts +11 -0
  64. package/dist/exchanges/coingecko.js +57 -0
  65. package/dist/exchanges/coingecko.js.map +1 -0
  66. package/dist/exchanges/exchange.d.ts +16 -9
  67. package/dist/exchanges/exchange.js +80 -26
  68. package/dist/exchanges/exchange.js.map +1 -1
  69. package/dist/hive-rates.d.ts +34 -9
  70. package/dist/hive-rates.js +208 -75
  71. package/dist/hive-rates.js.map +1 -1
  72. package/dist/index.d.ts +19 -11
  73. package/dist/index.js +47 -32
  74. package/dist/index.js.map +1 -1
  75. package/dist/streamer.d.ts +233 -93
  76. package/dist/streamer.js +1063 -545
  77. package/dist/streamer.js.map +1 -1
  78. package/dist/test.d.ts +1 -1
  79. package/dist/test.js +24 -25
  80. package/dist/test.js.map +1 -1
  81. package/dist/types/hive-stream.d.ts +106 -6
  82. package/dist/types/hive-stream.js +2 -2
  83. package/dist/types/rates.d.ts +47 -0
  84. package/dist/types/rates.js +29 -0
  85. package/dist/types/rates.js.map +1 -0
  86. package/dist/utils.d.ts +334 -27
  87. package/dist/utils.js +960 -261
  88. package/dist/utils.js.map +1 -1
  89. package/ecosystem.config.js +17 -17
  90. package/examples/contracts/README.md +8 -0
  91. package/examples/contracts/exchange.ts +38 -0
  92. package/examples/contracts/poll.ts +21 -0
  93. package/examples/contracts/rps.ts +19 -0
  94. package/examples/contracts/tipjar.ts +19 -0
  95. package/jest.config.js +8 -8
  96. package/package.json +54 -48
  97. package/test-contract-block.md +18 -18
  98. package/tests/actions.spec.ts +252 -0
  99. package/tests/adapters/actions-persistence.spec.ts +144 -0
  100. package/tests/adapters/postgresql.adapter.spec.ts +127 -0
  101. package/tests/adapters/sqlite.adapter.spec.ts +180 -42
  102. package/tests/contracts/coinflip.contract.spec.ts +94 -132
  103. package/tests/contracts/dice.contract.spec.ts +87 -160
  104. package/tests/contracts/entrants.json +728 -728
  105. package/tests/contracts/exchange.contract.spec.ts +84 -0
  106. package/tests/contracts/lotto.contract.spec.ts +59 -324
  107. package/tests/contracts/nft.contract.spec.ts +948 -0
  108. package/tests/contracts/token.contract.spec.ts +90 -0
  109. package/tests/exchanges/coingecko.exchange.spec.ts +169 -0
  110. package/tests/exchanges/exchange.base.spec.ts +246 -0
  111. package/tests/helpers/mock-adapter.ts +214 -0
  112. package/tests/helpers/mock-fetch.ts +165 -0
  113. package/tests/hive-chain-features.spec.ts +238 -0
  114. package/tests/hive-rates.spec.ts +443 -0
  115. package/tests/integration/hive-rates.integration.spec.ts +35 -0
  116. package/tests/setup.ts +29 -18
  117. package/tests/streamer-actions.spec.ts +274 -0
  118. package/tests/streamer.spec.ts +342 -152
  119. package/tests/types/rates.spec.ts +216 -0
  120. package/tests/utils.spec.ts +113 -95
  121. package/tsconfig.build.json +3 -22
  122. package/tslint.json +20 -20
  123. package/wallaby.js +26 -26
@@ -1,156 +1,218 @@
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.DiceContract = void 0;
7
- const seedrandom_1 = __importDefault(require("seedrandom"));
8
- 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;
15
- // Random Number Generator
16
- const rng = (previousBlockId, blockId, transactionId) => {
17
- const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}`).double();
18
- const randomRoll = Math.floor(random * 100) + 1;
19
- return randomRoll;
20
- };
21
- // Valid betting currencies
22
- const VALID_CURRENCIES = ['HIVE'];
23
- class DiceContract {
24
- // tslint:disable-next-line: variable-name
25
- _instance;
26
- blockNumber;
27
- blockId;
28
- previousBlockId;
29
- transactionId;
30
- create() {
31
- // Runs every time register is called on this contract
32
- // Do setup logic and code in here (creating a database, etc)
33
- }
34
- destroy() {
35
- // Runs every time unregister is run for this contract
36
- // Close database connections, write to a database with state, etc
37
- }
38
- // Updates the contract with information about the current block
39
- // This is a method automatically called if it exists
40
- updateBlockInfo(blockNumber, blockId, previousBlockId, transactionId) {
41
- // Lifecycle method which sets block info
42
- this.blockNumber = blockNumber;
43
- this.blockId = blockId;
44
- this.previousBlockId = previousBlockId;
45
- this.transactionId = transactionId;
46
- }
47
- /**
48
- * Get Balance
49
- *
50
- * Helper method for getting the contract account balance. In the case of our dice contract
51
- * we want to make sure the account has enough money to pay out any bets
52
- *
53
- * @returns number
54
- */
55
- async getBalance() {
56
- const account = await this._instance['client'].database.getAccounts([ACCOUNT]);
57
- if (account?.[0]) {
58
- const balance = account[0].balance.split(' ');
59
- const amount = balance[0];
60
- return parseFloat(amount);
61
- }
62
- return null;
63
- }
64
- /**
65
- * Roll
66
- *
67
- * Automatically called when a custom JSON action matches the following method
68
- *
69
- * @param payload
70
- * @param param1 - sender and amount
71
- */
72
- async roll(payload, { sender, amount }) {
73
- try {
74
- // Destructure the values from the payload
75
- const { roll } = payload;
76
- // The amount is formatted like 100 HIVE
77
- // The value is the first part, the currency symbol is the second
78
- const amountTrim = amount.split(' ');
79
- // Parse the numeric value as a real value
80
- const amountParsed = parseFloat(amountTrim[0]);
81
- // Format the amount to 3 decimal places
82
- const amountFormatted = parseFloat(amountTrim[0]).toFixed(3);
83
- // Trim any space from the currency symbol
84
- const amountCurrency = amountTrim[1].trim();
85
- // console.log(`Roll: ${roll}
86
- // Amount parsed: ${amountParsed}
87
- // Amount formatted: ${amountFormatted}
88
- // Currency: ${amountCurrency}`);
89
- // Get the transaction from the blockchain
90
- const transaction = await this._instance.getTransaction(this.blockNumber, this.transactionId);
91
- // Call the verifyTransfer method to confirm the transfer happened
92
- const verify = await this._instance.verifyTransfer(transaction, sender, 'beggars', amount);
93
- // Get the balance of our contract account
94
- const balance = await this.getBalance();
95
- // Transfer is valid
96
- if (verify) {
97
- // Server balance is less than the max bet, cancel and refund
98
- if (balance < MAX_BET) {
99
- // Send back what was sent, the server is broke
100
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] The server could not fufill your bet.`);
101
- return;
102
- }
103
- // Bet amount is valid
104
- if (amountParsed >= MIN_BET && amountParsed <= MAX_BET) {
105
- // Validate roll is valid
106
- if ((roll >= 2 && roll <= 96) && VALID_CURRENCIES.includes(amountCurrency)) {
107
- // Roll a random value
108
- const random = rng(this.previousBlockId, this.blockId, this.transactionId);
109
- // Calculate the multiplier percentage
110
- const multiplier = new bignumber_js_1.default(1).minus(HOUSE_EDGE).multipliedBy(100).dividedBy(roll);
111
- // Calculate the number of tokens won
112
- const tokensWon = new bignumber_js_1.default(amountParsed).multipliedBy(multiplier).toFixed(3, bignumber_js_1.default.ROUND_DOWN);
113
- // Memo that shows in users memo when they win
114
- const winningMemo = `You won ${tokensWon} ${TOKEN_SYMBOL}. Roll: ${random}, Your guess: ${roll}`;
115
- // Memo that shows in users memo when they lose
116
- const losingMemo = `You lost ${amountParsed} ${TOKEN_SYMBOL}. Roll: ${random}, Your guess: ${roll}`;
117
- // User won more than the server can afford, refund the bet amount
118
- if (parseFloat(tokensWon) > balance) {
119
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] The server could not fufill your bet.`);
120
- return;
121
- }
122
- // If random value is less than roll
123
- if (random < roll) {
124
- await this._instance.transferHiveTokens(ACCOUNT, sender, tokensWon, TOKEN_SYMBOL, winningMemo);
125
- }
126
- else {
127
- await this._instance.transferHiveTokens(ACCOUNT, sender, '0.001', TOKEN_SYMBOL, losingMemo);
128
- }
129
- }
130
- else {
131
- // Invalid bet parameters, refund the user their bet
132
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Invalid bet params.`);
133
- }
134
- }
135
- else {
136
- try {
137
- // We need to refund the user
138
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent an invalid bet amount.`);
139
- }
140
- catch (e) {
141
- console.log(e);
142
- }
143
- }
144
- }
145
- }
146
- catch (e) {
147
- throw e;
148
- }
149
- }
150
- // Called by our time-based action
151
- testauto() {
152
- console.log('test');
153
- }
154
- }
155
- exports.DiceContract = DiceContract;
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.createDiceContract = createDiceContract;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
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;
17
+ // Provably Fair Random Number Generator
18
+ const rng = (previousBlockId, blockId, transactionId) => {
19
+ if (!previousBlockId || !blockId || !transactionId) {
20
+ throw new Error('Invalid RNG parameters');
21
+ }
22
+ const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}`).double();
23
+ const randomRoll = Math.floor(random * 100) + 1;
24
+ if (randomRoll < 1 || randomRoll > 100) {
25
+ throw new Error('RNG generated invalid result');
26
+ }
27
+ return randomRoll;
28
+ };
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 () => {
50
+ const now = Date.now();
51
+ if (state.balanceCache && (now - state.balanceCache.timestamp) < state.balanceCacheTimeout) {
52
+ return state.balanceCache.balance;
53
+ }
54
+ try {
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]);
59
+ if (amount.isNaN() || !amount.isFinite()) {
60
+ throw new Error('Invalid balance format received from API');
61
+ }
62
+ state.balanceCache = {
63
+ balance: amount,
64
+ timestamp: now
65
+ };
66
+ return amount;
67
+ }
68
+ }
69
+ catch (error) {
70
+ console.error('[DiceContract] Error fetching balance:', error);
71
+ if (state.balanceCache) {
72
+ return state.balanceCache.balance;
73
+ }
74
+ }
75
+ return new bignumber_js_1.default(0);
76
+ };
77
+ const processQueue = async () => {
78
+ if (state.processingQueue || state.betQueue.length === 0) {
79
+ return;
80
+ }
81
+ state.processingQueue = true;
82
+ while (state.betQueue.length > 0) {
83
+ const nextBet = state.betQueue.shift();
84
+ if (nextBet) {
85
+ try {
86
+ await nextBet();
87
+ }
88
+ catch (error) {
89
+ console.error('[DiceContract] Queue processing error:', error);
90
+ }
91
+ }
92
+ }
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;
101
+ try {
102
+ if (!amountRaw || typeof amountRaw !== 'string' || !amountRaw.includes(' ')) {
103
+ throw new Error('Invalid amount format');
104
+ }
105
+ const amountTrim = amountRaw.split(' ');
106
+ if (amountTrim.length !== 2) {
107
+ throw new Error('Invalid amount format');
108
+ }
109
+ const amountParsed = new bignumber_js_1.default(amountTrim[0]);
110
+ if (amountParsed.isNaN() || !amountParsed.isFinite() || amountParsed.isNegative()) {
111
+ throw new Error('Invalid amount value');
112
+ }
113
+ const amountCurrency = amountTrim[1].trim();
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);
118
+ if (verify) {
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.');
125
+ return;
126
+ }
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);
146
+ }
147
+ else {
148
+ await state.streamer.transferHiveTokens(account, sender, '0.001', tokenSymbol, losingMemo);
149
+ }
150
+ }
151
+ finally {
152
+ state.pendingPayouts = state.pendingPayouts.minus(tokensWonBN);
153
+ }
154
+ }
155
+ }
156
+ catch (e) {
157
+ const error = e instanceof Error ? e : new Error(String(e));
158
+ console.error('[DiceContract] Roll processing error:', {
159
+ sender,
160
+ amount: amountRaw,
161
+ payload,
162
+ message: error.message
163
+ });
164
+ try {
165
+ if (amountRaw && typeof amountRaw === 'string' && amountRaw.includes(' ')) {
166
+ const [amountStr, currency] = amountRaw.split(' ');
167
+ const amountBN = new bignumber_js_1.default(amountStr);
168
+ if (!amountBN.isNaN() && amountBN.isFinite() && !amountBN.isNegative()) {
169
+ await state.streamer.transferHiveTokens(account, sender, amountStr, currency, '[Refund] Processing error occurred.');
170
+ }
171
+ }
172
+ }
173
+ catch (refundError) {
174
+ console.error('[DiceContract] Failed to refund after error:', refundError);
175
+ }
176
+ throw error;
177
+ }
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
+ });
217
+ }
156
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":";;;;;AAsCA,gDAuNC;AA7PD,gEAAqC;AACrC,4DAAoC;AACpC,6BAAwB;AACxB,yCAAoD;AAEpD,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,wCAAwC;AACxC,MAAM,GAAG,GAAG,CAAC,eAAuB,EAAE,OAAe,EAAE,aAAqB,EAAU,EAAE;IACpF,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,GAAG,eAAe,GAAG,OAAO,GAAG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACnF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAYF,SAAgB,kBAAkB,CAAC,UAA+B,EAAE;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC;IACjD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG;QACV,QAAQ,EAAE,IAAW;QACrB,OAAO,EAAE,IAAW;QACpB,YAAY,EAAE,IAAwD;QACtE,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,EAAgC;QAC1C,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;KACnC,CAAC;IAEF,MAAM,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,IAAwB,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;QACtC,CAAC;QAED,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAEnF,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAI,WAAW,CAAC,CAAC,CAAC,CAAC,OAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9C,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAChE,CAAC;gBAED,KAAK,CAAC,YAAY,GAAG;oBACjB,OAAO,EAAE,MAAM;oBACf,SAAS,EAAE,GAAG;iBACjB,CAAC;gBAEF,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;YACtC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO;QACX,CAAC;QAED,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAE7B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC;oBACD,MAAM,OAAO,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,OAAyB,EAAE,GAAQ,EAAiB,EAAE;QAC7E,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEzC,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,sBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;gBAChF,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAE5F,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAE7D,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,sBAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC;oBAC1I,OAAO;gBACX,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC5C,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;oBACzH,OAAO;gBACX,CAAC;gBAED,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxE,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAAC;oBACnI,OAAO;gBACX,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,MAAM,UAAU,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvF,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,sBAAS,CAAC,UAAU,CAAC,CAAC;gBAE/D,IAAI,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC9C,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC;oBAC1I,OAAO;gBACX,CAAC;gBAED,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE9D,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3E,MAAM,WAAW,GAAG,WAAW,SAAS,IAAI,WAAW,WAAW,MAAM,iBAAiB,IAAI,EAAE,CAAC;gBAChG,MAAM,UAAU,GAAG,YAAY,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,WAAW,MAAM,iBAAiB,IAAI,EAAE,CAAC;gBAE9G,IAAI,CAAC;oBACD,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;wBAChB,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAClG,CAAC;yBAAM,CAAC;wBACJ,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;oBAC/F,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACP,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE;gBACnD,MAAM;gBACN,MAAM,EAAE,SAAS;gBACjB,OAAO;gBACP,OAAO,EAAE,KAAK,CAAC,OAAO;aACzB,CAAC,CAAC;YAEH,IAAI,CAAC;gBACD,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnD,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;oBAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;wBACrE,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,qCAAqC,CAAC,CAAC;oBACzH,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,WAAW,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,OAAyB,EAAE,GAAQ,EAAiB,EAAE;QACtE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC3B,IAAI,CAAC;oBACD,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAChC,OAAO,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,YAAY,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,IAAA,yBAAc,EAAC;QAClB,IAAI;QACJ,KAAK,EAAE;YACH,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC9B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACV,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACpB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;YAClC,CAAC;SACJ;QACD,OAAO,EAAE;YACL,IAAI,EAAE,IAAA,iBAAM,EAAC,IAAI,EAAE;gBACf,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;aACtB,CAAC;YACF,QAAQ,EAAE,IAAA,iBAAM,EAAC,GAAG,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACvC,CAAC,EAAE;gBACC,OAAO,EAAE,MAAM;aAClB,CAAC;SACL;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -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;