@gearbox-protocol/sdk 14.11.0-next.4 → 14.11.0-next.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 (99) hide show
  1. package/dist/cjs/common-utils/utils/index.js +2 -0
  2. package/dist/cjs/{history/trace-utils.js → common-utils/utils/trace.js} +62 -5
  3. package/dist/cjs/history/assembleOperations.js +6 -6
  4. package/dist/cjs/history/classifyMulticallOperations.js +31 -25
  5. package/dist/cjs/history/index.js +0 -2
  6. package/dist/cjs/history/parseCreditAccountTransaction.js +5 -6
  7. package/dist/cjs/history/toLegacyOperation.js +5 -1
  8. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +25 -37
  9. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
  10. package/dist/cjs/{history/internal-types.js → plugins/adapters/transfers.js} +2 -2
  11. package/dist/cjs/preview/index.js +3 -1
  12. package/dist/cjs/preview/parse/classifyInnerOperations.js +5 -43
  13. package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +1 -4
  14. package/dist/cjs/{history/inner-operations.js → preview/parse/types-adapters.js} +2 -2
  15. package/dist/cjs/preview/parse/types-facades.js +16 -0
  16. package/dist/cjs/preview/parse/types-pools.js +16 -0
  17. package/dist/cjs/preview/parse/types.js +8 -1
  18. package/dist/cjs/{history → preview/trace}/errors.js +0 -26
  19. package/dist/cjs/preview/trace/extractAdapterCallTraces.js +58 -0
  20. package/dist/cjs/{history → preview/trace}/extractTransfers.js +10 -13
  21. package/dist/cjs/{history → preview/trace}/findFacadeCalls.js +3 -3
  22. package/dist/cjs/preview/trace/index.js +30 -0
  23. package/dist/cjs/preview/trace/types.js +16 -0
  24. package/dist/esm/common-utils/utils/index.js +1 -0
  25. package/dist/esm/common-utils/utils/trace.js +93 -0
  26. package/dist/esm/history/assembleOperations.js +8 -6
  27. package/dist/esm/history/classifyMulticallOperations.js +29 -23
  28. package/dist/esm/history/index.js +0 -1
  29. package/dist/esm/history/parseCreditAccountTransaction.js +3 -4
  30. package/dist/esm/history/toLegacyOperation.js +5 -1
  31. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +28 -38
  32. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
  33. package/dist/esm/preview/index.js +1 -0
  34. package/dist/esm/preview/parse/classifyInnerOperations.js +6 -46
  35. package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +2 -9
  36. package/dist/esm/preview/parse/types-facades.js +0 -0
  37. package/dist/esm/preview/parse/types-pools.js +0 -0
  38. package/dist/esm/preview/parse/types.js +3 -0
  39. package/dist/esm/{history → preview/trace}/errors.js +0 -24
  40. package/dist/esm/preview/trace/extractAdapterCallTraces.js +40 -0
  41. package/dist/esm/{history → preview/trace}/extractTransfers.js +10 -13
  42. package/dist/esm/{history → preview/trace}/findFacadeCalls.js +4 -2
  43. package/dist/esm/preview/trace/index.js +5 -0
  44. package/dist/esm/preview/trace/types.js +0 -0
  45. package/dist/types/common-utils/utils/index.d.ts +1 -0
  46. package/dist/types/common-utils/utils/trace.d.ts +73 -0
  47. package/dist/types/history/assembleOperations.d.ts +11 -6
  48. package/dist/types/history/classifyMulticallOperations.d.ts +21 -9
  49. package/dist/types/history/index.d.ts +0 -1
  50. package/dist/types/history/mapOperations.d.ts +7 -9
  51. package/dist/types/history/types.d.ts +22 -65
  52. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +16 -17
  53. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +10 -1
  54. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +1 -1
  55. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +1 -1
  56. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +1 -1
  57. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +1 -1
  58. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +1 -1
  59. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +1 -1
  60. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +1 -1
  61. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +1 -1
  62. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +1 -1
  63. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +1 -1
  64. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +1 -1
  65. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +1 -1
  66. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +1 -1
  67. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +1 -1
  68. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +1 -1
  69. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +1 -1
  70. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +1 -1
  71. package/dist/types/plugins/adapters/transferHelpers.d.ts +1 -1
  72. package/dist/types/plugins/adapters/transfers.d.ts +17 -0
  73. package/dist/types/plugins/adapters/types.d.ts +8 -46
  74. package/dist/types/preview/index.d.ts +1 -0
  75. package/dist/types/preview/parse/classifyInnerOperations.d.ts +8 -8
  76. package/dist/types/preview/parse/parseFacadeOperationCalldata.d.ts +4 -3
  77. package/dist/types/preview/parse/types-adapters.d.ts +69 -0
  78. package/dist/types/preview/parse/types-facades.d.ts +124 -0
  79. package/dist/types/preview/parse/types-pools.d.ts +42 -0
  80. package/dist/types/preview/parse/types.d.ts +12 -46
  81. package/dist/types/preview/simulate/extractERC20Transfers.d.ts +1 -1
  82. package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +1 -1
  83. package/dist/types/preview/simulate/types.d.ts +1 -1
  84. package/dist/types/{history → preview/trace}/errors.d.ts +0 -10
  85. package/dist/types/preview/trace/extractAdapterCallTraces.d.ts +23 -0
  86. package/dist/types/{history → preview/trace}/extractTransfers.d.ts +14 -5
  87. package/dist/types/{history → preview/trace}/findFacadeCalls.d.ts +3 -2
  88. package/dist/types/preview/trace/index.d.ts +5 -0
  89. package/dist/types/preview/trace/types.d.ts +21 -0
  90. package/package.json +1 -1
  91. package/dist/cjs/history/extractProtocolCalls.js +0 -53
  92. package/dist/esm/history/extractProtocolCalls.js +0 -32
  93. package/dist/esm/history/trace-utils.js +0 -36
  94. package/dist/types/history/extractProtocolCalls.d.ts +0 -8
  95. package/dist/types/history/inner-operations.d.ts +0 -57
  96. package/dist/types/history/internal-types.d.ts +0 -47
  97. package/dist/types/history/trace-utils.d.ts +0 -12
  98. /package/dist/esm/{history/inner-operations.js → plugins/adapters/transfers.js} +0 -0
  99. /package/dist/esm/{history/internal-types.js → preview/parse/types-adapters.js} +0 -0
