@lifi/sdk 3.5.0-beta.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/package.json +7 -7
  2. package/src/_cjs/constants.js +2 -4
  3. package/src/_cjs/constants.js.map +1 -1
  4. package/src/_cjs/core/EVM/EVM.js +4 -0
  5. package/src/_cjs/core/EVM/EVM.js.map +1 -1
  6. package/src/_cjs/core/EVM/EVMStepExecutor.js +77 -98
  7. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
  8. package/src/_cjs/core/EVM/abi.js +43 -36
  9. package/src/_cjs/core/EVM/abi.js.map +1 -1
  10. package/src/_cjs/core/EVM/checkAllowance.js +30 -36
  11. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
  12. package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
  13. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
  14. package/src/_cjs/core/EVM/multisig.js +29 -0
  15. package/src/_cjs/core/EVM/multisig.js.map +1 -0
  16. package/src/_cjs/core/EVM/parseEVMErrors.js +0 -3
  17. package/src/_cjs/core/EVM/parseEVMErrors.js.map +1 -1
  18. package/src/_cjs/core/EVM/setAllowance.js +6 -4
  19. package/src/_cjs/core/EVM/setAllowance.js.map +1 -1
  20. package/src/_cjs/core/EVM/switchChain.js +3 -2
  21. package/src/_cjs/core/EVM/switchChain.js.map +1 -1
  22. package/src/_cjs/core/EVM/types.js.map +1 -1
  23. package/src/_cjs/core/EVM/utils.js +1 -2
  24. package/src/_cjs/core/EVM/utils.js.map +1 -1
  25. package/src/_cjs/core/checkBalance.js +3 -3
  26. package/src/_cjs/core/checkBalance.js.map +1 -1
  27. package/src/_cjs/index.js.map +1 -1
  28. package/src/_cjs/version.js +1 -1
  29. package/src/_cjs/version.js.map +1 -1
  30. package/src/_esm/constants.js +1 -3
  31. package/src/_esm/constants.js.map +1 -1
  32. package/src/_esm/core/EVM/EVM.js +4 -0
  33. package/src/_esm/core/EVM/EVM.js.map +1 -1
  34. package/src/_esm/core/EVM/EVMStepExecutor.js +87 -126
  35. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  36. package/src/_esm/core/EVM/abi.js +42 -37
  37. package/src/_esm/core/EVM/abi.js.map +1 -1
  38. package/src/_esm/core/EVM/checkAllowance.js +32 -41
  39. package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
  40. package/src/_esm/core/EVM/getAllowance.js.map +1 -1
  41. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
  42. package/src/_esm/core/EVM/multisig.js +25 -0
  43. package/src/_esm/core/EVM/multisig.js.map +1 -0
  44. package/src/_esm/core/EVM/parseEVMErrors.js +0 -8
  45. package/src/_esm/core/EVM/parseEVMErrors.js.map +1 -1
  46. package/src/_esm/core/EVM/setAllowance.js +6 -4
  47. package/src/_esm/core/EVM/setAllowance.js.map +1 -1
  48. package/src/_esm/core/EVM/switchChain.js +3 -2
  49. package/src/_esm/core/EVM/switchChain.js.map +1 -1
  50. package/src/_esm/core/EVM/types.js.map +1 -1
  51. package/src/_esm/core/EVM/utils.js +1 -2
  52. package/src/_esm/core/EVM/utils.js.map +1 -1
  53. package/src/_esm/core/checkBalance.js +3 -3
  54. package/src/_esm/core/checkBalance.js.map +1 -1
  55. package/src/_esm/index.js.map +1 -1
  56. package/src/_esm/version.js +1 -1
  57. package/src/_esm/version.js.map +1 -1
  58. package/src/_types/constants.d.ts +1 -3
  59. package/src/_types/constants.d.ts.map +1 -1
  60. package/src/_types/core/EVM/EVM.d.ts.map +1 -1
  61. package/src/_types/core/EVM/EVMStepExecutor.d.ts +4 -7
  62. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
  63. package/src/_types/core/EVM/abi.d.ts +5 -202
  64. package/src/_types/core/EVM/abi.d.ts.map +1 -1
  65. package/src/_types/core/EVM/checkAllowance.d.ts +2 -12
  66. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
  67. package/src/_types/core/EVM/getAllowance.d.ts +4 -5
  68. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -1
  69. package/src/_types/core/EVM/getEVMBalance.d.ts +1 -2
  70. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -1
  71. package/src/_types/core/EVM/multisig.d.ts +6 -0
  72. package/src/_types/core/EVM/multisig.d.ts.map +1 -0
  73. package/src/_types/core/EVM/setAllowance.d.ts +2 -2
  74. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -1
  75. package/src/_types/core/EVM/switchChain.d.ts.map +1 -1
  76. package/src/_types/core/EVM/types.d.ts +18 -1
  77. package/src/_types/core/EVM/types.d.ts.map +1 -1
  78. package/src/_types/core/EVM/utils.d.ts +2 -2
  79. package/src/_types/core/EVM/utils.d.ts.map +1 -1
  80. package/src/_types/core/checkBalance.d.ts.map +1 -1
  81. package/src/_types/index.d.ts +1 -1
  82. package/src/_types/index.d.ts.map +1 -1
  83. package/src/_types/version.d.ts +1 -1
  84. package/src/_types/version.d.ts.map +1 -1
  85. package/src/constants.ts +1 -6
  86. package/src/core/EVM/EVM.ts +4 -0
  87. package/src/core/EVM/EVMStepExecutor.ts +145 -174
  88. package/src/core/EVM/abi.ts +43 -40
  89. package/src/core/EVM/checkAllowance.ts +92 -96
  90. package/src/core/EVM/getAllowance.ts +8 -8
  91. package/src/core/EVM/getEVMBalance.ts +2 -2
  92. package/src/core/EVM/multisig.ts +54 -0
  93. package/src/core/EVM/parseEVMErrors.ts +0 -8
  94. package/src/core/EVM/setAllowance.ts +21 -15
  95. package/src/core/EVM/switchChain.ts +12 -3
  96. package/src/core/EVM/types.ts +27 -1
  97. package/src/core/EVM/utils.ts +3 -4
  98. package/src/core/checkBalance.ts +3 -6
  99. package/src/index.ts +3 -0
  100. package/src/version.ts +1 -1
  101. package/src/_cjs/core/EVM/getNativePermit.js +0 -90
  102. package/src/_cjs/core/EVM/getNativePermit.js.map +0 -1
  103. package/src/_cjs/core/EVM/permit2/allowanceTransfer.js +0 -100
  104. package/src/_cjs/core/EVM/permit2/allowanceTransfer.js.map +0 -1
  105. package/src/_cjs/core/EVM/permit2/constants.js +0 -12
  106. package/src/_cjs/core/EVM/permit2/constants.js.map +0 -1
  107. package/src/_cjs/core/EVM/permit2/domain.js +0 -12
  108. package/src/_cjs/core/EVM/permit2/domain.js.map +0 -1
  109. package/src/_cjs/core/EVM/permit2/signatureTransfer.js +0 -121
  110. package/src/_cjs/core/EVM/permit2/signatureTransfer.js.map +0 -1
  111. package/src/_cjs/core/EVM/signPermitMessage.js +0 -168
  112. package/src/_cjs/core/EVM/signPermitMessage.js.map +0 -1
  113. package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js +0 -29
  114. package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js.map +0 -1
  115. package/src/_cjs/utils/invariant.js +0 -17
  116. package/src/_cjs/utils/invariant.js.map +0 -1
  117. package/src/_esm/core/EVM/getNativePermit.js +0 -95
  118. package/src/_esm/core/EVM/getNativePermit.js.map +0 -1
  119. package/src/_esm/core/EVM/permit2/allowanceTransfer.js +0 -93
  120. package/src/_esm/core/EVM/permit2/allowanceTransfer.js.map +0 -1
  121. package/src/_esm/core/EVM/permit2/constants.js +0 -9
  122. package/src/_esm/core/EVM/permit2/constants.js.map +0 -1
  123. package/src/_esm/core/EVM/permit2/domain.js +0 -9
  124. package/src/_esm/core/EVM/permit2/domain.js.map +0 -1
  125. package/src/_esm/core/EVM/permit2/signatureTransfer.js +0 -117
  126. package/src/_esm/core/EVM/permit2/signatureTransfer.js.map +0 -1
  127. package/src/_esm/core/EVM/signPermitMessage.js +0 -162
  128. package/src/_esm/core/EVM/signPermitMessage.js.map +0 -1
  129. package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js +0 -25
  130. package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js.map +0 -1
  131. package/src/_esm/utils/invariant.js +0 -43
  132. package/src/_esm/utils/invariant.js.map +0 -1
  133. package/src/_types/core/EVM/getNativePermit.d.ts +0 -18
  134. package/src/_types/core/EVM/getNativePermit.d.ts.map +0 -1
  135. package/src/_types/core/EVM/permit2/allowanceTransfer.d.ts +0 -41
  136. package/src/_types/core/EVM/permit2/allowanceTransfer.d.ts.map +0 -1
  137. package/src/_types/core/EVM/permit2/constants.d.ts +0 -8
  138. package/src/_types/core/EVM/permit2/constants.d.ts.map +0 -1
  139. package/src/_types/core/EVM/permit2/domain.d.ts +0 -8
  140. package/src/_types/core/EVM/permit2/domain.d.ts.map +0 -1
  141. package/src/_types/core/EVM/permit2/signatureTransfer.d.ts +0 -42
  142. package/src/_types/core/EVM/permit2/signatureTransfer.d.ts.map +0 -1
  143. package/src/_types/core/EVM/signPermitMessage.d.ts +0 -22
  144. package/src/_types/core/EVM/signPermitMessage.d.ts.map +0 -1
  145. package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts +0 -4
  146. package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts.map +0 -1
  147. package/src/_types/utils/invariant.d.ts +0 -22
  148. package/src/_types/utils/invariant.d.ts.map +0 -1
  149. package/src/core/EVM/getNativePermit.ts +0 -113
  150. package/src/core/EVM/permit2/allowanceTransfer.ts +0 -168
  151. package/src/core/EVM/permit2/constants.ts +0 -11
  152. package/src/core/EVM/permit2/domain.ts +0 -20
  153. package/src/core/EVM/permit2/signatureTransfer.ts +0 -214
  154. package/src/core/EVM/signPermitMessage.ts +0 -248
  155. package/src/core/EVM/waitForBatchTransactionReceipt.ts +0 -49
  156. package/src/utils/invariant.ts +0 -51
