@atomiqlabs/chain-starknet 8.0.13 → 8.1.10

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 (119) hide show
  1. package/dist/index.d.ts +18 -18
  2. package/dist/index.js +42 -42
  3. package/dist/starknet/StarknetChainType.d.ts +19 -19
  4. package/dist/starknet/StarknetChainType.js +2 -2
  5. package/dist/starknet/StarknetInitializer.d.ts +66 -63
  6. package/dist/starknet/StarknetInitializer.js +101 -101
  7. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
  8. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
  9. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +196 -196
  10. package/dist/starknet/btcrelay/StarknetBtcRelay.js +419 -411
  11. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +70 -70
  12. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +115 -115
  13. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +91 -91
  14. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +155 -155
  15. package/dist/starknet/chain/StarknetAction.d.ts +19 -19
  16. package/dist/starknet/chain/StarknetAction.js +74 -74
  17. package/dist/starknet/chain/StarknetChainInterface.d.ts +142 -143
  18. package/dist/starknet/chain/StarknetChainInterface.js +198 -199
  19. package/dist/starknet/chain/StarknetModule.d.ts +8 -8
  20. package/dist/starknet/chain/StarknetModule.js +12 -12
  21. package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
  22. package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
  23. package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
  24. package/dist/starknet/chain/modules/StarknetAccounts.js +26 -26
  25. package/dist/starknet/chain/modules/StarknetAddresses.d.ts +10 -10
  26. package/dist/starknet/chain/modules/StarknetAddresses.js +27 -27
  27. package/dist/starknet/chain/modules/StarknetBlocks.d.ts +27 -27
  28. package/dist/starknet/chain/modules/StarknetBlocks.js +82 -82
  29. package/dist/starknet/chain/modules/StarknetEvents.d.ts +47 -47
  30. package/dist/starknet/chain/modules/StarknetEvents.js +90 -90
  31. package/dist/starknet/chain/modules/StarknetFees.d.ts +118 -104
  32. package/dist/starknet/chain/modules/StarknetFees.js +150 -146
  33. package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
  34. package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
  35. package/dist/starknet/chain/modules/StarknetTokens.d.ts +66 -66
  36. package/dist/starknet/chain/modules/StarknetTokens.js +99 -99
  37. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +122 -115
  38. package/dist/starknet/chain/modules/StarknetTransactions.js +633 -612
  39. package/dist/starknet/contract/StarknetContractBase.d.ts +14 -13
  40. package/dist/starknet/contract/StarknetContractBase.js +21 -20
  41. package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
  42. package/dist/starknet/contract/StarknetContractModule.js +11 -11
  43. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +56 -57
  44. package/dist/starknet/contract/modules/StarknetContractEvents.js +111 -111
  45. package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
  46. package/dist/starknet/events/StarknetChainEvents.js +61 -61
  47. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +178 -190
  48. package/dist/starknet/events/StarknetChainEventsBrowser.js +523 -582
  49. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +49 -53
  50. package/dist/starknet/provider/RpcProviderWithRetries.js +94 -94
  51. package/dist/starknet/provider/WebSocketChannelWithRetries.d.ts +21 -21
  52. package/dist/starknet/provider/WebSocketChannelWithRetries.js +46 -46
  53. package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
  54. package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +225 -219
  56. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +663 -621
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +108 -108
  58. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +190 -190
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +56 -56
  60. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +103 -103
  61. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
  62. package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
  63. package/dist/starknet/swaps/StarknetSwapContract.d.ts +309 -278
  64. package/dist/starknet/swaps/StarknetSwapContract.js +755 -579
  65. package/dist/starknet/swaps/StarknetSwapData.d.ts +234 -234
  66. package/dist/starknet/swaps/StarknetSwapData.js +474 -474
  67. package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
  68. package/dist/starknet/swaps/StarknetSwapModule.js +12 -12
  69. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
  70. package/dist/starknet/swaps/handlers/IHandler.js +2 -2
  71. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
  72. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
  73. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
  74. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
  75. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  76. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
  77. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  78. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
  79. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
  80. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
  81. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +42 -45
  82. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +50 -54
  83. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  84. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
  85. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +67 -67
  86. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
  87. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +52 -52
  88. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +99 -99
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -94
  90. package/dist/starknet/swaps/modules/StarknetSwapInit.js +239 -239
  91. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +60 -60
  92. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +126 -126
  93. package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +11 -11
  94. package/dist/starknet/wallet/StarknetBrowserSigner.js +17 -17
  95. package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +76 -76
  96. package/dist/starknet/wallet/StarknetPersistentSigner.js +291 -291
  97. package/dist/starknet/wallet/StarknetSigner.d.ts +72 -72
  98. package/dist/starknet/wallet/StarknetSigner.js +114 -114
  99. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +18 -18
  100. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +45 -45
  101. package/dist/utils/Utils.d.ts +77 -77
  102. package/dist/utils/Utils.js +304 -303
  103. package/package.json +2 -2
  104. package/src/starknet/StarknetInitializer.ts +6 -3
  105. package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -6
  106. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +7 -7
  107. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +6 -6
  108. package/src/starknet/chain/StarknetAction.ts +1 -0
  109. package/src/starknet/chain/StarknetChainInterface.ts +0 -2
  110. package/src/starknet/chain/modules/StarknetFees.ts +15 -2
  111. package/src/starknet/chain/modules/StarknetTransactions.ts +24 -0
  112. package/src/starknet/contract/StarknetContractBase.ts +7 -4
  113. package/src/starknet/contract/StarknetContractModule.ts +1 -1
  114. package/src/starknet/contract/modules/StarknetContractEvents.ts +7 -7
  115. package/src/starknet/events/StarknetChainEventsBrowser.ts +2 -64
  116. package/src/starknet/provider/RpcProviderWithRetries.ts +1 -1
  117. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +84 -18
  118. package/src/starknet/swaps/StarknetSwapContract.ts +242 -6
  119. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +0 -4
