@spicenet-io/spiceflow-core 0.4.1 → 0.4.2

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 (59) hide show
  1. package/dist/abis/delegate.d.ts +419 -0
  2. package/dist/abis/delegate.d.ts.map +1 -0
  3. package/dist/abis/erc20.d.ts +130 -0
  4. package/dist/abis/erc20.d.ts.map +1 -0
  5. package/dist/abis/index.d.ts +8 -0
  6. package/dist/abis/index.d.ts.map +1 -0
  7. package/dist/abis/spicenet.d.ts +116 -0
  8. package/dist/abis/spicenet.d.ts.map +1 -0
  9. package/dist/abis/spicenetEscrow.d.ts +771 -0
  10. package/dist/abis/spicenetEscrow.d.ts.map +1 -0
  11. package/dist/abis/spicenetWalletManager.d.ts +2 -0
  12. package/dist/abis/spicenetWalletManager.d.ts.map +1 -0
  13. package/dist/abis/uniV3.d.ts +93 -0
  14. package/dist/abis/uniV3.d.ts.map +1 -0
  15. package/dist/abis/wcbtc.d.ts +58 -0
  16. package/dist/abis/wcbtc.d.ts.map +1 -0
  17. package/dist/api.d.ts +161 -0
  18. package/dist/api.d.ts.map +1 -0
  19. package/dist/authorization.d.ts +44 -0
  20. package/dist/authorization.d.ts.map +1 -0
  21. package/dist/chains/index.d.ts +26 -0
  22. package/dist/chains/index.d.ts.map +1 -0
  23. package/dist/chains/list.d.ts +3 -0
  24. package/dist/chains/list.d.ts.map +1 -0
  25. package/dist/chains/types.d.ts +31 -0
  26. package/dist/chains/types.d.ts.map +1 -0
  27. package/dist/config.d.ts +9 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/constants.d.ts +7 -0
  30. package/dist/constants.d.ts.map +1 -0
  31. package/dist/core.d.ts +49 -0
  32. package/dist/core.d.ts.map +1 -0
  33. package/dist/http.d.ts +17 -0
  34. package/dist/http.d.ts.map +1 -0
  35. package/dist/index.cjs +2713 -0
  36. package/dist/index.d.ts +16 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +2624 -0
  39. package/dist/logos.d.ts +14 -0
  40. package/dist/logos.d.ts.map +1 -0
  41. package/dist/relayer.d.ts +22 -0
  42. package/dist/relayer.d.ts.map +1 -0
  43. package/dist/rfqt.d.ts +17 -0
  44. package/dist/rfqt.d.ts.map +1 -0
  45. package/dist/status.d.ts +10 -0
  46. package/dist/status.d.ts.map +1 -0
  47. package/dist/swap.d.ts +31 -0
  48. package/dist/swap.d.ts.map +1 -0
  49. package/dist/tokens/index.d.ts +17 -0
  50. package/dist/tokens/index.d.ts.map +1 -0
  51. package/dist/tokens/list.d.ts +3 -0
  52. package/dist/tokens/list.d.ts.map +1 -0
  53. package/dist/tokens/types.d.ts +33 -0
  54. package/dist/tokens/types.d.ts.map +1 -0
  55. package/dist/types.d.ts +66 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/utils.d.ts +11 -0
  58. package/dist/utils.d.ts.map +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spicenetEscrow.d.ts","sourceRoot":"","sources":["../../src/abis/spicenetEscrow.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAu+BpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { spicenetEscrowAbi as spicenetWalletManagerAbi } from "./spicenetEscrow.js";
