@pushchain/core 5.1.5-alpha.1 → 5.1.5

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 (86) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/package.json +1 -1
  3. package/src/lib/constants/abi/index.d.ts +2 -0
  4. package/src/lib/constants/abi/index.js +6 -1
  5. package/src/lib/constants/abi/uniswap-v3-router.evm.d.ts +58 -0
  6. package/src/lib/constants/abi/uniswap-v3-router.evm.js +41 -0
  7. package/src/lib/constants/abi/wpc.evm.d.ts +24 -0
  8. package/src/lib/constants/abi/wpc.evm.js +27 -0
  9. package/src/lib/constants/chain.d.ts +1 -0
  10. package/src/lib/constants/chain.js +8 -6
  11. package/src/lib/constants/tokens.js +3 -3
  12. package/src/lib/generated/uexecutor/v2/types.d.ts +14 -0
  13. package/src/lib/generated/uexecutor/v2/types.js +96 -3
  14. package/src/lib/orchestrator/internals/cascade.d.ts +1 -1
  15. package/src/lib/orchestrator/internals/cascade.js +521 -239
  16. package/src/lib/orchestrator/internals/confirmation.js +60 -15
  17. package/src/lib/orchestrator/internals/context.d.ts +23 -0
  18. package/src/lib/orchestrator/internals/context.js +54 -0
  19. package/src/lib/orchestrator/internals/execute-funds-only.js +47 -21
  20. package/src/lib/orchestrator/internals/execute-funds-payload.js +53 -31
  21. package/src/lib/orchestrator/internals/execute-standard.js +137 -26
  22. package/src/lib/orchestrator/internals/gas-calculator.d.ts +5 -2
  23. package/src/lib/orchestrator/internals/gas-calculator.js +59 -11
  24. package/src/lib/orchestrator/internals/gas-usd-sizer.d.ts +53 -0
  25. package/src/lib/orchestrator/internals/gas-usd-sizer.js +165 -0
  26. package/src/lib/orchestrator/internals/helpers.js +2 -0
  27. package/src/lib/orchestrator/internals/inbound-tracker.d.ts +83 -0
  28. package/src/lib/orchestrator/internals/inbound-tracker.js +322 -0
  29. package/src/lib/orchestrator/internals/index.d.ts +3 -1
  30. package/src/lib/orchestrator/internals/index.js +8 -2
  31. package/src/lib/orchestrator/internals/outbound-sync.d.ts +32 -1
  32. package/src/lib/orchestrator/internals/outbound-sync.js +154 -17
  33. package/src/lib/orchestrator/internals/pc-usd-oracle.d.ts +28 -0
  34. package/src/lib/orchestrator/internals/pc-usd-oracle.js +285 -0
  35. package/src/lib/orchestrator/internals/progress-route-hooks.d.ts +23 -0
  36. package/src/lib/orchestrator/internals/progress-route-hooks.js +72 -0
  37. package/src/lib/orchestrator/internals/push-chain-tx.d.ts +27 -1
  38. package/src/lib/orchestrator/internals/push-chain-tx.js +111 -15
  39. package/src/lib/orchestrator/internals/rescue.js +1 -1
  40. package/src/lib/orchestrator/internals/response-builder.d.ts +5 -0
  41. package/src/lib/orchestrator/internals/response-builder.js +242 -66
  42. package/src/lib/orchestrator/internals/route-handlers.js +480 -206
  43. package/src/lib/orchestrator/internals/tx-transformer.js +293 -35
  44. package/src/lib/orchestrator/orchestrator.d.ts +7 -1
  45. package/src/lib/orchestrator/orchestrator.js +108 -56
  46. package/src/lib/orchestrator/orchestrator.types.d.ts +111 -5
  47. package/src/lib/orchestrator/payload-builders.d.ts +16 -0
  48. package/src/lib/orchestrator/payload-builders.js +6 -5
  49. package/src/lib/orchestrator/route-detector.js +20 -8
  50. package/src/lib/orchestrator/svm-idl/normalize-address.d.ts +19 -0
  51. package/src/lib/orchestrator/svm-idl/normalize-address.js +56 -0
  52. package/src/lib/orchestrator/svm-idl/registry.d.ts +13 -4
  53. package/src/lib/orchestrator/svm-idl/registry.js +15 -14
  54. package/src/lib/orchestrator/svm-idl/resolve.js +5 -2
  55. package/src/lib/progress-hook/progress-hook.d.ts +28 -0
  56. package/src/lib/progress-hook/progress-hook.js +545 -131
  57. package/src/lib/progress-hook/progress-hook.types.d.ts +76 -29
  58. package/src/lib/progress-hook/progress-hook.types.js +74 -35
  59. package/src/lib/push-client/push-client.d.ts +7 -0
  60. package/src/lib/push-client/push-client.js +18 -1
  61. package/src/lib/universal-tx-detector/__tests__/fixtures/builders.d.ts +32 -0
  62. package/src/lib/universal-tx-detector/__tests__/fixtures/builders.js +65 -0
  63. package/src/lib/universal-tx-detector/__tests__/fixtures/scenarios.d.ts +72 -0
  64. package/src/lib/universal-tx-detector/__tests__/fixtures/scenarios.js +669 -0
  65. package/src/lib/universal-tx-detector/auto-detect.d.ts +37 -0
  66. package/src/lib/universal-tx-detector/auto-detect.js +112 -0
  67. package/src/lib/universal-tx-detector/cascade.d.ts +64 -0
  68. package/src/lib/universal-tx-detector/cascade.js +254 -0
  69. package/src/lib/universal-tx-detector/child-inbounds.d.ts +58 -0
  70. package/src/lib/universal-tx-detector/child-inbounds.js +145 -0
  71. package/src/lib/universal-tx-detector/classify.d.ts +33 -0
  72. package/src/lib/universal-tx-detector/classify.js +228 -0
  73. package/src/lib/universal-tx-detector/detector-svm.d.ts +46 -0
  74. package/src/lib/universal-tx-detector/detector-svm.js +324 -0
  75. package/src/lib/universal-tx-detector/detector.d.ts +13 -0
  76. package/src/lib/universal-tx-detector/detector.js +233 -0
  77. package/src/lib/universal-tx-detector/events.d.ts +765 -0
  78. package/src/lib/universal-tx-detector/events.js +241 -0
  79. package/src/lib/universal-tx-detector/index.d.ts +18 -0
  80. package/src/lib/universal-tx-detector/index.js +36 -0
  81. package/src/lib/universal-tx-detector/svm-events.d.ts +41 -0
  82. package/src/lib/universal-tx-detector/svm-events.js +68 -0
  83. package/src/lib/universal-tx-detector/types.d.ts +100 -0
  84. package/src/lib/universal-tx-detector/types.js +3 -0
  85. package/src/lib/utils.d.ts +30 -13
  86. package/src/lib/utils.js +47 -21