@@ -1,13 +1,14 @@
1
- import { StarknetChainInterface } from "../chain/StarknetChainInterface";
2
- import { TypedContractV2 } from "starknet";
3
- import { Abi } from "abi-wan-kanabi";
4
- import { StarknetContractEvents } from "./modules/StarknetContractEvents";
5
- /**
6
- * Base class providing program specific utilities
7
- */
8
- export declare class StarknetContractBase<T extends Abi> {
9
- contract: TypedContractV2<T>;
10
- readonly Events: StarknetContractEvents<T>;
11
- readonly Chain: StarknetChainInterface;
12
- constructor(chainInterface: StarknetChainInterface, contractAddress: string, contractAbi: T);
13
- }
1
+ import { StarknetChainInterface } from "../chain/StarknetChainInterface";
2
+ import { TypedContractV2 } from "starknet";
3
+ import { Abi } from "abi-wan-kanabi";
4
+ import { StarknetContractEvents } from "./modules/StarknetContractEvents";
5
+ /**
6
+ * Base class providing program specific utilities
7
+ */
8
+ export declare class StarknetContractBase<T extends Abi> {
9
+ readonly contract: TypedContractV2<T>;
10
+ readonly Events: StarknetContractEvents<T>;
11
+ readonly Chain: StarknetChainInterface;
12
+ readonly contractDeploymentHeight?: number;
13
+ constructor(chainInterface: StarknetChainInterface, contractAddress: string, contractAbi: T, contractDeploymentHeight?: number);
14
+ }
@@ -1,20 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetContractBase = void 0;
4
- const starknet_1 = require("starknet");
5
- const StarknetContractEvents_1 = require("./modules/StarknetContractEvents");
6
- /**
7
- * Base class providing program specific utilities
8
- */
9
- class StarknetContractBase {
10
- constructor(chainInterface, contractAddress, contractAbi) {
11
- this.Chain = chainInterface;
12
- this.contract = new starknet_1.Contract({
13
- abi: contractAbi,
14
- address: contractAddress,
15
- providerOrAccount: chainInterface.provider
16
- }).typedv2(contractAbi);
17
- this.Events = new StarknetContractEvents_1.StarknetContractEvents(chainInterface, this, contractAbi);
18
- }
19
- }
20
- exports.StarknetContractBase = StarknetContractBase;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetContractBase = void 0;
4
+ const starknet_1 = require("starknet");
5
+ const StarknetContractEvents_1 = require("./modules/StarknetContractEvents");
6
+ /**
7
+ * Base class providing program specific utilities
8
+ */
9
+ class StarknetContractBase {
10
+ constructor(chainInterface, contractAddress, contractAbi, contractDeploymentHeight) {
11
+ this.Chain = chainInterface;
12
+ this.contract = new starknet_1.Contract({
13
+ abi: contractAbi,
14
+ address: contractAddress,
15
+ providerOrAccount: chainInterface.provider
16
+ }).typedv2(contractAbi);
17
+ this.Events = new StarknetContractEvents_1.StarknetContractEvents(chainInterface, this, contractAbi);
18
+ this.contractDeploymentHeight = contractDeploymentHeight;
19
+ }
20
+ }
21
+ exports.StarknetContractBase = StarknetContractBase;
@@ -1,8 +1,8 @@
1
- import { Abi } from "abi-wan-kanabi";
2
- import { StarknetContractBase } from "./StarknetContractBase";
3
- import { StarknetChainInterface } from "../chain/StarknetChainInterface";
4
- import { StarknetModule } from "../chain/StarknetModule";
5
- export declare class StarknetContractModule<TAbi extends Abi> extends StarknetModule {
6
- readonly contract: StarknetContractBase<TAbi>;
7
- constructor(chainInterface: StarknetChainInterface, contract: StarknetContractBase<TAbi>);
8
- }
1
+ import { Abi } from "abi-wan-kanabi";
2
+ import { StarknetContractBase } from "./StarknetContractBase";
3
+ import { StarknetChainInterface } from "../chain/StarknetChainInterface";
4
+ import { StarknetModule } from "../chain/StarknetModule";
5
+ export declare class StarknetContractModule<TAbi extends Abi> extends StarknetModule {
6
+ protected readonly contract: StarknetContractBase<TAbi>;
7
+ constructor(chainInterface: StarknetChainInterface, contract: StarknetContractBase<TAbi>);
8
+ }
@@ -1,11 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetContractModule = void 0;
4
- const StarknetModule_1 = require("../chain/StarknetModule");
5
- class StarknetContractModule extends StarknetModule_1.StarknetModule {
6
- constructor(chainInterface, contract) {
7
- super(chainInterface);
8
- this.contract = contract;
9
- }
10
- }
11
- exports.StarknetContractModule = StarknetContractModule;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetContractModule = void 0;
4
+ const StarknetModule_1 = require("../chain/StarknetModule");
5
+ class StarknetContractModule extends StarknetModule_1.StarknetModule {
6
+ constructor(chainInterface, contract) {
7
+ super(chainInterface);
8
+ this.contract = contract;
9
+ }
10
+ }
11
+ exports.StarknetContractModule = StarknetContractModule;
@@ -1,57 +1,56 @@
1
- import { Abi } from "abi-wan-kanabi";
2
- import { EventToPrimitiveType, ExtractAbiEventNames } from "abi-wan-kanabi/dist/kanabi";
3
- import { StarknetEvent, StarknetEvents } from "../../chain/modules/StarknetEvents";
4
- import { AbiEvents, AbiStructs, AbiEnums } from "starknet";
5
- import { StarknetContractBase } from "../StarknetContractBase";
6
- import { StarknetChainInterface } from "../../chain/StarknetChainInterface";
7
- export type StarknetAbiEvent<TAbi extends Abi, TEventName extends ExtractAbiEventNames<TAbi>> = {
8
- name: TEventName;
9
- params: EventToPrimitiveType<TAbi, TEventName>;
10
- txHash: string;
11
- blockHash?: string;
12
- blockNumber?: number;
13
- keys: string[];
14
- data: string[];
15
- };
16
- export declare class StarknetContractEvents<TAbi extends Abi> extends StarknetEvents {
17
- readonly contract: StarknetContractBase<TAbi>;
18
- readonly abi: TAbi;
19
- readonly knownEventNames: string[];
20
- readonly abiEvents: AbiEvents;
21
- readonly abiStructs: AbiStructs;
22
- readonly abiEnums: AbiEnums;
23
- constructor(chainInterface: StarknetChainInterface, contract: StarknetContractBase<TAbi>, abi: TAbi);
24
- toStarknetAbiEvents<T extends ExtractAbiEventNames<TAbi>>(blockEvents: StarknetEvent[]): StarknetAbiEvent<TAbi, T>[];
25
- toFilter<T extends ExtractAbiEventNames<TAbi>>(events: T[], keys: null | (null | string | string[])[]): string[][];
26
- /**
27
- * Returns the events occuring in a range of starknet block as identified by the contract and keys,
28
- * returns pending events if no startHeight & endHeight is passed
29
- *
30
- * @param events
31
- * @param keys
32
- * @param startBlockHeight
33
- * @param endBlockHeight
34
- */
35
- getContractBlockEvents<T extends ExtractAbiEventNames<TAbi>>(events: T[], keys: (null | string | string[])[], startBlockHeight?: number, endBlockHeight?: number | null): Promise<StarknetAbiEvent<TAbi, T>[]>;
36
- /**
37
- * Runs a search backwards in time, processing the events for a specific topic public key
38
- *
39
- * @param events
40
- * @param keys
41
- * @param processor called for every event, should return a value if the correct event was found, or null
42
- * if the search should continue
43
- * @param abortSignal
44
- */
45
- findInContractEvents<T, TEvent extends ExtractAbiEventNames<TAbi>>(events: TEvent[], keys: null | (null | string | string[])[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T | null>, abortSignal?: AbortSignal): Promise<T | null>;
46
- /**
47
- * Runs a search forwards in time, processing the events for a specific topic public key
48
- *
49
- * @param events
50
- * @param keys
51
- * @param processor called for every event, should return a value if the correct event was found, or null
52
- * if the search should continue
53
- * @param startHeight
54
- * @param abortSignal
55
- */
56
- findInContractEventsForward<T, TEvent extends ExtractAbiEventNames<TAbi>>(events: TEvent[], keys: null | (null | string | string[])[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T | null>, startHeight?: number, abortSignal?: AbortSignal): Promise<T | null>;
57
- }
1
+ import { Abi } from "abi-wan-kanabi";
2
+ import { EventToPrimitiveType, ExtractAbiEventNames } from "abi-wan-kanabi/dist/kanabi";
3
+ import { StarknetEvent, StarknetEvents } from "../../chain/modules/StarknetEvents";
4
+ import { StarknetContractBase } from "../StarknetContractBase";
5
+ import { StarknetChainInterface } from "../../chain/StarknetChainInterface";
6
+ export type StarknetAbiEvent<TAbi extends Abi, TEventName extends ExtractAbiEventNames<TAbi>> = {
7
+ name: TEventName;
8
+ params: EventToPrimitiveType<TAbi, TEventName>;
9
+ txHash: string;
10
+ blockHash?: string;
11
+ blockNumber?: number;
12
+ keys: string[];
13
+ data: string[];
14
+ };
15
+ export declare class StarknetContractEvents<TAbi extends Abi> extends StarknetEvents {
16
+ private readonly contract;
17
+ private readonly abi;
18
+ private readonly knownEventNames;
19
+ private readonly abiEvents;
20
+ private readonly abiStructs;
21
+ private readonly abiEnums;
22
+ constructor(chainInterface: StarknetChainInterface, contract: StarknetContractBase<TAbi>, abi: TAbi);
23
+ toStarknetAbiEvents<T extends ExtractAbiEventNames<TAbi>>(blockEvents: StarknetEvent[]): StarknetAbiEvent<TAbi, T>[];
24
+ toFilter<T extends ExtractAbiEventNames<TAbi>>(events: T[], keys: null | (null | string | string[])[]): string[][];
25
+ /**
26
+ * Returns the events occuring in a range of starknet block as identified by the contract and keys,
27
+ * returns pending events if no startHeight & endHeight is passed
28
+ *
29
+ * @param events
30
+ * @param keys
31
+ * @param startBlockHeight
32
+ * @param endBlockHeight
33
+ */
34
+ getContractBlockEvents<T extends ExtractAbiEventNames<TAbi>>(events: T[], keys: (null | string | string[])[], startBlockHeight?: number, endBlockHeight?: number | null): Promise<StarknetAbiEvent<TAbi, T>[]>;
35
+ /**
36
+ * Runs a search backwards in time, processing the events for a specific topic public key
37
+ *
38
+ * @param events
39
+ * @param keys
40
+ * @param processor called for every event, should return a value if the correct event was found, or null
41
+ * if the search should continue
42
+ * @param abortSignal
43
+ */
44
+ findInContractEvents<T, TEvent extends ExtractAbiEventNames<TAbi>>(events: TEvent[], keys: null | (null | string | string[])[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T | null>, abortSignal?: AbortSignal): Promise<T | null>;
45
+ /**
46
+ * Runs a search forwards in time, processing the events for a specific topic public key
47
+ *
48
+ * @param events
49
+ * @param keys
50
+ * @param processor called for every event, should return a value if the correct event was found, or null
51
+ * if the search should continue
52
+ * @param startHeight
53
+ * @param abortSignal
54
+ */
55
+ findInContractEventsForward<T, TEvent extends ExtractAbiEventNames<TAbi>>(events: TEvent[], keys: null | (null | string | string[])[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T | null>, startHeight?: number, abortSignal?: AbortSignal): Promise<T | null>;
56
+ }
@@ -1,111 +1,111 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetContractEvents = void 0;
4
- const StarknetEvents_1 = require("../../chain/modules/StarknetEvents");
5
- const starknet_1 = require("starknet");
6
- const Utils_1 = require("../../../utils/Utils");
7
- class StarknetContractEvents extends StarknetEvents_1.StarknetEvents {
8
- constructor(chainInterface, contract, abi) {
9
- super(chainInterface);
10
- this.contract = contract;
11
- this.abi = abi;
12
- this.abiEvents = starknet_1.events.getAbiEvents(this.abi);
13
- this.abiStructs = starknet_1.CallData.getAbiStruct(this.abi);
14
- this.abiEnums = starknet_1.CallData.getAbiEnum(this.abi);
15
- this.knownEventNames = Object.keys(this.abiEvents).map(hash => this.abiEvents[hash].name);
16
- }
17
- toStarknetAbiEvents(blockEvents) {
18
- return blockEvents.map((starknetEvent) => {
19
- // Convert StarknetEvent to EMITTED_EVENT format expected by parseEvents
20
- const [value] = starknet_1.events.parseEvents([{
21
- ...starknetEvent,
22
- transaction_index: starknetEvent.transaction_index ?? 0,
23
- event_index: starknetEvent.event_index ?? 0
24
- }], this.abiEvents, this.abiStructs, this.abiEnums, (0, starknet_1.createAbiParser)(this.abi));
25
- if (value == null)
26
- throw new Error("Invalid event detected, please check provided ABI");
27
- const name = Object.keys(value).find(name => this.knownEventNames.includes(name));
28
- if (name == null)
29
- throw new Error("Invalid event detected (name), please check provided ABI");
30
- const event = {
31
- name: name,
32
- txHash: starknetEvent.transaction_hash,
33
- params: value[name],
34
- blockNumber: starknetEvent.block_number,
35
- blockHash: starknetEvent.block_hash,
36
- data: starknetEvent.data,
37
- keys: starknetEvent.keys
38
- };
39
- // this.logger.debug("toStarknetAbiEvents(): Parsed event: ", event);
40
- return event;
41
- });
42
- }
43
- toFilter(events, keys) {
44
- const filterArray = [];
45
- filterArray.push(events.map(name => {
46
- const arr = name.split(":");
47
- const eventName = arr[arr.length - 1];
48
- return (0, Utils_1.toHex)(starknet_1.hash.starknetKeccak(eventName), 0);
49
- }));
50
- if (keys != null)
51
- keys.forEach(key => filterArray.push(key == null ? [] : Array.isArray(key) ? key.map(k => (0, Utils_1.toHex)(k, 0)) : [(0, Utils_1.toHex)(key, 0)]));
52
- return filterArray;
53
- }
54
- /**
55
- * Returns the events occuring in a range of starknet block as identified by the contract and keys,
56
- * returns pending events if no startHeight & endHeight is passed
57
- *
58
- * @param events
59
- * @param keys
60
- * @param startBlockHeight
61
- * @param endBlockHeight
62
- */
63
- async getContractBlockEvents(events, keys, startBlockHeight, endBlockHeight) {
64
- if (endBlockHeight === undefined)
65
- endBlockHeight = startBlockHeight;
66
- const blockEvents = await super.getBlockEvents(this.contract.contract.address, this.toFilter(events, keys), startBlockHeight, endBlockHeight);
67
- return this.toStarknetAbiEvents(blockEvents);
68
- }
69
- /**
70
- * Runs a search backwards in time, processing the events for a specific topic public key
71
- *
72
- * @param events
73
- * @param keys
74
- * @param processor called for every event, should return a value if the correct event was found, or null
75
- * if the search should continue
76
- * @param abortSignal
77
- */
78
- async findInContractEvents(events, keys, processor, abortSignal) {
79
- return this.findInEvents(this.contract.contract.address, this.toFilter(events, keys), async (events) => {
80
- const parsedEvents = this.toStarknetAbiEvents(events);
81
- for (let event of parsedEvents) {
82
- const result = await processor(event);
83
- if (result != null)
84
- return result;
85
- }
86
- return null;
87
- }, abortSignal);
88
- }
89
- /**
90
- * Runs a search forwards in time, processing the events for a specific topic public key
91
- *
92
- * @param events
93
- * @param keys
94
- * @param processor called for every event, should return a value if the correct event was found, or null
95
- * if the search should continue
96
- * @param startHeight
97
- * @param abortSignal
98
- */
99
- async findInContractEventsForward(events, keys, processor, startHeight, abortSignal) {
100
- return this.findInEventsForward(this.contract.contract.address, this.toFilter(events, keys), async (events) => {
101
- const parsedEvents = this.toStarknetAbiEvents(events);
102
- for (let event of parsedEvents) {
103
- const result = await processor(event);
104
- if (result != null)
105
- return result;
106
- }
107
- return null;
108
- }, startHeight, abortSignal);
109
- }
110
- }
111
- exports.StarknetContractEvents = StarknetContractEvents;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetContractEvents = void 0;
4
+ const StarknetEvents_1 = require("../../chain/modules/StarknetEvents");
5
+ const starknet_1 = require("starknet");
6
+ const Utils_1 = require("../../../utils/Utils");
7
+ class StarknetContractEvents extends StarknetEvents_1.StarknetEvents {
8
+ constructor(chainInterface, contract, abi) {
9
+ super(chainInterface);
10
+ this.contract = contract;
11
+ this.abi = abi;
12
+ this.abiEvents = starknet_1.events.getAbiEvents(this.abi);
13
+ this.abiStructs = starknet_1.CallData.getAbiStruct(this.abi);
14
+ this.abiEnums = starknet_1.CallData.getAbiEnum(this.abi);
15
+ this.knownEventNames = Object.keys(this.abiEvents).map(hash => this.abiEvents[hash].name);
16
+ }
17
+ toStarknetAbiEvents(blockEvents) {
18
+ return blockEvents.map((starknetEvent) => {
19
+ // Convert StarknetEvent to EMITTED_EVENT format expected by parseEvents
20
+ const [value] = starknet_1.events.parseEvents([{
21
+ ...starknetEvent,
22
+ transaction_index: starknetEvent.transaction_index ?? 0,
23
+ event_index: starknetEvent.event_index ?? 0
24
+ }], this.abiEvents, this.abiStructs, this.abiEnums, (0, starknet_1.createAbiParser)(this.abi));
25
+ if (value == null)
26
+ throw new Error("Invalid event detected, please check provided ABI");
27
+ const name = Object.keys(value).find(name => this.knownEventNames.includes(name));
28
+ if (name == null)
29
+ throw new Error("Invalid event detected (name), please check provided ABI");
30
+ const event = {
31
+ name: name,
32
+ txHash: starknetEvent.transaction_hash,
33
+ params: value[name],
34
+ blockNumber: starknetEvent.block_number,
35
+ blockHash: starknetEvent.block_hash,
36
+ data: starknetEvent.data,
37
+ keys: starknetEvent.keys
38
+ };
39
+ // this.logger.debug("toStarknetAbiEvents(): Parsed event: ", event);
40
+ return event;
41
+ });
42
+ }
43
+ toFilter(events, keys) {
44
+ const filterArray = [];
45
+ filterArray.push(events.map(name => {
46
+ const arr = name.split(":");
47
+ const eventName = arr[arr.length - 1];
48
+ return (0, Utils_1.toHex)(starknet_1.hash.starknetKeccak(eventName), 0);
49
+ }));
50
+ if (keys != null)
51
+ keys.forEach(key => filterArray.push(key == null ? [] : Array.isArray(key) ? key.map(k => (0, Utils_1.toHex)(k, 0)) : [(0, Utils_1.toHex)(key, 0)]));
52
+ return filterArray;
53
+ }
54
+ /**
55
+ * Returns the events occuring in a range of starknet block as identified by the contract and keys,
56
+ * returns pending events if no startHeight & endHeight is passed
57
+ *
58
+ * @param events
59
+ * @param keys
60
+ * @param startBlockHeight
61
+ * @param endBlockHeight
62
+ */
63
+ async getContractBlockEvents(events, keys, startBlockHeight, endBlockHeight) {
64
+ if (endBlockHeight === undefined)
65
+ endBlockHeight = startBlockHeight;
66
+ const blockEvents = await super.getBlockEvents(this.contract.contract.address, this.toFilter(events, keys), startBlockHeight, endBlockHeight);
67
+ return this.toStarknetAbiEvents(blockEvents);
68
+ }
69
+ /**
70
+ * Runs a search backwards in time, processing the events for a specific topic public key
71
+ *
72
+ * @param events
73
+ * @param keys
74
+ * @param processor called for every event, should return a value if the correct event was found, or null
75
+ * if the search should continue
76
+ * @param abortSignal
77
+ */
78
+ async findInContractEvents(events, keys, processor, abortSignal) {
79
+ return this.findInEvents(this.contract.contract.address, this.toFilter(events, keys), async (events) => {
80
+ const parsedEvents = this.toStarknetAbiEvents(events);
81
+ for (let event of parsedEvents) {
82
+ const result = await processor(event);
83
+ if (result != null)
84
+ return result;
85
+ }
86
+ return null;
87
+ }, abortSignal);
88
+ }
89
+ /**
90
+ * Runs a search forwards in time, processing the events for a specific topic public key
91
+ *
92
+ * @param events
93
+ * @param keys
94
+ * @param processor called for every event, should return a value if the correct event was found, or null
95
+ * if the search should continue
96
+ * @param startHeight
97
+ * @param abortSignal
98
+ */
99
+ async findInContractEventsForward(events, keys, processor, startHeight, abortSignal) {
100
+ return this.findInEventsForward(this.contract.contract.address, this.toFilter(events, keys), async (events) => {
101
+ const parsedEvents = this.toStarknetAbiEvents(events);
102
+ for (let event of parsedEvents) {
103
+ const result = await processor(event);
104
+ if (result != null)
105
+ return result;
106
+ }
107
+ return null;
108
+ }, Math.max(startHeight ?? 0, this.contract.contractDeploymentHeight ?? 0), abortSignal);
109
+ }
110
+ }
111
+ exports.StarknetContractEvents = StarknetContractEvents;
@@ -1,21 +1,21 @@
1
- import { StarknetChainEventsBrowser } from "./StarknetChainEventsBrowser";
2
- import { StarknetSwapContract } from "../swaps/StarknetSwapContract";
3
- import { StarknetChainInterface } from "../chain/StarknetChainInterface";
4
- import { StarknetSpvVaultContract } from "../spv_swap/StarknetSpvVaultContract";
5
- export declare class StarknetChainEvents extends StarknetChainEventsBrowser {
6
- private readonly directory;
7
- constructor(directory: string, chainInterface: StarknetChainInterface, starknetSwapContract: StarknetSwapContract, starknetSpvVaultContract: StarknetSpvVaultContract, pollIntervalSeconds?: number);
8
- /**
9
- * Retrieves last signature & slot from filesystem
10
- *
11
- * @private
12
- */
13
- private getLastEventData;
14
- /**
15
- * Saves last signature & slot to the filesystem
16
- *
17
- * @private
18
- */
19
- private saveLastEventData;
20
- init(noAutomaticPoll?: boolean): Promise<void>;
21
- }
1
+ import { StarknetChainEventsBrowser } from "./StarknetChainEventsBrowser";
2
+ import { StarknetSwapContract } from "../swaps/StarknetSwapContract";
3
+ import { StarknetChainInterface } from "../chain/StarknetChainInterface";
4
+ import { StarknetSpvVaultContract } from "../spv_swap/StarknetSpvVaultContract";
5
+ export declare class StarknetChainEvents extends StarknetChainEventsBrowser {
6
+ private readonly directory;
7
+ constructor(directory: string, chainInterface: StarknetChainInterface, starknetSwapContract: StarknetSwapContract, starknetSpvVaultContract: StarknetSpvVaultContract, pollIntervalSeconds?: number);
8
+ /**
9
+ * Retrieves last signature & slot from filesystem
10
+ *
11
+ * @private
12
+ */
13
+ private getLastEventData;
14
+ /**
15
+ * Saves last signature & slot to the filesystem
16
+ *
17
+ * @private
18
+ */
19
+ private saveLastEventData;
20
+ init(noAutomaticPoll?: boolean): Promise<void>;
21
+ }
@@ -1,61 +1,61 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetChainEvents = void 0;
4
- const StarknetChainEventsBrowser_1 = require("./StarknetChainEventsBrowser");
5
- //@ts-ignore
6
- const fs = require("fs/promises");
7
- const BLOCKHEIGHT_FILENAME = "/strk-blockheight.txt";
8
- class StarknetChainEvents extends StarknetChainEventsBrowser_1.StarknetChainEventsBrowser {
9
- constructor(directory, chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds) {
10
- super(chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds);
11
- this.directory = directory;
12
- }
13
- /**
14
- * Retrieves last signature & slot from filesystem
15
- *
16
- * @private
17
- */
18
- async getLastEventData() {
19
- try {
20
- const txt = (await fs.readFile(this.directory + BLOCKHEIGHT_FILENAME)).toString();
21
- const arr = txt.split(",");
22
- if (arr.length < 2) {
23
- const blockNumber = parseInt(arr[0].split(";")[0]);
24
- if (isNaN(blockNumber))
25
- throw new Error("Cannot parse the integer, is NaN!");
26
- return [
27
- { lastBlockNumber: blockNumber },
28
- { lastBlockNumber: blockNumber }
29
- ];
30
- }
31
- return arr.map(arrValue => {
32
- const subArray = arrValue.split(";");
33
- const lastBlockNumber = parseInt(subArray[0]);
34
- if (isNaN(lastBlockNumber))
35
- throw new Error("Cannot parse the integer, is NaN!");
36
- return { lastBlockNumber, lastTxHash: subArray[1] };
37
- });
38
- }
39
- catch (e) {
40
- return [];
41
- }
42
- }
43
- /**
44
- * Saves last signature & slot to the filesystem
45
- *
46
- * @private
47
- */
48
- saveLastEventData(newState) {
49
- return fs.writeFile(this.directory + BLOCKHEIGHT_FILENAME, newState.map(value => value.lastTxHash == null ? value.lastBlockNumber.toString(10) : value.lastBlockNumber.toString(10) + ";" + value.lastTxHash).join(","));
50
- }
51
- async init(noAutomaticPoll) {
52
- if (noAutomaticPoll)
53
- return;
54
- this.stopped = false;
55
- const lastEventsState = await this.getLastEventData();
56
- if (this.wsChannel != null)
57
- await this.setupWebsocket();
58
- await this.setupPoll(lastEventsState, (newState) => this.saveLastEventData(newState));
59
- }
60
- }
61
- exports.StarknetChainEvents = StarknetChainEvents;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetChainEvents = void 0;
4
+ const StarknetChainEventsBrowser_1 = require("./StarknetChainEventsBrowser");
5
+ //@ts-ignore
6
+ const fs = require("fs/promises");
7
+ const BLOCKHEIGHT_FILENAME = "/strk-blockheight.txt";
8
+ class StarknetChainEvents extends StarknetChainEventsBrowser_1.StarknetChainEventsBrowser {
9
+ constructor(directory, chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds) {
10
+ super(chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds);
11
+ this.directory = directory;
12
+ }
13
+ /**
14
+ * Retrieves last signature & slot from filesystem
15
+ *
16
+ * @private
17
+ */
18
+ async getLastEventData() {
19
+ try {
20
+ const txt = (await fs.readFile(this.directory + BLOCKHEIGHT_FILENAME)).toString();
21
+ const arr = txt.split(",");
22
+ if (arr.length < 2) {
23
+ const blockNumber = parseInt(arr[0].split(";")[0]);
24
+ if (isNaN(blockNumber))
25
+ throw new Error("Cannot parse the integer, is NaN!");
26
+ return [
27
+ { lastBlockNumber: blockNumber },
28
+ { lastBlockNumber: blockNumber }
29
+ ];
30
+ }
31
+ return arr.map(arrValue => {
32
+ const subArray = arrValue.split(";");
33
+ const lastBlockNumber = parseInt(subArray[0]);
34
+ if (isNaN(lastBlockNumber))
35
+ throw new Error("Cannot parse the integer, is NaN!");
36
+ return { lastBlockNumber, lastTxHash: subArray[1] };
37
+ });
38
+ }
39
+ catch (e) {
40
+ return [];
41
+ }
42
+ }
43
+ /**
44
+ * Saves last signature & slot to the filesystem
45
+ *
46
+ * @private
47
+ */
48
+ saveLastEventData(newState) {
49
+ return fs.writeFile(this.directory + BLOCKHEIGHT_FILENAME, newState.map(value => value.lastTxHash == null ? value.lastBlockNumber.toString(10) : value.lastBlockNumber.toString(10) + ";" + value.lastTxHash).join(","));
50
+ }
51
+ async init(noAutomaticPoll) {
52
+ if (noAutomaticPoll)
53
+ return;
54
+ this.stopped = false;
55
+ const lastEventsState = await this.getLastEventData();
56
+ if (this.wsChannel != null)
57
+ await this.setupWebsocket();
58
+ await this.setupPoll(lastEventsState, (newState) => this.saveLastEventData(newState));
59
+ }
60
+ }
61
+ exports.StarknetChainEvents = StarknetChainEvents;