@@ -1,41 +0,0 @@
1
- import { type Address, type TypedData, type TypedDataDomain } from 'viem';
2
- export declare const MaxAllowanceTransferAmount: bigint;
3
- export declare const MaxAllowanceExpiration: bigint;
4
- export declare const MaxOrderedNonce: bigint;
5
- export interface PermitDetails {
6
- token: Address;
7
- amount: bigint;
8
- expiration: number;
9
- nonce: number;
10
- }
11
- export interface PermitSingle {
12
- details: PermitDetails;
13
- spender: Address;
14
- sigDeadline: bigint;
15
- }
16
- export interface PermitBatch {
17
- details: PermitDetails[];
18
- spender: Address;
19
- sigDeadline: bigint;
20
- }
21
- export type PermitSingleData = {
22
- domain: TypedDataDomain;
23
- types: TypedData;
24
- values: PermitSingle;
25
- };
26
- export type PermitBatchData = {
27
- domain: TypedDataDomain;
28
- types: TypedData;
29
- values: PermitBatch;
30
- };
31
- export declare function getPermitSingleData(permit: PermitSingle, permit2Address: Address, chainId: number): {
32
- domain: TypedDataDomain;
33
- values: PermitSingle;
34
- };
35
- export declare function getPermitBatchData(permit: PermitBatch, permit2Address: Address, chainId: number): {
36
- domain: TypedDataDomain;
37
- values: PermitBatch;
38
- };
39
- export declare function getPermitData(permit: PermitSingle | PermitBatch, permit2Address: Address, chainId: number): PermitSingleData | PermitBatchData;
40
- export declare function hash(permit: PermitSingle | PermitBatch, permit2Address: Address, chainId: number): string;
41
- //# sourceMappingURL=allowanceTransfer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"allowanceTransfer.d.ts","sourceRoot":"","sources":["../../../../core/EVM/permit2/allowanceTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,eAAe,EAErB,MAAM,MAAM,CAAA;AAMb,eAAO,MAAM,0BAA0B,QAAa,CAAA;AACpD,eAAO,MAAM,sBAAsB,QAAY,CAAA;AAC/C,eAAO,MAAM,eAAe,QAAY,CAAA;AAExC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,WAAW,CAAA;CACpB,CAAA;AA+BD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM;;;EAWhB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM;;;EAWhB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,GAAG,WAAW,EAClC,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,GACd,gBAAgB,GAAG,eAAe,CAkBpC;AAED,wBAAgB,IAAI,CAClB,MAAM,EAAE,YAAY,GAAG,WAAW,EAClC,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,GACd,MAAM,CAuBR"}
@@ -1,8 +0,0 @@
1
- export declare const MaxAllowanceTransferAmount: bigint;
2
- export declare const MaxAllowanceExpiration: bigint;
3
- export declare const MaxOrderedNonce: bigint;
4
- export declare const MaxSignatureTransferAmount: bigint;
5
- export declare const MaxUnorderedNonce: bigint;
6
- export declare const MaxSigDeadline: bigint;
7
- export declare const InstantExpiration = 0n;
8
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../core/EVM/permit2/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,QAAa,CAAA;AACpD,eAAO,MAAM,sBAAsB,QAAY,CAAA;AAC/C,eAAO,MAAM,eAAe,QAAY,CAAA;AAExC,eAAO,MAAM,0BAA0B,QAAa,CAAA;AACpD,eAAO,MAAM,iBAAiB,QAAa,CAAA;AAC3C,eAAO,MAAM,cAAc,QAAa,CAAA;AAExC,eAAO,MAAM,iBAAiB,KAAK,CAAA"}
@@ -1,8 +0,0 @@
1
- import type { Address, TypedData, TypedDataDomain } from 'viem';
2
- export declare function permit2Domain(permit2Address: Address, chainId: number): TypedDataDomain;
3
- export type PermitData = {
4
- domain: TypedDataDomain;
5
- types: TypedData;
6
- values: any;
7
- };
8
- //# sourceMappingURL=domain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../core/EVM/permit2/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAI/D,wBAAgB,aAAa,CAC3B,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,GACd,eAAe,CAMjB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,GAAG,CAAA;CACZ,CAAA"}
@@ -1,42 +0,0 @@
1
- import type { Address, TypedData, TypedDataDomain } from 'viem';
2
- export interface Witness {
3
- witness: any;
4
- witnessTypeName: string;
5
- witnessType: {
6
- [key: string]: {
7
- name: string;
8
- type: string;
9
- }[];
10
- };
11
- }
12
- export interface TokenPermissions {
13
- token: Address;
14
- amount: bigint;
15
- }
16
- export interface PermitTransferFrom {
17
- permitted: TokenPermissions;
18
- spender: Address;
19
- nonce: bigint;
20
- deadline: bigint;
21
- }
22
- export interface PermitBatchTransferFrom {
23
- permitted: TokenPermissions[];
24
- spender: Address;
25
- nonce: bigint;
26
- deadline: bigint;
27
- }
28
- export type PermitTransferFromData = {
29
- domain: TypedDataDomain;
30
- types: TypedData;
31
- values: PermitTransferFrom;
32
- };
33
- export type PermitBatchTransferFromData = {
34
- domain: TypedDataDomain;
35
- types: TypedData;
36
- values: PermitBatchTransferFrom;
37
- };
38
- export declare function getPermitTransferData(permit: PermitTransferFrom, permit2Address: Address, chainId: number, witness?: Witness): PermitTransferFromData;
39
- export declare function getPermitBatchTransferData(permit: PermitBatchTransferFrom, permit2Address: Address, chainId: number, witness?: Witness): PermitBatchTransferFromData;
40
- export declare function getPermitData(permit: PermitTransferFrom | PermitBatchTransferFrom, permit2Address: Address, chainId: number, witness?: Witness): PermitTransferFromData | PermitBatchTransferFromData;
41
- export declare function hash(permit: PermitTransferFrom | PermitBatchTransferFrom, permit2Address: Address, chainId: number, witness?: Witness): `0x${string}`;
42
- //# sourceMappingURL=signatureTransfer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signatureTransfer.d.ts","sourceRoot":"","sources":["../../../../core/EVM/permit2/signatureTransfer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAS/D,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,GAAG,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAA;CACjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,gBAAgB,CAAA;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,gBAAgB,EAAE,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,kBAAkB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,uBAAuB,CAAA;CAChC,CAAA;AAiCD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,sBAAsB,CA+BxB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,uBAAuB,EAC/B,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,2BAA2B,CA+B7B;AAID,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,EACpD,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,sBAAsB,GAAG,2BAA2B,CAKtD;AAED,wBAAgB,IAAI,CAClB,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,EACpD,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,iBAkClB"}
@@ -1,22 +0,0 @@
1
- import type { ExtendedChain } from '@lifi/types';
2
- import type { Client } from 'viem';
3
- import type { Address } from 'viem';
4
- import type { TransactionParameters } from '../types.js';
5
- import { type NativePermitData } from './getNativePermit.js';
6
- export declare const signNativePermitMessage: (client: Client, transactionRequest: TransactionParameters, chain: ExtendedChain, tokenAddress: Address, amount: bigint, nativePermit: NativePermitData) => Promise<{
7
- signature: `0x${string}`;
8
- data: `0x${string}`;
9
- }>;
10
- export declare const signPermit2Message: (client: Client, transactionRequest: TransactionParameters, chain: ExtendedChain, tokenAddress: Address, amount: bigint) => Promise<{
11
- signature: `0x${string}`;
12
- data: `0x${string}`;
13
- }>;
14
- export declare const signPermit2WitnessMessage: (client: Client, transactionRequest: TransactionParameters, chain: ExtendedChain, tokenAddress: Address, amount: bigint) => Promise<{
15
- signature: `0x${string}`;
16
- data: `0x${string}`;
17
- }>;
18
- export declare const signPermitMessage: (client: Client, transactionRequest: TransactionParameters, chain: ExtendedChain, tokenAddress: Address, amount: bigint, nativePermit?: NativePermitData, useWitness?: boolean) => Promise<{
19
- signature: `0x${string}`;
20
- data: `0x${string}`;
21
- }>;
22
- //# sourceMappingURL=signPermitMessage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signPermitMessage.d.ts","sourceRoot":"","sources":["../../../core/EVM/signPermitMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAO,MAAM,MAAM,CAAA;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,sBAAsB,CAAA;AAM7E,eAAO,MAAM,uBAAuB,WAC1B,MAAM,sBACM,qBAAqB,SAClC,aAAa,gBACN,OAAO,UACb,MAAM,gBACA,gBAAgB;;;EA+C/B,CAAA;AAED,eAAO,MAAM,kBAAkB,WACrB,MAAM,sBACM,qBAAqB,SAClC,aAAa,gBACN,OAAO,UACb,MAAM;;;EAmDf,CAAA;AAED,eAAO,MAAM,yBAAyB,WAC5B,MAAM,sBACM,qBAAqB,SAClC,aAAa,gBACN,OAAO,UACb,MAAM;;;EAqEf,CAAA;AAED,eAAO,MAAM,iBAAiB,WACpB,MAAM,sBACM,qBAAqB,SAClC,aAAa,gBACN,OAAO,UACb,MAAM,iBACC,gBAAgB;;;EAqChC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { Client, Hash, WalletCallReceipt as _WalletCallReceipt } from 'viem';
2
- export type WalletCallReceipt = _WalletCallReceipt<bigint, 'success' | 'reverted'>;
3
- export declare const waitForBatchTransactionReceipt: (client: Client, batchHash: Hash) => Promise<WalletCallReceipt>;
4
- //# sourceMappingURL=waitForBatchTransactionReceipt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"waitForBatchTransactionReceipt.d.ts","sourceRoot":"","sources":["../../../core/EVM/waitForBatchTransactionReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,iBAAiB,IAAI,kBAAkB,EACxC,MAAM,MAAM,CAAA;AAMb,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAChD,MAAM,EACN,SAAS,GAAG,UAAU,CACvB,CAAA;AAED,eAAO,MAAM,8BAA8B,WACjC,MAAM,aACH,IAAI,KACd,OAAO,CAAC,iBAAiB,CA8B3B,CAAA"}
@@ -1,22 +0,0 @@
1
- /**
2
- * `invariant` is used to [assert](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions) that the `condition` is [truthy](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy).
3
- *
4
- * 💥 `invariant` will `throw` an `Error` if the `condition` is [falsey](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy)
5
- *
6
- * 🤏 `message`s are not displayed in production environments to help keep bundles small
7
- *
8
- * @example
9
- *
10
- * ```ts
11
- * const value: Person | null = { name: 'Alex' };
12
- * invariant(value, 'Expected value to be a person');
13
- * // type of `value`` has been narrowed to `Person`
14
- * ```
15
- */
16
- export declare function invariant(condition: any,
17
- /**
18
- * Can provide a string, or a function that returns a string for cases where
19
- * the message takes a fair amount of effort to compute
20
- */
21
- message?: string | (() => string)): asserts condition;
22
- //# sourceMappingURL=invariant.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"invariant.d.ts","sourceRoot":"","sources":["../../utils/invariant.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,GAAG;AAEd;;;GAGG;AACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAChC,OAAO,CAAC,SAAS,CAsBnB"}
@@ -1,113 +0,0 @@
1
- import type { ExtendedChain } from '@lifi/types'
2
- import type { Address, Client } from 'viem'
3
- import { multicall, readContract } from 'viem/actions'
4
- import { eip2612Abi } from './abi.js'
5
- import { getMulticallAddress } from './utils.js'
6
-
7
- export type NativePermitData = {
8
- name: string
9
- version: string
10
- nonce: bigint
11
- supported: boolean
12
- }
13
- /**
14
- * Retrieves native permit data (EIP-2612) for a token on a specific chain
15
- * @link https://eips.ethereum.org/EIPS/eip-2612
16
- * @param client - The Viem client instance
17
- * @param chain - The extended chain object containing chain details
18
- * @param tokenAddress - The address of the token to check for permit support
19
- * @returns {Promise<NativePermitData>} Object containing permit data including name, version, nonce and support status
20
- */
21
- export const getNativePermit = async (
22
- client: Client,
23
- chain: ExtendedChain,
24
- tokenAddress: Address
25
- ): Promise<NativePermitData> => {
26
- try {
27
- const multicallAddress = await getMulticallAddress(chain.id)
28
-
29
- if (multicallAddress) {
30
- const [nameResult, domainSeparatorResult, noncesResult, versionResult] =
31
- await multicall(client, {
32
- contracts: [
33
- {
34
- address: tokenAddress,
35
- abi: eip2612Abi,
36
- functionName: 'name',
37
- },
38
- {
39
- address: tokenAddress,
40
- abi: eip2612Abi,
41
- functionName: 'DOMAIN_SEPARATOR',
42
- },
43
- {
44
- address: tokenAddress,
45
- abi: eip2612Abi,
46
- functionName: 'nonces',
47
- args: [client.account!.address],
48
- },
49
- {
50
- address: tokenAddress,
51
- abi: eip2612Abi,
52
- functionName: 'version',
53
- },
54
- ],
55
- multicallAddress,
56
- })
57
-
58
- const supported =
59
- nameResult.status === 'success' &&
60
- domainSeparatorResult.status === 'success' &&
61
- noncesResult.status === 'success' &&
62
- !!nameResult.result &&
63
- !!domainSeparatorResult.result &&
64
- noncesResult.result !== undefined
65
-
66
- return {
67
- name: nameResult.result!,
68
- version: versionResult.result ?? '1',
69
- nonce: noncesResult.result!,
70
- supported,
71
- }
72
- }
73
-
74
- // Fallback to individual calls
75
- const [name, domainSeparator, nonce, version] = await Promise.all([
76
- readContract(client, {
77
- address: tokenAddress,
78
- abi: eip2612Abi,
79
- functionName: 'name',
80
- }),
81
- readContract(client, {
82
- address: tokenAddress,
83
- abi: eip2612Abi,
84
- functionName: 'DOMAIN_SEPARATOR',
85
- }),
86
- readContract(client, {
87
- address: tokenAddress,
88
- abi: eip2612Abi,
89
- functionName: 'nonces',
90
- args: [client.account!.address],
91
- }),
92
- readContract(client, {
93
- address: tokenAddress,
94
- abi: eip2612Abi,
95
- functionName: 'version',
96
- }),
97
- ])
98
-
99
- return {
100
- name,
101
- version: version ?? '1',
102
- nonce,
103
- supported: !!name && !!domainSeparator && nonce !== undefined,
104
- }
105
- } catch {
106
- return {
107
- name: '',
108
- version: '1',
109
- nonce: 0n,
110
- supported: false,
111
- }
112
- }
113
- }
@@ -1,168 +0,0 @@
1
- import {
2
- type Address,
3
- type TypedData,
4
- type TypedDataDomain,
5
- hashTypedData,
6
- } from 'viem'
7
- import { MaxUint48, MaxUint160 } from '../../../constants.js'
8
- import { invariant } from '../../../utils/invariant.js'
9
- import { MaxSigDeadline } from './constants.js'
10
- import { permit2Domain } from './domain.js'
11
-
12
- export const MaxAllowanceTransferAmount = MaxUint160
13
- export const MaxAllowanceExpiration = MaxUint48
14
- export const MaxOrderedNonce = MaxUint48
15
-
16
- export interface PermitDetails {
17
- token: Address
18
- amount: bigint
19
- expiration: number
20
- nonce: number
21
- }
22
-
23
- export interface PermitSingle {
24
- details: PermitDetails
25
- spender: Address
26
- sigDeadline: bigint
27
- }
28
-
29
- export interface PermitBatch {
30
- details: PermitDetails[]
31
- spender: Address
32
- sigDeadline: bigint
33
- }
34
-
35
- export type PermitSingleData = {
36
- domain: TypedDataDomain
37
- types: TypedData
38
- values: PermitSingle
39
- }
40
-
41
- export type PermitBatchData = {
42
- domain: TypedDataDomain
43
- types: TypedData
44
- values: PermitBatch
45
- }
46
-
47
- const PERMIT_DETAILS = [
48
- { name: 'token', type: 'address' },
49
- { name: 'amount', type: 'uint160' },
50
- { name: 'expiration', type: 'uint48' },
51
- { name: 'nonce', type: 'uint48' },
52
- ] as const
53
-
54
- const PERMIT_TYPES = {
55
- PermitDetails: PERMIT_DETAILS,
56
- PermitSingle: [
57
- { name: 'details', type: 'PermitDetails' },
58
- { name: 'spender', type: 'address' },
59
- { name: 'sigDeadline', type: 'uint256' },
60
- ],
61
- } as const
62
-
63
- const PERMIT_BATCH_TYPES = {
64
- PermitDetails: PERMIT_DETAILS,
65
- PermitBatch: [
66
- { name: 'details', type: 'PermitDetails[]' },
67
- { name: 'spender', type: 'address' },
68
- { name: 'sigDeadline', type: 'uint256' },
69
- ],
70
- } as const
71
-
72
- function isPermit(permit: PermitSingle | PermitBatch): permit is PermitSingle {
73
- return !Array.isArray(permit.details)
74
- }
75
-
76
- export function getPermitSingleData(
77
- permit: PermitSingle,
78
- permit2Address: Address,
79
- chainId: number
80
- ) {
81
- invariant(MaxSigDeadline >= permit.sigDeadline, 'SIG_DEADLINE_OUT_OF_RANGE')
82
-
83
- const domain = permit2Domain(permit2Address, chainId)
84
- validatePermitDetails(permit.details)
85
-
86
- return {
87
- domain,
88
- values: permit,
89
- }
90
- }
91
-
92
- export function getPermitBatchData(
93
- permit: PermitBatch,
94
- permit2Address: Address,
95
- chainId: number
96
- ) {
97
- invariant(MaxSigDeadline >= permit.sigDeadline, 'SIG_DEADLINE_OUT_OF_RANGE')
98
-
99
- const domain = permit2Domain(permit2Address, chainId)
100
- permit.details.forEach(validatePermitDetails)
101
-
102
- return {
103
- domain,
104
- values: permit,
105
- }
106
- }
107
-
108
- export function getPermitData(
109
- permit: PermitSingle | PermitBatch,
110
- permit2Address: Address,
111
- chainId: number
112
- ): PermitSingleData | PermitBatchData {
113
- invariant(MaxSigDeadline >= permit.sigDeadline, 'SIG_DEADLINE_OUT_OF_RANGE')
114
-
115
- const domain = permit2Domain(permit2Address, chainId)
116
- if (isPermit(permit)) {
117
- validatePermitDetails(permit.details)
118
- return {
119
- domain,
120
- types: PERMIT_TYPES,
121
- values: permit,
122
- }
123
- }
124
- permit.details.forEach(validatePermitDetails)
125
- return {
126
- domain,
127
- types: PERMIT_BATCH_TYPES,
128
- values: permit,
129
- }
130
- }
131
-
132
- export function hash(
133
- permit: PermitSingle | PermitBatch,
134
- permit2Address: Address,
135
- chainId: number
136
- ): string {
137
- if (isPermit(permit)) {
138
- const { domain, values } = getPermitSingleData(
139
- permit,
140
- permit2Address,
141
- chainId
142
- )
143
-
144
- return hashTypedData({
145
- domain,
146
- types: PERMIT_TYPES,
147
- primaryType: 'PermitSingle',
148
- message: values,
149
- })
150
- }
151
- const { domain, values } = getPermitBatchData(permit, permit2Address, chainId)
152
-
153
- return hashTypedData({
154
- domain,
155
- types: PERMIT_BATCH_TYPES,
156
- primaryType: 'PermitBatch',
157
- message: values,
158
- })
159
- }
160
-
161
- function validatePermitDetails(details: PermitDetails) {
162
- invariant(MaxOrderedNonce >= details.nonce, 'NONCE_OUT_OF_RANGE')
163
- invariant(MaxAllowanceTransferAmount >= details.amount, 'AMOUNT_OUT_OF_RANGE')
164
- invariant(
165
- MaxAllowanceExpiration >= details.expiration,
166
- 'EXPIRATION_OUT_OF_RANGE'
167
- )
168
- }
@@ -1,11 +0,0 @@
1
- import { MaxUint48, MaxUint160, MaxUint256 } from '../../../constants.js'
2
-
3
- export const MaxAllowanceTransferAmount = MaxUint160
4
- export const MaxAllowanceExpiration = MaxUint48
5
- export const MaxOrderedNonce = MaxUint48
6
-
7
- export const MaxSignatureTransferAmount = MaxUint256
8
- export const MaxUnorderedNonce = MaxUint256
9
- export const MaxSigDeadline = MaxUint256
10
-
11
- export const InstantExpiration = 0n
@@ -1,20 +0,0 @@
1
- import type { Address, TypedData, TypedDataDomain } from 'viem'
2
-
3
- const PERMIT2_DOMAIN_NAME = 'Permit2'
4
-
5
- export function permit2Domain(
6
- permit2Address: Address,
7
- chainId: number
8
- ): TypedDataDomain {
9
- return {
10
- name: PERMIT2_DOMAIN_NAME,
11
- chainId,
12
- verifyingContract: permit2Address,
13
- }
14
- }
15
-
16
- export type PermitData = {
17
- domain: TypedDataDomain
18
- types: TypedData
19
- values: any
20
- }