@@ -7,40 +7,82 @@ export type ProgressEvent = {
7
7
  id: string;
8
8
  title: string;
9
9
  message: string;
10
- level: 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR';
11
- response: null | object | string;
10
+ level: 'INFO' | 'SUCCESS' | 'ERROR';
11
+ response: object | null;
12
12
  timestamp: string;
13
13
  };
14
14
  export type ProgressEventFunction = (...args: any[]) => ProgressEvent;
15
15
  export type ProgressEventFunctionWithoutTimestamp = (...args: any[]) => Omit<ProgressEvent, 'timestamp'>;
16
16
  export declare enum PROGRESS_HOOK {
17
- SEND_TX_01 = "SEND-TX-01",
18
- SEND_TX_02_01 = "SEND-TX-02-01",
19
- SEND_TX_02_02 = "SEND-TX-02-02",
20
- SEND_TX_03_01 = "SEND-TX-03-01",
21
- SEND_TX_03_02 = "SEND-TX-03-02",
22
- SEND_TX_04_01 = "SEND-TX-04-01",
23
- SEND_TX_04_02 = "SEND-TX-04-02",
24
- SEND_TX_04_03 = "SEND-TX-04-03",
25
- SEND_TX_04_04 = "SEND-TX-04-04",
26
- SEND_TX_05_01 = "SEND-TX-05-01",
27
- SEND_TX_05_02 = "SEND-TX-05-02",
28
- SEND_TX_06_01 = "SEND-TX-06-01",
29
- SEND_TX_06_02 = "SEND-TX-06-02",
30
- SEND_TX_06_03 = "SEND-TX-06-03",
31
- SEND_TX_06_04 = "SEND-TX-06-04",
32
- SEND_TX_06_03_01 = "SEND-TX-06-03-01",
33
- SEND_TX_06_03_02 = "SEND-TX-06-03-02",
34
- SEND_TX_06_05 = "SEND-TX-06-05",// Syncing with Push Chain
35
- SEND_TX_06_06 = "SEND-TX-06-06",// Funds Credited on Push Chain (was 06_05)
36
- SEND_TX_07 = "SEND-TX-07",// Broadcasting to Push Chain
37
- SEND_TX_08_01 = "SEND-TX-08-01",// Awaiting External Chain
38
- SEND_TX_08_02 = "SEND-TX-08-02",// Polling External Chain
39
- SEND_TX_99_01 = "SEND-TX-99-01",
40
- SEND_TX_99_02 = "SEND-TX-99-02",
41
- SEND_TX_99_03 = "SEND-TX-99-03",// External Chain Tx Confirmed (SUCCESS)
42
- SEND_TX_99_04 = "SEND-TX-99-04",// External Chain Tx Timeout (WARNING)
43
- SEND_TX_99_05 = "SEND-TX-99-05",// External Chain Tx Failed (ERROR)
17
+ SEND_TX_101 = "SEND-TX-101",
18
+ SEND_TX_102_01 = "SEND-TX-102-01",
19
+ SEND_TX_102_02 = "SEND-TX-102-02",
20
+ SEND_TX_103_01 = "SEND-TX-103-01",
21
+ SEND_TX_103_02 = "SEND-TX-103-02",
22
+ SEND_TX_104_01 = "SEND-TX-104-01",// fee-lock path only
23
+ SEND_TX_104_02 = "SEND-TX-104-02",// signature path only
24
+ SEND_TX_104_03 = "SEND-TX-104-03",
25
+ SEND_TX_104_04 = "SEND-TX-104-04",
26
+ SEND_TX_105_01 = "SEND-TX-105-01",
27
+ SEND_TX_105_02 = "SEND-TX-105-02",
28
+ SEND_TX_106_01 = "SEND-TX-106-01",
29
+ SEND_TX_106_02 = "SEND-TX-106-02",
30
+ SEND_TX_106_03 = "SEND-TX-106-03",
31
+ SEND_TX_106_03_01 = "SEND-TX-106-03-01",
32
+ SEND_TX_106_03_02 = "SEND-TX-106-03-02",
33
+ SEND_TX_106_04 = "SEND-TX-106-04",
34
+ SEND_TX_106_05 = "SEND-TX-106-05",
35
+ SEND_TX_106_06 = "SEND-TX-106-06",
36
+ SEND_TX_106_07_01 = "SEND-TX-106-07-01",// R1 Sizer: Case A (push-gas < $1, padded to $1 floor)
37
+ SEND_TX_106_07_02 = "SEND-TX-106-07-02",// R1 Sizer: Case B (push-gas $1–$10, pass-through)
38
+ SEND_TX_106_07_03 = "SEND-TX-106-07-03",// R1 Sizer: Case C (push-gas > $10, pass-through to contract cap)
39
+ SEND_TX_107 = "SEND-TX-107",
40
+ SEND_TX_199_01 = "SEND-TX-199-01",// R1 terminal Push success
41
+ SEND_TX_199_02 = "SEND-TX-199-02",// R1 terminal Push failure
42
+ SEND_TX_199_99_99 = "SEND-TX-199-99-99",// R3 intermediate Push success
43
+ SEND_TX_201 = "SEND-TX-201",
44
+ SEND_TX_202_01 = "SEND-TX-202-01",
45
+ SEND_TX_202_02 = "SEND-TX-202-02",
46
+ SEND_TX_203_01 = "SEND-TX-203-01",
47
+ SEND_TX_203_02 = "SEND-TX-203-02",
48
+ SEND_TX_204_01 = "SEND-TX-204-01",
49
+ SEND_TX_204_02 = "SEND-TX-204-02",
50
+ SEND_TX_204_03 = "SEND-TX-204-03",
51
+ SEND_TX_204_04 = "SEND-TX-204-04",
52
+ SEND_TX_207 = "SEND-TX-207",
53
+ SEND_TX_209_01 = "SEND-TX-209-01",
54
+ SEND_TX_209_02 = "SEND-TX-209-02",
55
+ SEND_TX_299_01 = "SEND-TX-299-01",// R2 terminal external success
56
+ SEND_TX_299_02 = "SEND-TX-299-02",
57
+ SEND_TX_299_03 = "SEND-TX-299-03",
58
+ SEND_TX_299_99 = "SEND-TX-299-99",// R2 intermediate Push success
59
+ SEND_TX_301 = "SEND-TX-301",
60
+ SEND_TX_302_01 = "SEND-TX-302-01",
61
+ SEND_TX_302_02 = "SEND-TX-302-02",
62
+ SEND_TX_302_03_01 = "SEND-TX-302-03-01",// Sizer: Case A (< $1, padded)
63
+ SEND_TX_302_03_02 = "SEND-TX-302-03-02",// Sizer: Case B ($1–$10, happy path)
64
+ SEND_TX_302_03_03 = "SEND-TX-302-03-03",// Sizer: Case C (> $10, split + overflow bridge)
65
+ SEND_TX_303_01 = "SEND-TX-303-01",
66
+ SEND_TX_303_02 = "SEND-TX-303-02",
67
+ SEND_TX_304_01 = "SEND-TX-304-01",
68
+ SEND_TX_304_02 = "SEND-TX-304-02",
69
+ SEND_TX_304_03 = "SEND-TX-304-03",
70
+ SEND_TX_304_04 = "SEND-TX-304-04",
71
+ SEND_TX_307 = "SEND-TX-307",
72
+ SEND_TX_309_01 = "SEND-TX-309-01",
73
+ SEND_TX_309_02 = "SEND-TX-309-02",
74
+ SEND_TX_309_03 = "SEND-TX-309-03",
75
+ SEND_TX_310_01 = "SEND-TX-310-01",
76
+ SEND_TX_310_02 = "SEND-TX-310-02",
77
+ SEND_TX_399_01 = "SEND-TX-399-01",
78
+ SEND_TX_399_02 = "SEND-TX-399-02",
79
+ SEND_TX_399_03 = "SEND-TX-399-03",
80
+ SEND_TX_001 = "SEND-TX-001",
81
+ SEND_TX_002_01 = "SEND-TX-002-01",
82
+ SEND_TX_002_99_99 = "SEND-TX-002-99-99",
83
+ SEND_TX_999_01 = "SEND-TX-999-01",
84
+ SEND_TX_999_02 = "SEND-TX-999-02",
85
+ SEND_TX_999_03 = "SEND-TX-999-03",
44
86
  UEA_MIG_01 = "UEA-MIG-01",
45
87
  UEA_MIG_02 = "UEA-MIG-02",
46
88
  UEA_MIG_03 = "UEA-MIG-03",
@@ -48,4 +90,9 @@ export declare enum PROGRESS_HOOK {
48
90
  UEA_MIG_9902 = "UEA-MIG-9902",
49
91
  UEA_MIG_9903 = "UEA-MIG-9903"
50
92
  }
93
+ export type PROGRESS_HOOK_R1 = PROGRESS_HOOK.SEND_TX_101 | PROGRESS_HOOK.SEND_TX_102_01 | PROGRESS_HOOK.SEND_TX_102_02 | PROGRESS_HOOK.SEND_TX_103_01 | PROGRESS_HOOK.SEND_TX_103_02 | PROGRESS_HOOK.SEND_TX_104_01 | PROGRESS_HOOK.SEND_TX_104_02 | PROGRESS_HOOK.SEND_TX_104_03 | PROGRESS_HOOK.SEND_TX_104_04 | PROGRESS_HOOK.SEND_TX_105_01 | PROGRESS_HOOK.SEND_TX_105_02 | PROGRESS_HOOK.SEND_TX_106_01 | PROGRESS_HOOK.SEND_TX_106_02 | PROGRESS_HOOK.SEND_TX_106_03 | PROGRESS_HOOK.SEND_TX_106_03_01 | PROGRESS_HOOK.SEND_TX_106_03_02 | PROGRESS_HOOK.SEND_TX_106_04 | PROGRESS_HOOK.SEND_TX_106_05 | PROGRESS_HOOK.SEND_TX_106_06 | PROGRESS_HOOK.SEND_TX_106_07_01 | PROGRESS_HOOK.SEND_TX_106_07_02 | PROGRESS_HOOK.SEND_TX_106_07_03 | PROGRESS_HOOK.SEND_TX_107 | PROGRESS_HOOK.SEND_TX_199_01 | PROGRESS_HOOK.SEND_TX_199_02;
94
+ export type PROGRESS_HOOK_R2 = PROGRESS_HOOK.SEND_TX_201 | PROGRESS_HOOK.SEND_TX_202_01 | PROGRESS_HOOK.SEND_TX_202_02 | PROGRESS_HOOK.SEND_TX_203_01 | PROGRESS_HOOK.SEND_TX_203_02 | PROGRESS_HOOK.SEND_TX_204_01 | PROGRESS_HOOK.SEND_TX_204_02 | PROGRESS_HOOK.SEND_TX_204_03 | PROGRESS_HOOK.SEND_TX_204_04 | PROGRESS_HOOK.SEND_TX_207 | PROGRESS_HOOK.SEND_TX_209_01 | PROGRESS_HOOK.SEND_TX_209_02 | PROGRESS_HOOK.SEND_TX_299_01 | PROGRESS_HOOK.SEND_TX_299_02 | PROGRESS_HOOK.SEND_TX_299_03 | PROGRESS_HOOK.SEND_TX_299_99;
95
+ export type PROGRESS_HOOK_R3 = PROGRESS_HOOK.SEND_TX_199_99_99 | PROGRESS_HOOK.SEND_TX_301 | PROGRESS_HOOK.SEND_TX_302_01 | PROGRESS_HOOK.SEND_TX_302_02 | PROGRESS_HOOK.SEND_TX_302_03_01 | PROGRESS_HOOK.SEND_TX_302_03_02 | PROGRESS_HOOK.SEND_TX_302_03_03 | PROGRESS_HOOK.SEND_TX_303_01 | PROGRESS_HOOK.SEND_TX_303_02 | PROGRESS_HOOK.SEND_TX_304_01 | PROGRESS_HOOK.SEND_TX_304_02 | PROGRESS_HOOK.SEND_TX_304_03 | PROGRESS_HOOK.SEND_TX_304_04 | PROGRESS_HOOK.SEND_TX_307 | PROGRESS_HOOK.SEND_TX_309_01 | PROGRESS_HOOK.SEND_TX_309_02 | PROGRESS_HOOK.SEND_TX_309_03 | PROGRESS_HOOK.SEND_TX_310_01 | PROGRESS_HOOK.SEND_TX_310_02 | PROGRESS_HOOK.SEND_TX_399_01 | PROGRESS_HOOK.SEND_TX_399_02 | PROGRESS_HOOK.SEND_TX_399_03;
96
+ export type PROGRESS_HOOK_MULTICHAIN = PROGRESS_HOOK.SEND_TX_001 | PROGRESS_HOOK.SEND_TX_002_01 | PROGRESS_HOOK.SEND_TX_002_99_99 | PROGRESS_HOOK.SEND_TX_999_01 | PROGRESS_HOOK.SEND_TX_999_02 | PROGRESS_HOOK.SEND_TX_999_03;
97
+ export type PROGRESS_HOOK_MIG = PROGRESS_HOOK.UEA_MIG_01 | PROGRESS_HOOK.UEA_MIG_02 | PROGRESS_HOOK.UEA_MIG_03 | PROGRESS_HOOK.UEA_MIG_9901 | PROGRESS_HOOK.UEA_MIG_9902 | PROGRESS_HOOK.UEA_MIG_9903;
51
98
  export {};
@@ -3,41 +3,80 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROGRESS_HOOK = void 0;
4
4
  var PROGRESS_HOOK;
5
5
  (function (PROGRESS_HOOK) {
6
- // 01–03: Common pre-execution flow
7
- PROGRESS_HOOK["SEND_TX_01"] = "SEND-TX-01";
8
- PROGRESS_HOOK["SEND_TX_02_01"] = "SEND-TX-02-01";
9
- PROGRESS_HOOK["SEND_TX_02_02"] = "SEND-TX-02-02";
10
- PROGRESS_HOOK["SEND_TX_03_01"] = "SEND-TX-03-01";
11
- PROGRESS_HOOK["SEND_TX_03_02"] = "SEND-TX-03-02";
12
- // 04-x: Payload / verification flow
13
- PROGRESS_HOOK["SEND_TX_04_01"] = "SEND-TX-04-01";
14
- PROGRESS_HOOK["SEND_TX_04_02"] = "SEND-TX-04-02";
15
- PROGRESS_HOOK["SEND_TX_04_03"] = "SEND-TX-04-03";
16
- PROGRESS_HOOK["SEND_TX_04_04"] = "SEND-TX-04-04";
17
- // 05-x: Gas funding flow
18
- PROGRESS_HOOK["SEND_TX_05_01"] = "SEND-TX-05-01";
19
- PROGRESS_HOOK["SEND_TX_05_02"] = "SEND-TX-05-02";
20
- // 06-x: Funds flow (origin chain + Push Chain credit)
21
- PROGRESS_HOOK["SEND_TX_06_01"] = "SEND-TX-06-01";
22
- PROGRESS_HOOK["SEND_TX_06_02"] = "SEND-TX-06-02";
23
- PROGRESS_HOOK["SEND_TX_06_03"] = "SEND-TX-06-03";
24
- PROGRESS_HOOK["SEND_TX_06_04"] = "SEND-TX-06-04";
25
- PROGRESS_HOOK["SEND_TX_06_03_01"] = "SEND-TX-06-03-01";
26
- PROGRESS_HOOK["SEND_TX_06_03_02"] = "SEND-TX-06-03-02";
27
- PROGRESS_HOOK["SEND_TX_06_05"] = "SEND-TX-06-05";
28
- PROGRESS_HOOK["SEND_TX_06_06"] = "SEND-TX-06-06";
29
- // 07-x: Execution / broadcasting flow
30
- PROGRESS_HOOK["SEND_TX_07"] = "SEND-TX-07";
31
- // 08-x: External chain polling (after Push Chain tx success, outbound routes)
32
- PROGRESS_HOOK["SEND_TX_08_01"] = "SEND-TX-08-01";
33
- PROGRESS_HOOK["SEND_TX_08_02"] = "SEND-TX-08-02";
34
- // 99-x: Final outcome
35
- PROGRESS_HOOK["SEND_TX_99_01"] = "SEND-TX-99-01";
36
- PROGRESS_HOOK["SEND_TX_99_02"] = "SEND-TX-99-02";
37
- PROGRESS_HOOK["SEND_TX_99_03"] = "SEND-TX-99-03";
38
- PROGRESS_HOOK["SEND_TX_99_04"] = "SEND-TX-99-04";
39
- PROGRESS_HOOK["SEND_TX_99_05"] = "SEND-TX-99-05";
40
- // UEA Migration hooks
6
+ // Route 1: UOA → Push Chain (101–199)
7
+ PROGRESS_HOOK["SEND_TX_101"] = "SEND-TX-101";
8
+ PROGRESS_HOOK["SEND_TX_102_01"] = "SEND-TX-102-01";
9
+ PROGRESS_HOOK["SEND_TX_102_02"] = "SEND-TX-102-02";
10
+ PROGRESS_HOOK["SEND_TX_103_01"] = "SEND-TX-103-01";
11
+ PROGRESS_HOOK["SEND_TX_103_02"] = "SEND-TX-103-02";
12
+ PROGRESS_HOOK["SEND_TX_104_01"] = "SEND-TX-104-01";
13
+ PROGRESS_HOOK["SEND_TX_104_02"] = "SEND-TX-104-02";
14
+ PROGRESS_HOOK["SEND_TX_104_03"] = "SEND-TX-104-03";
15
+ PROGRESS_HOOK["SEND_TX_104_04"] = "SEND-TX-104-04";
16
+ PROGRESS_HOOK["SEND_TX_105_01"] = "SEND-TX-105-01";
17
+ PROGRESS_HOOK["SEND_TX_105_02"] = "SEND-TX-105-02";
18
+ PROGRESS_HOOK["SEND_TX_106_01"] = "SEND-TX-106-01";
19
+ PROGRESS_HOOK["SEND_TX_106_02"] = "SEND-TX-106-02";
20
+ PROGRESS_HOOK["SEND_TX_106_03"] = "SEND-TX-106-03";
21
+ PROGRESS_HOOK["SEND_TX_106_03_01"] = "SEND-TX-106-03-01";
22
+ PROGRESS_HOOK["SEND_TX_106_03_02"] = "SEND-TX-106-03-02";
23
+ PROGRESS_HOOK["SEND_TX_106_04"] = "SEND-TX-106-04";
24
+ PROGRESS_HOOK["SEND_TX_106_05"] = "SEND-TX-106-05";
25
+ PROGRESS_HOOK["SEND_TX_106_06"] = "SEND-TX-106-06";
26
+ PROGRESS_HOOK["SEND_TX_106_07_01"] = "SEND-TX-106-07-01";
27
+ PROGRESS_HOOK["SEND_TX_106_07_02"] = "SEND-TX-106-07-02";
28
+ PROGRESS_HOOK["SEND_TX_106_07_03"] = "SEND-TX-106-07-03";
29
+ PROGRESS_HOOK["SEND_TX_107"] = "SEND-TX-107";
30
+ PROGRESS_HOOK["SEND_TX_199_01"] = "SEND-TX-199-01";
31
+ PROGRESS_HOOK["SEND_TX_199_02"] = "SEND-TX-199-02";
32
+ PROGRESS_HOOK["SEND_TX_199_99_99"] = "SEND-TX-199-99-99";
33
+ // Route 2: UEA → UGPC → CEA on target chain (201–299)
34
+ PROGRESS_HOOK["SEND_TX_201"] = "SEND-TX-201";
35
+ PROGRESS_HOOK["SEND_TX_202_01"] = "SEND-TX-202-01";
36
+ PROGRESS_HOOK["SEND_TX_202_02"] = "SEND-TX-202-02";
37
+ PROGRESS_HOOK["SEND_TX_203_01"] = "SEND-TX-203-01";
38
+ PROGRESS_HOOK["SEND_TX_203_02"] = "SEND-TX-203-02";
39
+ PROGRESS_HOOK["SEND_TX_204_01"] = "SEND-TX-204-01";
40
+ PROGRESS_HOOK["SEND_TX_204_02"] = "SEND-TX-204-02";
41
+ PROGRESS_HOOK["SEND_TX_204_03"] = "SEND-TX-204-03";
42
+ PROGRESS_HOOK["SEND_TX_204_04"] = "SEND-TX-204-04";
43
+ PROGRESS_HOOK["SEND_TX_207"] = "SEND-TX-207";
44
+ PROGRESS_HOOK["SEND_TX_209_01"] = "SEND-TX-209-01";
45
+ PROGRESS_HOOK["SEND_TX_209_02"] = "SEND-TX-209-02";
46
+ PROGRESS_HOOK["SEND_TX_299_01"] = "SEND-TX-299-01";
47
+ PROGRESS_HOOK["SEND_TX_299_02"] = "SEND-TX-299-02";
48
+ PROGRESS_HOOK["SEND_TX_299_03"] = "SEND-TX-299-03";
49
+ PROGRESS_HOOK["SEND_TX_299_99"] = "SEND-TX-299-99";
50
+ // Route 3: UEA → UGPC → CEA → sendUniversalTxToUEA → Push Chain (301–399)
51
+ PROGRESS_HOOK["SEND_TX_301"] = "SEND-TX-301";
52
+ PROGRESS_HOOK["SEND_TX_302_01"] = "SEND-TX-302-01";
53
+ PROGRESS_HOOK["SEND_TX_302_02"] = "SEND-TX-302-02";
54
+ PROGRESS_HOOK["SEND_TX_302_03_01"] = "SEND-TX-302-03-01";
55
+ PROGRESS_HOOK["SEND_TX_302_03_02"] = "SEND-TX-302-03-02";
56
+ PROGRESS_HOOK["SEND_TX_302_03_03"] = "SEND-TX-302-03-03";
57
+ PROGRESS_HOOK["SEND_TX_303_01"] = "SEND-TX-303-01";
58
+ PROGRESS_HOOK["SEND_TX_303_02"] = "SEND-TX-303-02";
59
+ PROGRESS_HOOK["SEND_TX_304_01"] = "SEND-TX-304-01";
60
+ PROGRESS_HOOK["SEND_TX_304_02"] = "SEND-TX-304-02";
61
+ PROGRESS_HOOK["SEND_TX_304_03"] = "SEND-TX-304-03";
62
+ PROGRESS_HOOK["SEND_TX_304_04"] = "SEND-TX-304-04";
63
+ PROGRESS_HOOK["SEND_TX_307"] = "SEND-TX-307";
64
+ PROGRESS_HOOK["SEND_TX_309_01"] = "SEND-TX-309-01";
65
+ PROGRESS_HOOK["SEND_TX_309_02"] = "SEND-TX-309-02";
66
+ PROGRESS_HOOK["SEND_TX_309_03"] = "SEND-TX-309-03";
67
+ PROGRESS_HOOK["SEND_TX_310_01"] = "SEND-TX-310-01";
68
+ PROGRESS_HOOK["SEND_TX_310_02"] = "SEND-TX-310-02";
69
+ PROGRESS_HOOK["SEND_TX_399_01"] = "SEND-TX-399-01";
70
+ PROGRESS_HOOK["SEND_TX_399_02"] = "SEND-TX-399-02";
71
+ PROGRESS_HOOK["SEND_TX_399_03"] = "SEND-TX-399-03";
72
+ // Multichain (multi-hop) cascade markers
73
+ PROGRESS_HOOK["SEND_TX_001"] = "SEND-TX-001";
74
+ PROGRESS_HOOK["SEND_TX_002_01"] = "SEND-TX-002-01";
75
+ PROGRESS_HOOK["SEND_TX_002_99_99"] = "SEND-TX-002-99-99";
76
+ PROGRESS_HOOK["SEND_TX_999_01"] = "SEND-TX-999-01";
77
+ PROGRESS_HOOK["SEND_TX_999_02"] = "SEND-TX-999-02";
78
+ PROGRESS_HOOK["SEND_TX_999_03"] = "SEND-TX-999-03";
79
+ // UEA Migration hooks (unchanged)
41
80
  PROGRESS_HOOK["UEA_MIG_01"] = "UEA-MIG-01";
42
81
  PROGRESS_HOOK["UEA_MIG_02"] = "UEA-MIG-02";
43
82
  PROGRESS_HOOK["UEA_MIG_03"] = "UEA-MIG-03";
@@ -22,6 +22,7 @@ export declare class PushClient extends EvmClient {
22
22
  dex?: {
23
23
  uniV3Factory?: `0x${string}`;
24
24
  uniV3QuoterV2?: `0x${string}`;
25
+ uniV3SwapRouter?: `0x${string}`;
25
26
  weth?: `0x${string}`;
26
27
  };
27
28
  } & {
@@ -75,6 +76,12 @@ export declare class PushClient extends EvmClient {
75
76
  * V2 returns expanded OutboundTx fields and repeated outbound_tx array.
76
77
  */
77
78
  getUniversalTxByIdV2(id: string): Promise<QueryGetUniversalTxResponseV2>;
79
+ /**
80
+ * Generic Cosmos searchTx — returns the raw indexed results so callers can
81
+ * walk events themselves. Used by the inbound-tracker to find a child UTX
82
+ * created from an external tx hash (`universal_tx_created.inbound_tx_hash`).
83
+ */
84
+ searchCosmosByQuery(query: string): Promise<DeliverTxResponse[]>;
78
85
  /**
79
86
  * Fetches a Cosmos transaction by its hash.
80
87
  * @param txHash The hex‐encoded transaction hash (without "0x" or with—both work).
@@ -134,7 +134,10 @@ class PushClient extends evm_client_1.EvmClient {
134
134
  }
135
135
  catch (err) {
136
136
  // Account may not exist on-chain yet; default to sequence=0 / accountNumber=0
137
- console.warn(`[PushClient:signCosmosTx] Account lookup failed for ${sender}, defaulting to sequence=0:`, err);
137
+ const msg = err instanceof Error ? err.message : String(err);
138
+ if (!msg.includes('NotFound') && !msg.includes('not found')) {
139
+ console.warn(`[PushClient:signCosmosTx] Account lookup failed for ${sender}:`, err);
140
+ }
138
141
  }
139
142
  // 📦 Encode pubkey
140
143
  const uncompressedPubKey = (0, viem_1.hexToBytes)(this.ephemeralAccount.publicKey);
@@ -206,6 +209,20 @@ class PushClient extends evm_client_1.EvmClient {
206
209
  }), 'getUniversalTxByIdV2');
207
210
  });
208
211
  }
212
+ /**
213
+ * Generic Cosmos searchTx — returns the raw indexed results so callers can
214
+ * walk events themselves. Used by the inbound-tracker to find a child UTX
215
+ * created from an external tx hash (`universal_tx_created.inbound_tx_hash`).
216
+ */
217
+ searchCosmosByQuery(query) {
218
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
219
+ return this.executeWithRpcFallback((rpcUrl) => tslib_1.__awaiter(this, void 0, void 0, function* () {
220
+ const client = yield stargate_1.StargateClient.connect(rpcUrl);
221
+ const results = yield client.searchTx(query);
222
+ return results.map((result) => JSON.parse(JSON.stringify(result, (_key, value) => typeof value === 'bigint' ? value.toString() : value)));
223
+ }), 'searchCosmosByQuery');
224
+ });
225
+ }
209
226
  /**
210
227
  * Fetches a Cosmos transaction by its hash.
211
228
  * @param txHash The hex‐encoded transaction hash (without "0x" or with—both work).
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Shared fixture builders for universal-tx-detector specs.
3
+ *
4
+ * These helpers encode viem-compatible logs and receipts so every spec
5
+ * (classify, detector, cascade, scenarios) can build test data uniformly.
6
+ *
7
+ * Keep these pure — no jest mocks, no module-level state.
8
+ */
9
+ import { type TransactionReceipt } from 'viem';
10
+ export type EventDef = {
11
+ name: string;
12
+ inputs: readonly {
13
+ indexed: boolean;
14
+ type: string;
15
+ name: string;
16
+ components?: readonly unknown[];
17
+ }[];
18
+ };
19
+ export type BuiltLog = {
20
+ address: `0x${string}`;
21
+ topics: ReadonlyArray<`0x${string}` | null>;
22
+ data: `0x${string}`;
23
+ blockNumber: bigint;
24
+ transactionHash: `0x${string}`;
25
+ transactionIndex: number;
26
+ blockHash: `0x${string}`;
27
+ logIndex: number;
28
+ removed: false;
29
+ };
30
+ export declare function indexedArgs(event: EventDef, argsObj: Record<string, unknown>): Record<string, unknown>;
31
+ export declare function buildLog(event: EventDef, argsObj: Record<string, unknown>, address: `0x${string}`, logIndex: number, txHash?: `0x${string}`): BuiltLog;
32
+ export declare function buildReceipt(logs: BuiltLog[], to: `0x${string}`, txHash?: `0x${string}`): TransactionReceipt;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.indexedArgs = indexedArgs;
4
+ exports.buildLog = buildLog;
5
+ exports.buildReceipt = buildReceipt;
6
+ /**
7
+ * Shared fixture builders for universal-tx-detector specs.
8
+ *
9
+ * These helpers encode viem-compatible logs and receipts so every spec
10
+ * (classify, detector, cascade, scenarios) can build test data uniformly.
11
+ *
12
+ * Keep these pure — no jest mocks, no module-level state.
13
+ */
14
+ const viem_1 = require("viem");
15
+ const ZERO_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000';
16
+ function indexedArgs(event, argsObj) {
17
+ const out = {};
18
+ for (const i of event.inputs)
19
+ if (i.indexed)
20
+ out[i.name] = argsObj[i.name];
21
+ return out;
22
+ }
23
+ function buildLog(event, argsObj, address, logIndex, txHash = ZERO_HASH) {
24
+ const topics = (0, viem_1.encodeEventTopics)({
25
+ abi: [
26
+ event,
27
+ ],
28
+ eventName: event.name,
29
+ args: indexedArgs(event, argsObj),
30
+ });
31
+ const nonIndexed = event.inputs.filter((i) => !i.indexed);
32
+ const data = nonIndexed.length === 0
33
+ ? '0x'
34
+ : (0, viem_1.encodeAbiParameters)(nonIndexed, nonIndexed.map((i) => argsObj[i.name]));
35
+ return {
36
+ address,
37
+ topics,
38
+ data,
39
+ blockNumber: BigInt(1),
40
+ transactionHash: txHash,
41
+ transactionIndex: 0,
42
+ blockHash: ZERO_HASH,
43
+ logIndex,
44
+ removed: false,
45
+ };
46
+ }
47
+ function buildReceipt(logs, to, txHash = ZERO_HASH) {
48
+ return {
49
+ status: 'success',
50
+ logs,
51
+ blockNumber: BigInt(1),
52
+ blockHash: ZERO_HASH,
53
+ contractAddress: null,
54
+ cumulativeGasUsed: BigInt(0),
55
+ effectiveGasPrice: BigInt(0),
56
+ from: to,
57
+ gasUsed: BigInt(0),
58
+ logsBloom: '0x',
59
+ to,
60
+ transactionHash: txHash,
61
+ transactionIndex: 0,
62
+ type: 'eip1559',
63
+ };
64
+ }
65
+ //# sourceMappingURL=builders.js.map
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Parametric scenario catalogue for universal-tx-detector specs.
3
+ *
4
+ * Each ScenarioFixture declares a deterministic tx (receipt + optional
5
+ * mocked cosmos state) plus the assertions every consumer should check.
6
+ *
7
+ * Adding coverage for a new event shape or cascade topology = append one
8
+ * row here. The driver spec (__tests__/scenarios.spec.ts) picks it up
9
+ * automatically via describe.each.
10
+ */
11
+ import type { TransactionReceipt } from 'viem';
12
+ import { CHAIN } from '../../../constants/enums';
13
+ import type { DecodedIdentifiers, MatchingLog, UniversalTxKind } from '../../types';
14
+ import { deriveChildUniversalTxId, derivePcUniversalTxId } from '../../child-inbounds';
15
+ import { type EventDef } from './builders';
16
+ export type LogSpec = {
17
+ event: EventDef;
18
+ args: Record<string, unknown>;
19
+ address: `0x${string}`;
20
+ logIndex: number;
21
+ };
22
+ export type ReceiptEntry = {
23
+ txHash: `0x${string}`;
24
+ chain: CHAIN;
25
+ to: `0x${string}`;
26
+ logs: LogSpec[];
27
+ };
28
+ export type UtxRecordFixture = {
29
+ /** 32-byte hex id (no 0x prefix) or prefix; matcher lowercases and strips. */
30
+ id: string;
31
+ record: Record<string, unknown> | null;
32
+ };
33
+ export type ExpectedCascade = {
34
+ outboundCount?: number;
35
+ refundCount?: number;
36
+ childInboundCount?: number;
37
+ totalFlatNodes?: number;
38
+ rootKind?: UniversalTxKind;
39
+ /** For each outbound edge, the destinationChain CAIP (order-insensitive). */
40
+ outboundDestinations?: string[];
41
+ };
42
+ export type ScenarioFixture = {
43
+ id: string;
44
+ name: string;
45
+ kind: UniversalTxKind;
46
+ chain: CHAIN;
47
+ txHash: `0x${string}`;
48
+ to: `0x${string}`;
49
+ logs: LogSpec[];
50
+ /** Additional receipts the cascade walker will fetch when recursing. */
51
+ extraReceipts?: ReceiptEntry[];
52
+ /** Cosmos utx records keyed by id (hex without 0x prefix). */
53
+ utxRecords?: UtxRecordFixture[];
54
+ expectedDecoded?: Partial<DecodedIdentifiers>;
55
+ expectedClassifyAll?: UniversalTxKind[];
56
+ expectedCascade?: ExpectedCascade;
57
+ };
58
+ export declare function matchingLogsForFixture(f: ScenarioFixture): MatchingLog[];
59
+ export declare function receiptForFixture(f: ScenarioFixture): TransactionReceipt;
60
+ export declare function receiptForExtra(r: ReceiptEntry): TransactionReceipt;
61
+ /**
62
+ * Flatten all utxRecord entries across a scenario and its linked fixtures
63
+ * into a single Map keyed by the lowercased id (no 0x prefix).
64
+ */
65
+ export declare function utxRecordMap(fixtures: ScenarioFixture[]): Map<string, Record<string, unknown> | null>;
66
+ /**
67
+ * Build a Map<txHashLower, TransactionReceipt> covering the primary tx +
68
+ * all extraReceipts across every fixture.
69
+ */
70
+ export declare function receiptMap(fixtures: ScenarioFixture[]): Map<string, TransactionReceipt>;
71
+ export declare const SCENARIOS: ScenarioFixture[];
72
+ export { deriveChildUniversalTxId, derivePcUniversalTxId };