@super-protocol/sdk-js 3.12.1-beta.2 → 3.13.0-beta.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 (150) hide show
  1. package/dist/cjs/certificates/binary-splitter.d.ts +26 -0
  2. package/dist/cjs/certificates/binary-splitter.js +269 -0
  3. package/dist/cjs/certificates/generator.d.ts +38 -0
  4. package/dist/cjs/certificates/generator.js +237 -0
  5. package/dist/cjs/certificates/helper.d.ts +5 -2
  6. package/dist/cjs/certificates/helper.js +19 -15
  7. package/dist/cjs/certificates/index.d.ts +1 -0
  8. package/dist/cjs/certificates/index.js +2 -1
  9. package/dist/cjs/certificates/serializer.d.ts +5 -0
  10. package/dist/cjs/certificates/serializer.js +98 -2
  11. package/dist/cjs/certificates/setup-crypto.d.ts +3 -0
  12. package/dist/cjs/certificates/setup-crypto.js +51 -0
  13. package/dist/cjs/certificates/types.d.ts +77 -0
  14. package/dist/cjs/connectors/BlockchainConnector.js +11 -8
  15. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +4 -4
  16. package/dist/cjs/connectors/BlockchainEventsListener.js +9 -8
  17. package/dist/cjs/constants.d.ts +5 -1
  18. package/dist/cjs/constants.js +12 -5
  19. package/dist/cjs/index.d.ts +0 -2
  20. package/dist/cjs/index.js +3 -6
  21. package/dist/cjs/models/Offer.d.ts +1 -1
  22. package/dist/cjs/models/Offer.js +10 -3
  23. package/dist/cjs/models/Order.d.ts +1 -1
  24. package/dist/cjs/models/Order.js +21 -20
  25. package/dist/cjs/models/TeeOffer.d.ts +2 -2
  26. package/dist/cjs/models/TeeOffer.js +18 -3
  27. package/dist/cjs/proto/OrderReport.d.ts +206 -15
  28. package/dist/cjs/proto/OrderReport.js +169 -3
  29. package/dist/cjs/staticModels/ActiveOrders.d.ts +1 -1
  30. package/dist/cjs/staticModels/ActiveOrders.js +1 -1
  31. package/dist/cjs/staticModels/OfferResources.js +3 -4
  32. package/dist/cjs/staticModels/Offers.d.ts +3 -4
  33. package/dist/cjs/staticModels/Offers.js +16 -17
  34. package/dist/cjs/staticModels/OffersCommon.d.ts +18 -0
  35. package/dist/cjs/staticModels/OffersCommon.js +79 -0
  36. package/dist/cjs/staticModels/Orders.d.ts +6 -5
  37. package/dist/cjs/staticModels/Orders.js +96 -5
  38. package/dist/cjs/staticModels/SecretRequests.js +2 -3
  39. package/dist/cjs/staticModels/StaticModel.d.ts +14 -2
  40. package/dist/cjs/staticModels/StaticModel.js +90 -2
  41. package/dist/cjs/staticModels/SuperproToken.d.ts +26 -1
  42. package/dist/cjs/staticModels/SuperproToken.js +40 -1
  43. package/dist/cjs/staticModels/TeeOffers.d.ts +4 -4
  44. package/dist/cjs/staticModels/TeeOffers.js +17 -16
  45. package/dist/cjs/tee/OrderReportService.js +4 -2
  46. package/dist/cjs/tee/QuoteValidator.d.ts +3 -2
  47. package/dist/cjs/tee/QuoteValidator.js +5 -4
  48. package/dist/cjs/tee/TeeCertificateService.d.ts +1 -1
  49. package/dist/cjs/tee/TeeCertificateService.js +11 -14
  50. package/dist/cjs/tee/TeeSignatureVerifier.d.ts +6 -4
  51. package/dist/cjs/tee/TeeSignatureVerifier.js +60 -32
  52. package/dist/cjs/tee/types.d.ts +1 -1
  53. package/dist/cjs/types/Order.d.ts +28 -2
  54. package/dist/cjs/types/Order.js +23 -2
  55. package/dist/cjs/types/index.d.ts +0 -1
  56. package/dist/cjs/types/index.js +1 -2
  57. package/dist/cjs/utils/CryptoKeysTransformer.d.ts +4 -0
  58. package/dist/cjs/utils/CryptoKeysTransformer.js +50 -1
  59. package/dist/cjs/utils/TxManager.d.ts +2 -0
  60. package/dist/cjs/utils/TxManager.js +56 -25
  61. package/dist/cjs/utils/helper.d.ts +11 -3
  62. package/dist/cjs/utils/helper.js +56 -12
  63. package/dist/cjs/utils/helpers/getRawRpc.d.ts +2 -0
  64. package/dist/cjs/utils/helpers/getRawRpc.js +19 -0
  65. package/dist/cjs/utils/helpers/index.d.ts +1 -0
  66. package/dist/cjs/utils/helpers/index.js +2 -1
  67. package/dist/cjs/utils/types.d.ts +14 -0
  68. package/dist/cjs/utils/types.js +3 -0
  69. package/dist/mjs/certificates/binary-splitter.d.ts +26 -0
  70. package/dist/mjs/certificates/binary-splitter.js +265 -0
  71. package/dist/mjs/certificates/generator.d.ts +38 -0
  72. package/dist/mjs/certificates/generator.js +230 -0
  73. package/dist/mjs/certificates/helper.d.ts +5 -2
  74. package/dist/mjs/certificates/helper.js +19 -15
  75. package/dist/mjs/certificates/index.d.ts +1 -0
  76. package/dist/mjs/certificates/index.js +2 -1
  77. package/dist/mjs/certificates/serializer.d.ts +5 -0
  78. package/dist/mjs/certificates/serializer.js +94 -1
  79. package/dist/mjs/certificates/setup-crypto.d.ts +3 -0
  80. package/dist/mjs/certificates/setup-crypto.js +22 -0
  81. package/dist/mjs/certificates/types.d.ts +77 -0
  82. package/dist/mjs/connectors/BlockchainConnector.js +11 -8
  83. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +4 -4
  84. package/dist/mjs/connectors/BlockchainEventsListener.js +9 -8
  85. package/dist/mjs/constants.d.ts +5 -1
  86. package/dist/mjs/constants.js +11 -4
  87. package/dist/mjs/index.d.ts +0 -2
  88. package/dist/mjs/index.js +1 -3
  89. package/dist/mjs/models/Offer.d.ts +1 -1
  90. package/dist/mjs/models/Offer.js +10 -3
  91. package/dist/mjs/models/Order.d.ts +1 -1
  92. package/dist/mjs/models/Order.js +22 -21
  93. package/dist/mjs/models/TeeOffer.d.ts +2 -2
  94. package/dist/mjs/models/TeeOffer.js +18 -3
  95. package/dist/mjs/proto/OrderReport.d.ts +206 -15
  96. package/dist/mjs/proto/OrderReport.js +168 -2
  97. package/dist/mjs/staticModels/ActiveOrders.d.ts +1 -1
  98. package/dist/mjs/staticModels/ActiveOrders.js +1 -1
  99. package/dist/mjs/staticModels/OfferResources.js +4 -5
  100. package/dist/mjs/staticModels/Offers.d.ts +3 -4
  101. package/dist/mjs/staticModels/Offers.js +16 -17
  102. package/dist/mjs/staticModels/OffersCommon.d.ts +18 -0
  103. package/dist/mjs/staticModels/OffersCommon.js +73 -0
  104. package/dist/mjs/staticModels/Orders.d.ts +6 -5
  105. package/dist/mjs/staticModels/Orders.js +98 -7
  106. package/dist/mjs/staticModels/SecretRequests.js +3 -4
  107. package/dist/mjs/staticModels/StaticModel.d.ts +14 -2
  108. package/dist/mjs/staticModels/StaticModel.js +90 -2
  109. package/dist/mjs/staticModels/SuperproToken.d.ts +26 -1
  110. package/dist/mjs/staticModels/SuperproToken.js +40 -1
  111. package/dist/mjs/staticModels/TeeOffers.d.ts +4 -4
  112. package/dist/mjs/staticModels/TeeOffers.js +17 -16
  113. package/dist/mjs/tee/OrderReportService.js +4 -2
  114. package/dist/mjs/tee/QuoteValidator.d.ts +3 -2
  115. package/dist/mjs/tee/QuoteValidator.js +5 -4
  116. package/dist/mjs/tee/TeeCertificateService.d.ts +1 -1
  117. package/dist/mjs/tee/TeeCertificateService.js +12 -15
  118. package/dist/mjs/tee/TeeSignatureVerifier.d.ts +6 -4
  119. package/dist/mjs/tee/TeeSignatureVerifier.js +59 -31
  120. package/dist/mjs/tee/types.d.ts +1 -1
  121. package/dist/mjs/types/Order.d.ts +28 -2
  122. package/dist/mjs/types/Order.js +21 -1
  123. package/dist/mjs/types/index.d.ts +0 -1
  124. package/dist/mjs/types/index.js +1 -2
  125. package/dist/mjs/utils/CryptoKeysTransformer.d.ts +4 -0
  126. package/dist/mjs/utils/CryptoKeysTransformer.js +50 -1
  127. package/dist/mjs/utils/TxManager.d.ts +2 -0
  128. package/dist/mjs/utils/TxManager.js +57 -26
  129. package/dist/mjs/utils/helper.d.ts +11 -3
  130. package/dist/mjs/utils/helper.js +54 -12
  131. package/dist/mjs/utils/helpers/getRawRpc.d.ts +2 -0
  132. package/dist/mjs/utils/helpers/getRawRpc.js +15 -0
  133. package/dist/mjs/utils/helpers/index.d.ts +1 -0
  134. package/dist/mjs/utils/helpers/index.js +2 -1
  135. package/dist/mjs/utils/types.d.ts +14 -0
  136. package/dist/mjs/utils/types.js +2 -0
  137. package/package.json +5 -3
  138. package/readme.md +11 -0
  139. package/dist/cjs/contracts/Campaign.d.ts +0 -1036
  140. package/dist/cjs/contracts/Campaign.js +0 -1347
  141. package/dist/cjs/staticModels/Campaign.d.ts +0 -59
  142. package/dist/cjs/staticModels/Campaign.js +0 -248
  143. package/dist/cjs/types/Campaign.d.ts +0 -57
  144. package/dist/cjs/types/Campaign.js +0 -11
  145. package/dist/mjs/contracts/Campaign.d.ts +0 -1036
  146. package/dist/mjs/contracts/Campaign.js +0 -1344
  147. package/dist/mjs/staticModels/Campaign.d.ts +0 -59
  148. package/dist/mjs/staticModels/Campaign.js +0 -243
  149. package/dist/mjs/types/Campaign.d.ts +0 -57
  150. package/dist/mjs/types/Campaign.js +0 -8