@@ -420,6 +420,6 @@ export declare class ConvexV1BoosterAdapterContract extends AbstractAdapterContr
420
420
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L166-L199
421
421
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L84-L91
422
422
  */
423
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
423
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
424
424
  }
425
425
  export {};
@@ -1776,6 +1776,6 @@ export declare class Curve2AssetsAdapterContract extends AbstractAdapterContract
1776
1776
  contractType?: string;
1777
1777
  };
1778
1778
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L132-L164 */
1779
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1779
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1780
1780
  }
1781
1781
  export {};
@@ -1776,6 +1776,6 @@ export declare class Curve3AssetsAdapterContract extends AbstractAdapterContract
1776
1776
  contractType?: string;
1777
1777
  };
1778
1778
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L132-L164 */
1779
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1779
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1780
1780
  }
1781
1781
  export {};
@@ -1776,6 +1776,6 @@ export declare class Curve4AssetsAdapterContract extends AbstractAdapterContract
1776
1776
  contractType?: string;
1777
1777
  };
1778
1778
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L132-L164 */
1779
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1779
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1780
1780
  }
1781
1781
  export {};
@@ -1040,6 +1040,6 @@ export declare class CurveV1AdapterDeposit extends AbstractAdapterContract<abi,
1040
1040
  get tokens(): [Address, Address, Address, Address];
1041
1041
  get underlyings(): [Address, Address, Address, Address];
1042
1042
  /** Legacy adapter not present in integrations-v3. Go: Curve operations via operation_type.go L132-L164 */
1043
- protected classifyLegacyOperation(_parsed: ParsedCallV2, _transfers: Transfers): LegacyAdapterOperation;
1043
+ classifyLegacyOperation(_parsed: ParsedCallV2, _transfers: Transfers): LegacyAdapterOperation;
1044
1044
  }
1045
1045
  export {};
@@ -1763,6 +1763,6 @@ export declare class CurveV1AdapterStETHContract extends AbstractAdapterContract
1763
1763
  get use256(): boolean;
1764
1764
  get tokens(): [Address, Address];
1765
1765
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L132-L164 */
1766
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1766
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1767
1767
  }
1768
1768
  export {};
@@ -1746,6 +1746,6 @@ export declare class CurveV1StableNGAdapterContract extends AbstractAdapterContr
1746
1746
  contractType?: string;
1747
1747
  };
1748
1748
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L132-L164 */
1749
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1749
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
1750
1750
  }
1751
1751
  export {};
@@ -204,6 +204,6 @@ export declare class DaiUsdsAdapterContract extends AbstractAdapterContract<abi,
204
204
  contractType?: string;
205
205
  };
206
206
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L51-L68 */
207
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
207
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
208
208
  }
209
209
  export {};
