@ercworldio/blockchain-shared 1.0.0-dev.18 → 1.0.0-dev.20

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/index.d.ts CHANGED
@@ -42,6 +42,7 @@ export { default as Worker } from './services/Worker';
42
42
  export { default as QuicknodeWebhookSignature } from './services/QuicknodeWebhookSignature';
43
43
  export { default as QnNotificationsApi } from "./services/quicknode-notifications/QnNotificationsApi";
44
44
  export { default as SetupNotifications } from "./services/quicknode-notifications/SetupNotifications";
45
+ export { default as QnWebhookAddressManager } from "./services/quicknode-notifications/QnWebhookAddressManager";
45
46
  export * from './contracts/contract-events/types/events';
46
47
  export * from './contracts/types/escrow';
47
48
  export * from './services/solana/escrow/types/index';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -40,8 +40,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.WalletErrors = exports.DatabaseErrors = exports.BalanceErrors = exports.AdminErrors = exports.TransactionsErrors = exports.EscrowInteraction = exports.SetupNotifications = exports.QnNotificationsApi = exports.QuicknodeWebhookSignature = exports.Worker = exports.WithdrawalManager = exports.WalletManagerHelper = exports.WalletManager = exports.WalletIndexService = exports.SweepHistoryService = exports.SweepJobService = exports.StorageService = exports.ProviderManager = exports.Provider = exports.TronFundingWallet = exports.TronCustodialWallet = exports.TronHotWallet = exports.TronHelper = exports.TronTransaction = exports.TronSigner = exports.TimerManager = exports.RedisPubSub = exports.RedisListQueue = exports.RedisQueue = exports.Redis = exports.MemoryMonitor = exports.Logger = exports.KeyVaultHandler = exports.InvoiceQueue = exports.EscrowService = exports.EventsService = exports.EventsHandler = exports.ElasticSearch = exports.DepositAddressService = exports.ClaimJobService = exports.ClaimHistoryService = exports.ChainManager = exports.BalanceService = exports.AlchemyWebhookSignature = exports.AlchemyWebhooks = exports.AlchemyService = exports.AccountingService = exports.AzureEventHubHandler = exports.AsyncTTLCache = exports.AsyncRateLimiter = void 0;
44
- exports.AppErrors = exports.EscrowIdl = exports.CoverageInfo = exports.EscrowEvents = exports.Erc20Events = exports.AccessControlEvents = exports.ERC20Abi = exports.ErrorAbi = exports.EscrowAbi = exports.ERC20MockAbi = exports.BaseErrors = exports.VoltageErrors = exports.AlchemyErrors = void 0;
43
+ exports.DatabaseErrors = exports.BalanceErrors = exports.AdminErrors = exports.TransactionsErrors = exports.EscrowInteraction = exports.QnWebhookAddressManager = exports.SetupNotifications = exports.QnNotificationsApi = exports.QuicknodeWebhookSignature = exports.Worker = exports.WithdrawalManager = exports.WalletManagerHelper = exports.WalletManager = exports.WalletIndexService = exports.SweepHistoryService = exports.SweepJobService = exports.StorageService = exports.ProviderManager = exports.Provider = exports.TronFundingWallet = exports.TronCustodialWallet = exports.TronHotWallet = exports.TronHelper = exports.TronTransaction = exports.TronSigner = exports.TimerManager = exports.RedisPubSub = exports.RedisListQueue = exports.RedisQueue = exports.Redis = exports.MemoryMonitor = exports.Logger = exports.KeyVaultHandler = exports.InvoiceQueue = exports.EscrowService = exports.EventsService = exports.EventsHandler = exports.ElasticSearch = exports.DepositAddressService = exports.ClaimJobService = exports.ClaimHistoryService = exports.ChainManager = exports.BalanceService = exports.AlchemyWebhookSignature = exports.AlchemyWebhooks = exports.AlchemyService = exports.AccountingService = exports.AzureEventHubHandler = exports.AsyncTTLCache = exports.AsyncRateLimiter = void 0;
44
+ exports.AppErrors = exports.EscrowIdl = exports.CoverageInfo = exports.EscrowEvents = exports.Erc20Events = exports.AccessControlEvents = exports.ERC20Abi = exports.ErrorAbi = exports.EscrowAbi = exports.ERC20MockAbi = exports.BaseErrors = exports.VoltageErrors = exports.AlchemyErrors = exports.WalletErrors = void 0;
45
45
  // Services
