hive-stream 2.0.5 → 3.0.0

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 (89) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +2 -2
  3. package/.travis.yml +11 -11
  4. package/CHANGELOG.md +166 -0
  5. package/CLAUDE.md +75 -0
  6. package/LICENSE +21 -21
  7. package/README.md +338 -238
  8. package/dist/actions.d.ts +41 -10
  9. package/dist/actions.js +126 -23
  10. package/dist/actions.js.map +1 -1
  11. package/dist/adapters/base.adapter.d.ts +25 -25
  12. package/dist/adapters/base.adapter.js +63 -49
  13. package/dist/adapters/base.adapter.js.map +1 -1
  14. package/dist/adapters/mongodb.adapter.d.ts +50 -37
  15. package/dist/adapters/mongodb.adapter.js +363 -158
  16. package/dist/adapters/mongodb.adapter.js.map +1 -1
  17. package/dist/adapters/postgresql.adapter.d.ts +49 -0
  18. package/dist/adapters/postgresql.adapter.js +507 -0
  19. package/dist/adapters/postgresql.adapter.js.map +1 -0
  20. package/dist/adapters/sqlite.adapter.d.ts +40 -41
  21. package/dist/adapters/sqlite.adapter.js +470 -397
  22. package/dist/adapters/sqlite.adapter.js.map +1 -1
  23. package/dist/api.d.ts +6 -6
  24. package/dist/api.js +95 -55
  25. package/dist/api.js.map +1 -1
  26. package/dist/config.d.ts +16 -16
  27. package/dist/config.js +18 -18
  28. package/dist/config.js.map +1 -1
  29. package/dist/contracts/coinflip.contract.d.ts +27 -14
  30. package/dist/contracts/coinflip.contract.js +253 -94
  31. package/dist/contracts/coinflip.contract.js.map +1 -1
  32. package/dist/contracts/dice.contract.d.ts +37 -29
  33. package/dist/contracts/dice.contract.js +282 -155
  34. package/dist/contracts/dice.contract.js.map +1 -1
  35. package/dist/contracts/lotto.contract.d.ts +20 -20
  36. package/dist/contracts/lotto.contract.js +246 -246
  37. package/dist/contracts/nft.contract.d.ts +24 -0
  38. package/dist/contracts/nft.contract.js +533 -0
  39. package/dist/contracts/nft.contract.js.map +1 -0
  40. package/dist/contracts/token.contract.d.ts +18 -0
  41. package/dist/contracts/token.contract.js +263 -0
  42. package/dist/contracts/token.contract.js.map +1 -0
  43. package/dist/exchanges/bittrex.d.ts +6 -6
  44. package/dist/exchanges/bittrex.js +34 -34
  45. package/dist/exchanges/coingecko.d.ts +5 -0
  46. package/dist/exchanges/coingecko.js +40 -0
  47. package/dist/exchanges/coingecko.js.map +1 -0
  48. package/dist/exchanges/exchange.d.ts +9 -9
  49. package/dist/exchanges/exchange.js +26 -26
  50. package/dist/hive-rates.d.ts +9 -9
  51. package/dist/hive-rates.js +121 -75
  52. package/dist/hive-rates.js.map +1 -1
  53. package/dist/index.d.ts +12 -11
  54. package/dist/index.js +33 -32
  55. package/dist/index.js.map +1 -1
  56. package/dist/streamer.d.ts +140 -93
  57. package/dist/streamer.js +793 -545
  58. package/dist/streamer.js.map +1 -1
  59. package/dist/test.d.ts +1 -1
  60. package/dist/test.js +25 -25
  61. package/dist/test.js.map +1 -1
  62. package/dist/types/hive-stream.d.ts +35 -6
  63. package/dist/types/hive-stream.js +2 -2
  64. package/dist/utils.d.ts +27 -27
  65. package/dist/utils.js +271 -261
  66. package/dist/utils.js.map +1 -1
  67. package/ecosystem.config.js +17 -17
  68. package/jest.config.js +8 -8
  69. package/package.json +53 -48
  70. package/test-contract-block.md +18 -18
  71. package/tests/actions.spec.ts +252 -0
  72. package/tests/adapters/actions-persistence.spec.ts +144 -0
  73. package/tests/adapters/postgresql.adapter.spec.ts +127 -0
  74. package/tests/adapters/sqlite.adapter.spec.ts +180 -42
  75. package/tests/contracts/coinflip.contract.spec.ts +221 -131
  76. package/tests/contracts/dice.contract.spec.ts +202 -159
  77. package/tests/contracts/entrants.json +728 -728
  78. package/tests/contracts/lotto.contract.spec.ts +323 -323
  79. package/tests/contracts/nft.contract.spec.ts +948 -0
  80. package/tests/contracts/token.contract.spec.ts +334 -0
  81. package/tests/helpers/mock-adapter.ts +214 -0
  82. package/tests/setup.ts +29 -18
  83. package/tests/streamer-actions.spec.ts +263 -0
  84. package/tests/streamer.spec.ts +248 -151
  85. package/tests/utils.spec.ts +91 -94
  86. package/tsconfig.build.json +3 -22
  87. package/tslint.json +20 -20
  88. package/wallaby.js +26 -26
  89. package/.env +0 -3