@@ -671,6 +671,6 @@ export declare class ERC4626AdapterContract extends AbstractAdapterContract<abi,
671
671
  *
672
672
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
673
673
  */
674
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
674
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
675
675
  }
676
676
  export {};
@@ -298,6 +298,6 @@ export declare class ERC4626ReferralAdapterContract extends AbstractAdapterContr
298
298
  /**
299
299
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
300
300
  */
301
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
301
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
302
302
  }
303
303
  export {};
@@ -213,6 +213,6 @@ export declare class LidoV1AdapterContract extends AbstractAdapterContract<abi,
213
213
  contractType?: string;
214
214
  };
215
215
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L277-L282 */
216
- protected classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
216
+ classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
217
217
  }
218
218
  export {};
@@ -709,6 +709,6 @@ export declare class MellowDVVAdapterContract extends AbstractAdapterContract<ab
709
709
  /**
710
710
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
711
711
  */
712
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
712
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
713
713
  }
714
714
  export {};
@@ -676,6 +676,6 @@ export declare class MellowERC4626VaultAdapterContract extends AbstractAdapterCo
676
676
  *
677
677
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
678
678
  */
679
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
679
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
680
680
  }
681
681
  export {};
@@ -964,6 +964,6 @@ export declare class UniswapV2AdapterContract extends AbstractAdapterContract<ab
964
964
  };
965
965
  protected stringifyFunctionParams(params: DecodeFunctionDataReturnType<abi>): string[];
966
966
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L81-L91 */
967
- protected classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
967
+ classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
968
968
  }
969
969
  export {};
@@ -420,6 +420,6 @@ export declare class UniswapV4AdapterContract extends AbstractAdapterContract<ab
420
420
  contractType?: string;
421
421
  };
422
422
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L81-L91 */
423
- protected classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
423
+ classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
424
424
  }
425
425
  export {};
@@ -392,6 +392,6 @@ export declare class WstETHV1AdapterContract extends AbstractAdapterContract<abi
392
392
  contractType?: string;
393
393
  };
394
394
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L264-L275 */
395
- protected classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
395
+ classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
396
396
  }
397
397
  export {};
@@ -1,6 +1,6 @@
1
1
  import { type Address } from "viem";
2
2
  import type { BasicSwapCall, CurveAddLiquidity, CurveRemoveLiquidity, LegacyAdapterOperation, TokenAmount, Transfers } from "./legacyAdapterOperations.js";
3
- import type { TokenTransfer } from "./types.js";
3
+ import type { TokenTransfer } from "./transfers.js";
4
4
  /**
5
5
  * Converts an ordered array of {@link TokenTransfer} into net signed balance
6
6
  * changes ({@link Transfers}) for the given credit account.
@@ -0,0 +1,17 @@
1
+ import type { Address } from "viem";
2
+ /**
3
+ * A single ERC-20 Transfer event captured between Execute boundaries.
4
+ *
5
+ * Internal to `plugins/adapters` (kept here so {@link toNetTransfers} stays
6
+ * typed) and intentionally **not** re-exported from the package barrel: the
7
+ * canonical, public `TokenTransfer` lives in the `preview` module. The two are
8
+ * structurally identical, so values flow between the modules without casts.
9
+ *
10
+ * @deprecated Will be deprecated when we get rid of classifyLegacyOperation
11
+ */
12
+ export interface TokenTransfer {
13
+ token: Address;
14
+ amount: bigint;
15
+ from: Address;
16
+ to: Address;
17
+ }
@@ -1,6 +1,5 @@
1
1
  import type { AbiParameter, Address } from "viem";
2
2
  import type { BaseContractStateHuman } from "../../sdk/types/state-human.js";
3
- import type { LegacyAdapterOperation } from "./legacyAdapterOperations.js";
4
3
  export type VersionedAbi = Record<number, readonly AbiParameter[]>;
