@ercworldio/blockchain-shared 1.0.0-dev.19 → 1.0.0-dev.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/services/WalletManager.d.ts +3 -1
- package/build/services/WalletManager.d.ts.map +1 -1
- package/build/services/WalletManager.js +11 -7
- package/build/services/quicknode-notifications/QnWebhookAddressManager.d.ts +2 -2
- package/build/services/quicknode-notifications/QnWebhookAddressManager.d.ts.map +1 -1
- package/build/services/quicknode-notifications/QnWebhookAddressManager.js +2 -0
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ import { IDatabasePool } from "../interfaces/database";
|
|
|
7
7
|
import { BtcWallet, IWallet, TronNodeWallet } from "./types/wallet_manager";
|
|
8
8
|
import { AlchemyWebhookEnvironment } from "./types/alchemy";
|
|
9
9
|
import BaseErrors from "../errors/errors";
|
|
10
|
+
import AsyncRateLimiter from "../utils/AsyncRateLimiter";
|
|
10
11
|
declare class WalletManager extends BaseErrors {
|
|
11
12
|
static instance: WalletManager;
|
|
12
13
|
private config;
|
|
@@ -35,7 +36,8 @@ declare class WalletManager extends BaseErrors {
|
|
|
35
36
|
address: string;
|
|
36
37
|
}>;
|
|
37
38
|
renewWallet: (subscription: AlchemyWebhookEnvironment, userId: number, blockchain: BlockchainType, expired_address: string) => Promise<IWallet>;
|
|
38
|
-
|
|
39
|
+
updateWebhookAddress: (subscription: AlchemyWebhookEnvironment, blockchain: BlockchainType, old_wallet: IWallet, new_wallet: IWallet, limiter: AsyncRateLimiter) => Promise<boolean>;
|
|
40
|
+
handleRenewWallet: (old_wallet: IWallet, new_wallet: IWallet) => Promise<IWallet>;
|
|
39
41
|
deriveWallet: (parentIndex: number, childIndex: number, blockchain: BlockchainType, _mnemonic?: string) => BtcWallet;
|
|
40
42
|
}
|
|
41
43
|
export default WalletManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../src/services/WalletManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAe,OAAO,EAAgB,cAAc,EAAc,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAO5D,OAAO,UAAU,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../src/services/WalletManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAe,OAAO,EAAgB,cAAc,EAAc,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAO5D,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAG1C,OAAO,gBAA+B,MAAM,2BAA2B,CAAC;AAGxE,cAAM,aAAc,SAAQ,UAAU;IAClC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAgB;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,8BAA8B,EAAE,MAAM,CAAC;IACvC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAS;gBACX,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAelD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAOlD,SAAS,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAqB7F;IAEM,2BAA2B,GAAI,YAAY,cAAc,8CAoC/D;IAGM,gBAAgB,GAAU,SAAS,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,iBAAiB,eAAe,qBAiBrG;IAED,OAAO,CAAC,2BAA2B;IAa5B,YAAY,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CA2BzF;IAEY,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;IAsBlE,gBAAgB,CAAC,MAAM,EAAE,OAAO;;;;;;;IAoBhC,YAAY,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc;;;OAGtE;IAGM,WAAW,GAAU,cAAc,yBAAyB,EAAE,QAAQ,MAAM,EAAE,YAAY,cAAc,EAAE,iBAAiB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAsC1J;IAEM,oBAAoB,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,YAAY,OAAO,EAAE,YAAY,OAAO,EAAE,SAAS,gBAAgB,sBA8B5K;IAGM,iBAAiB,GAAU,YAAY,OAAO,EAAE,YAAY,OAAO,sBAezE;IAIM,YAAY,GAAI,aAAa,MAAM,EAAE,YAAY,MAAM,EAAE,YAAY,cAAc,EAAE,YAAY,MAAM,eA4E7G;CAIJ;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -64,6 +64,8 @@ const constants_1 = require("../constants");
|
|
|
64
64
|
const tronweb_1 = require("tronweb");
|
|
65
65
|
const errors_1 = __importDefault(require("../errors/errors"));
|
|
66
66
|
const Logger_1 = require("../utils/Logger");
|
|
67
|
+
const QnWebhookAddressManager_1 = __importDefault(require("./quicknode-notifications/QnWebhookAddressManager"));
|
|
68
|
+
const AsyncRateLimiter_1 = require("../utils/AsyncRateLimiter");
|
|
67
69
|
class WalletManager extends errors_1.default {
|
|
68
70
|
constructor(config, dbPool) {
|
|
69
71
|
super();
|
|
@@ -206,18 +208,20 @@ class WalletManager extends errors_1.default {
|
|
|
206
208
|
yield timerManager.delete_timer(userId, blockchain);
|
|
207
209
|
return updatedWallet;
|
|
208
210
|
});
|
|
209
|
-
this.
|
|
210
|
-
const wallet_manager = WalletManager.getInstance(this.config, this.dbPool);
|
|
211
|
+
this.updateWebhookAddress = (subscription, blockchain, old_wallet, new_wallet, limiter) => __awaiter(this, void 0, void 0, function* () {
|
|
211
212
|
const alchemy_service = AlchemyService_1.default.getInstance(this.config);
|
|
213
|
+
const qn_service = QnWebhookAddressManager_1.default.getInstance(this.config);
|
|
214
|
+
// Add new address and remove expired address (quicknode and alchemy webhooks)
|
|
215
|
+
const alchemy_res = yield limiter.execute(() => (0, AsyncRateLimiter_1.withRetry)(() => __awaiter(this, void 0, void 0, function* () { return yield alchemy_service.add_remove_addresses_all_webhooks(subscription, blockchain, [new_wallet.address], [old_wallet.address]); }), 2, 500));
|
|
216
|
+
const quicknode_res_add = yield limiter.execute(() => (0, AsyncRateLimiter_1.withRetry)(() => __awaiter(this, void 0, void 0, function* () { return yield qn_service.add_address(blockchain, new_wallet.address); }), 3, 500));
|
|
217
|
+
const quicknode_res_remove = yield limiter.execute(() => (0, AsyncRateLimiter_1.withRetry)(() => __awaiter(this, void 0, void 0, function* () { return yield qn_service.remove_address(blockchain, old_wallet.address); }), 3, 500));
|
|
218
|
+
return true;
|
|
219
|
+
});
|
|
220
|
+
this.handleRenewWallet = (old_wallet, new_wallet) => __awaiter(this, void 0, void 0, function* () {
|
|
212
221
|
// Dispatch insert sweep job handler
|
|
213
222
|
const sweep_job_service = new SweepJobService_1.default(this.dbPool, this.config);
|
|
214
223
|
yield sweep_job_service.dispatchAddSweepJobWithBalanceCheck(old_wallet.id, old_wallet.blockchain, old_wallet.userId, old_wallet.address, old_wallet.parentIndex, old_wallet.childIndex, true // full sweep for expired wallet
|
|
215
224
|
);
|
|
216
|
-
// Add new address and remove expired address
|
|
217
|
-
const is_added_removed = yield alchemy_service.add_remove_addresses_all_webhooks(subscription, blockchain, [new_wallet.address], [old_wallet.address]);
|
|
218
|
-
if (!is_added_removed) {
|
|
219
|
-
throw new Error(`Failed to add new wallet to address activity monitor.`);
|
|
220
|
-
}
|
|
221
225
|
return new_wallet;
|
|
222
226
|
});
|
|
223
227
|
// TODO: revisit solana and btc wallet creation and return
|
|
@@ -11,8 +11,8 @@ declare class QnWebhookAddressManager {
|
|
|
11
11
|
private is_stale;
|
|
12
12
|
private load;
|
|
13
13
|
private ensure_loaded;
|
|
14
|
-
add_address(blockchain: BlockchainType, address: string): Promise<
|
|
15
|
-
remove_address(blockchain: BlockchainType, address: string): Promise<
|
|
14
|
+
add_address(blockchain: BlockchainType, address: string): Promise<boolean>;
|
|
15
|
+
remove_address(blockchain: BlockchainType, address: string): Promise<boolean>;
|
|
16
16
|
}
|
|
17
17
|
export default QnWebhookAddressManager;
|
|
18
18
|
//# sourceMappingURL=QnWebhookAddressManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QnWebhookAddressManager.d.ts","sourceRoot":"","sources":["../../../src/services/quicknode-notifications/QnWebhookAddressManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAoBlD,cAAM,uBAAuB;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IACjD,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,KAAK,CAAmD;IAEhE,OAAO;IAKP,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB;IAO5D,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,QAAQ;YAMF,IAAI;YAsCJ,aAAa;IAOd,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"QnWebhookAddressManager.d.ts","sourceRoot":"","sources":["../../../src/services/quicknode-notifications/QnWebhookAddressManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAoBlD,cAAM,uBAAuB;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IACjD,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,KAAK,CAAmD;IAEhE,OAAO;IAKP,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB;IAO5D,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,QAAQ;YAMF,IAAI;YAsCJ,aAAa;IAOd,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB1E,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAiB7F;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -110,6 +110,7 @@ class QnWebhookAddressManager {
|
|
|
110
110
|
throw error;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
+
return true;
|
|
113
114
|
});
|
|
114
115
|
}
|
|
115
116
|
remove_address(blockchain, address) {
|
|
@@ -129,6 +130,7 @@ class QnWebhookAddressManager {
|
|
|
129
130
|
throw error;
|
|
130
131
|
}
|
|
131
132
|
}
|
|
133
|
+
return true;
|
|
132
134
|
});
|
|
133
135
|
}
|
|
134
136
|
}
|