@@ -1,76 +1,122 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HiveRates = void 0;
4
- const bittrex_1 = require("./exchanges/bittrex");
5
- class HiveRates {
6
- fiatRates = [];
7
- hiveRates = [];
8
- lastFetch;
9
- oneHour = 1000 * 60 * 60;
10
- async fetchRates() {
11
- let hiveAverage = 0;
12
- let hbdAverage = 0;
13
- let hiveCount = 0;
14
- let hbdCount = 0;
15
- let exchangesUpdated = false;
16
- const exchanges = [new bittrex_1.BittrexExchange()];
17
- for (const exchange of exchanges) {
18
- const updated = await exchange.updateRates();
19
- if (updated) {
20
- exchangesUpdated = true;
21
- const usdHiveRate = exchange.rateUsdHive;
22
- const usdHbdRate = exchange.rateUsdHbd;
23
- if (usdHiveRate && usdHiveRate > 0) {
24
- hiveAverage += usdHiveRate;
25
- hiveCount++;
26
- }
27
- if (usdHbdRate ** usdHbdRate > 0) {
28
- hbdAverage += usdHbdRate;
29
- hbdCount++;
30
- }
31
- }
32
- }
33
- const fiatRates = await this.getFiatRates();
34
- if (hiveCount === 0 && hbdCount === 0) {
35
- return false;
36
- }
37
- if (hiveCount > 0) {
38
- hiveAverage = hiveAverage / hiveCount;
39
- }
40
- if (hbdCount > 0) {
41
- hbdAverage = hbdAverage / hbdCount;
42
- }
43
- for (const [symbol, value] of Object.entries(this.fiatRates)) {
44
- this.hiveRates[`USD_${symbol}`] = value;
45
- this.hiveRates[`${symbol}_HIVE`] = hiveAverage * value;
46
- this.hiveRates[`${symbol}_HBD`] = hbdAverage * value;
47
- }
48
- return true;
49
- }
50
- fiatToHiveRate(fiatSymbol, hiveSymbol) {
51
- if (!this.hiveRates) {
52
- return null;
53
- }
54
- if (!this.hiveRates[`${fiatSymbol}_${hiveSymbol}`]) {
55
- return null;
56
- }
57
- return this.hiveRates[`${fiatSymbol}_${hiveSymbol}`];
58
- }
59
- async getFiatRates(base = 'USD') {
60
- const HOUR_AGO = Date.now() - this.oneHour;
61
- if (this.lastFetch && this.lastFetch < HOUR_AGO) {
62
- return false;
63
- }
64
- const request = await fetch(`https://api.exchangeratesapi.io/latest?base=${base}`);
65
- const response = await request.json();
66
- const exchangeRates = response?.rates;
67
- if (!exchangeRates) {
68
- return false;
69
- }
70
- this.fiatRates = exchangeRates;
71
- this.lastFetch = Date.now();
72
- return true;
73
- }
74
- }
75
- exports.HiveRates = HiveRates;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HiveRates = void 0;
4
+ const coingecko_1 = require("./exchanges/coingecko");
5
+ class HiveRates {
6
+ fiatRates = {};
7
+ hiveRates = {};
8
+ lastFetch;
9
+ oneHour = 1000 * 60 * 60;
10
+ async fetchRates() {
11
+ let hiveAverage = 0;
12
+ let hbdAverage = 0;
13
+ let hiveCount = 0;
14
+ let hbdCount = 0;
15
+ let exchangesUpdated = false;
16
+ const exchanges = [new coingecko_1.CoinGeckoExchange()];
17
+ for (const exchange of exchanges) {
18
+ const updated = await exchange.updateRates();
19
+ if (updated) {
20
+ exchangesUpdated = true;
21
+ const usdHiveRate = exchange.rateUsdHive;
22
+ const usdHbdRate = exchange.rateUsdHbd;
23
+ if (usdHiveRate && usdHiveRate > 0) {
24
+ hiveAverage += usdHiveRate;
25
+ hiveCount++;
26
+ }
27
+ if (usdHbdRate && usdHbdRate > 0) {
28
+ hbdAverage += usdHbdRate;
29
+ hbdCount++;
30
+ }
31
+ }
32
+ }
33
+ const fiatRates = await this.getFiatRates();
34
+ if (hiveCount === 0 && hbdCount === 0) {
35
+ return false;
36
+ }
37
+ if (hiveCount > 0) {
38
+ hiveAverage = hiveAverage / hiveCount;
39
+ }
40
+ if (hbdCount > 0) {
41
+ hbdAverage = hbdAverage / hbdCount;
42
+ }
43
+ for (const [symbol, value] of Object.entries(this.fiatRates)) {
44
+ const rate = Number(value);
45
+ this.hiveRates[`USD_${symbol}`] = rate;
46
+ this.hiveRates[`${symbol}_HIVE`] = hiveAverage * rate;
47
+ this.hiveRates[`${symbol}_HBD`] = hbdAverage * rate;
48
+ }
49
+ return true;
50
+ }
51
+ fiatToHiveRate(fiatSymbol, hiveSymbol) {
52
+ if (!this.hiveRates) {
53
+ return null;
54
+ }
55
+ if (!this.hiveRates[`${fiatSymbol}_${hiveSymbol}`]) {
56
+ return null;
57
+ }
58
+ return this.hiveRates[`${fiatSymbol}_${hiveSymbol}`];
59
+ }
60
+ async getFiatRates(base = 'USD') {
61
+ const HOUR_AGO = Date.now() - this.oneHour;
62
+ if (this.lastFetch && this.lastFetch > HOUR_AGO) {
63
+ return false;
64
+ }
65
+ try {
66
+ const baseKey = base.toLowerCase();
67
+ let response = null;
68
+ let exchangeRates = null;
69
+ // Try primary endpoint first
70
+ try {
71
+ const primaryUrl = `https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/${baseKey}.json`;
72
+ const request = await fetch(primaryUrl);
73
+ if (request.ok) {
74
+ response = await request.json();
75
+ exchangeRates = response?.[baseKey];
76
+ }
77
+ }
78
+ catch (primaryError) {
79
+ console.warn('Primary API endpoint failed:', primaryError.message);
80
+ }
81
+ // If primary fails, try the Cloudflare fallback
82
+ if (!exchangeRates) {
83
+ try {
84
+ const fallbackUrl = `https://latest.currency-api.pages.dev/v1/currencies/${baseKey}.json`;
85
+ const request = await fetch(fallbackUrl);
86
+ if (request.ok) {
87
+ response = await request.json();
88
+ exchangeRates = response?.[baseKey];
89
+ }
90
+ }
91
+ catch (fallbackError) {
92
+ console.warn('Fallback API endpoint failed:', fallbackError.message);
93
+ }
94
+ }
95
+ if (!exchangeRates || typeof exchangeRates !== 'object') {
96
+ console.error('No valid exchange rates found in API response');
97
+ return false;
98
+ }
99
+ // Convert the currency codes to uppercase to match the previous format
100
+ const upperCaseRates = {};
101
+ for (const [currency, rate] of Object.entries(exchangeRates)) {
102
+ if (typeof rate === 'number' && !isNaN(rate)) {
103
+ upperCaseRates[currency.toUpperCase()] = rate;
104
+ }
105
+ }
106
+ if (Object.keys(upperCaseRates).length === 0) {
107
+ console.error('No valid currency rates found');
108
+ return false;
109
+ }
110
+ this.fiatRates = upperCaseRates;
111
+ this.lastFetch = Date.now();
112
+ console.log(`Successfully fetched ${Object.keys(upperCaseRates).length} currency rates with base ${base}`);
113
+ return true;
114
+ }
115
+ catch (error) {
116
+ console.error('Error fetching fiat rates:', error);
117
+ return false;
118
+ }
119
+ }
120
+ }
121
+ exports.HiveRates = HiveRates;
76
122
  //# sourceMappingURL=hive-rates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hive-rates.js","sourceRoot":"","sources":["../src/hive-rates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hive-rates.js","sourceRoot":"","sources":["../src/hive-rates.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- export * from './config';