5
4
  export type AdapterContractType = "ADAPTER::ACCOUNT_MIGRATOR" | "ADAPTER::BALANCER_V3_ROUTER" | "ADAPTER::BALANCER_V3_WRAPPER" | "ADAPTER::BALANCER_VAULT" | "ADAPTER::CAMELOT_V3_ROUTER" | "ADAPTER::CURVE_STABLE_NG" | "ADAPTER::CURVE_V1_2ASSETS" | "ADAPTER::CURVE_V1_3ASSETS" | "ADAPTER::CURVE_V1_4ASSETS" | "ADAPTER::CURVE_V1_STECRV_POOL" | "ADAPTER::CURVE_V1_WRAPPER" | "ADAPTER::CVX_V1_BASE_REWARD_POOL" | "ADAPTER::CVX_V1_BOOSTER" | "ADAPTER::DAI_USDS_EXCHANGE" | "ADAPTER::EQUALIZER_ROUTER" | "ADAPTER::ERC4626_VAULT" | "ADAPTER::ERC4626_VAULT_REFERRAL" | "ADAPTER::FLUID_DEX" | "ADAPTER::INFINIFI_GATEWAY" | "ADAPTER::INFINIFI_UNWINDING" | "ADAPTER::INFRARED_VAULT" | "ADAPTER::KELP_DEPOSIT_POOL" | "ADAPTER::KELP_WITHDRAWAL" | "ADAPTER::KODIAK_ISLAND_GATEWAY" | "ADAPTER::LIDO_V1" | "ADAPTER::LIDO_WSTETH_V1" | "ADAPTER::MELLOW_CLAIMER" | "ADAPTER::MELLOW_DVV" | "ADAPTER::MELLOW_ERC4626_VAULT" | "ADAPTER::MELLOW_LRT_VAULT" | "ADAPTER::MELLOW_WRAPPER" | "ADAPTER::MELLOW_DEPOSIT_QUEUE_QUEUE" | "ADAPTER::MELLOW_REDEEM_QUEUE_QUEUE" | "ADAPTER::MIDAS_ISSUANCE_VAULT" | "ADAPTER::MIDAS_REDEMPTION_VAULT" | "ADAPTER::PENDLE_ROUTER" | "ADAPTER::SECURITIZE_ONRAMP" | "ADAPTER::SECURITIZE_REDEMPTION" | "ADAPTER::SECURITIZE_SWAP" | "ADAPTER::STAKING_REWARDS" | "ADAPTER::TRADER_JOE_ROUTER" | "ADAPTER::UNISWAP_V2_ROUTER" | "ADAPTER::UNISWAP_V3_ROUTER" | "ADAPTER::UNISWAP_V4_GATEWAY" | "ADAPTER::UPSHIFT_VAULT" | "ADAPTER::VELODROME_V2_ROUTER" | "ADAPTER::YEARN_V2";