@@ -0,0 +1,79 @@
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
+ const index_js_1 = require("../connectors/index.js");
7
+ const store_js_1 = __importDefault(require("../store.js"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const helper_js_1 = require("../utils/helper.js");
10
+ const getRawRpc_js_1 = require("../utils/helpers/getRawRpc.js");
11
+ class OffersCommon {
12
+ static cachedOffers = new Map();
13
+ static latestCachedOfferId = '0';
14
+ static async getAll(batchSize = 1000) {
15
+ const contract = index_js_1.BlockchainConnector.getInstance().getContract();
16
+ const count = Number(await contract.methods.getOffersTotalCount().call());
17
+ const latestCachedOfferId = Number(this.latestCachedOfferId);
18
+ if (latestCachedOfferId > count) {
19
+ throw new Error('Unexpected behavior: latestCachedOfferId > count');
20
+ }
21
+ const newOfferIds = lodash_1.default.range(latestCachedOfferId + 1, count + 1).map(String);
22
+ const newOfferIdsChunks = lodash_1.default.chunk(newOfferIds, batchSize);
23
+ for (const newOfferIdsChunk of newOfferIdsChunks) {
24
+ const offers = await this.getOffersType(newOfferIdsChunk);
25
+ offers.forEach((v) => {
26
+ if (v.type) {
27
+ this.cachedOffers.set(v.offerId, v);
28
+ }
29
+ });
30
+ }
31
+ if (this.cachedOffers.size > 0) {
32
+ this.latestCachedOfferId = count.toString();
33
+ }
34
+ return Array.from(this.cachedOffers.values());
35
+ }
36
+ static async getOffersType(offerIds) {
37
+ const contract = index_js_1.BlockchainConnector.getInstance().getContract();
38
+ const contractAddress = contract.options.address;
39
+ if (!contractAddress) {
40
+ throw new Error('Contract address is not set');
41
+ }
42
+ const getOfferTypeAbi = contract.options.jsonInterface.find((abi) => abi.name === 'getOfferType' && abi.type === 'function')?.outputs;
43
+ if (!getOfferTypeAbi) {
44
+ throw new Error('getOfferType ABI not found');
45
+ }
46
+ const requests = offerIds.map((offerId) => {
47
+ const getOfferTypeEncoded = contract.methods.getOfferType(offerId).encodeABI();
48
+ return (0, getRawRpc_js_1.getRawRpcContractCall)(contractAddress, offerId, getOfferTypeEncoded);
49
+ });
50
+ const responses = await (0, helper_js_1.executeBatchAsync)(requests);
51
+ const responseRequestIdMap = lodash_1.default.groupBy(responses, (response) => response.requestId);
52
+ const data = [];
53
+ offerIds.forEach((offerId) => {
54
+ const response = responseRequestIdMap[offerId]?.[0];
55
+ if (!response || 'error' in response) {
56
+ data.push({
57
+ offerId,
58
+ error: `Failed to get offer type (offerId=${offerId})(error=${response?.error})`,
59
+ });
60
+ return;
61
+ }
62
+ const offerTypeRaw = store_js_1.default.web3Https.eth.abi.decodeParameters(getOfferTypeAbi, response.result)[0];
63
+ if (!offerTypeRaw) {
64
+ data.push({
65
+ offerId,
66
+ error: `Failed to decode offer type (offerId=${offerId})`,
67
+ });
68
+ return;
69
+ }
70
+ data.push({
71
+ offerId,
72
+ type: offerTypeRaw.toString(),
73
+ });
74
+ });
75
+ return data;
76
+ }
77
+ }
78
+ exports.default = OffersCommon;
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmZXJzQ29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PZmZlcnNDb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxxREFBNkQ7QUFHN0QsMkRBQWdDO0FBQ2hDLG9EQUE0QjtBQUM1QixrREFBdUQ7QUFDdkQsZ0VBQXNFO0FBUXRFLE1BQXFCLFlBQVk7SUFDdkIsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBMkMsQ0FBQztJQUN6RSxNQUFNLENBQUMsbUJBQW1CLEdBQWlCLEdBQUcsQ0FBQztJQUV2RCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFvQixJQUFJO1FBQzFDLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTdELElBQUksbUJBQW1CLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRixNQUFNLGlCQUFpQixHQUFHLGdCQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUUvRCxLQUFLLE1BQU0sZ0JBQWdCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCxNQUFNLE1B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
@@ -1,4 +1,4 @@
1
- import { BlockchainId, BlockInfo, OptionInfo, OrderCreatedEvent, OrderInfo, OrderSlots, OrderStatus, OrderUsage, SlotInfo, SlotUsage, TokenAmount, TransactionOptions, RefillArgs, WorkflowArgs } from '../types/index.js';
1
+ import { BlockchainId, BlockInfo, OptionInfo, OrderCreatedEvent, OrderInfo, OrderSlots, OrderStatus, OrderUsage, SlotInfo, SlotUsage, TokenAmount, TransactionOptions, RefillArgs, WorkflowArgs, GetAggregatedOrdersInfoResult } from '../types/index.js';
2
2
  import StaticModel from './StaticModel.js';
3
3
  import { TransactionReceipt } from 'web3-types';
4
4
  declare class Orders implements StaticModel {
@@ -16,17 +16,18 @@ declare class Orders implements StaticModel {
16
16
  * Function for fetching orders count
17
17
  */
18
18
  static getCount(): Promise<number>;
19
- static createOrder(inputOrderInfo: OrderInfo, slots: OrderSlots, deposit?: TokenAmount, suspended?: boolean, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
19
+ static getAggregatedOrdersInfo(orderIds: string[]): Promise<GetAggregatedOrdersInfoResult[]>;
20
+ static createOrder(inputOrderInfo: OrderInfo, slots: OrderSlots, deposit?: TokenAmount, suspended?: boolean, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<BlockchainId>;
20
21
  static getOrderIdByExternalId(consumer: string, externalId: string): Promise<number>;
21
22
  static getByExternalId(filter: {
22
23
  externalId: string;
23
24
  consumer?: string;
24
- }, fromBlock?: number | string, toBlock?: number | string): Promise<OrderCreatedEvent | null>;
25
- static createWorkflow(inputParentOrderInfo: OrderInfo, parentOrderSlot: OrderSlots, inputSubOrdersInfo: OrderInfo[], subOrdersSlots: OrderSlots[], workflowDeposit: TokenAmount, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
25
+ }, fromBlock: number | string, toBlock?: number | string): Promise<OrderCreatedEvent | null>;
26
+ static createWorkflow(inputParentOrderInfo: OrderInfo, parentOrderSlot: OrderSlots, inputSubOrdersInfo: OrderInfo[], subOrdersSlots: OrderSlots[], workflowDeposit: TokenAmount, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<BlockchainId>;
26
27
  static replenishWorkflowDeposit(parentOrderId: BlockchainId, replenishAmount: TokenAmount, transactionOptions?: TransactionOptions): Promise<TransactionReceipt>;
27
28
  static calculateWorkflowPerHourPrice(parentOrderId: BlockchainId): Promise<TokenAmount>;
28
29
  static cancelWorkflow(parentOrderId: BlockchainId, transactionOptions?: TransactionOptions): Promise<TransactionReceipt>;
29
- static createWorkflows(workflowArgs: WorkflowArgs[], transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
30
+ static createWorkflows(workflowArgs: WorkflowArgs[], transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<BlockchainId[]>;
30
31
  static cancelWorkflows(parentOrderIds: BlockchainId[], transactionOptions?: TransactionOptions): Promise<TransactionReceipt>;
31
32
  /**
32
33
  * Function for refilling order deposit
@@ -22,6 +22,9 @@ const index_js_2 = require("../connectors/index.js");
22
22
  const StaticModel_js_1 = __importDefault(require("./StaticModel.js"));
23
23
  const versify_js_1 = require("../utils/order/versify.js");
24
24
  const Offer_js_1 = __importDefault(require("../models/Offer.js"));
25
+ const store_js_1 = __importDefault(require("../store.js"));
26
+ const getRawRpc_js_1 = require("../utils/helpers/getRawRpc.js");
27
+ const lodash_1 = __importDefault(require("lodash"));
25
28
  class Orders {
26
29
  static logger = logger_js_1.default.child({ className: 'Orders' });
27
30
  static orders;
@@ -83,6 +86,65 @@ class Orders {
83
86
  const contract = index_js_2.BlockchainConnector.getInstance().getContract();
84
87
  return Number(await contract.methods.getOrdersCount().call());
85
88
  }
89
+ static async getAggregatedOrdersInfo(orderIds) {
90
+ const denominatorRequestId = 'denominator';
91
+ const contract = index_js_2.BlockchainConnector.getInstance().getContract();
92
+ const contractAddress = contract.options.address;
93
+ if (!contractAddress) {
94
+ throw new Error('Contract address is not set');
95
+ }
96
+ const getCpuDenominatorEncoded = contract.methods.getCpuDenominator().encodeABI();
97
+ const requests = [
98
+ (0, getRawRpc_js_1.getRawRpcContractCall)(contractAddress, denominatorRequestId, getCpuDenominatorEncoded),
99
+ ];
100
+ orderIds.forEach((orderId) => {
101
+ const getOrderAggregatedInfoEncoded = contract.methods
102
+ .getOrderAggregatedInfo(orderId)
103
+ .encodeABI();
104
+ requests.push((0, getRawRpc_js_1.getRawRpcContractCall)(contractAddress, orderId, getOrderAggregatedInfoEncoded));
105
+ });
106
+ const responses = await (0, helper_js_1.executeBatchAsync)(requests);
107
+ const responseRequestIdMap = lodash_1.default.groupBy(responses, (response) => response.requestId);
108
+ const getCpuDenominatorAbi = contract.options.jsonInterface.find((abi) => abi.name === 'getCpuDenominator' && abi.type === 'function')?.outputs;
109
+ if (!getCpuDenominatorAbi) {
110
+ throw new Error('getCpuDenominator ABI not found');
111
+ }
112
+ const denominatorResponse = responseRequestIdMap[denominatorRequestId][0];
113
+ if (!denominatorResponse || 'error' in denominatorResponse) {
114
+ throw new Error(`Failed to get CPU denominator: ${denominatorResponse?.error}`);
115
+ }
116
+ const cpuDenominatorRaw = store_js_1.default.web3Https.eth.abi.decodeParameters(getCpuDenominatorAbi, denominatorResponse.result)[0];
117
+ const cpuDenominator = Number(cpuDenominatorRaw);
118
+ const getOrderAggregatedInfoAbi = contract.options.jsonInterface.find((abi) => abi.name === 'getOrderAggregatedInfo' && abi.type === 'function')?.outputs;
119
+ if (!getOrderAggregatedInfoAbi) {
120
+ throw new Error('getOrderAggregatedInfo ABI not found');
121
+ }
122
+ const data = [];
123
+ orderIds.forEach((orderId) => {
124
+ const response = responseRequestIdMap[orderId]?.[0];
125
+ if (!response || 'error' in response) {
126
+ data.push({
127
+ orderId,
128
+ error: `Failed to get aggregated order info (orderId=${orderId})(error=${response?.error})`,
129
+ });
130
+ return;
131
+ }
132
+ const aggregatedInfoRaw = store_js_1.default.web3Https.eth.abi.decodeParameters(getOrderAggregatedInfoAbi, response.result);
133
+ if (!aggregatedInfoRaw) {
134
+ data.push({
135
+ orderId,
136
+ error: `Failed to decode aggregated order info (orderId=${orderId})`,
137
+ });
138
+ return;
139
+ }
140
+ const aggregatedInfo = (0, helper_js_1.cleanWeb3Data)(aggregatedInfoRaw[0]);
141
+ data.push({
142
+ orderId,
143
+ aggregatedInfo: (0, index_js_1.aggregatedOrderInfoFromRaw)(aggregatedInfo, cpuDenominator),
144
+ });
145
+ });
146
+ return data;
147
+ }
86
148
  static async createOrder(inputOrderInfo, slots, deposit, suspended = false, transactionOptions, checkTxBeforeSend = false) {
87
149
  const contract = index_js_2.BlockchainConnector.getInstance().getContract();
88
150
  (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
@@ -96,13 +158,20 @@ class Orders {
96
158
  if (checkTxBeforeSend) {
97
159
  await TxManager_js_1.default.dryRun(contract.methods.createOrder(orderInfoArguments, slots, args, deposit, suspended), transactionOptions);
98
160
  }
99
- return await TxManager_js_1.default.execute(contract.methods.createOrder(orderInfoArguments, slots, args, deposit, suspended), transactionOptions);
161
+ const newOrderId = await StaticModel_js_1.default.createEntity({
162
+ txExecutorCallback: async () => {
163
+ await TxManager_js_1.default.execute(contract.methods.createOrder(orderInfoArguments, slots, args, deposit, suspended), transactionOptions);
164
+ },
165
+ filters: [{ externalId: inputOrderInfo.externalId }],
166
+ eventName: 'OrderCreated',
167
+ });
168
+ return newOrderId;
100
169
  }
101
170
  static async getOrderIdByExternalId(consumer, externalId) {
102
171
  const contract = index_js_2.BlockchainConnector.getInstance().getContract();
103
172
  return await contract.methods.getOrderIdByExternalId(consumer, externalId).call();
104
173
  }
105
- static async getByExternalId(filter, fromBlock, toBlock) {
174
+ static async getByExternalId(filter, fromBlock, toBlock = 'latest') {
106
175
  const founded = await StaticModel_js_1.default.findItemsById('OrderCreated', filter, fromBlock, toBlock);
107
176
  if (!founded)
108
177
  return null;
@@ -123,7 +192,14 @@ class Orders {
123
192
  if (checkTxBeforeSend) {
124
193
  await TxManager_js_1.default.dryRun(contract.methods.createWorkflow(rawWorkflowArgs), transactionOptions);
125
194
  }
126
- return await TxManager_js_1.default.execute(contract.methods.createWorkflow(rawWorkflowArgs), transactionOptions);
195
+ const newParentOrderId = await StaticModel_js_1.default.createEntity({
196
+ txExecutorCallback: async () => {
197
+ await TxManager_js_1.default.execute(contract.methods.createWorkflow(rawWorkflowArgs), transactionOptions);
198
+ },
199
+ filters: [{ externalId: inputParentOrderInfo.externalId }],
200
+ eventName: 'OrderCreated',
201
+ });
202
+ return newParentOrderId;
127
203
  }
128
204
  static async replenishWorkflowDeposit(parentOrderId, replenishAmount, transactionOptions) {
129
205
  const contract = index_js_2.BlockchainConnector.getInstance().getContract();
@@ -153,7 +229,16 @@ class Orders {
153
229
  if (checkTxBeforeSend) {
154
230
  await TxManager_js_1.default.dryRun(contract.methods.createWorkflows(rawWorkflowArgs), transactionOptions);
155
231
  }
156
- return await TxManager_js_1.default.execute(contract.methods.createWorkflows(rawWorkflowArgs), transactionOptions);
232
+ const newParentOrderIds = await StaticModel_js_1.default.createEntities({
233
+ txExecutorCallback: async () => {
234
+ await TxManager_js_1.default.execute(contract.methods.createWorkflows(rawWorkflowArgs), transactionOptions);
235
+ },
236
+ filters: workflowArgs.map((wa) => {
237
+ return { externalId: wa.inputParentOrderInfo.externalId };
238
+ }),
239
+ eventName: 'OrderCreated',
240
+ });
241
+ return newParentOrderIds;
157
242
  }
158
243
  static async cancelWorkflows(parentOrderIds, transactionOptions) {
159
244
  const contract = index_js_2.BlockchainConnector.getInstance().getContract();
@@ -510,6 +595,12 @@ class Orders {
510
595
  });
511
596
  }
512
597
  }
598
+ __decorate([
599
+ (0, helper_js_1.incrementMethodCall)(),
600
+ __metadata("design:type", Function),
601
+ __metadata("design:paramtypes", [Array]),
602
+ __metadata("design:returntype", Promise)
603
+ ], Orders, "getAggregatedOrdersInfo", null);
513
604
  __decorate([
514
605
  (0, helper_js_1.incrementMethodCall)(),
515
606
  __metadata("design:type", Function),
@@ -547,4 +638,4 @@ __decorate([
547
638
  __metadata("design:returntype", Promise)
548
639
  ], Orders, "createWorkflows", null);
549
640
  exports.default = Orders;
550
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PcmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBeUQ7QUFDekQsNkRBQXNDO0FBQ3RDLGtEQUs0QjtBQUM1QixnREFtQjJCO0FBQzNCLGdFQUFxQztBQUNyQyx5RUFBOEM7QUFDOUMscURBQXVGO0FBRXZGLHNFQUEyQztBQU0zQywwREFBb0Q7QUFDcEQsa0VBQXVDO0FBRXZDLE1BQU0sTUFBTTtJQUNGLE1BQU0sQ0FBVSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUMsTUFBTSxDQUFrQjtJQUUvQixNQUFNLEtBQUssT0FBTztRQUN2QixPQUFPLHFCQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDTyxNQUFNLENBQUMsZUFBZTtRQUM1QixPQUFPLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFDTyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUNwQyxZQUEwQixFQUMxQixZQUFvQjtRQUVwQixNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0UsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNyQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFBLG9CQUFPLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3BFLENBQUM7UUFDRixJQUFJLGVBQWUsQ0FBQyxZQUFZLEtBQUssU0FBUztZQUFFLGVBQWUsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FB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
641
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PcmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBeUQ7QUFDekQsNkRBQXNDO0FBQ3RDLGtEQU00QjtBQUM1QixnREFxQjJCO0FBQzNCLGdFQUFxQztBQUNyQyx5RUFBOEM7QUFDOUMscURBQXVGO0FBRXZGLHNFQUEyQztBQU0zQywwREFBb0Q7QUFDcEQsa0VBQXVDO0FBQ3ZDLDJEQUFnQztBQUNoQyxnRUFBc0U7QUFDdEUsb0RBQXVCO0FBRXZCLE1BQU0sTUFBTTtJQUNGLE1BQU0sQ0FBVSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUMsTUFBTSxDQUFrQjtJQUUvQixNQUFNLEtBQUssT0FBTztRQUN2QixPQUFPLHFCQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDTyxNQUFNLENBQUMsZUFBZTtRQUM1QixPQUFPLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFDTyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUNwQyxZQUEwQixFQUMxQixZQUFvQjtRQUVwQixNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0UsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNyQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFBLG9CQUFPLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3BFLENBQUM7UUFDRixJQUFJLGVBQWUsQ0FBQyxZQUFZLEtBQUssU0FBUztZQUFFLGVBQWUsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVGLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDeEUsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxlQUFlLElBQUksR0FBRyxDQUFDO1FBRTVELE1BQU0sdUJBQXVCLEdBQXNCO1lBQ2pELFNBQVMsRUFBRSxJQUFBLHlCQUFjLEVBQUMsZUFBZSxDQUFDO1lBQzFDLFVBQVUsRUFBRSxZQUFZLENBQUMsZUFBZTtZQUN4QyxTQUFTLEVBQUUsZUFBZSxDQUFDLElBQUk7U0FDaEMsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQXdCLEVBQUUsQ0FBQztRQUN0RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLHFCQUFxQixDQUFDLElBQUksQ0FBQztnQkFDekIsU0FBUyxFQUFFLElBQUEseUJBQWMsRUFBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLFVBQVUsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ2pDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBb0I7WUFDdkMsdUJBQXVCO1lBQ3ZCLGVBQWU7WUFDZixxQkFBcUI7U0FDdEIsQ0FBQztRQUNGLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU07UUFDeEIsTUFBTSxRQUFRLEdBQUcsOEJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLEtBQUssSUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3pFLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO1FBQzFCLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFHbUIsQUFBYixNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUN6QyxRQUFrQjtRQUVsQixNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQztRQUMzQyxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxNQUFNLHdCQUF3QixHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVsRixNQUFNLFFBQVEsR0FBRztZQUNmLElBQUEsb0NBQXFCLEVBQUMsZUFBZSxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixDQUFDO1NBQ3ZGLENBQUM7UUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0IsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQUMsT0FBTztpQkFDbkQsc0JBQXNCLENBQUMsT0FBTyxDQUFDO2lCQUMvQixTQUFTLEVBQUUsQ0FBQztZQUNmLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSxvQ0FBcUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSw2QkFBaUIsRUFBUyxRQUFRLENBQUMsQ0FBQztRQUM1RCxNQUFNLG9CQUFvQixHQUFHLGdCQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBGLE1BQU0sb0JBQW9CLEdBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUF1QyxDQUFDLElBQUksQ0FDekYsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQ3JFLEVBQUUsT0FBTyxDQUFDO1FBQ1gsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLG1CQUFtQixJQUFJLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQzNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUNELE1BQU0saUJBQWlCLEdBQUcsa0JBQUssQ0FBQyxTQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FDakUsb0JBQWtDLEVBQ2xDLG1CQUFtQixDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNMLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpELE1BQU0seUJBQXlCLEdBQzdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFDbEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssd0JBQXdCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDM0YsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxNQUFNLElBQUksR0FBb0MsRUFBRSxDQUFDO1FBQ2pELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLE9BQU87b0JBQ1AsS0FBSyxFQUFFLGdEQUFnRCxPQUFPLFdBQVcsUUFBUSxFQUFFLEtBQUssR0FBRztpQkFDNUYsQ0FBQyxDQUFDO2dCQUNILE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxpQkFBaUIsR0FBRyxrQkFBSyxDQUFDLFNBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUNqRSx5QkFBdUMsRUFDdkMsUUFBUSxDQUFDLE1BQU0sQ0FDaEIsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLE9BQU87b0JBQ1AsS0FBSyxFQUFFLG1EQUFtRCxPQUFPLEdBQUc7aUJBQ3JFLENBQUMsQ0FBQztnQkFDSCxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUFHLElBQUEseUJBQWEsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsT0FBTztnQkFDUCxjQUFjLEVBQUUsSUFBQSxxQ0FBMEIsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO2FBQzNFLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR21CLEFBQWIsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQzdCLGNBQXlCLEVBQ3pCLEtBQWlCLEVBQ2pCLE9BQXFCLEVBQ3JCLFNBQVMsR0FBRyxLQUFLLEVBQ2pCLGtCQUF1QyxFQUN2QyxpQkFBaUIsR0FBRyxLQUFLO1FBRXpCLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUEsMkNBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksa0JBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLG9CQUFPLEVBQUMsY0FBYyxFQUFFLFNBQVMsS0FBSyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxGLElBQUksU0FBUyxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQUUsU0FBUyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUYsT0FBTyxHQUFHLE9BQU8sSUFBSSxHQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUM1QixNQUFNLGtCQUFrQixHQUFHLElBQUEseUJBQWMsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUVyRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsTUFBTSxzQkFBUyxDQUFDLE1BQU0sQ0FDcEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQ2pGLGtCQUFrQixDQUNuQixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sd0JBQVcsQ0FBQyxZQUFZLENBQUM7WUFDaEQsa0JBQWtCLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzdCLE1BQU0sc0JBQVMsQ0FBQyxPQUFPLENBQ3JCLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUNqRixrQkFBa0IsQ0FDbkIsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEQsU0FBUyxFQUFFLGNBQWM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUdtQixBQUFiLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQ3hDLFFBQWdCLEVBQ2hCLFVBQWtCO1FBRWxCLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRixDQUFDO0lBR21CLEFBQWIsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQ2pDLE1BR0MsRUFDRCxTQUEwQixFQUMxQixVQUEyQixRQUFRO1FBRW5DLE1BQU0sT0FBTyxHQUFHLE1BQU0sd0JBQVcsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFNUYsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxQixPQUFPLE9BQTRCLENBQUM7SUFDdEMsQ0FBQztJQUdtQixBQUFiLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUNoQyxvQkFBK0IsRUFDL0IsZUFBMkIsRUFDM0Isa0JBQStCLEVBQy9CLGNBQTRCLEVBQzVCLGVBQTRCLEVBQzVCLGtCQUF1QyxFQUN2QyxpQkFBaUIsR0FBRyxLQUFLO1FBRXpCLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUEsMkNBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQWlCO1lBQ2pDLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxlQUFlO1NBQ2hCLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sc0JBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLHdCQUFXLENBQUMsWUFBWSxDQUFDO1lBQ3RELGtCQUFrQixFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUM3QixNQUFNLHNCQUFTLENBQUMsT0FBTyxDQUNyQixRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFDaEQsa0JBQWtCLENBQ25CLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUQsU0FBUyxFQUFFLGNBQWM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FDMUMsYUFBMkIsRUFDM0IsZUFBNEIsRUFDNUIsa0JBQXVDO1FBRXZDLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUEsMkNBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxPQUFPLE1BQU0sc0JBQVMsQ0FBQyxPQUFPLENBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxFQUN6RSxrQkFBa0IsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFHbUIsQUFBYixNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUMvQyxhQUEyQjtRQUUzQixNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxPQUFPLE1BQU0sUUFBUSxDQUFDLE9BQU87YUFDMUIsNkJBQTZCLENBQUMsYUFBYSxDQUFDO2FBQzVDLElBQUksRUFBRTthQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUNoQyxhQUEyQixFQUMzQixrQkFBdUM7UUFFdkMsTUFBTSxRQUFRLEdBQUcsOEJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakUsSUFBQSwyQ0FBK0IsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXBELE9BQU8sTUFBTSxzQkFBUyxDQUFDLE9BQU8sQ0FDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQzlDLGtCQUFrQixDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUdtQixBQUFiLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUNqQyxZQUE0QixFQUM1QixrQkFBdUMsRUFDdkMsaUJBQWlCLEdBQUcsS0FBSztRQUV6QixNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxJQUFBLDJDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzlDLE1BQU0sZUFBZSxHQUFzQixFQUFFLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsTUFBTSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sd0JBQVcsQ0FBQyxjQUFjLENBQUM7WUFDekQsa0JBQWtCLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzdCLE1BQU0sc0JBQVMsQ0FBQyxPQUFPLENBQ3JCLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUNqRCxrQkFBa0IsQ0FDbkIsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxDQUFDLENBQUM7WUFDRixTQUFTLEVBQUUsY0FBYztTQUMxQixDQUFDLENBQUM7UUFDSCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDakMsY0FBOEIsRUFDOUIsa0JBQXVDO1FBRXZDLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUEsMkNBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxPQUFPLE1BQU0sc0JBQVMsQ0FBQyxPQUFPLENBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUNoRCxrQkFBa0IsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQ3BDLE9BQXFCLEVBQ3JCLE1BQW1CLEVBQ25CLGtCQUF1QztRQUV2QyxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxJQUFBLDJDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEQsT0FBTyxNQUFNLHNCQUFTLENBQUMsT0FBTyxDQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQzdDLGtCQUFrQixDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQ2xDLElBQWtCLEVBQ2xCLGtCQUF1QztRQUV2QyxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxJQUFBLDJDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEQsT0FBTyxNQUFNLHNCQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FDekMsUUFBd0IsRUFDeEIsd0JBQWlDLEVBQ2pDLGtCQUF1QztRQUV2QyxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxJQUFBLDJDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEQsSUFBSSxhQUFxQixDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILGFBQWEsR0FBRyxNQUFNLENBQ3BCLENBQUMsTUFBTSxzQkFBUyxDQUFDLE1BQU0sQ0FDckIsUUFBUSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUMsRUFDNUUsa0JBQWtCLENBQ25CLENBQVcsQ0FDYixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLGFBQWEsS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsTUFBTSxzQkFBUyxDQUFDLE9BQU8sQ0FDckIsUUFBUSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUMsRUFDNUUsa0JBQWtCLENBQ25CLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQWdDO1FBQ3RELE1BQU0sUUFBUSxHQUFHLG1DQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLE1BQU0sR0FBNEIsQ0FBQyxLQUFlLEVBQVEsRUFBRTtZQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFhLEVBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELFFBQVEsQ0FDRSxXQUFXLENBQUMsUUFBUSxFQUM1QixJQUFBLDZCQUFrQixFQUFTLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFDcEMsV0FBVyxDQUFDLE9BQU8sRUFDbkIsV0FBVyxDQUFDLGFBQWEsRUFDekIsV0FBVyxDQUFDLE9BQU8sRUFDekIsV0FBVyxDQUFDLFlBQVksRUFDbkIsV0FBVyxDQUFDLE9BQU8sRUFDbkIsV0FBVyxDQUFDLE1BQU0sRUFDcEI7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsY0FBYztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQWdDLEVBQUUsT0FBZ0I7UUFDeEUsTUFBTSxRQUFRLEdBQUcsbUNBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUE0QixDQUFDLEtBQWUsRUFBUSxFQUFFO1lBQ2hFLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQWEsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFBLGlDQUFxQixFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLE9BQU87WUFDVCxDQUFDO1lBQ0QsUUFBUSxDQUNRLFdBQVcsQ0FBQyxPQUFPLEVBQ3pCLFdBQVcsQ0FBQyxRQUFRLEVBQ2pCO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLGNBQWM7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FDM0IsUUFBdUMsRUFDdkMsT0FBc0I7UUFFdEIsTUFBTSxRQUFRLEdBQUcsbUNBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sTUFBTSxHQUE0QixDQUFDLEtBQWUsRUFBUSxFQUFFO1lBQ2hFLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQWEsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFBLGlDQUFxQixFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLE9BQU87WUFDVCxDQUFDO1lBQ0QsUUFBUSxDQUNRLFdBQVcsQ0FBQyxPQUFPLEVBQ3BCLFdBQVcsQ0FBQyxNQUFNLEVBQ3BCO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLG9CQUFvQjtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUM3QixRQUF3QyxFQUN4QyxRQUFpQixFQUNqQixPQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxtQ0FBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBYSxFQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUEsaUNBQXFCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckUsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLFFBQVEsSUFBSSxXQUFXLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNqRCxPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FDUSxXQUFXLENBQUMsT0FBTyxFQUN6QixXQUFXLENBQUMsUUFBUSxFQUNmLFdBQVcsQ0FBQyxNQUFNLEVBQ3BCO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLHNCQUFzQjtTQUM5QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQzlCLFFBQXdDLEVBQ3hDLE9BQXNCO1FBRXRCLE1BQU0sUUFBUSxHQUFHLG1DQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBNEIsQ0FBQyxLQUFlLEVBQVEsRUFBRTtZQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFhLEVBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBQSxpQ0FBcUIsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNyRSxPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FDUSxXQUFXLENBQUMsT0FBTyxFQUN6QixXQUFXLENBQUMsUUFBUSxFQUNmLFdBQVcsQ0FBQyxNQUFNLEVBQ3BCO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLHNCQUFzQjtTQUM5QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUM3QixRQUF3QyxFQUN4QyxPQUFzQixFQUN0QixhQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxtQ0FBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBYSxFQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUEsaUNBQXFCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckUsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLGFBQWEsSUFBSSxXQUFXLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNoRSxPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FDUSxXQUFXLENBQUMsT0FBTyxFQUN6QixXQUFXLENBQUMsYUFBYSxFQUNwQixXQUFXLENBQUMsTUFBTSxFQUNwQjtnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLElBQUksRUFBVSxLQUFLLENBQUMsU0FBUzthQUM5QixDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBNkIsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUM3QixPQUFPO1lBQ1AsTUFBTTtZQUNOLEtBQUssRUFBRSxzQkFBc0I7U0FDOUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDcEMsUUFBK0MsRUFDL0MsUUFBaUIsRUFDakIsT0FBc0I7UUFFdEIsTUFBTSxRQUFRLEdBQUcsbUNBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sTUFBTSxHQUE0QixDQUFDLEtBQWUsRUFBUSxFQUFFO1lBQ2hFLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQWEsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFBLGlDQUFxQixFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDakQsT0FBTztZQUNULENBQUM7WUFDRCxRQUFRLENBQ1EsV0FBVyxDQUFDLE9BQU8sRUFDekIsV0FBVyxDQUFDLFFBQVEsRUFDbkIsV0FBVyxDQUFDLGVBQWUsRUFDekI7Z0JBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLEVBQVUsS0FBSyxDQUFDLFNBQVM7YUFDOUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQTZCLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDN0IsT0FBTztZQUNQLE1BQU07WUFDTixLQUFLLEVBQUUsNkJBQTZCO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQ3BDLFFBQStDLEVBQy9DLFFBQWlCLEVBQ2pCLE9BQXNCO1FBRXRCLE1BQU0sUUFBUSxHQUFHLG1DQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLCtCQUErQixFQUFFLENBQUMsQ0FBQztRQUM5RSxNQUFNLE1BQU0sR0FBNEIsQ0FBQyxLQUFlLEVBQVEsRUFBRTtZQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFhLEVBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBQSxpQ0FBcUIsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNyRSxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksUUFBUSxJQUFJLFdBQVcsQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2pELE9BQU87WUFDVCxDQUFDO1lBQ0QsUUFBUSxDQUNRLFdBQVcsQ0FBQyxPQUFPLEVBQ3pCLFdBQVcsQ0FBQyxRQUFRLEVBQ3BCLFdBQVcsQ0FBQyxlQUFlLEVBQ3hCO2dCQUNULEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxFQUFVLEtBQUssQ0FBQyxTQUFTO2FBQzlCLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUE2QixDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSyxFQUFFLDZCQUE2QjtTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUM3QixRQUF1QyxFQUN2QyxhQUFzQixFQUN0QixPQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxtQ0FBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUM7UUFDdEUsTUFBTSxNQUFNLEdBQTRCLENBQUMsS0FBZSxFQUFRLEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBYSxFQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUEsaUNBQXFCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckUsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLGFBQWEsSUFBSSxXQUFXLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNoRSxPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FDRSxXQUFXLENBQUMsYUFBYSxFQUNuQixXQUFXLENBQUMsT0FBTyxFQUNwQixXQUFXLENBQUMsTUFBTSxFQUNwQjtnQkFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLElBQUksRUFBVSxLQUFLLENBQUMsU0FBUzthQUM5QixDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBNkIsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUM3QixPQUFPO1lBQ1AsTUFBTTtZQUNOLEtBQUssRUFBRSxxQkFBcUI7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsYUFBeUI7UUFDekQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFFNUUsT0FBTztZQUNMLFFBQVEsRUFBRSxRQUFRLEdBQUcsU0FBUztZQUM5QixHQUFHLEVBQUUsR0FBRyxHQUFHLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVMsR0FBRyxTQUFTO1lBQ2hDLFFBQVEsRUFBRSxRQUFRLEdBQUcsU0FBUztZQUM5QixJQUFJLEVBQUUsSUFBSSxHQUFHLFNBQVM7U0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLGFBQXlCO1FBQzFELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUUxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1lBQzlCLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzVCLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYztZQUN4QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWM7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLGFBQXlCO1FBQzVELE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQ3BDLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsRUFBRTtZQUMvQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDeEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhFLGVBQWUsQ0FBQyxTQUFTLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQztZQUNyRCxlQUFlLENBQUMsWUFBWSxJQUFJLFlBQVksR0FBRyxXQUFXLENBQUM7WUFDM0QsZUFBZSxDQUFDLE9BQU8sSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDO1lBQ2pELE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUMsRUFDRDtZQUNFLFNBQVMsRUFBRSxDQUFDO1lBQ1osWUFBWSxFQUFFLENBQUM7WUFDZixPQUFPLEVBQUUsQ0FBQztTQUNYLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBcHVCbUI7SUFEbkIsSUFBQSwrQkFBbUIsR0FBRTs7OzsyQ0FrRnJCO0FBR21CO0lBRG5CLElBQUEsK0JBQW1CLEdBQUU7Ozs7K0JBc0NyQjtBQUdtQjtJQURuQixJQUFBLCtCQUFtQixHQUFFOzs7OzBDQU9yQjtBQUdtQjtJQURuQixJQUFBLCtCQUFtQixHQUFFOzs7O21DQWNyQjtBQUdtQjtJQURuQixJQUFBLCtCQUFtQixHQUFFOzs7O2tDQXFDckI7QUFpQm1CO0lBRG5CLElBQUEsK0JBQW1CLEdBQUU7Ozs7aURBU3JCO0FBZ0JtQjtJQURuQixJQUFBLCtCQUFtQixHQUFFOzs7O21DQWdDckI7QUFnaUJILGtCQUFlLE1BQU0sQ0FBQyJ9
@@ -7,7 +7,6 @@ const index_js_1 = require("../connectors/index.js");
7
7
  const helper_js_1 = require("../utils/helper.js");
8
8
  const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
9
9
  const logger_js_1 = __importDefault(require("../logger.js"));
10
- const constants_js_1 = require("../constants.js");
11
10
  class SecretRequests {
12
11
  static logger = logger_js_1.default.child({ className: 'SecretRequests' });
13
12
  static async getCountByKeeperId(teeOfferKeeperId) {
@@ -41,7 +40,7 @@ class SecretRequests {
41
40
  const contract = index_js_1.BlockchainConnector.getInstance().getContract();
42
41
  (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
43
42
  const options = {
44
- gas: constants_js_1.AMOY_TX_GAS_LIMIT,
43
+ gas: (0, helper_js_1.getGasLimitForNetwork)(),
45
44
  ...transactionOptions,
46
45
  };
47
46
  await TxManager_js_1.default.execute(contract.methods.clearSecretRequests(teeOfferKeeperId), options);
@@ -76,4 +75,4 @@ class SecretRequests {
76
75
  }
77
76
  }
78
77
  exports.default = SecretRequests;
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjcmV0UmVxdWVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL1NlY3JldFJlcXVlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXVGO0FBRXZGLGtEQUk0QjtBQUM1Qix5RUFBOEM7QUFFOUMsNkRBQXNDO0FBS3RDLGtEQUFvRDtBQUVwRCxNQUFNLGNBQWM7SUFDVixNQUFNLENBQVUsTUFBTSxHQUFHLG1CQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUU1RSxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGdCQUE4QjtRQUNuRSxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUE4QjtRQUN4RCxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRSxPQUFPLFFBQVEsQ0FBQyxPQUFPO2FBQ3BCLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDO2FBQzdDLElBQUksRUFBRTthQUNOLElBQUksQ0FBQyxDQUFDLFFBQTBCLEVBQUUsRUFBRSxDQUNuQyxRQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHVDQUEyQixFQUFDLE9BQXdCLENBQUMsQ0FBQyxDQUNsRixDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBaUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsOEJBQW1CLENBQUMsV0FBVyxF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
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjcmV0UmVxdWVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL1NlY3JldFJlcXVlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXVGO0FBRXZGLGtEQUs0QjtBQUM1Qix5RUFBOEM7QUFFOUMsNkRBQXNDO0FBTXRDLE1BQU0sY0FBYztJQUNWLE1BQU0sQ0FBVSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsZ0JBQThCO1FBQ25FLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQThCO1FBQ3hELE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpFLE9BQU8sUUFBUSxDQUFDLE9BQU87YUFDcEIsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUM7YUFDN0MsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLENBQUMsUUFBMEIsRUFBRSxFQUFFLENBQ25DLFFBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUEsdUNBQTJCLEVBQUMsT0FBd0IsQ0FBQyxDQUFDLENBQ2xGLENBQUM7SUFDTixDQUFDO0lBRU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDLG1CQUFpQztRQUM5RCxNQUFNLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFX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
@@ -1,8 +1,20 @@
1
1
  import { ContractEvents } from 'web3';
2
- import { FilterWithExternalId } from '../types/index.js';
2
+ import { BlockchainId, FilterWithExternalId } from '../types/index.js';
3
3
  import abi from '../contracts/abi.js';
4
4
  declare class StaticModel {
5
5
  private static readonly logger;
6
- static findItemsById(eventName: keyof ContractEvents<typeof abi>, filter: FilterWithExternalId, fromBlock?: number | string, toBlock?: number | string): Promise<unknown>;
6
+ static findItemsById(eventName: keyof ContractEvents<typeof abi>, filter: FilterWithExternalId, fromBlock: number | string, toBlock?: number | string): Promise<unknown>;
7
+ static findAllEventsByExternalIds(eventName: string, filter: FilterWithExternalId[], fromBlock: number | string, toBlock?: number | string): Promise<unknown[]>;
8
+ static createEntities(params: {
9
+ txExecutorCallback: () => Promise<void>;
10
+ filters: FilterWithExternalId[];
11
+ eventName: string;
12
+ }): Promise<BlockchainId[]>;
13
+ static createEntity(params: {
14
+ txExecutorCallback: () => Promise<void>;
15
+ filters: FilterWithExternalId[];
16
+ eventName: string;
17
+ }): Promise<BlockchainId>;
18
+ static getIdFromEvent(eventName: string, eventObject: unknown): BlockchainId;
7
19
  }
8
20
  export default StaticModel;
@@ -9,7 +9,7 @@ const logger_js_1 = __importDefault(require("../logger.js"));
9
9
  const helper_js_1 = require("../utils/helper.js");
10
10
  class StaticModel {
11
11
  static logger = logger_js_1.default.child({ className: 'Offers' });
12
- static async findItemsById(eventName, filter, fromBlock, toBlock) {
12
+ static async findItemsById(eventName, filter, fromBlock, toBlock = 'latest') {
13
13
  const contract = BlockchainConnector_js_1.default.getInstance().getContract();
14
14
  const options = { filter };
15
15
  if (!(0, helper_js_1.isValidBytes32Hex)(filter.externalId)) {
@@ -30,6 +30,94 @@ class StaticModel {
30
30
  parsedEvent.externalId = (0, utils_js_1.parseBytes32String)(parsedEvent.externalId);
31
31
  return parsedEvent;
32
32
  }
33
+ static async findAllEventsByExternalIds(eventName, filter, fromBlock, toBlock = 'latest') {
34
+ const contract = BlockchainConnector_js_1.default.getInstance().getContract();
35
+ const options = {};
36
+ if (fromBlock)
37
+ options.fromBlock = fromBlock;
38
+ if (toBlock)
39
+ options.toBlock = toBlock;
40
+ const events = await contract.getPastEvents(eventName, options);
41
+ if (!events.length) {
42
+ return [];
43
+ }
44
+ const externalIds = new Set(filter.map((f) => {
45
+ return f.externalId;
46
+ }));
47
+ return events
48
+ .map((eventLog) => {
49
+ if (typeof eventLog == 'string') {
50
+ throw Error('unexpected eventlog type');
51
+ }
52
+ const parsedEvent = (0, helper_js_1.cleanWeb3Data)(eventLog.returnValues);
53
+ if (parsedEvent.externalId) {
54
+ parsedEvent.externalId = (0, utils_js_1.parseBytes32String)(parsedEvent.externalId);
55
+ }
56
+ return parsedEvent;
57
+ })
58
+ .filter((parsedEvent) => parsedEvent.externalId !== undefined && externalIds.has(parsedEvent.externalId));
59
+ }
60
+ static async createEntities(params) {
61
+ const currentBlock = await BlockchainConnector_js_1.default.getInstance().getLastBlockInfo();
62
+ await params.txExecutorCallback();
63
+ const events = await StaticModel.findAllEventsByExternalIds(params.eventName, params.filters, currentBlock.index, 'latest');
64
+ return events.map((event) => StaticModel.getIdFromEvent(params.eventName, event));
65
+ }
66
+ static async createEntity(params) {
67
+ const ids = await StaticModel.createEntities(params);
68
+ if (ids.length === 0) {
69
+ throw new Error('The entity creation event was not found');
70
+ }
71
+ return ids[0];
72
+ }
73
+ static getIdFromEvent(eventName, eventObject) {
74
+ const checkers = {
75
+ TeeOfferCreated: () => {
76
+ const event = eventObject;
77
+ if (event && event?.offerId !== '-1') {
78
+ return event.offerId;
79
+ }
80
+ },
81
+ OfferCreated: () => {
82
+ const event = eventObject;
83
+ if (event && event?.offerId !== '-1') {
84
+ return event.offerId;
85
+ }
86
+ },
87
+ TeeSlotAdded: () => {
88
+ const event = eventObject;
89
+ if (event && event?.slotId !== '-1') {
90
+ return event.slotId;
91
+ }
92
+ },
93
+ OptionAdded: () => {
94
+ const event = eventObject;
95
+ if (event && event?.optionId !== '-1') {
96
+ return event.optionId;
97
+ }
98
+ },
99
+ ValueSlotAdded: () => {
100
+ const event = eventObject;
101
+ if (event && event?.slotId !== '-1') {
102
+ return event.slotId;
103
+ }
104
+ },
105
+ OrderCreated: () => {
106
+ const event = eventObject;
107
+ if (event && event?.orderId !== '-1') {
108
+ return event.orderId;
109
+ }
110
+ },
111
+ };
112
+ if (!checkers[eventName]) {
113
+ throw new Error('Unknown event');
114
+ }
115
+ const entityId = checkers[eventName]();
116
+ if (!entityId) {
117
+ throw new Error('Event doesnt contains entity id');
118
+ }
119
+ return entityId;
120
+ }
33
121
  }
34
122
  exports.default = StaticModel;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGljTW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL1N0YXRpY01vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQThFO0FBRTlFLGtHQUF1RTtBQUV2RSw2REFBc0M7QUFDdEMsa0RBQXNFO0FBUXRFLE1BQU0sV0FBVztJQUNQLE1BQU0sQ0FBVSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDL0IsU0FBMkMsRUFDM0MsTUFBNEIsRUFDNUIsU0FBMkIsRUFDM0IsT0FBeUI7UUFFekIsTUFBTSxRQUFRLEdBQUcsZ0NBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUEsNkJBQWlCLEVBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBQSw4QkFBbUIsRUFBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksU0FBUztZQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdDLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUN2Qix1REFBdUQsQ0FDeEQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFhLEVBQzlCLFFBQVEsQ0FBQyxDQUFDLENBQWMsQ0FBQyxZQUE2QixDQUNwQixDQUFDO1FBQ3RDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBQSw2QkFBa0IsRUFBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEUsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7QUFHSCxrQkFBZSxXQUFXLENBQUMifQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGljTW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL1N0YXRpY01vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQThFO0FBRTlFLGtHQUF1RTtBQVd2RSw2REFBc0M7QUFDdEMsa0RBQXNFO0FBUXRFLE1BQU0sV0FBVztJQUNQLE1BQU0sQ0FBVSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDL0IsU0FBMkMsRUFDM0MsTUFBNEIsRUFDNUIsU0FBMEIsRUFDMUIsVUFBMkIsUUFBUTtRQUVuQyxNQUFNLFFBQVEsR0FBRyxnQ0FBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBQSw2QkFBaUIsRUFBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsTUFBTyxDQUFDLFVBQVUsR0FBRyxJQUFBLDhCQUFtQixFQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxTQUFTO1lBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0MsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxD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
@@ -1,4 +1,4 @@
1
- import { Contract, Transaction } from 'web3';
1
+ import { BlockNumberOrTag, Contract, Transaction } from 'web3';
2
2
  import { abi } from '../contracts/tokenAbi.js';
3
3
  import { TransactionOptions, BlockInfo, TokenAmount } from '../types/index.js';
4
4
  declare class SuperproToken {
@@ -15,6 +15,31 @@ declare class SuperproToken {
15
15
  * Checks if contract has been initialized, if not - initialize contract
16
16
  */
17
17
  private static checkInit;
18
+ /**
19
+ * Retrieves past "Transfer" events emitted by the token contract,
20
+ * optionally filtered by `from` and/or `to` addresses and a block range.
21
+ *
22
+ * Enriches each event with the block timestamp (`blockTimestamp`)
23
+ * by fetching the block using a concurrency-limited queue.
24
+ */
25
+ static getTransferEvents(params: {
26
+ filter?: {
27
+ from?: string;
28
+ to?: string;
29
+ };
30
+ fromBlock?: BlockNumberOrTag;
31
+ toBlock?: BlockNumberOrTag;
32
+ }, options?: {
33
+ concurrency?: number;
34
+ contract?: Contract<typeof abi>;
35
+ }): Promise<{
36
+ from: string;
37
+ to: string;
38
+ value: bigint;
39
+ transactionHash: string;
40
+ blockNumber: bigint;
41
+ blockTimestamp: number;
42
+ }[]>;
18
43
  /**
19
44
  * Fetching balance of SuperProtocol tokens on address
20
45
  */