2
- export * from './streamer';
3
- export * from './utils';
4
- export * from './actions';
5
- export * from './adapters/base.adapter';
6
- export * from './adapters/sqlite.adapter';
7
- export * from './adapters/mongodb.adapter';
8
- export { DiceContract } from './contracts/dice.contract';
9
- export { LottoContract } from './contracts/lotto.contract';
10
- export { CoinflipContract } from './contracts/coinflip.contract';
11
- export * from './types/hive-stream';
1
+ export * from './config';
2
+ export * from './streamer';
3
+ export * from './utils';
4
+ export * from './actions';
5
+ export * from './adapters/base.adapter';
6
+ export * from './adapters/sqlite.adapter';
7
+ export * from './adapters/mongodb.adapter';
8
+ export * from './adapters/postgresql.adapter';
9
+ export { DiceContract } from './contracts/dice.contract';
10
+ export { LottoContract } from './contracts/lotto.contract';
11
+ export { CoinflipContract } from './contracts/coinflip.contract';
12
+ export * from './types/hive-stream';
package/dist/index.js CHANGED
@@ -1,33 +1,34 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.CoinflipContract = exports.LottoContract = exports.DiceContract = void 0;
18
- __exportStar(require("./config"), exports);
19
- __exportStar(require("./streamer"), exports);
20
- __exportStar(require("./utils"), exports);
21
- __exportStar(require("./actions"), exports);
22
- __exportStar(require("./adapters/base.adapter"), exports);
23
- __exportStar(require("./adapters/sqlite.adapter"), exports);
24
- __exportStar(require("./adapters/mongodb.adapter"), exports);
25
- var dice_contract_1 = require("./contracts/dice.contract");
26
- Object.defineProperty(exports, "DiceContract", { enumerable: true, get: function () { return dice_contract_1.DiceContract; } });
27
- var lotto_contract_1 = require("./contracts/lotto.contract");
28
- Object.defineProperty(exports, "LottoContract", { enumerable: true, get: function () { return lotto_contract_1.LottoContract; } });
29
- var coinflip_contract_1 = require("./contracts/coinflip.contract");
30
- Object.defineProperty(exports, "CoinflipContract", { enumerable: true, get: function () { return coinflip_contract_1.CoinflipContract; } });
31
- // Types
32
- __exportStar(require("./types/hive-stream"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CoinflipContract = exports.LottoContract = exports.DiceContract = void 0;
18
+ __exportStar(require("./config"), exports);
19
+ __exportStar(require("./streamer"), exports);
20
+ __exportStar(require("./utils"), exports);
21
+ __exportStar(require("./actions"), exports);
22
+ __exportStar(require("./adapters/base.adapter"), exports);
23
+ __exportStar(require("./adapters/sqlite.adapter"), exports);
24
+ __exportStar(require("./adapters/mongodb.adapter"), exports);
25
+ __exportStar(require("./adapters/postgresql.adapter"), exports);
26
+ var dice_contract_1 = require("./contracts/dice.contract");
27
+ Object.defineProperty(exports, "DiceContract", { enumerable: true, get: function () { return dice_contract_1.DiceContract; } });
28
+ var lotto_contract_1 = require("./contracts/lotto.contract");
29
+ Object.defineProperty(exports, "LottoContract", { enumerable: true, get: function () { return lotto_contract_1.LottoContract; } });
30
+ var coinflip_contract_1 = require("./contracts/coinflip.contract");
31
+ Object.defineProperty(exports, "CoinflipContract", { enumerable: true, get: function () { return coinflip_contract_1.CoinflipContract; } });
32
+ // Types
33
+ __exportStar(require("./types/hive-stream"), exports);
33
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,4CAA0B;AAE1B,0DAAwC;AACxC,4DAA0C;AAC1C,6DAA2C;AAE3C,2DAAyD;AAAhD,6GAAA,YAAY,OAAA;AACrB,6DAA2D;AAAlD,+GAAA,aAAa,OAAA;AACtB,mEAAiE;AAAxD,qHAAA,gBAAgB,OAAA;AAEzB,QAAQ;AACR,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,4CAA0B;AAE1B,0DAAwC;AACxC,4DAA0C;AAC1C,6DAA2C;AAC3C,gEAA8C;AAE9C,2DAAyD;AAAhD,6GAAA,YAAY,OAAA;AACrB,6DAA2D;AAAlD,+GAAA,aAAa,OAAA;AACtB,mEAAiE;AAAxD,qHAAA,gBAAgB,OAAA;AAEzB,QAAQ;AACR,sDAAoC"}
@@ -1,93 +1,140 @@
1
- import { AdapterBase } from './adapters/base.adapter';
2
- import { TimeAction } from './actions';
3
- import { ConfigInterface } from './config';
4
- export declare class Streamer {
5
- private customJsonSubscriptions;
6
- private customJsonIdSubscriptions;
7
- private customJsonHiveEngineSubscriptions;
8
- private commentSubscriptions;
9
- private postSubscriptions;
10
- private transferSubscriptions;
11
- private attempts;
12
- private config;
13
- private client;
14
- private hive;
15
- private username;
16
- private postingKey;
17
- private activeKey;
18
- private blockNumberTimeout;
19
- private latestBlockTimer;
20
- private lastBlockNumber;
21
- private blockId;
22
- private previousBlockId;
23
- private transactionId;
24
- private blockTime;
25
- private latestBlockchainTime;
26
- private disableAllProcessing;
27
- private contracts;
28
- private adapter;
29
- private actions;
30
- private utils;
31
- constructor(userConfig?: Partial<ConfigInterface>);
32
- registerAdapter(adapter: any): void;
33
- getAdapter(): AdapterBase;
34
- /**
35
- * Register a new action
36
- *
37
- */
38
- registerAction(action: TimeAction): Promise<void>;
39
- /**
40
- * Resets a specific action time value
41
- *
42
- * @param id
43
- *
44
- */
45
- resetAction(id: string): void;
46
- registerContract(name: string, contract: any): this;
47
- unregisterContract(name: string): void;
48
- /**
49
- * setConfig
50
- *
51
- * Allows specific configuration settings to be overridden
52
- *
53
- * @param config
54
- */
55
- setConfig(config: Partial<ConfigInterface>): this;
56
- /**
57
- * Start
58
- *
59
- * Starts the streamer bot to get blocks from the Hive API
60
- *
61
- */
62
- start(): Promise<Streamer>;
63
- /**
64
- * Stop
65
- *
66
- * Stops the streamer from running
67
- */
68
- stop(): Promise<void>;
69
- private getLatestBlock;
70
- private getBlock;
71
- private loadBlock;
72
- processOperation(op: any, blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): void;
73
- private processActions;
74
- saveStateToDisk(): Promise<void>;
75
- saveToHiveApi(from: string, data: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
76
- getAccountTransfers(account: string, from?: number, limit?: number): Promise<any>;
77
- transferHiveTokens(from: string, to: string, amount: string, symbol: string, memo?: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
78
- transferHiveTokensMultiple(from: string, accounts: string[], amount: string, symbol: string, memo?: string): Promise<boolean>;
79
- transferHiveEngineTokens(from: string, to: string, symbol: string, quantity: string, memo?: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
80
- transferHiveEngineTokensMultiple(from: string, accounts: any[], symbol: string, memo?: string, amount?: string): Promise<void>;
81
- issueHiveEngineTokens(from: string, to: string, symbol: string, quantity: string, memo?: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
82
- issueHiveEngineTokensMultiple(from: string, accounts: any[], symbol: string, memo?: string, amount?: string): Promise<void>;
83
- upvote(votePercentage: string, username: string, permlink: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
84
- downvote(votePercentage: string, username: string, permlink: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
85
- getTransaction(blockNumber: number, transactionId: string): Promise<import("@hiveio/dhive").SignedTransaction>;
86
- verifyTransfer(transaction: any, from: string, to: string, amount: string): Promise<boolean>;
87
- onComment(callback: any): void;
88
- onPost(callback: any): void;
89
- onTransfer(account: string, callback: () => void): void;
90
- onCustomJson(callback: any): void;
91
- onCustomJsonId(callback: any, id: string): void;
92
- onHiveEngine(callback: any): void;
93
- }
1
+ import { AdapterBase } from './adapters/base.adapter';
2
+ import { TimeAction } from './actions';
3
+ import { ConfigInterface } from './config';
4
+ import { ContractInstance } from './types/hive-stream';
5
+ export declare class Streamer {
6
+ private customJsonSubscriptions;
7
+ private customJsonIdSubscriptions;
8
+ private customJsonHiveEngineSubscriptions;
9
+ private commentSubscriptions;
10
+ private postSubscriptions;
11
+ private transferSubscriptions;
12
+ private attempts;
13
+ private config;
14
+ private client;
15
+ private hive;
16
+ private username;
17
+ private postingKey;
18
+ private activeKey;
19
+ private blockNumberTimeout;
20
+ private latestBlockTimer;
21
+ private lastBlockNumber;
22
+ private blockId;
23
+ private previousBlockId;
24
+ private transactionId;
25
+ private blockTime;
26
+ private latestBlockchainTime;
27
+ private disableAllProcessing;
28
+ private contracts;
29
+ private adapter;
30
+ private actions;
31
+ private lastStateSave;
32
+ private stateSaveInterval;
33
+ private blockProcessingQueue;
34
+ private isProcessingQueue;
35
+ private readonly maxSubscriptions;
36
+ private subscriptionCleanupInterval;
37
+ private actionFrequencyMap;
38
+ private contractCache;
39
+ private blockCache;
40
+ private transactionCache;
41
+ private accountCache;
42
+ private readonly cacheTimeout;
43
+ private readonly maxCacheSize;
44
+ private utils;
45
+ constructor(userConfig?: Partial<ConfigInterface>);
46
+ private _initializeAdapter;
47
+ registerAdapter(adapter: AdapterBase): Promise<void>;
48
+ getAdapter(): AdapterBase;
49
+ /**
50
+ * Register a new action with improved validation and persistence
51
+ */
52
+ registerAction(action: TimeAction): Promise<void>;
53
+ /**
54
+ * Validate that the contract and method exist for the action
55
+ */
56
+ private validateActionContract;
57
+ /**
58
+ * Remove an action by ID
59
+ */
60
+ removeAction(actionId: string): Promise<boolean>;
61
+ /**
62
+ * Get all registered actions
63
+ */
64
+ getActions(): TimeAction[];
65
+ /**
66
+ * Get action by ID
67
+ */
68
+ getAction(actionId: string): TimeAction | undefined;
69
+ /**
70
+ * Enable/disable an action
71
+ */
72
+ setActionEnabled(actionId: string, enabled: boolean): Promise<boolean>;
73
+ /**
74
+ * Save actions to disk asynchronously
75
+ */
76
+ private saveActionsToDisk;
77
+ /**
78
+ * Resets a specific action time value
79
+ */
80
+ resetAction(id: string): Promise<boolean>;
81
+ registerContract(name: string, contract: ContractInstance): this;
82
+ unregisterContract(name: string): void;
83
+ /**
84
+ * setConfig
85
+ *
86
+ * Allows specific configuration settings to be overridden
87
+ *
88
+ * @param config
89
+ */
90
+ setConfig(config: Partial<ConfigInterface>): this;
91
+ /**
92
+ * Start
93
+ *
94
+ * Starts the streamer bot to get blocks from the Hive API
95
+ *
96
+ */
97
+ start(): Promise<Streamer>;
98
+ /**
99
+ * Stop
100
+ *
101
+ * Stops the streamer from running
102
+ */
103
+ stop(): Promise<void>;
104
+ private getLatestBlock;
105
+ private getBlock;
106
+ private loadBlock;
107
+ processOperation(op: [string, any], blockNumber: number, blockId: string, prevBlockId: string, trxId: string, blockTime: Date): Promise<void>;
108
+ private processActions;
109
+ /**
110
+ * Execute a single action with proper isolation
111
+ */
112
+ private executeAction;
113
+ /**
114
+ * Clean up completed or disabled actions to prevent memory leaks
115
+ */
116
+ private cleanupActions;
117
+ saveStateToDisk(): Promise<void>;
118
+ private saveStateThrottled;
119
+ saveToHiveApi(from: string, data: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
120
+ getAccountTransfers(account: string, from?: number, limit?: number): Promise<any>;
121
+ transferHiveTokens(from: string, to: string, amount: string, symbol: string, memo?: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
122
+ transferHiveTokensMultiple(from: string, accounts: string[], amount: string, symbol: string, memo?: string): Promise<boolean>;
123
+ transferHiveEngineTokens(from: string, to: string, symbol: string, quantity: string, memo?: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
124
+ transferHiveEngineTokensMultiple(from: string, accounts: any[], symbol: string, memo?: string, amount?: string): Promise<void>;
125
+ issueHiveEngineTokens(from: string, to: string, symbol: string, quantity: string, memo?: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
126
+ issueHiveEngineTokensMultiple(from: string, accounts: any[], symbol: string, memo?: string, amount?: string): Promise<void>;
127
+ upvote(votePercentage: string, username: string, permlink: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
128
+ downvote(votePercentage: string, username: string, permlink: string): Promise<import("@hiveio/dhive").TransactionConfirmation>;
129
+ getTransaction(blockNumber: number, transactionId: string): Promise<import("@hiveio/dhive").SignedTransaction>;
130
+ verifyTransfer(transaction: any, from: string, to: string, amount: string): Promise<boolean>;
131
+ onComment(callback: any): void;
132
+ onPost(callback: any): void;
133
+ onTransfer(account: string, callback: () => void): void;
134
+ onCustomJson(callback: any): void;
135
+ onCustomJsonId(callback: any, id: string): void;
136
+ onHiveEngine(callback: any): void;
137
+ private cleanupSubscriptions;
138
+ removeTransferSubscription(account: string): void;
139
+ removeCustomJsonIdSubscription(id: string): void;
140
+ }