6
5
  export declare enum AdapterType {
@@ -57,59 +56,22 @@ export interface AdapterContractStateHuman extends BaseContractStateHuman {
57
56
  targetContract?: string;
58
57
  }
59
58
  /**
60
- * A single ERC-20 Transfer event captured between Execute boundaries.
59
+ * Protocol-level call performed by an adapter: the target (protocol) contract
60
+ * together with the decoded function name and arguments of the actual CALL the
61
+ * adapter made to it. Recovered from an execution trace, so it is only present
62
+ * when a trace is available (history, facade simulation).
61
63
  */
62
- export interface TokenTransfer {
63
- token: Address;
64
- amount: bigint;
65
- from: Address;
66
- to: Address;
67
- }
68
- /**
69
- * Parsed adapter operation to display in credit account transactions history
70
- */
71
- export interface AdapterOperation {
72
- operation: "Execute";
73
- /**
74
- * Address of Gearbox Adapter contract
75
- */
76
- adapter: Address;
64
+ export interface AdapterProtocolOperation {
77
65
  /**
78
66
  * Address of protocol contract (targetContract of adapter contract)
79
67
  */
80
- protocol: Address;
81
- /**
82
- * Namespaced adapter type
83
- * E.g. "ADAPTER::FLUID_DEX"
84
- */
85
- adapterType: string;
86
- /**
87
- * Adapter contract version
88
- */
89
- version: number;
90
- /**
91
- * Label of protocol contract (NOT adapter contract)
92
- */
93
- label?: string;
94
- /**
95
- * Function name of adapter contract
96
- */
97
- adapterFunctionName: string;
98
- /**
99
- * Arguments of adapter contract
100
- */
101
- adapterArgs: Record<string, unknown>;
68
+ contract: Address;
102
69
  /**
103
70
  * Function name protocol called by adapter
104
71
  */
105
- protocolFunctionName: string;
72
+ functionName: string;
106
73
  /**
107
74
  * Arguments of protocol called by adapter
108
75
  */
109
- protocolArgs: Record<string, unknown>;
110
- /**
111
- * ERC20 transfer to and from credit account made during adapter call
112
- */
113
- transfers: TokenTransfer[];
114
- legacy: LegacyAdapterOperation;
76
+ functionArgs: Record<string, unknown>;
115
77
  }
@@ -1,3 +1,4 @@
1
1
  export * from "./parse/index.js";
2
2
  export * from "./prerequisites/index.js";
3
3
  export * from "./simulate/index.js";
4
+ export * from "./trace/index.js";
@@ -1,6 +1,6 @@
1
- import { type Address } from "viem";
2
- import type { InnerOperation } from "../../history/index.js";
1
+ import type { Address } from "viem";
3
2
  import type { OnchainSDK, ParsedCallV2 } from "../../sdk/index.js";
3
+ import type { InnerOperation } from "./types.js";
4
4
  export interface ClassifyInnerOperationsProps {
5
5
  sdk: OnchainSDK;
6
6
  /** Underlying token of the credit manager, used for debt operations. */
@@ -10,12 +10,12 @@ export interface ClassifyInnerOperationsProps {
10
10
  * Calldata-only counterpart of the SDK's `classifyMulticallOperations`.
11
11
  *
12
12
  * Maps each inner multicall entry to an {@link InnerOperation}:
13
- * - adapter targets become an `Execute` {@link AdapterOperation};
14
- * - credit-facade self-calls map to the matching inner facade operation;
15
- * - unknown targets fall back to a generic `Execute`.
13
+ * - adapter and unknown targets become a pure-descriptor `Execute`
14
+ * {@link AdapterOperation};
15
+ * - credit-facade self-calls map to the matching inner facade operation.
16
16
  *
17
- * Since raw calldata has no execution trace, `transfers` is always empty and
18
- * `legacy` is a zeroed placeholder; protocol-level fields mirror the adapter
19
- * call.
17
+ * Raw calldata has no execution trace, so the trace-derived adapter data
18
+ * (`protocol`, `transfers`) and `legacy` are intentionally absent; they are only
19
+ * recovered by trace-based flows (history, facade simulation).
20
20
  */
21
21
  export declare function classifyInnerOperations(calls: ParsedCallV2[], props: ClassifyInnerOperationsProps): InnerOperation[];
@@ -1,6 +1,6 @@
1
1
  import { type Hex } from "viem";
2
- import type { OuterFacadeOperation } from "../../history/index.js";
3
2
  import type { CreditFacadeV310Contract, OnchainSDK } from "../../sdk/index.js";
3
+ import type { OuterFacadeOperation } from "./types.js";
4
4
  export interface ParseFacadeOperationCalldataProps {
5
5
  sdk: OnchainSDK;
6
6
  /** Resolved credit facade contract for the transaction target. */
@@ -11,8 +11,9 @@ export interface ParseFacadeOperationCalldataProps {
11
11
  * Decodes a credit-facade entry-point call into the matching
12
12
  * {@link OuterFacadeOperation}.
13
13
  *
14
- * Metadata is partial: `txHash` is `zeroHash` and `timestamp` is `0` because
15
- * those are only known once the transaction is mined. `creditAccount` is
14
+ * Transaction-level metadata (`txHash`, `blockNumber`, `timestamp`) is not part
15
+ * of the base `preview` operation: those values are only known once the
16
+ * transaction is mined and are added in `history` mode. `creditAccount` is
16
17
  * `zeroAddress` for `openCreditAccount` (the address is assigned on-chain).
17
18
  */
18
19
  export declare function parseFacadeOperationCalldata(props: ParseFacadeOperationCalldataProps): OuterFacadeOperation;
@@ -0,0 +1,69 @@
1
+ import type { Address } from "viem";
2
+ import type { AdapterProtocolOperation } from "../../plugins/adapters/index.js";
3
+ /**
4
+ * A single ERC-20 Transfer event captured between Execute boundaries.
5
+ *
6
+ * Canonical, public definition owned by the `preview` module; `plugins/adapters`
7
+ * keeps a structurally identical internal copy for its legacy helpers.
8
+ */
9
+ export interface TokenTransfer {
10
+ token: Address;
11
+ amount: bigint;
12
+ from: Address;
13
+ to: Address;
14
+ }
15
+ /**
16
+ * Pure adapter-call descriptor: everything that can be recovered without an
17
+ * execution trace (from raw calldata alone).
18
+ */
19
+ export interface AdapterOperationBase {
20
+ operation: "Execute";
21
+ /**
22
+ * Address of Gearbox Adapter contract
23
+ */
24
+ adapter: Address;
25
+ /**
26
+ * Namespaced adapter type
27
+ * E.g. "ADAPTER::FLUID_DEX"
28
+ */
29
+ adapterType: string;
30
+ /**
31
+ * Adapter contract version
32
+ */
33
+ version: number;
34
+ /**
35
+ * Label of protocol contract (NOT adapter contract)
36
+ */
37
+ label?: string;
38
+ /**
39
+ * Function name of adapter contract
40
+ */
41
+ adapterFunctionName: string;
42
+ /**
43
+ * Arguments of adapter contract
44
+ */
45
+ adapterArgs: Record<string, unknown>;
46
+ }
47
+ /**
48
+ * Adapter `Execute` operation, generic over the extra data added by consumers.
49
+ *
50
+ * - calldata-only parse uses `Ext = {}` (pure descriptor);
51
+ * - trace-based flows (history, facade simulation) use {@link TraceAdapterExt};
52
+ * - history additionally intersects `{ legacy: LegacyAdapterOperation }`.
53
+ */
54
+ export type AdapterOperation<Ext extends object = {}> = AdapterOperationBase & Ext;
55
+ /**
56
+ * Trace-derived adapter data: the protocol-level call and the ERC-20 transfers
57
+ * made during the adapter call. Both are only available from an execution
58
+ * trace, so they always travel together.
59
+ *
60
+ * `protocol` is optional: it is absent when no external protocol call was
61
+ * recovered for the adapter `Execute`. This happens for the account-migrator
62
+ * adapter (its `execute` targets the migrator bot, not an external protocol),
63
+ * for unknown adapters in non-strict mode (no ABI to decode against), and when
64
+ * the protocol calldata cannot be decoded.
65
+ */
66
+ export interface TraceAdapterExt {
67
+ protocol?: AdapterProtocolOperation;
68
+ transfers: TokenTransfer[];
69
+ }
@@ -0,0 +1,124 @@
1
+ import type { Address, Hex } from "viem";
2
+ import type { AdapterOperation } from "./types-adapters.js";
3
+ /**
4
+ * Increase debt (borrow more).
5
+ * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L149-L154
6
+ */
7
+ export interface IncreaseDebtOp {
8
+ operation: "IncreaseBorrowedAmount";
9
+ token: Address;
10
+ amount: bigint;
11
+ }
12
+ /**
13
+ * Decrease debt (repay).
14
+ * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L155-L161
15
+ */
16
+ export interface DecreaseDebtOp {
17
+ operation: "DecreaseBorrowedAmount";
18
+ token: Address;
19
+ amount: bigint;
20
+ }
21
+ /**
22
+ * Add collateral to credit account.
23
+ */
24
+ export interface AddCollateralOp {
25
+ operation: "AddCollateral";
26
+ token: Address;
27
+ amount: bigint;
28
+ }
29
+ /**
30
+ * Withdraw collateral from credit account.
31
+ * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L162-L171
32
+ */
33
+ export interface WithdrawCollateralOp {
34
+ operation: "WithdrawCollateral";
35
+ token: Address;
36
+ amount: bigint;
37
+ to: Address;
38
+ phantomToken?: Address;
39
+ }
40
+ /**
41
+ * Update token quota on credit account.
42
+ * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L172-L178
43
+ */
44
+ export interface UpdateQuotaOp {
45
+ operation: "UpdateQuota";
46
+ token: Address;
47
+ change: bigint;
48
+ }
49
+ /**
50
+ * Union of facade inner-call operation types (non-adapter credit account operations).
51
+ * Discriminated on the `operation` field.
52
+ */
53
+ export type InnerFacadeOperation = IncreaseDebtOp | DecreaseDebtOp | AddCollateralOp | WithdrawCollateralOp | UpdateQuotaOp;
54
+ /**
55
+ * All operations that can happen within a CreditFacade's multicall and that we're interested in.
56
+ *
57
+ * Generic over the adapter-operation extension `Ext` (see {@link AdapterOperation}).
58
+ */
59
+ export type InnerOperation<Ext extends object = {}> = AdapterOperation<Ext> | InnerFacadeOperation;
60
+ /**
61
+ * Transaction-level metadata available only when parsing a mined transaction
62
+ * (the `history` mode). It is intentionally absent from base `preview`
63
+ * operations, which describe not-yet-mined calls where these values are unknown.
64
+ */
65
+ export interface OperationMetadata {
66
+ txHash: Hex;
67
+ blockNumber: number;
68
+ timestamp: number;
69
+ }
70
+ export interface FacadeOperationMetadata {
71
+ creditManager: Address;
72
+ creditFacade: Address;
73
+ }
74
+ export interface MulticallOperation<Ext extends object = {}> extends FacadeOperationMetadata {
75
+ operation: "MultiCall" | "BotMulticall";
76
+ creditAccount: Address;
77
+ multicall: InnerOperation<Ext>[];
78
+ }
79
+ export interface OpenCreditAccountOperation<Ext extends object = {}> extends FacadeOperationMetadata {
80
+ operation: "OpenCreditAccount";
81
+ creditAccount: Address;
82
+ onBehalfOf: Address;
83
+ referralCode: bigint;
84
+ multicall: InnerOperation<Ext>[];
85
+ }
86
+ export interface CloseCreditAccountOperation<Ext extends object = {}> extends FacadeOperationMetadata {
87
+ operation: "CloseCreditAccount";
88
+ creditAccount: Address;
89
+ multicall: InnerOperation<Ext>[];
90
+ }
91
+ export interface LiquidateCreditAccountOperation<Ext extends object = {}> extends FacadeOperationMetadata {
92
+ operation: "LiquidateCreditAccount";
93
+ creditAccount: Address;
94
+ to: Address;
95
+ token: Address;
96
+ remainingFunds: bigint;
97
+ multicall: InnerOperation<Ext>[];
98
+ }
99
+ export interface PartialLiquidationOperation extends FacadeOperationMetadata {
100
+ operation: "PartiallyLiquidateCreditAccount";
101
+ creditAccount: Address;
102
+ token: Address;
103
+ repaidAmount: bigint;
104
+ minSeizedAmount: bigint;
105
+ to: Address;
106
+ }
107
+ export interface DirectTokenTransferOperation {
108
+ operation: "DirectTokenTransfer";
109
+ protocol: Address;
110
+ token: Address;
111
+ from: Address;
112
+ creditAccount: Address;
113
+ amount: bigint;
114
+ }
115
+ /**
116
+ * Discriminated union of all facade-level operation types.
117
+ * One per facade entry-point call within a transaction.
118
+ */
119
+ export type OuterFacadeOperation<Ext extends object = {}> = MulticallOperation<Ext> | OpenCreditAccountOperation<Ext> | CloseCreditAccountOperation<Ext> | LiquidateCreditAccountOperation<Ext> | PartialLiquidationOperation;
120
+ /**
121
+ * Discriminated union of all credit account operation types
122
+ * (facade operations + direct token transfers).
123
+ */
124
+ export type CreditAccountOperation<Ext extends object = {}> = OuterFacadeOperation<Ext> | DirectTokenTransferOperation;
@@ -0,0 +1,42 @@
1
+ import type { Address } from "viem";
2
+ import type { TokenTransfer } from "./types-adapters.js";
3
+ /**
4
+ * ERC4626 `deposit` into a Gearbox pool.
5
+ * Token metadata (symbol/decimals) is intentionally omitted: consumers resolve
6
+ * it from `sdk.tokensMeta` using the token addresses below.
7
+ */
8
+ export interface PoolDepositOperation {
9
+ operation: "Deposit";
10
+ pool: Address;
11
+ receiver: Address;
12
+ /** Underlying assets supplied to the pool. */
13
+ assets: bigint;
14
+ underlying: Address;
15
+ /** Referral code, present only for `depositWithReferral` calls. */
16
+ referralCode?: bigint;
17
+ /**
18
+ * ERC-20 transfers involving the wallet, recovered by simulating the call.
19
+ * Empty for the calldata-only parse; populated by the simulation stage.
20
+ */
21
+ transfers: TokenTransfer[];
22
+ }
23
+ /**
24
+ * ERC4626 `redeem` from a Gearbox pool.
25
+ * Token metadata (symbol/decimals) is intentionally omitted: consumers resolve
26
+ * it from `sdk.tokensMeta` using the token addresses below.
27
+ */
28
+ export interface PoolRedeemOperation {
29
+ operation: "Redeem";
30
+ pool: Address;
31
+ receiver: Address;
32
+ owner: Address;
33
+ /** Pool shares (diesel) burned. */
34
+ shares: bigint;
35
+ underlying: Address;
36
+ /**
37
+ * ERC-20 transfers involving the wallet, recovered by simulating the call.
38
+ * Empty for the calldata-only parse; populated by the simulation stage.
39
+ */
40
+ transfers: TokenTransfer[];
41
+ }
42
+ export type PoolOperation = PoolDepositOperation | PoolRedeemOperation;
@@ -1,7 +1,10 @@
1
- import type { Address } from "viem";
2
- import type { OuterFacadeOperation } from "../../history/index.js";
3
- import type { AdaptersPlugin, TokenTransfer } from "../../plugins/adapters/index.js";
1
+ import type { AdaptersPlugin } from "../../plugins/adapters/index.js";
4
2
  import type { OnchainSDK, PluginsMap } from "../../sdk/index.js";
3
+ import type { OuterFacadeOperation } from "./types-facades.js";
4
+ import type { PoolOperation } from "./types-pools.js";
5
+ export * from "./types-adapters.js";
6
+ export * from "./types-facades.js";
7
+ export * from "./types-pools.js";
5
8
  /**
6
9
  * True when the plugin map `P` contains the {@link AdaptersPlugin} under any
7
10
  * key. Matched nominally (the plugin's private fields make it non-structural),
@@ -26,53 +29,16 @@ export type RequireAdaptersPlugin<P extends PluginsMap> = HasAdaptersPlugin<P> e
26
29
  */
27
30
  export type SdkWithAdapters<P extends PluginsMap = PluginsMap> = OnchainSDK<P> & RequireAdaptersPlugin<P>;
28
31
  /**
29
- * ERC4626 `deposit` into a Gearbox pool.
30
- * Token metadata (symbol/decimals) is intentionally omitted: consumers resolve
31
- * it from `sdk.tokensMeta` using the token addresses below.
32
- */
33
- export interface PoolDepositOperation {
34
- operation: "Deposit";
35
- pool: Address;
36
- receiver: Address;
37
- /** Underlying assets supplied to the pool. */
38
- assets: bigint;
39
- underlying: Address;
40
- /** Referral code, present only for `depositWithReferral` calls. */
41
- referralCode?: bigint;
42
- /**
43
- * ERC-20 transfers involving the wallet, recovered by simulating the call.
44
- * Empty for the calldata-only parse; populated by the simulation stage.
45
- */
46
- transfers: TokenTransfer[];
47
- }
48
- /**
49
- * ERC4626 `redeem` from a Gearbox pool.
50
- * Token metadata (symbol/decimals) is intentionally omitted: consumers resolve
51
- * it from `sdk.tokensMeta` using the token addresses below.
32
+ * Result of decoding a single raw operation calldata: either a pool
33
+ * deposit/redeem or one of the credit-facade operations.
34
+ *
35
+ * Calldata-only parse produces base (descriptor) adapter operations, so the
36
+ * facade operations are used with the default `Ext = {}`.
52
37
  */
53
- export interface PoolRedeemOperation {
54
- operation: "Redeem";
55
- pool: Address;
56
- receiver: Address;
57
- owner: Address;
58
- /** Pool shares (diesel) burned. */
59
- shares: bigint;
60
- underlying: Address;
61
- /**
62
- * ERC-20 transfers involving the wallet, recovered by simulating the call.
63
- * Empty for the calldata-only parse; populated by the simulation stage.
64
- */
65
- transfers: TokenTransfer[];
66
- }
67
- export type PoolOperation = PoolDepositOperation | PoolRedeemOperation;
38
+ export type Operation = PoolOperation | OuterFacadeOperation;
68
39
  /**
69
40
  * Narrows an {@link Operation} to a {@link PoolOperation} (deposit or redeem).
70
41
  * Used by the UI to decide whether a custom view exists for the parsed result;
71
42
  * everything else falls back to the raw JSON view.
72
43
  */
73
44
  export declare function isPoolOperation(tx: Operation): tx is PoolOperation;
74
- /**
75
- * Result of decoding a single raw operation calldata: either a pool
76
- * deposit/redeem or one of the credit-facade operations from `sdk/history`.
77
- */
78
- export type Operation = PoolOperation | OuterFacadeOperation;
@@ -1,5 +1,5 @@
1
1
  import { type Address, type Log } from "viem";
2
- import type { TokenTransfer } from "../../plugins/adapters/index.js";
2
+ import type { TokenTransfer } from "../parse/index.js";
3
3
  /**
4
4
  * Parses ERC-20 `Transfer` logs and keeps only those involving one of the
5
5
  * watched addresses (as sender or receiver). A log that touches several watched
@@ -1,6 +1,6 @@
1
1
  import type { Address, Hex } from "viem";
2
- import type { OuterFacadeOperation } from "../../history/index.js";
3
2
  import type { OnchainSDK } from "../../sdk/index.js";
3
+ import type { OuterFacadeOperation } from "../parse/index.js";
4
4
  import type { PoolSimulationResult } from "./types.js";
5
5
  export interface SimulateFacadeOperationInput {
6
6
  /** Only `client` is used, so any OnchainSDK works. */
@@ -1,5 +1,5 @@
1
1
  import type { Address } from "viem";
2
- import type { TokenTransfer } from "../../plugins/adapters/index.js";
2
+ import type { TokenTransfer } from "../parse/index.js";
3
3
  /**
4
4
  * Change in an address's balance of a single token over the simulated call.
5
5
  * `delta` is `after - before` (negative when the address spent the token).