2
+ //# sourceMappingURL=spicenetWalletManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spicenetWalletManager.d.ts","sourceRoot":"","sources":["../../src/abis/spicenetWalletManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,93 @@
1
+ export declare const uniV3QuoterV2Abi: readonly [{
2
+ readonly inputs: readonly [{
3
+ readonly components: readonly [{
4
+ readonly internalType: "address";
5
+ readonly name: "tokenIn";
6
+ readonly type: "address";
7
+ }, {
8
+ readonly internalType: "address";
9
+ readonly name: "tokenOut";
10
+ readonly type: "address";
11
+ }, {
12
+ readonly internalType: "uint256";
13
+ readonly name: "amountIn";
14
+ readonly type: "uint256";
15
+ }, {
16
+ readonly internalType: "uint24";
17
+ readonly name: "fee";
18
+ readonly type: "uint24";
19
+ }, {
20
+ readonly internalType: "uint160";
21
+ readonly name: "sqrtPriceLimitX96";
22
+ readonly type: "uint160";
23
+ }];
24
+ readonly internalType: "struct IQuoterV2.QuoteExactInputSingleParams";
25
+ readonly name: "params";
26
+ readonly type: "tuple";
27
+ }];
28
+ readonly name: "quoteExactInputSingle";
29
+ readonly outputs: readonly [{
30
+ readonly internalType: "uint256";
31
+ readonly name: "amountOut";
32
+ readonly type: "uint256";
33
+ }, {
34
+ readonly internalType: "uint160";
35
+ readonly name: "sqrtPriceX96After";
36
+ readonly type: "uint160";
37
+ }, {
38
+ readonly internalType: "uint32";
39
+ readonly name: "initializedTicksCrossed";
40
+ readonly type: "uint32";
41
+ }, {
42
+ readonly internalType: "uint256";
43
+ readonly name: "gasEstimate";
44
+ readonly type: "uint256";
45
+ }];
46
+ readonly stateMutability: "nonpayable";
47
+ readonly type: "function";
48
+ }];
49
+ export declare const uniV3SwapRouterAbi: readonly [{
50
+ readonly inputs: readonly [{
51
+ readonly components: readonly [{
52
+ readonly internalType: "address";
53
+ readonly name: "tokenIn";
54
+ readonly type: "address";
55
+ }, {
56
+ readonly internalType: "address";
57
+ readonly name: "tokenOut";
58
+ readonly type: "address";
59
+ }, {
60
+ readonly internalType: "uint24";
61
+ readonly name: "fee";
62
+ readonly type: "uint24";
63
+ }, {
64
+ readonly internalType: "address";
65
+ readonly name: "recipient";
66
+ readonly type: "address";
67
+ }, {
68
+ readonly internalType: "uint256";
69
+ readonly name: "amountIn";
70
+ readonly type: "uint256";
71
+ }, {
72
+ readonly internalType: "uint256";
73
+ readonly name: "amountOutMinimum";
74
+ readonly type: "uint256";
75
+ }, {
76
+ readonly internalType: "uint160";
77
+ readonly name: "sqrtPriceLimitX96";
78
+ readonly type: "uint160";
79
+ }];
80
+ readonly internalType: "struct IV3SwapRouter.ExactInputSingleParams";
81
+ readonly name: "params";
82
+ readonly type: "tuple";
83
+ }];
84
+ readonly name: "exactInputSingle";
85
+ readonly outputs: readonly [{
86
+ readonly internalType: "uint256";
87
+ readonly name: "amountOut";
88
+ readonly type: "uint256";
89
+ }];
90
+ readonly stateMutability: "payable";
91
+ readonly type: "function";
92
+ }];
93
+ //# sourceMappingURL=uniV3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniV3.d.ts","sourceRoot":"","sources":["../../src/abis/uniV3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCnB,CAAC;AAIX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCrB,CAAC"}
@@ -0,0 +1,58 @@
1
+ export declare const WCBTC_ABI: readonly [{
2
+ readonly inputs: readonly [];
3
+ readonly name: "name";
4
+ readonly outputs: readonly [{
5
+ readonly type: "string";
6
+ }];
7
+ readonly stateMutability: "view";
8
+ readonly type: "function";
9
+ }, {
10
+ readonly inputs: readonly [];
11
+ readonly name: "symbol";
12
+ readonly outputs: readonly [{
13
+ readonly type: "string";
14
+ }];
15
+ readonly stateMutability: "view";
16
+ readonly type: "function";
17
+ }, {
18
+ readonly inputs: readonly [];
19
+ readonly name: "decimals";
20
+ readonly outputs: readonly [{
21
+ readonly type: "uint8";
22
+ }];
23
+ readonly stateMutability: "view";
24
+ readonly type: "function";
25
+ }, {
26
+ readonly inputs: readonly [{
27
+ readonly name: "account";
28
+ readonly type: "address";
29
+ }];
30
+ readonly name: "balanceOf";
31
+ readonly outputs: readonly [{
32
+ readonly type: "uint256";
33
+ }];
34
+ readonly stateMutability: "view";
35
+ readonly type: "function";
36
+ }, {
37
+ readonly inputs: readonly [];
38
+ readonly name: "deposit";
39
+ readonly outputs: readonly [];
40
+ readonly stateMutability: "payable";
41
+ readonly type: "function";
42
+ }, {
43
+ readonly inputs: readonly [{
44
+ readonly name: "amount";
45
+ readonly type: "uint256";
46
+ }];
47
+ readonly name: "withdraw";
48
+ readonly outputs: readonly [];
49
+ readonly stateMutability: "nonpayable";
50
+ readonly type: "function";
51
+ }, {
52
+ readonly stateMutability: "payable";
53
+ readonly type: "receive";
54
+ }, {
55
+ readonly stateMutability: "payable";
56
+ readonly type: "fallback";
57
+ }];
58
+ //# sourceMappingURL=wcbtc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wcbtc.d.ts","sourceRoot":"","sources":["../../src/abis/wcbtc.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASZ,CAAC"}
package/dist/api.d.ts ADDED
@@ -0,0 +1,161 @@
1
+ import type { Address, Hex } from "viem";
2
+ import type { Call, TokenTransferConfig } from "./types.js";
3
+ export type { Call, TokenTransferConfig };
4
+ export interface SignedCall extends Call {
5
+ signature: Hex;
6
+ }
7
+ export interface ChainBatch7702 {
8
+ hash: Hex;
9
+ chainId: number;
10
+ tokenTransfers: TokenTransferConfig[];
11
+ calls: Call[];
12
+ }
13
+ export interface Intent7702 {
14
+ mode: "7702";
15
+ signatureType: string;
16
+ signature: Hex;
17
+ nbf: number;
18
+ exp: number;
19
+ chainBatches: ChainBatch7702[];
20
+ }
21
+ export interface ChainBatchNon7702Presign {
22
+ chainId: number;
23
+ tokenTransfers: TokenTransferConfig[];
24
+ call: SignedCall;
25
+ }
26
+ export interface IntentNon7702Presign {
27
+ mode: "non-7702:presign";
28
+ chainBatches: ChainBatchNon7702Presign[];
29
+ }
30
+ export interface ChainBatchNon7702OnDemand {
31
+ chainId: number;
32
+ tokenTransfers: TokenTransferConfig[];
33
+ call: Call;
34
+ }
35
+ export interface IntentNon7702OnDemand {
36
+ mode: "non-7702:on-demand";
37
+ chainBatches: ChainBatchNon7702OnDemand[];
38
+ }
39
+ export type IntentNon7702 = IntentNon7702Presign | IntentNon7702OnDemand;
40
+ export type ApiIntent = Intent7702 | IntentNon7702;
41
+ export type AmountMode = "gross_input";
42
+ export interface ChainAuthorization7702 {
43
+ r: Hex;
44
+ s: Hex;
45
+ yParity?: number;
46
+ address: Address;
47
+ chainId: number;
48
+ nonce: number;
49
+ }
50
+ export interface CreateActionRequest {
51
+ user: Address;
52
+ amountMode?: AmountMode;
53
+ chainAuthorizations?: ChainAuthorization7702[];
54
+ intents: ApiIntent[];
55
+ }
56
+ export interface FeeEstimateBatch {
57
+ chainId: number;
58
+ quotedAmount: string;
59
+ totalDebit: string;
60
+ gasQuoteSource: "estimated" | "configured_fallback" | "static_zero";
61
+ feeBreakdown: {
62
+ spicenetFee: string;
63
+ gasFee: string;
64
+ bridgeFee?: string;
65
+ };
66
+ }
67
+ export interface FeeEstimateIntent {
68
+ intentIndex: number;
69
+ batches: FeeEstimateBatch[];
70
+ }
71
+ export interface FeeEstimateSummary {
72
+ intents: FeeEstimateIntent[];
73
+ }
74
+ export interface CreateActionResponse {
75
+ actionId: string;
76
+ intentIds: string[];
77
+ feeEstimate?: FeeEstimateSummary;
78
+ }
79
+ export interface EstimateActionFeesResponse {
80
+ success: boolean;
81
+ data?: {
82
+ feeEstimate: FeeEstimateSummary;
83
+ };
84
+ error?: {
85
+ message: string;
86
+ code?: string;
87
+ };
88
+ }
89
+ export interface StepIdParams {
90
+ actionId: string;
91
+ intentIndex: number;
92
+ stepIndex: number;
93
+ }
94
+ export interface ExecuteStepExecuteRequest {
95
+ action: "execute";
96
+ }
97
+ export interface ExecuteStepExecuteWithSignatureRequest extends ExecuteStepExecuteRequest {
98
+ signature: Hex;
99
+ }
100
+ export interface ExecuteStepExecuteWithHashRequest {
101
+ action: "execute";
102
+ hash: Hex;
103
+ }
104
+ export interface ExecuteStepRegisterHashRequest {
105
+ action: "register";
106
+ hash: Hex;
107
+ }
108
+ export type ExecuteStep7702Request = ExecuteStepExecuteRequest;
109
+ export type ExecuteStepNon7702PresignRequest = ExecuteStepExecuteRequest | ExecuteStepRegisterHashRequest;
110
+ export type ExecuteStepNon7702OnDemandRequest = ExecuteStepExecuteWithHashRequest | ExecuteStepRegisterHashRequest;
111
+ export type ExecuteStepRequest = ExecuteStepExecuteRequest | ExecuteStepExecuteWithSignatureRequest | ExecuteStepExecuteWithHashRequest | ExecuteStepRegisterHashRequest;
112
+ export interface CreateWalletRequest {
113
+ timestamp: number;
114
+ signature: Hex;
115
+ }
116
+ export interface WalletInfo {
117
+ address: string;
118
+ [key: string]: unknown;
119
+ }
120
+ export interface WithdrawalIntent {
121
+ chainId: string;
122
+ signatureType: "ecdsa";
123
+ signature: Hex;
124
+ nbf: number;
125
+ exp: number;
126
+ chainBatches: Array<{
127
+ hash: Hex;
128
+ chainId: number;
129
+ calls: Array<{
130
+ to: Address;
131
+ value: bigint;
132
+ data: Hex;
133
+ }>;
134
+ }>;
135
+ }
136
+ export interface CreateWithdrawalRequest {
137
+ user?: Address;
138
+ intent: WithdrawalIntent;
139
+ }
140
+ export interface CreateWithdrawalResponse {
141
+ txHash?: string;
142
+ requestId?: string;
143
+ }
144
+ export interface WithdrawalStatus {
145
+ state: "created" | "successful" | "failed" | "cancelled" | string;
146
+ idempotenceKey: string;
147
+ chain: string;
148
+ forUser: string;
149
+ reason?: string;
150
+ error?: string;
151
+ transfers: Array<{
152
+ tokenIn: string;
153
+ tokenOut: string;
154
+ recipient: string;
155
+ amount: number;
156
+ }>;
157
+ }
158
+ export interface RollupTimestamp {
159
+ unix_timestamp: number;
160
+ }
161
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { Address, Hash, PublicClient } from "viem";
2
+ import type { Call } from "./types.js";
3
+ export declare const ChainBatchHashAbi: readonly [{
4
+ readonly name: "chainId";
5
+ readonly type: "uint256";
6
+ }, {
7
+ readonly name: "calls";
8
+ readonly type: "tuple[]";
9
+ readonly components: readonly [{
10
+ readonly name: "to";
11
+ readonly type: "address";
12
+ }, {
13
+ readonly name: "value";
14
+ readonly type: "uint256";
15
+ }, {
16
+ readonly name: "data";
17
+ readonly type: "bytes";
18
+ }];
19
+ }];
20
+ export declare const IntentHashAbi: readonly [{
21
+ readonly type: "string";
22
+ }, {
23
+ readonly type: "uint256";
24
+ }, {
25
+ readonly type: "uint256";
26
+ }, {
27
+ readonly type: "bytes32[]";
28
+ }];
29
+ export interface ChainBatchInput {
30
+ chainId: bigint | number;
31
+ calls: Call[];
32
+ }
33
+ export interface ChainBatch {
34
+ hash: Hash;
35
+ chainId: bigint;
36
+ calls: Call[];
37
+ }
38
+ export declare function hashChainBatches(chainCalls: ChainBatchInput[]): ChainBatch[];
39
+ export declare function getIntentHash(signatureType: string, nbf: bigint, exp: bigint, chainBatches: {
40
+ hash: Hash;
41
+ }[]): Hash;
42
+ export declare function getAccountNonce(address: Address, publicClient: PublicClient): Promise<number>;
43
+ export declare function getRecentBlock(publicClient: PublicClient): Promise<bigint>;
44
+ //# sourceMappingURL=authorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAO,YAAY,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAQvC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAGpB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;EAKhB,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAQ5E;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAAE,GAC7B,IAAI,CAKN;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnG;AAED,wBAAsB,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF"}
@@ -0,0 +1,26 @@
1
+ export type { Network, ChainMeta, ChainType } from "./types.js";
2
+ export { CHAINS } from "./list.js";
3
+ import type { Network, ChainMeta } from "./types.js";
4
+ import { type Chain } from "viem";
5
+ export declare function getChainMeta(chainId: number): ChainMeta | undefined;
6
+ export declare function getChainsByNetwork(network: Network): ChainMeta[];
7
+ export declare function getChainIdsByNetwork(network: Network): number[];
8
+ export declare function getMainnetChains(): ChainMeta[];
9
+ export declare function getTestnetChains(): ChainMeta[];
10
+ /** Returns ALL chains for a network including non-EVM (StarkNet). */
11
+ export declare function getAllChainsByNetwork(network: Network): ChainMeta[];
12
+ export declare function getDelegateContract(chainId: number): `0x${string}` | undefined;
13
+ export declare function getEscrowContract(chainId: number): `0x${string}` | undefined;
14
+ export declare const VIEM_CHAINS: Record<number, Chain>;
15
+ export declare function getViemChain(chainId: number): Chain | undefined;
16
+ export declare function requireViemChain(chainId: number): Chain;
17
+ export declare function isStarknetChain(chainId: number): boolean;
18
+ /**
19
+ * StarkNet Mainnet chain ID as a JS number.
20
+ * NOTE: This value exceeds MAX_SAFE_INTEGER and is JS-rounded,
21
+ * but it's consistent with how CHAINS keys are stored.
22
+ * Use this constant everywhere instead of the hex literal 0x534e5f4d41494e
23
+ * to ensure consistent rounding across the codebase.
24
+ */
25
+ export declare const STARKNET_MAINNET_CHAIN_ID: number;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chains/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAE/C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAIhE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAE/D;AAED,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAED,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,GAAG,SAAS,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,GAAG,SAAS,CAE5E;AA8BD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAI7C,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAKvD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ChainMeta } from "./types.js";
2
+ export declare const CHAINS: Record<number, ChainMeta>;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/chains/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAW5C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAsM5C,CAAC"}
@@ -0,0 +1,31 @@
1
+ export type Network = "mainnet" | "testnet";
2
+ export type ChainType = "evm" | "starknet";
3
+ /**
4
+ * NOTE on StarkNet chain IDs: StarkNet uses hex felt values like 0x534e5f4d41494e
5
+ * which exceed Number.MAX_SAFE_INTEGER. JS rounds these silently when used as numbers.
6
+ * The `id` field uses the JS-rounded value for object key consistency (JS always rounds
7
+ * the same way). Use `chainIdHex` for accurate hex representation when interacting
8
+ * with StarkNet RPCs or wallets.
9
+ */
10
+ export interface ChainMeta {
11
+ id: number;
12
+ name: string;
13
+ displayName: string;
14
+ network: Network;
15
+ nativeCurrency: {
16
+ name: string;
17
+ symbol: string;
18
+ decimals: number;
19
+ };
20
+ chainType?: ChainType;
21
+ /** Hex string chain ID for non-EVM chains where numeric ID exceeds MAX_SAFE_INTEGER */
22
+ chainIdHex?: string;
23
+ delegateContract?: `0x${string}`;
24
+ escrowContract?: `0x${string}`;
25
+ blockExplorer: string;
26
+ rpcUrl: string;
27
+ logo: string;
28
+ wrappedNativeTokenAddress?: `0x${string}`;
29
+ moralisId?: string;
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chains/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,9 @@
1
+ import type { PublicClient } from "viem";
2
+ export declare const SPICENET_NATIVE_CHAIN_ID = 4321;
3
+ export declare function isSpicenetChainId(chainId: bigint | number | string): boolean;
4
+ export interface SpiceFlowConfig {
5
+ txApiUrl: string;
6
+ delegateAddressForChain: (chainId: number) => `0x${string}`;
7
+ publicClientForChain: (chainId: number) => PublicClient;
8
+ }
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAE5E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,MAAM,EAAE,CAAC;IAC5D,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC;CACzD"}
@@ -0,0 +1,7 @@
1
+ import type { Address } from "viem";
2
+ export declare const SPICE_SOLVER_ADDRESS: Address;
3
+ export declare const SPICE_GAS_FEE_RECIPIENT: Address;
4
+ export declare const SPICE_PLATFORM_FEE_RECIPIENT: Address;
5
+ /** @deprecated Use SPICE_GAS_FEE_RECIPIENT for gas and bridge fees. */
6
+ export declare const SPICE_COMBINED_FEE_RECIPIENT: `0x${string}`;
7
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,eAAO,MAAM,oBAAoB,EACiB,OAAO,CAAC;AAE1D,eAAO,MAAM,uBAAuB,EACc,OAAO,CAAC;AAE1D,eAAO,MAAM,4BAA4B,EACS,OAAO,CAAC;AAE1D,uEAAuE;AACvE,eAAO,MAAM,4BAA4B,eAA0B,CAAC"}
package/dist/core.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ import type { PublicClient } from "viem";
2
+ import { hashChainBatches } from "./authorization.js";
3
+ import type { SpiceFlowConfig } from "./config.js";
4
+ import type { Authorization, Call } from "./types.js";
5
+ export interface Signers {
6
+ authorizationSigner: (args: {
7
+ contractAddress: `0x${string}`;
8
+ chainId: number;
9
+ nonce: number;
10
+ address: `0x${string}`;
11
+ }) => Promise<Authorization>;
12
+ messageSigner: (digest: `0x${string}`) => Promise<`0x${string}`>;
13
+ }
14
+ export declare class SpiceFlowCore {
15
+ private cfg;
16
+ private signers;
17
+ constructor(cfg: SpiceFlowConfig, signers: Signers);
18
+ getConfig(): SpiceFlowConfig;
19
+ getClient(chainId: number): PublicClient;
20
+ signDelegations(params: {
21
+ user: `0x${string}`;
22
+ delegations: {
23
+ chainId: number;
24
+ contractAddress: `0x${string}`;
25
+ nonce?: number;
26
+ }[];
27
+ }): Promise<Authorization[]>;
28
+ buildChainBatches(nbf: bigint, exp: bigint, callsByChain: {
29
+ chainId: number;
30
+ calls: Call[];
31
+ recentBlock?: bigint;
32
+ }[], signatureType?: string): Promise<{
33
+ chainBatches: import("./authorization.js").ChainBatch[];
34
+ digest: `0x${string}`;
35
+ }>;
36
+ signIntent(digest: `0x${string}`): Promise<`0x${string}`>;
37
+ submitIntent(req: {
38
+ user: `0x${string}`;
39
+ authorization: Authorization[];
40
+ chainBatches: ReturnType<typeof hashChainBatches>;
41
+ tokenAddress: `0x${string}`;
42
+ tokenAmount: bigint;
43
+ nbf: bigint;
44
+ exp: bigint;
45
+ signatureType?: string;
46
+ signature?: `0x${string}`;
47
+ }): Promise<import("./relayer.js").RelayerSubmitResponse>;
48
+ }
49
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAmC,gBAAgB,EAAiB,MAAM,oBAAoB,CAAC;AACtG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGtD,MAAM,WAAW,OAAO;IACtB,mBAAmB,EAAE,CAAC,IAAI,EAAE;QAAE,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAClJ,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;CAClE;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,GAAG;IAAmB,OAAO,CAAC,OAAO;gBAArC,GAAG,EAAE,eAAe,EAAU,OAAO,EAAE,OAAO;IAElE,SAAS,IAAI,eAAe;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAElC,eAAe,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAa9J,iBAAiB,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACxE,aAAa,GAAE,MAAgB;;;;IAS3B,UAAU,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAEzD,YAAY,CAAC,GAAG,EAAE;QACtB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACpB,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;QAClD,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;KAC3B;CAYF"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ export type RetryOptions = {
2
+ retries?: number;
3
+ backoffMs?: number;
4
+ maxBackoffMs?: number;
5
+ jitter?: boolean;
6
+ idempotencyKey?: string;
7
+ retryOn?: (errOrRes: Error | Response) => boolean;
8
+ signal?: AbortSignal;
9
+ };
10
+ export declare class HttpError extends Error {
11
+ status: number;
12
+ code?: string;
13
+ body?: unknown;
14
+ constructor(message: string, status: number, code?: string, body?: unknown);
15
+ }
16
+ export declare function fetchWithRetry(url: string, init?: RequestInit, opts?: RetryOptions): Promise<Response>;
17
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,qBAAa,SAAU,SAAQ,KAAK;IAGzB,MAAM,EAAE,MAAM;IACd,IAAI,CAAC,EAAE,MAAM;IACb,IAAI,CAAC,EAAE,OAAO;gBAHrB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO;CAIxB;AAMD,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAgB,EACtB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,QAAQ,CAAC,CA6CnB"}