46
46
  var AsyncRateLimiter_1 = require("./utils/AsyncRateLimiter");
47
47
  Object.defineProperty(exports, "AsyncRateLimiter", { enumerable: true, get: function () { return __importDefault(AsyncRateLimiter_1).default; } });
@@ -130,6 +130,8 @@ var QnNotificationsApi_1 = require("./services/quicknode-notifications/QnNotific
130
130
  Object.defineProperty(exports, "QnNotificationsApi", { enumerable: true, get: function () { return __importDefault(QnNotificationsApi_1).default; } });
131
131
  var SetupNotifications_1 = require("./services/quicknode-notifications/SetupNotifications");
132
132
  Object.defineProperty(exports, "SetupNotifications", { enumerable: true, get: function () { return __importDefault(SetupNotifications_1).default; } });
133
+ var QnWebhookAddressManager_1 = require("./services/quicknode-notifications/QnWebhookAddressManager");
134
+ Object.defineProperty(exports, "QnWebhookAddressManager", { enumerable: true, get: function () { return __importDefault(QnWebhookAddressManager_1).default; } });
133
135
  // Types nested under services/types
134
136
  __exportStar(require("./contracts/contract-events/types/events"), exports);
135
137
  __exportStar(require("./contracts/types/escrow"), exports);
@@ -15,6 +15,7 @@ declare class AlchemyService {
15
15
  private base_url;
16
16
  private errors;
17
17
  private logger;
18
+ private webhook_cache;
18
19
  constructor(config: IConfig);
19
20
  private access_token;
20
21
  static getInstance(config: IConfig): AlchemyService;
@@ -1 +1 @@
1
- {"version":3,"file":"AlchemyService.d.ts","sourceRoot":"","sources":["../../src/services/AlchemyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACH,yBAAyB,EAEzB,yBAAyB,EACzB,oBAAoB,EAEpB,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAI9B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAa/C,UAAU,kBAAkB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAOD,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,cAAM,cAAc;IAChB,OAAc,QAAQ,EAAE,cAAc,CAAC;IACvC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,OAAO;IAO3B,OAAO,CAAC,YAAY,CAGlB;WAGY,WAAW,CAAC,MAAM,EAAE,OAAO;IAOlC,gBAAgB,GAAU,KAAK,yBAAyB,4BAG9D;IAEM,6BAA6B,GAAU,KAAK,yBAAyB,EAAE,SAAS,6BAA6B,KAAG,OAAO,CAAC,8BAA8B,CAAC,CAO7J;IAEM,iCAAiC,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,kBAAkB,MAAM,EAAE,EAAE,qBAAqB,MAAM,EAAE;;;;OA+C/K;IAIM,wBAAwB,GAAU,cAAc,yBAAyB,EAAE,kBAAkB,MAAM,EAAE,EAAE,qBAAqB,MAAM,EAAE,sBAmC1I;IAGM,aAAa,GAAU,KAAK,yBAAyB,EAAE,SAAS,OAAO,EAAE,cAAc,WAAW,EAAE,mCAqB1G;IAEY,mBAAmB,CAAC,YAAY,EAAE,yBAAyB;;;;;;;;;IAsBjE,cAAc,GAAU,cAAc,yBAAyB,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,WAAW,CAAC,CAc3H;IAEM,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,SAAS,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAAC,CAK7H;IAEM,oBAAoB,GAAU,cAAc,yBAAyB,EAAE,SAAS,yBAAyB,KAAG,OAAO,CAAC,OAAO,CAAC,CAIlI;IACM,qBAAqB,GAAU,cAAc,yBAAyB,EAAE,SAAS,0BAA0B,KAAG,OAAO,CAAC,WAAW,CAAC,CAKxI;IACM,cAAc,GAAU,cAAc,yBAAyB,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,OAAO,CAAC,CAKvH;IACD,OAAO,CAAC,IAAI,CA+CX;CACJ;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"AlchemyService.d.ts","sourceRoot":"","sources":["../../src/services/AlchemyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACH,yBAAyB,EAEzB,yBAAyB,EACzB,oBAAoB,EAEpB,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAI9B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAc/C,UAAU,kBAAkB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAOD,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,cAAM,cAAc;IAChB,OAAc,QAAQ,EAAE,cAAc,CAAC;IACvC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAuC;gBAEhD,MAAM,EAAE,OAAO;IAO3B,OAAO,CAAC,YAAY,CAGlB;WAGY,WAAW,CAAC,MAAM,EAAE,OAAO;IAOlC,gBAAgB,GAAU,KAAK,yBAAyB,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CASvF;IAEM,6BAA6B,GAAU,KAAK,yBAAyB,EAAE,SAAS,6BAA6B,KAAG,OAAO,CAAC,8BAA8B,CAAC,CAO7J;IAEM,iCAAiC,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,kBAAkB,MAAM,EAAE,EAAE,qBAAqB,MAAM,EAAE;;;;OA+C/K;IAIM,wBAAwB,GAAU,cAAc,yBAAyB,EAAE,kBAAkB,MAAM,EAAE,EAAE,qBAAqB,MAAM,EAAE,sBAmC1I;IAGM,aAAa,GAAU,KAAK,yBAAyB,EAAE,SAAS,OAAO,EAAE,cAAc,WAAW,EAAE,mCAqB1G;IAEY,mBAAmB,CAAC,YAAY,EAAE,yBAAyB;;;;;;;;;IAsBjE,cAAc,GAAU,cAAc,yBAAyB,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,WAAW,CAAC,CAc3H;IAEM,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,SAAS,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAAC,CAK7H;IAEM,oBAAoB,GAAU,cAAc,yBAAyB,EAAE,SAAS,yBAAyB,KAAG,OAAO,CAAC,OAAO,CAAC,CAIlI;IACM,qBAAqB,GAAU,cAAc,yBAAyB,EAAE,SAAS,0BAA0B,KAAG,OAAO,CAAC,WAAW,CAAC,CAKxI;IACM,cAAc,GAAU,cAAc,yBAAyB,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,OAAO,CAAC,CAKvH;IACD,OAAO,CAAC,IAAI,CA+CX;CACJ;AAED,eAAe,cAAc,CAAC"}
@@ -16,8 +16,10 @@ const alchemy_1 = require("./utils/alchemy");
16
16
  const AlchemyErrors_1 = __importDefault(require("../errors/AlchemyErrors"));
17
17
  const ChainManager_1 = __importDefault(require("./ChainManager"));
18
18
  const Logger_1 = require("../utils/Logger");
19
+ const AsyncTTLCache_1 = __importDefault(require("../utils/AsyncTTLCache"));
19
20
  class AlchemyService {
20
21
  constructor(config) {
22
+ this.webhook_cache = AsyncTTLCache_1.default.create(5 * 60 * 1000); // 5 minutes
21
23
  this.access_token = (subscription) => {
22
24
  if (subscription === 'prod')
23
25
  return this.config.config.alchemyAccessToken;
@@ -25,8 +27,10 @@ class AlchemyService {
25
27
  return this.config.config.alchemyAccessTokenDev;
26
28
  };
27
29
  this.get_all_webhooks = (env) => __awaiter(this, void 0, void 0, function* () {
28
- const res = yield this.call(env, 'team-webhooks', "GET");
29
- return res.data;
30
+ return this.webhook_cache.get_value(`webhooks_${env}`, env, (e) => __awaiter(this, void 0, void 0, function* () {
31
+ const res = yield this.call(e, 'team-webhooks', "GET");
32
+ return res.data;
33
+ }));
30
34
  });
31
35
  this.get_all_addresses_for_webhook = (env, payload) => __awaiter(this, void 0, void 0, function* () {
32
36
  if (!payload.webhook_id) {
@@ -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;AAK1C,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,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,YAAY,OAAO,EAAE,YAAY,OAAO,sBAuB9I;IAIM,YAAY,GAAI,aAAa,MAAM,EAAE,YAAY,MAAM,EAAE,YAAY,cAAc,EAAE,YAAY,MAAM,eA4E7G;CAIJ;AAED,eAAe,aAAa,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;AAK1C,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,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,YAAY,OAAO,EAAE,YAAY,OAAO,sBA+B9I;IAIM,YAAY,GAAI,aAAa,MAAM,EAAE,YAAY,MAAM,EAAE,YAAY,cAAc,EAAE,YAAY,MAAM,eA4E7G;CAIJ;AAED,eAAe,aAAa,CAAC"}
@@ -64,6 +64,7 @@ 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"));
67
68
  class WalletManager extends errors_1.default {
68
69
  constructor(config, dbPool) {
69
70
  super();
@@ -207,16 +208,23 @@ class WalletManager extends errors_1.default {
207
208
  return updatedWallet;
208
209
  });
209
210
  this.handleRenewWallet = (subscription, blockchain, old_wallet, new_wallet) => __awaiter(this, void 0, void 0, function* () {
210
- const wallet_manager = WalletManager.getInstance(this.config, this.dbPool);
211
211
  const alchemy_service = AlchemyService_1.default.getInstance(this.config);
212
+ const qn_service = QnWebhookAddressManager_1.default.getInstance(this.config);
212
213
  // Dispatch insert sweep job handler
213
214
  const sweep_job_service = new SweepJobService_1.default(this.dbPool, this.config);
214
215
  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
216
  );
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.`);
217
+ // Add new address and remove expired address (quicknode and alchemy webhooks)
218
+ const promises = yield Promise.allSettled([
219
+ alchemy_service.add_remove_addresses_all_webhooks(subscription, blockchain, [new_wallet.address], [old_wallet.address]),
220
+ qn_service.add_address(blockchain, new_wallet.address),
221
+ qn_service.remove_address(blockchain, old_wallet.address),
222
+ ]);
223
+ const failed = promises
224
+ .filter(r => r.status === 'rejected')
225
+ .map(r => r.status);
226
+ if (failed.length > 0) {
227
+ throw new Error(`Error renewing wallet. ${failed.length} failed`);
220
228
  }
221
229
  return new_wallet;
222
230
  });
@@ -51,7 +51,7 @@ class QnNotificationsApi extends errors_1.default {
51
51
  constructor(config) {
52
52
  super();
53
53
  this.base_url = "https://api.quicknode.com/webhooks/rest/v1";
54
- this.rlc = { maxConcurrent: 2, minDelayMs: 100 };
54
+ this.rlc = { maxConcurrent: 1, minDelayMs: 300 };
55
55
  this.api_key = config.config.quicknodeApiKey;
56
56
  if (!this.api_key)
57
57
  throw new Error(`quicknode api key is required`);
@@ -0,0 +1,18 @@
1
+ import { BlockchainType } from "../../interfaces";
2
+ import { IConfig } from "../../interfaces/config";
3
+ declare class QnWebhookAddressManager {
4
+ private static instance;
5
+ private api;
6
+ private config;
7
+ private cache;
8
+ private constructor();
9
+ static getInstance(config: IConfig): QnWebhookAddressManager;
10
+ private get_notif_configs;
11
+ private is_stale;
12
+ private load;
13
+ private ensure_loaded;
14
+ add_address(blockchain: BlockchainType, address: string): Promise<boolean>;
15
+ remove_address(blockchain: BlockchainType, address: string): Promise<boolean>;
16
+ }
17
+ export default QnWebhookAddressManager;
18
+ //# sourceMappingURL=QnWebhookAddressManager.d.ts.map
@@ -0,0 +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,OAAO,CAAC;IAiB1E,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAiB7F;AAED,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const ChainManager_1 = __importDefault(require("../ChainManager"));
16
+ const QnNotificationsApi_1 = __importDefault(require("./QnNotificationsApi"));
17
+ const CACHE_TTL_MS = 10 * 60 * 1000; // 10 minutes
18
+ class QnWebhookAddressManager {
19
+ constructor(config) {
20
+ this.cache = new Map();
21
+ this.config = config;
22
+ this.api = new QnNotificationsApi_1.default(config);
23
+ }
24
+ static getInstance(config) {
25
+ if (!this.instance) {
26
+ this.instance = new QnWebhookAddressManager(config);
27
+ }
28
+ return this.instance;
29
+ }
30
+ get_notif_configs(blockchain) {
31
+ const chain_manager = ChainManager_1.default.getInstance(this.config);
32
+ if (!chain_manager.contractsMap)
33
+ return [];
34
+ return Object.entries(chain_manager.contractsMap)
35
+ .filter(([_, cfg]) => {
36
+ var _a;
37
+ return cfg.blockchainType === blockchain &&
38
+ ((_a = cfg.quicknodeNotificationConfig) === null || _a === void 0 ? void 0 : _a.length) > 0;
39
+ })
40
+ .flatMap(([_, cfg]) => cfg.quicknodeNotificationConfig.map(n => (Object.assign(Object.assign({}, n), { blockchain: cfg.blockchainType }))))
41
+ .filter((n, i, arr) => arr.findIndex(x => x.name === n.name) === i);
42
+ }
43
+ is_stale(blockchain) {
44
+ const cached = this.cache.get(blockchain);
45
+ if (!cached)
46
+ return true;
47
+ return Date.now() - cached.loaded_at > CACHE_TTL_MS;
48
+ }
49
+ load(blockchain) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ var _a;
52
+ const notif_configs = this.get_notif_configs(blockchain);
53
+ if (notif_configs.length === 0)
54
+ return;
55
+ let all_webhooks = [];
56
+ try {
57
+ const res = yield this.api.get_all_webhooks();
58
+ all_webhooks = res.data || [];
59
+ }
60
+ catch (error) {
61
+ console.error(`QnWebhookAddressManager: Failed to fetch webhooks for blockchain=${blockchain}`, error);
62
+ return;
63
+ }
64
+ const entries = [];
65
+ for (const notif_config of notif_configs) {
66
+ const existing = all_webhooks.find(w => {
67
+ var _a, _b;
68
+ return ((_a = w.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === notif_config.name.toLowerCase() &&
69
+ ((_b = w.network) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === notif_config.network.toLowerCase();
70
+ });
71
+ if (!existing) {
72
+ console.warn(`QnWebhookAddressManager: No webhook found for config=${notif_config.name} network=${notif_config.network}`);
73
+ continue;
74
+ }
75
+ const arg_key = notif_config.template === 'solanaWalletFilter' ? 'accounts' : 'wallets';
76
+ const addresses = ((_a = existing.templateArgs) === null || _a === void 0 ? void 0 : _a[arg_key]) || [];
77
+ entries.push({
78
+ webhook_id: existing.id,
79
+ template: notif_config.template,
80
+ network: notif_config.network,
81
+ address_set: new Set(addresses),
82
+ });
83
+ }
84
+ this.cache.set(blockchain, { entries, loaded_at: Date.now() });
85
+ });
86
+ }
87
+ ensure_loaded(blockchain) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ var _a;
90
+ if (this.is_stale(blockchain)) {
91
+ yield this.load(blockchain);
92
+ }
93
+ return ((_a = this.cache.get(blockchain)) === null || _a === void 0 ? void 0 : _a.entries) || [];
94
+ });
95
+ }
96
+ add_address(blockchain, address) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ const entries = yield this.ensure_loaded(blockchain);
99
+ for (const entry of entries) {
100
+ if (entry.address_set.has(address))
101
+ continue;
102
+ entry.address_set.add(address);
103
+ try {
104
+ yield this.api.update_webhook_addresses(entry.webhook_id, entry.template, Array.from(entry.address_set));
105
+ console.log(`QnWebhookAddressManager: Added ${address} to ${entry.network} webhook`);
106
+ }
107
+ catch (error) {
108
+ entry.address_set.delete(address);
109
+ console.error(`QnWebhookAddressManager: Failed to add ${address} to ${entry.network}`, error);
110
+ throw error;
111
+ }
112
+ }
113
+ return true;
114
+ });
115
+ }
116
+ remove_address(blockchain, address) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ const entries = yield this.ensure_loaded(blockchain);
119
+ for (const entry of entries) {
120
+ if (!entry.address_set.has(address))
121
+ continue;
122
+ entry.address_set.delete(address);
123
+ try {
124
+ yield this.api.update_webhook_addresses(entry.webhook_id, entry.template, Array.from(entry.address_set));
125
+ console.log(`QnWebhookAddressManager: Removed ${address} from ${entry.network} webhook`);
126
+ }
127
+ catch (error) {
128
+ entry.address_set.add(address);
129
+ console.error(`QnWebhookAddressManager: Failed to remove ${address} from ${entry.network}`, error);
130
+ throw error;
131
+ }
132
+ }
133
+ return true;
134
+ });
135
+ }
136
+ }
137
+ exports.default = QnWebhookAddressManager;
@@ -5,6 +5,7 @@ declare class AsyncTTLCache {
5
5
  private cache;
6
6
  private constructor();
7
7
  static getInstance(): AsyncTTLCache;
8
+ static create(stale_time_in_ms: number): AsyncTTLCache;
8
9
  private resolve_inflight;
9
10
  get_value<K, V>(key: string, data: K, fetch_task: (data: K) => Promise<V>): Promise<any>;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncTTLCache.d.ts","sourceRoot":"","sources":["../../src/utils/AsyncTTLCache.ts"],"names":[],"mappings":"AAOA,cAAM,aAAa;IACf,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAwC;IAEjD,aAAa,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO;IAKP,MAAM,CAAC,WAAW;YAYJ,gBAAgB;IAUjB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;CAiCzF;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"AsyncTTLCache.d.ts","sourceRoot":"","sources":["../../src/utils/AsyncTTLCache.ts"],"names":[],"mappings":"AAOA,cAAM,aAAa;IACf,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAwC;IAEjD,aAAa,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO;IAKP,MAAM,CAAC,WAAW;IAQlB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,aAAa;YAQxC,gBAAgB;IAUjB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;CAiCzF;AAED,eAAe,aAAa,CAAC"}
@@ -22,6 +22,9 @@ class AsyncTTLCache {
22
22
  }
23
23
  return this.instance;
24
24
  }
25
+ static create(stale_time_in_ms) {
26
+ return new AsyncTTLCache(stale_time_in_ms);
27
+ }
25
28
  // Handle error from external price provider (fetch task)
26
29
  // Returns stale price on error
27
30
  // Throws error if no stale price in memory and provider threw an exception
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ercworldio/blockchain-shared",
3
- "version": "1.0.0-dev.18",
3
+ "version": "1.0.0-dev.20",
4
4
  "description": "Shared library for blockchain projects",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",