@pancakeswap/sdk 5.0.0 → 5.1.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.
@@ -1,33 +1,134 @@
1
1
  import { Percent } from '@pancakeswap/swap-sdk-core';
2
- import { Address, Hash } from 'viem';
3
2
  import { ERC20Token } from './entities/token';
4
3
  export declare enum ChainId {
5
4
  ETHEREUM = 1,
6
5
  GOERLI = 5,
7
6
  BSC = 56,
8
- BSC_TESTNET = 97
7
+ BSC_TESTNET = 97,
8
+ ZKSYNC_TESTNET = 280,
9
+ ZKSYNC = 324,
10
+ POLYGON_ZKEVM = 1101,
11
+ POLYGON_ZKEVM_TESTNET = 1442,
12
+ ARBITRUM_ONE = 42161,
13
+ ARBITRUM_GOERLI = 421613,
14
+ LINEA_TESTNET = 59140
9
15
  }
10
16
  export declare const ZERO_PERCENT: Percent;
11
17
  export declare const ONE_HUNDRED_PERCENT: Percent;
12
18
  export declare const FACTORY_ADDRESS = "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73";
13
- export declare const FACTORY_ADDRESS_MAP: Record<number, Address>;
19
+ export declare const FACTORY_ADDRESS_MAP: {
20
+ readonly 1: "0x1097053Fd2ea711dad45caCcc45EfF7548fCB362";
21
+ readonly 5: "0x1097053Fd2ea711dad45caCcc45EfF7548fCB362";
22
+ readonly 56: "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73";
23
+ readonly 97: "0x6725f303b657a9451d8ba641348b6761a6cc7a17";
24
+ readonly 42161: "0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E";
25
+ readonly 421613: "0x333EAE459075b1d7dE8eb57997b5d4eee5F1070a";
26
+ readonly 1101: "0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E";
27
+ readonly 1442: "0xBA40c83026213F9cbc79998752721a0312bdB74a";
28
+ readonly 324: "0x0F70cE1e2c0FB5FC3B67E13ed4F422fE82d832bD";
29
+ readonly 280: "0x48a33610Cd0E130af2024D55F67aE72a8C51aC27";
30
+ readonly 59140: "0xB6FAfd4ADbCd21cF665909767e0eD0D05709abfB";
31
+ };
14
32
  export declare const INIT_CODE_HASH = "0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5";
15
- export declare const INIT_CODE_HASH_MAP: Record<number, Hash>;
33
+ export declare const INIT_CODE_HASH_MAP: {
34
+ readonly 1: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
35
+ readonly 5: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
36
+ readonly 56: "0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5";
37
+ readonly 97: "0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66";
38
+ readonly 42161: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
39
+ readonly 421613: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
40
+ readonly 1101: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
41
+ readonly 1442: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
42
+ readonly 324: "0x1cb011040b91cd937ddff2327f17c9690653b05b6506e830baadf2493468d657";
43
+ readonly 280: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43";
44
+ readonly 59140: "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
45
+ };
16
46
  export declare const WETH9: {
17
47
  1: ERC20Token;
18
48
  5: ERC20Token;
19
49
  56: ERC20Token;
20
50
  97: ERC20Token;
51
+ 42161: ERC20Token;
52
+ 421613: ERC20Token;
53
+ 324: ERC20Token;
54
+ 280: ERC20Token;
55
+ 1101: ERC20Token;
56
+ 1442: ERC20Token;
57
+ 59140: ERC20Token;
21
58
  };
22
59
  export declare const WBNB: {
23
60
  1: ERC20Token;
24
61
  56: ERC20Token;
25
62
  97: ERC20Token;
26
63
  };
27
- export declare const WNATIVE: Record<number, ERC20Token>;
28
- export declare const NATIVE: Record<number, {
29
- name: string;
30
- symbol: string;
31
- decimals: number;
32
- }>;
64
+ export declare const WNATIVE: {
65
+ 1: ERC20Token;
66
+ 5: ERC20Token;
67
+ 56: ERC20Token;
68
+ 97: ERC20Token;
69
+ 42161: ERC20Token;
70
+ 421613: ERC20Token;
71
+ 1101: ERC20Token;
72
+ 1442: ERC20Token;
73
+ 324: ERC20Token;
74
+ 280: ERC20Token;
75
+ 59140: ERC20Token;
76
+ };
77
+ export declare const NATIVE: {
78
+ 1: {
79
+ readonly name: "Ether";
80
+ readonly symbol: "ETH";
81
+ readonly decimals: 18;
82
+ };
83
+ 5: {
84
+ name: string;
85
+ symbol: string;
86
+ decimals: number;
87
+ };
88
+ 56: {
89
+ name: string;
90
+ symbol: string;
91
+ decimals: number;
92
+ };
93
+ 97: {
94
+ name: string;
95
+ symbol: string;
96
+ decimals: number;
97
+ };
98
+ 42161: {
99
+ readonly name: "Ether";
100
+ readonly symbol: "ETH";
101
+ readonly decimals: 18;
102
+ };
103
+ 421613: {
104
+ name: string;
105
+ symbol: string;
106
+ decimals: number;
107
+ };
108
+ 1101: {
109
+ readonly name: "Ether";
110
+ readonly symbol: "ETH";
111
+ readonly decimals: 18;
112
+ };
113
+ 1442: {
114
+ readonly name: "Ether";
115
+ readonly symbol: "ETH";
116
+ readonly decimals: 18;
117
+ };
118
+ 324: {
119
+ readonly name: "Ether";
120
+ readonly symbol: "ETH";
121
+ readonly decimals: 18;
122
+ };
123
+ 280: {
124
+ readonly name: "Ether";
125
+ readonly symbol: "ETH";
126
+ readonly decimals: 18;
127
+ };
128
+ 59140: {
129
+ readonly name: "Ether";
130
+ readonly symbol: "ETH";
131
+ readonly decimals: 18;
132
+ };
133
+ };
33
134
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,oBAAY,OAAO;IACjB,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,GAAG,KAAK;IACR,WAAW,KAAK;CACjB;AAED,eAAO,MAAM,YAAY,SAAmB,CAAA;AAC5C,eAAO,MAAM,mBAAmB,SAAmB,CAAA;AAEnD,eAAO,MAAM,eAAe,+CAA+C,CAAA;AAI3E,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAKvD,CAAA;AACD,eAAO,MAAM,cAAc,uEAAuE,CAAA;AAGlG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAKnD,CAAA;AAED,eAAO,MAAM,KAAK;;;;;CAiCjB,CAAA;AAED,eAAO,MAAM,IAAI;;;;CAyBhB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAK9C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CACzB,MAAM,EACN;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,CAcF,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,oBAAY,OAAO;IACjB,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,GAAG,KAAK;IACR,WAAW,KAAK;IAChB,cAAc,MAAM;IACpB,MAAM,MAAM;IACZ,aAAa,OAAO;IACpB,qBAAqB,OAAO;IAC5B,YAAY,QAAQ;IACpB,eAAe,SAAS;IACxB,aAAa,QAAQ;CACtB;AAED,eAAO,MAAM,YAAY,SAAmB,CAAA;AAC5C,eAAO,MAAM,mBAAmB,SAAmB,CAAA;AAEnD,eAAO,MAAM,eAAe,+CAA+C,CAAA;AAI3E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;CAYa,CAAA;AAE7C,eAAO,MAAM,cAAc,uEAAuE,CAAA;AAGlG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAaW,CAAA;AAE1C,eAAO,MAAM,KAAK;;;;;;;;;;;;CAyFjB,CAAA;AAED,eAAO,MAAM,IAAI;;;;CAyBhB,CAAA;AAED,eAAO,MAAM,OAAO;;;;;;;;;;;;CAYmB,CAAA;AAIvC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlB,CAAA"}
@@ -1,4 +1,4 @@
1
- export { ERC20Token } from './token';
1
+ export { ERC20Token, OnRampCurrency } from './token';
2
2
  export * from './pair';
3
3
  export * from './route';
4
4
  export * from './trade';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACpD,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pair.d.ts","sourceRoot":"","sources":["../../src/entities/pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EACd,KAAK,EAML,SAAS,EAEV,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,OAAO,EAYR,MAAM,MAAM,CAAA;AAIb,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAmBpC,eAAO,MAAM,kBAAkB;oBAKb,OAAO;YACf,UAAU;YACV,UAAU;MAChB,OAgBH,CAAA;AAED,qBAAa,IAAI;IACf,SAAgB,cAAc,EAAE,UAAU,CAAA;IAE1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;WAEzE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;gBAItD,eAAe,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC;IAcxG;;;OAGG;IACI,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAIhD;;OAEG;IACH,IAAW,WAAW,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAGtD;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAGtD;IAED;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;IAKhE;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;IAED,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;IAEM,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAKxD,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAoB5F,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAqB5F,kBAAkB,CACvB,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EACvC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,EACxC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GACvC,cAAc,CAAC,UAAU,CAAC;IAqBtB,iBAAiB,CACtB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EACvC,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,EACrC,KAAK,UAAQ,EACb,KAAK,CAAC,EAAE,SAAS,GAChB,cAAc,CAAC,UAAU,CAAC;CAiC9B"}
1
+ {"version":3,"file":"pair.d.ts","sourceRoot":"","sources":["../../src/entities/pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EACd,KAAK,EAML,SAAS,EAEV,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,OAAO,EAYR,MAAM,MAAM,CAAA;AAIb,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AA4BpC,eAAO,MAAM,kBAAkB;oBAKb,OAAO;YACf,UAAU;YACV,UAAU;MAChB,OAoBH,CAAA;AAED,qBAAa,IAAI;IACf,SAAgB,cAAc,EAAE,UAAU,CAAA;IAE1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;WAEzE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;gBAQtD,eAAe,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC;IAcxG;;;OAGG;IACI,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAIhD;;OAEG;IACH,IAAW,WAAW,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAGtD;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAGtD;IAED;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;IAKhE;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;IAED,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;IAEM,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAKxD,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAoB5F,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAqB5F,kBAAkB,CACvB,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EACvC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,EACxC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GACvC,cAAc,CAAC,UAAU,CAAC;IAqBtB,iBAAiB,CACtB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EACvC,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,EACrC,KAAK,UAAQ,EACb,KAAK,CAAC,EAAE,SAAS,GAChB,cAAc,CAAC,UAAU,CAAC;CAiC9B"}
@@ -1,4 +1,4 @@
1
- import { Token } from '@pancakeswap/swap-sdk-core';
1
+ import { BaseCurrency, Currency, Token } from '@pancakeswap/swap-sdk-core';
2
2
  import { Address } from 'viem';
3
3
  export interface SerializedToken {
4
4
  chainId: number;
@@ -11,4 +11,34 @@ export interface SerializedToken {
11
11
  export declare class ERC20Token extends Token {
12
12
  constructor(chainId: number, address: Address, decimals: number, symbol: string, name?: string, projectLink?: string);
13
13
  }
14
+ /**
15
+ * Represents an ERC20 token with a unique address and some metadata.
16
+ */
17
+ export declare class OnRampCurrency extends BaseCurrency {
18
+ readonly isNative: boolean;
19
+ readonly isToken: boolean;
20
+ /**
21
+ * The contract address on the chain on which this token lives
22
+ */
23
+ readonly address: `0x${string}`;
24
+ readonly projectLink?: string;
25
+ constructor(chainId: number, address: `0x${string}`, decimals: number, symbol: string, name?: string, projectLink?: string);
26
+ /**
27
+ * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.
28
+ * @param other other token to compare
29
+ */
30
+ equals(other: Currency): boolean;
31
+ /**
32
+ * Returns true if the address of this token sorts before the address of the other token
33
+ * @param other other token to compare
34
+ * @throws if the tokens have the same address
35
+ * @throws if the tokens are on different chains
36
+ */
37
+ sortsBefore(other: Currency): boolean;
38
+ /**
39
+ * Return this token, which does not need to be wrapped
40
+ */
41
+ get wrapped(): Token;
42
+ get serialize(): SerializedToken;
43
+ }
14
44
  //# sourceMappingURL=token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/entities/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAKD,qBAAa,UAAW,SAAQ,KAAK;gBAEjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM;CAIvB"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/entities/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAI9B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAKD,qBAAa,UAAW,SAAQ,KAAK;gBAEjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM;CAIvB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,QAAQ,EAAE,OAAO,CAAA;IAEjC,SAAgB,OAAO,EAAE,OAAO,CAAA;IAEhC;;OAEG;IACH,SAAgB,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IAEtC,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAA;gBAGlC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,MAAM,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM;IAStB;;;OAGG;IACI,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIvC;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAO5C;;OAEG;IACH,IAAW,OAAO,IAAI,KAAK,CAE1B;IAED,IAAW,SAAS,IAAI,eAAe,CAStC;CACF"}
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var swapSdkCore = require('@pancakeswap/swap-sdk-core');
4
+ var invariant5 = require('tiny-invariant');
4
5
  var viem = require('viem');
5
- var invariant4 = require('tiny-invariant');
6
6
  var warning = require('tiny-warning');
7
7
  var chains = require('viem/chains');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
 
11
- var invariant4__default = /*#__PURE__*/_interopDefault(invariant4);
11
+ var invariant5__default = /*#__PURE__*/_interopDefault(invariant5);
12
12
  var warning__default = /*#__PURE__*/_interopDefault(warning);
13
13
 
14
14
  // src/constants.ts
@@ -18,7 +18,7 @@ function validateAndParseAddress(address) {
18
18
  warning__default.default(address === checksummedAddress, `${address} is not checksummed.`);
19
19
  return checksummedAddress;
20
20
  } catch (error) {
21
- invariant4__default.default(false, `${address} is not a valid address.`);
21
+ invariant5__default.default(false, `${address} is not a valid address.`);
22
22
  }
23
23
  }
24
24
 
@@ -28,6 +28,51 @@ var ERC20Token = class extends swapSdkCore.Token {
28
28
  super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink);
29
29
  }
30
30
  };
31
+ var OnRampCurrency = class extends swapSdkCore.BaseCurrency {
32
+ constructor(chainId, address, decimals, symbol, name, projectLink) {
33
+ super(chainId, decimals, symbol, name);
34
+ this.address = address;
35
+ this.projectLink = projectLink;
36
+ this.isNative = address === "0x" && true;
37
+ this.isToken = address !== "0x" && true;
38
+ }
39
+ /**
40
+ * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.
41
+ * @param other other token to compare
42
+ */
43
+ equals(other) {
44
+ return other.isToken && this.chainId === other.chainId && this.address === other.address;
45
+ }
46
+ /**
47
+ * Returns true if the address of this token sorts before the address of the other token
48
+ * @param other other token to compare
49
+ * @throws if the tokens have the same address
50
+ * @throws if the tokens are on different chains
51
+ */
52
+ sortsBefore(other) {
53
+ if (!other.isToken)
54
+ return false;
55
+ invariant5__default.default(this.chainId === other.chainId, "CHAIN_IDS");
56
+ invariant5__default.default(this.address !== other.address, "ADDRESSES");
57
+ return this.address.toLowerCase() < other.address.toLowerCase();
58
+ }
59
+ /**
60
+ * Return this token, which does not need to be wrapped
61
+ */
62
+ get wrapped() {
63
+ return this;
64
+ }
65
+ get serialize() {
66
+ return {
67
+ address: this.address,
68
+ chainId: this.chainId,
69
+ decimals: this.decimals,
70
+ symbol: this.symbol,
71
+ name: this.name,
72
+ projectLink: this.projectLink
73
+ };
74
+ }
75
+ };
31
76
 
32
77
  // src/constants.ts
33
78
  var ChainId = /* @__PURE__ */ ((ChainId3) => {
@@ -35,6 +80,13 @@ var ChainId = /* @__PURE__ */ ((ChainId3) => {
35
80
  ChainId3[ChainId3["GOERLI"] = 5] = "GOERLI";
36
81
  ChainId3[ChainId3["BSC"] = 56] = "BSC";
37
82
  ChainId3[ChainId3["BSC_TESTNET"] = 97] = "BSC_TESTNET";
83
+ ChainId3[ChainId3["ZKSYNC_TESTNET"] = 280] = "ZKSYNC_TESTNET";
84
+ ChainId3[ChainId3["ZKSYNC"] = 324] = "ZKSYNC";
85
+ ChainId3[ChainId3["POLYGON_ZKEVM"] = 1101] = "POLYGON_ZKEVM";
86
+ ChainId3[ChainId3["POLYGON_ZKEVM_TESTNET"] = 1442] = "POLYGON_ZKEVM_TESTNET";
87
+ ChainId3[ChainId3["ARBITRUM_ONE"] = 42161] = "ARBITRUM_ONE";
88
+ ChainId3[ChainId3["ARBITRUM_GOERLI"] = 421613] = "ARBITRUM_GOERLI";
89
+ ChainId3[ChainId3["LINEA_TESTNET"] = 59140] = "LINEA_TESTNET";
38
90
  return ChainId3;
39
91
  })(ChainId || {});
40
92
  var ZERO_PERCENT = new swapSdkCore.Percent("0");
@@ -45,7 +97,14 @@ var FACTORY_ADDRESS_MAP = {
45
97
  [1 /* ETHEREUM */]: FACTORY_ADDRESS_ETH,
46
98
  [5 /* GOERLI */]: FACTORY_ADDRESS_ETH,
47
99
  [56 /* BSC */]: FACTORY_ADDRESS,
48
- [97 /* BSC_TESTNET */]: "0x6725f303b657a9451d8ba641348b6761a6cc7a17"
100
+ [97 /* BSC_TESTNET */]: "0x6725f303b657a9451d8ba641348b6761a6cc7a17",
101
+ [42161 /* ARBITRUM_ONE */]: "0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E",
102
+ [421613 /* ARBITRUM_GOERLI */]: "0x333EAE459075b1d7dE8eb57997b5d4eee5F1070a",
103
+ [1101 /* POLYGON_ZKEVM */]: "0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E",
104
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: "0xBA40c83026213F9cbc79998752721a0312bdB74a",
105
+ [324 /* ZKSYNC */]: "0x0F70cE1e2c0FB5FC3B67E13ed4F422fE82d832bD",
106
+ [280 /* ZKSYNC_TESTNET */]: "0x48a33610Cd0E130af2024D55F67aE72a8C51aC27",
107
+ [59140 /* LINEA_TESTNET */]: "0xB6FAfd4ADbCd21cF665909767e0eD0D05709abfB"
49
108
  };
50
109
  var INIT_CODE_HASH = "0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5";
51
110
  var INIT_CODE_HASH_ETH = "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
@@ -53,7 +112,15 @@ var INIT_CODE_HASH_MAP = {
53
112
  [1 /* ETHEREUM */]: INIT_CODE_HASH_ETH,
54
113
  [5 /* GOERLI */]: INIT_CODE_HASH_ETH,
55
114
  [56 /* BSC */]: INIT_CODE_HASH,
56
- [97 /* BSC_TESTNET */]: "0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66"
115
+ [97 /* BSC_TESTNET */]: "0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66",
116
+ [42161 /* ARBITRUM_ONE */]: INIT_CODE_HASH_ETH,
117
+ [421613 /* ARBITRUM_GOERLI */]: INIT_CODE_HASH_ETH,
118
+ [1101 /* POLYGON_ZKEVM */]: INIT_CODE_HASH_ETH,
119
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: INIT_CODE_HASH_ETH,
120
+ // TODO: new chains
121
+ [324 /* ZKSYNC */]: "0x1cb011040b91cd937ddff2327f17c9690653b05b6506e830baadf2493468d657",
122
+ [280 /* ZKSYNC_TESTNET */]: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43",
123
+ [59140 /* LINEA_TESTNET */]: INIT_CODE_HASH_ETH
57
124
  };
58
125
  var WETH9 = {
59
126
  [1 /* ETHEREUM */]: new ERC20Token(
@@ -87,6 +154,62 @@ var WETH9 = {
87
154
  "ETH",
88
155
  "ETH",
89
156
  "https://ethereum.org"
157
+ ),
158
+ [42161 /* ARBITRUM_ONE */]: new ERC20Token(
159
+ 42161 /* ARBITRUM_ONE */,
160
+ "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
161
+ 18,
162
+ "WETH",
163
+ "Wrapped Ether",
164
+ "https://weth.io"
165
+ ),
166
+ [421613 /* ARBITRUM_GOERLI */]: new ERC20Token(
167
+ 421613 /* ARBITRUM_GOERLI */,
168
+ "0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f",
169
+ 18,
170
+ "WETH",
171
+ "Wrapped Ether",
172
+ "https://weth.io"
173
+ ),
174
+ [324 /* ZKSYNC */]: new ERC20Token(
175
+ 324 /* ZKSYNC */,
176
+ "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
177
+ 18,
178
+ "WETH",
179
+ "Wrapped Ether",
180
+ "https://weth.io"
181
+ ),
182
+ [280 /* ZKSYNC_TESTNET */]: new ERC20Token(
183
+ 280 /* ZKSYNC_TESTNET */,
184
+ "0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0",
185
+ 18,
186
+ "WETH",
187
+ "Wrapped Ether",
188
+ "https://weth.io"
189
+ ),
190
+ [1101 /* POLYGON_ZKEVM */]: new ERC20Token(
191
+ 1101 /* POLYGON_ZKEVM */,
192
+ "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9",
193
+ 18,
194
+ "WETH",
195
+ "Wrapped Ether",
196
+ "https://weth.io"
197
+ ),
198
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: new ERC20Token(
199
+ 1442 /* POLYGON_ZKEVM_TESTNET */,
200
+ "0x30ec47F7DFae72eA79646e6cf64a8A7db538915b",
201
+ 18,
202
+ "WETH",
203
+ "Wrapped Ether",
204
+ "https://weth.io"
205
+ ),
206
+ [59140 /* LINEA_TESTNET */]: new ERC20Token(
207
+ 59140 /* LINEA_TESTNET */,
208
+ "0x2C1b868d6596a18e32E61B901E4060C872647b6C",
209
+ 18,
210
+ "WETH",
211
+ "Wrapped Ether",
212
+ "https://weth.io"
90
213
  )
91
214
  };
92
215
  var WBNB = {
@@ -119,10 +242,18 @@ var WNATIVE = {
119
242
  [1 /* ETHEREUM */]: WETH9[1 /* ETHEREUM */],
120
243
  [5 /* GOERLI */]: WETH9[5 /* GOERLI */],
121
244
  [56 /* BSC */]: WBNB[56 /* BSC */],
122
- [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */]
245
+ [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */],
246
+ [42161 /* ARBITRUM_ONE */]: WETH9[42161 /* ARBITRUM_ONE */],
247
+ [421613 /* ARBITRUM_GOERLI */]: WETH9[421613 /* ARBITRUM_GOERLI */],
248
+ [1101 /* POLYGON_ZKEVM */]: WETH9[1101 /* POLYGON_ZKEVM */],
249
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: WETH9[1442 /* POLYGON_ZKEVM_TESTNET */],
250
+ [324 /* ZKSYNC */]: WETH9[324 /* ZKSYNC */],
251
+ [280 /* ZKSYNC_TESTNET */]: WETH9[280 /* ZKSYNC_TESTNET */],
252
+ [59140 /* LINEA_TESTNET */]: WETH9[59140 /* LINEA_TESTNET */]
123
253
  };
254
+ var ETHER = { name: "Ether", symbol: "ETH", decimals: 18 };
124
255
  var NATIVE = {
125
- [1 /* ETHEREUM */]: { name: "Ether", symbol: "ETH", decimals: 18 },
256
+ [1 /* ETHEREUM */]: ETHER,
126
257
  [5 /* GOERLI */]: { name: "Goerli Ether", symbol: "GOR", decimals: 18 },
127
258
  [56 /* BSC */]: {
128
259
  name: "Binance Chain Native Token",
@@ -133,7 +264,18 @@ var NATIVE = {
133
264
  name: "Binance Chain Native Token",
134
265
  symbol: "tBNB",
135
266
  decimals: 18
136
- }
267
+ },
268
+ [42161 /* ARBITRUM_ONE */]: ETHER,
269
+ [421613 /* ARBITRUM_GOERLI */]: {
270
+ name: "Arbitrum Goerli Ether",
271
+ symbol: "AGOR",
272
+ decimals: 18
273
+ },
274
+ [1101 /* POLYGON_ZKEVM */]: ETHER,
275
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: ETHER,
276
+ [324 /* ZKSYNC */]: ETHER,
277
+ [280 /* ZKSYNC_TESTNET */]: ETHER,
278
+ [59140 /* LINEA_TESTNET */]: ETHER
137
279
  };
138
280
 
139
281
  // src/trade.ts
@@ -161,6 +303,13 @@ function getCreate2Address(from_, salt_, initCodeHash) {
161
303
  });
162
304
  return viem.getAddress(viem.slice(viem.keccak256(viem.concat([viem.toBytes("0xff"), from, salt, viem.toBytes(initCodeHash)])), 12));
163
305
  }
306
+ var EMPTY_INPU_HASH = "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
307
+ var ZKSYNC_PREFIX = "0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494";
308
+ function getCreate2AddressZkSync(from, salt, initCodeHash) {
309
+ return viem.getAddress(
310
+ `0x${viem.keccak256(viem.concat([ZKSYNC_PREFIX, viem.pad(from, { size: 32 }), salt, initCodeHash, EMPTY_INPU_HASH])).slice(26)}`
311
+ );
312
+ }
164
313
  var computePairAddress = ({
165
314
  factoryAddress,
166
315
  tokenA,
@@ -169,9 +318,10 @@ var computePairAddress = ({
169
318
  const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];
170
319
  const key = composeKey(token0, token1);
171
320
  if (PAIR_ADDRESS_CACHE?.[key] === void 0) {
321
+ const getCreate2Address_ = token0.chainId === 280 /* ZKSYNC_TESTNET */ || token1.chainId === 324 /* ZKSYNC */ ? getCreate2AddressZkSync : getCreate2Address;
172
322
  PAIR_ADDRESS_CACHE = {
173
323
  ...PAIR_ADDRESS_CACHE,
174
- [key]: getCreate2Address(
324
+ [key]: getCreate2Address_(
175
325
  factoryAddress,
176
326
  viem.keccak256(viem.encodePacked(["address", "address"], [token0.address, token1.address])),
177
327
  INIT_CODE_HASH_MAP[token0.chainId]
@@ -182,7 +332,11 @@ var computePairAddress = ({
182
332
  };
183
333
  var Pair = class {
184
334
  static getAddress(tokenA, tokenB) {
185
- return computePairAddress({ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId], tokenA, tokenB });
335
+ return computePairAddress({
336
+ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId],
337
+ tokenA,
338
+ tokenB
339
+ });
186
340
  }
187
341
  constructor(currencyAmountA, tokenAmountB) {
188
342
  const tokenAmounts = currencyAmountA.currency.sortsBefore(tokenAmountB.currency) ? [currencyAmountA, tokenAmountB] : [tokenAmountB, currencyAmountA];
@@ -221,7 +375,7 @@ var Pair = class {
221
375
  * @param token token to return price of
222
376
  */
223
377
  priceOf(token) {
224
- invariant4__default.default(this.involvesToken(token), "TOKEN");
378
+ invariant5__default.default(this.involvesToken(token), "TOKEN");
225
379
  return token.equals(this.token0) ? this.token0Price : this.token1Price;
226
380
  }
227
381
  /**
@@ -243,11 +397,11 @@ var Pair = class {
243
397
  return this.tokenAmounts[1];
244
398
  }
245
399
  reserveOf(token) {
246
- invariant4__default.default(this.involvesToken(token), "TOKEN");
400
+ invariant5__default.default(this.involvesToken(token), "TOKEN");
247
401
  return token.equals(this.token0) ? this.reserve0 : this.reserve1;
248
402
  }
249
403
  getOutputAmount(inputAmount) {
250
- invariant4__default.default(this.involvesToken(inputAmount.currency), "TOKEN");
404
+ invariant5__default.default(this.involvesToken(inputAmount.currency), "TOKEN");
251
405
  if (this.reserve0.quotient === swapSdkCore.ZERO || this.reserve1.quotient === swapSdkCore.ZERO) {
252
406
  throw new swapSdkCore.InsufficientReservesError();
253
407
  }
@@ -266,7 +420,7 @@ var Pair = class {
266
420
  return [outputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
267
421
  }
268
422
  getInputAmount(outputAmount) {
269
- invariant4__default.default(this.involvesToken(outputAmount.currency), "TOKEN");
423
+ invariant5__default.default(this.involvesToken(outputAmount.currency), "TOKEN");
270
424
  if (this.reserve0.quotient === swapSdkCore.ZERO || this.reserve1.quotient === swapSdkCore.ZERO || outputAmount.quotient >= this.reserveOf(outputAmount.currency).quotient) {
271
425
  throw new swapSdkCore.InsufficientReservesError();
272
426
  }
@@ -281,9 +435,9 @@ var Pair = class {
281
435
  return [inputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
282
436
  }
283
437
  getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB) {
284
- invariant4__default.default(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
438
+ invariant5__default.default(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
285
439
  const tokenAmounts = tokenAmountA.currency.sortsBefore(tokenAmountB.currency) ? [tokenAmountA, tokenAmountB] : [tokenAmountB, tokenAmountA];
286
- invariant4__default.default(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
440
+ invariant5__default.default(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
287
441
  let liquidity;
288
442
  if (totalSupply.quotient === swapSdkCore.ZERO) {
289
443
  liquidity = swapSdkCore.sqrt(tokenAmounts[0].quotient * tokenAmounts[1].quotient) - swapSdkCore.MINIMUM_LIQUIDITY;
@@ -298,15 +452,15 @@ var Pair = class {
298
452
  return swapSdkCore.CurrencyAmount.fromRawAmount(this.liquidityToken, liquidity);
299
453
  }
300
454
  getLiquidityValue(token, totalSupply, liquidity, feeOn = false, kLast) {
301
- invariant4__default.default(this.involvesToken(token), "TOKEN");
302
- invariant4__default.default(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
303
- invariant4__default.default(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
304
- invariant4__default.default(liquidity.quotient <= totalSupply.quotient, "LIQUIDITY");
455
+ invariant5__default.default(this.involvesToken(token), "TOKEN");
456
+ invariant5__default.default(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
457
+ invariant5__default.default(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
458
+ invariant5__default.default(liquidity.quotient <= totalSupply.quotient, "LIQUIDITY");
305
459
  let totalSupplyAdjusted;
306
460
  if (!feeOn) {
307
461
  totalSupplyAdjusted = totalSupply;
308
462
  } else {
309
- invariant4__default.default(!!kLast, "K_LAST");
463
+ invariant5__default.default(!!kLast, "K_LAST");
310
464
  const kLastParsed = BigInt(kLast);
311
465
  if (!(kLastParsed === swapSdkCore.ZERO)) {
312
466
  const rootK = swapSdkCore.sqrt(this.reserve0.quotient * this.reserve1.quotient);
@@ -332,19 +486,19 @@ var Pair = class {
332
486
  var Route = class {
333
487
  constructor(pairs, input, output) {
334
488
  this._midPrice = null;
335
- invariant4__default.default(pairs.length > 0, "PAIRS");
489
+ invariant5__default.default(pairs.length > 0, "PAIRS");
336
490
  const { chainId } = pairs[0];
337
- invariant4__default.default(
491
+ invariant5__default.default(
338
492
  pairs.every((pair) => pair.chainId === chainId),
339
493
  "CHAIN_IDS"
340
494
  );
341
495
  const wrappedInput = input.wrapped;
342
- invariant4__default.default(pairs[0].involvesToken(wrappedInput), "INPUT");
343
- invariant4__default.default(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
496
+ invariant5__default.default(pairs[0].involvesToken(wrappedInput), "INPUT");
497
+ invariant5__default.default(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
344
498
  const path = [wrappedInput];
345
499
  for (const [i, pair] of pairs.entries()) {
346
500
  const currentInput = path[i];
347
- invariant4__default.default(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
501
+ invariant5__default.default(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
348
502
  const output2 = currentInput.equals(pair.token0) ? pair.token1 : pair.token0;
349
503
  path.push(output2);
350
504
  }
@@ -370,8 +524,8 @@ var Route = class {
370
524
  }
371
525
  };
372
526
  function inputOutputComparator(a, b) {
373
- invariant4__default.default(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
374
- invariant4__default.default(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
527
+ invariant5__default.default(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
528
+ invariant5__default.default(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
375
529
  if (a.outputAmount.equalTo(b.outputAmount)) {
376
530
  if (a.inputAmount.equalTo(b.inputAmount)) {
377
531
  return 0;
@@ -421,7 +575,7 @@ var Trade = class {
421
575
  this.tradeType = tradeType;
422
576
  const tokenAmounts = new Array(route.path.length);
423
577
  if (tradeType === swapSdkCore.TradeType.EXACT_INPUT) {
424
- invariant4__default.default(amount.currency.equals(route.input), "INPUT");
578
+ invariant5__default.default(amount.currency.equals(route.input), "INPUT");
425
579
  tokenAmounts[0] = amount.wrapped;
426
580
  for (let i = 0; i < route.path.length - 1; i++) {
427
581
  const pair = route.pairs[i];
@@ -435,7 +589,7 @@ var Trade = class {
435
589
  tokenAmounts[tokenAmounts.length - 1].denominator
436
590
  );
437
591
  } else {
438
- invariant4__default.default(amount.currency.equals(route.output), "OUTPUT");
592
+ invariant5__default.default(amount.currency.equals(route.output), "OUTPUT");
439
593
  tokenAmounts[tokenAmounts.length - 1] = amount.wrapped;
440
594
  for (let i = route.path.length - 1; i > 0; i--) {
441
595
  const pair = route.pairs[i - 1];
@@ -462,7 +616,7 @@ var Trade = class {
462
616
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
463
617
  */
464
618
  minimumAmountOut(slippageTolerance) {
465
- invariant4__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
619
+ invariant5__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
466
620
  if (this.tradeType === swapSdkCore.TradeType.EXACT_OUTPUT) {
467
621
  return this.outputAmount;
468
622
  }
@@ -474,7 +628,7 @@ var Trade = class {
474
628
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
475
629
  */
476
630
  maximumAmountIn(slippageTolerance) {
477
- invariant4__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
631
+ invariant5__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
478
632
  if (this.tradeType === swapSdkCore.TradeType.EXACT_INPUT) {
479
633
  return this.inputAmount;
480
634
  }
@@ -496,9 +650,9 @@ var Trade = class {
496
650
  * @param bestTrades used in recursion; the current list of best trades
497
651
  */
498
652
  static bestTradeExactIn(pairs, currencyAmountIn, currencyOut, { maxNumResults = 3, maxHops = 3 } = {}, currentPairs = [], nextAmountIn = currencyAmountIn, bestTrades = []) {
499
- invariant4__default.default(pairs.length > 0, "PAIRS");
500
- invariant4__default.default(maxHops > 0, "MAX_HOPS");
501
- invariant4__default.default(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
653
+ invariant5__default.default(pairs.length > 0, "PAIRS");
654
+ invariant5__default.default(maxHops > 0, "MAX_HOPS");
655
+ invariant5__default.default(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
502
656
  const amountIn = nextAmountIn.wrapped;
503
657
  const tokenOut = currencyOut.wrapped;
504
658
  for (let i = 0; i < pairs.length; i++) {
@@ -574,9 +728,9 @@ var Trade = class {
574
728
  * @param bestTrades used in recursion; the current list of best trades
575
729
  */
576
730
  static bestTradeExactOut(pairs, currencyIn, currencyAmountOut, { maxNumResults = 3, maxHops = 3 } = {}, currentPairs = [], nextAmountOut = currencyAmountOut, bestTrades = []) {
577
- invariant4__default.default(pairs.length > 0, "PAIRS");
578
- invariant4__default.default(maxHops > 0, "MAX_HOPS");
579
- invariant4__default.default(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
731
+ invariant5__default.default(pairs.length > 0, "PAIRS");
732
+ invariant5__default.default(maxHops > 0, "MAX_HOPS");
733
+ invariant5__default.default(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
580
734
  const amountOut = nextAmountOut.wrapped;
581
735
  const tokenIn = currencyIn.wrapped;
582
736
  for (let i = 0; i < pairs.length; i++) {
@@ -636,14 +790,14 @@ var _Native = class extends swapSdkCore.NativeCurrency {
636
790
  }
637
791
  get wrapped() {
638
792
  const wnative = WNATIVE[this.chainId];
639
- invariant4__default.default(!!wnative, "WRAPPED");
793
+ invariant5__default.default(!!wnative, "WRAPPED");
640
794
  return wnative;
641
795
  }
642
796
  static onChain(chainId) {
643
797
  if (chainId in this.cache) {
644
798
  return this.cache[chainId];
645
799
  }
646
- invariant4__default.default(!!NATIVE[chainId], "NATIVE_CURRENCY");
800
+ invariant5__default.default(!!NATIVE[chainId], "NATIVE_CURRENCY");
647
801
  const { decimals, name, symbol } = NATIVE[chainId];
648
802
  return this.cache[chainId] = new _Native({ chainId, decimals, symbol, name });
649
803
  }
@@ -666,8 +820,8 @@ var Router = class {
666
820
  static swapCallParameters(trade, options) {
667
821
  const etherIn = trade.inputAmount.currency.isNative;
668
822
  const etherOut = trade.outputAmount.currency.isNative;
669
- invariant4__default.default(!(etherIn && etherOut), "ETHER_IN_OUT");
670
- invariant4__default.default(!("ttl" in options) || options.ttl > 0, "TTL");
823
+ invariant5__default.default(!(etherIn && etherOut), "ETHER_IN_OUT");
824
+ invariant5__default.default(!("ttl" in options) || options.ttl > 0, "TTL");
671
825
  const to = validateAndParseAddress(options.recipient);
672
826
  const amountIn = toHex(trade.maximumAmountIn(options.allowedSlippage));
673
827
  const amountOut = toHex(trade.minimumAmountOut(options.allowedSlippage));
@@ -694,7 +848,7 @@ var Router = class {
694
848
  }
695
849
  break;
696
850
  case swapSdkCore.TradeType.EXACT_OUTPUT:
697
- invariant4__default.default(!useFeeOnTransfer, "EXACT_OUT_FOT");
851
+ invariant5__default.default(!useFeeOnTransfer, "EXACT_OUT_FOT");
698
852
  if (etherIn) {
699
853
  methodName = "swapETHForExactTokens";
700
854
  args = [amountOut, path, to, deadline];
@@ -723,7 +877,7 @@ var _Ether = class extends swapSdkCore.NativeCurrency {
723
877
  }
724
878
  get wrapped() {
725
879
  const weth9 = WETH9[this.chainId];
726
- invariant4__default.default(!!weth9, "WRAPPED");
880
+ invariant5__default.default(!!weth9, "WRAPPED");
727
881
  return weth9;
728
882
  }
729
883
  static onChain(chainId) {
@@ -1532,7 +1686,7 @@ var Fetcher = class {
1532
1686
  * @param provider the provider to use to fetch the data
1533
1687
  */
1534
1688
  static async fetchPairData(tokenA, tokenB, publicClient = getDefaultClient(tokenA.chainId)) {
1535
- invariant4__default.default(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1689
+ invariant5__default.default(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1536
1690
  const address = Pair.getAddress(tokenA, tokenB);
1537
1691
  const pairContract = viem.getContract({
1538
1692
  abi: pancakePairV2ABI,
@@ -1559,6 +1713,7 @@ exports.INIT_CODE_HASH_MAP = INIT_CODE_HASH_MAP;
1559
1713
  exports.NATIVE = NATIVE;
1560
1714
  exports.Native = Native;
1561
1715
  exports.ONE_HUNDRED_PERCENT = ONE_HUNDRED_PERCENT;
1716
+ exports.OnRampCurrency = OnRampCurrency;
1562
1717
  exports.Pair = Pair;
1563
1718
  exports.Route = Route;
1564
1719
  exports.Router = Router;
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { Percent, Token, Price, ZERO, InsufficientReservesError, _9975, _10000, CurrencyAmount, InsufficientInputAmountError, ONE, sqrt, MINIMUM_LIQUIDITY, TradeType, computePriceImpact, Fraction, sortedInsert, NativeCurrency, FIVE } from '@pancakeswap/swap-sdk-core';
1
+ import { Percent, Token, BaseCurrency, Price, ZERO, InsufficientReservesError, _9975, _10000, CurrencyAmount, InsufficientInputAmountError, ONE, sqrt, MINIMUM_LIQUIDITY, TradeType, computePriceImpact, Fraction, sortedInsert, NativeCurrency, FIVE } from '@pancakeswap/swap-sdk-core';
2
2
  export * from '@pancakeswap/swap-sdk-core';
3
+ import invariant5 from 'tiny-invariant';
3
4
  import { createPublicClient, http, getAddress, keccak256, encodePacked, getContract, toBytes, pad, isBytes, slice, concat } from 'viem';
4
- import invariant4 from 'tiny-invariant';
5
5
  import warning from 'tiny-warning';
6
6
  import { mainnet, bsc, bscTestnet, goerli } from 'viem/chains';
7
7
 
@@ -12,7 +12,7 @@ function validateAndParseAddress(address) {
12
12
  warning(address === checksummedAddress, `${address} is not checksummed.`);
13
13
  return checksummedAddress;
14
14
  } catch (error) {
15
- invariant4(false, `${address} is not a valid address.`);
15
+ invariant5(false, `${address} is not a valid address.`);
16
16
  }
17
17
  }
18
18
 
@@ -22,6 +22,51 @@ var ERC20Token = class extends Token {
22
22
  super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink);
23
23
  }
24
24
  };
25
+ var OnRampCurrency = class extends BaseCurrency {
26
+ constructor(chainId, address, decimals, symbol, name, projectLink) {
27
+ super(chainId, decimals, symbol, name);
28
+ this.address = address;
29
+ this.projectLink = projectLink;
30
+ this.isNative = address === "0x" && true;
31
+ this.isToken = address !== "0x" && true;
32
+ }
33
+ /**
34
+ * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.
35
+ * @param other other token to compare
36
+ */
37
+ equals(other) {
38
+ return other.isToken && this.chainId === other.chainId && this.address === other.address;
39
+ }
40
+ /**
41
+ * Returns true if the address of this token sorts before the address of the other token
42
+ * @param other other token to compare
43
+ * @throws if the tokens have the same address
44
+ * @throws if the tokens are on different chains
45
+ */
46
+ sortsBefore(other) {
47
+ if (!other.isToken)
48
+ return false;
49
+ invariant5(this.chainId === other.chainId, "CHAIN_IDS");
50
+ invariant5(this.address !== other.address, "ADDRESSES");
51
+ return this.address.toLowerCase() < other.address.toLowerCase();
52
+ }
53
+ /**
54
+ * Return this token, which does not need to be wrapped
55
+ */
56
+ get wrapped() {
57
+ return this;
58
+ }
59
+ get serialize() {
60
+ return {
61
+ address: this.address,
62
+ chainId: this.chainId,
63
+ decimals: this.decimals,
64
+ symbol: this.symbol,
65
+ name: this.name,
66
+ projectLink: this.projectLink
67
+ };
68
+ }
69
+ };
25
70
 
26
71
  // src/constants.ts
27
72
  var ChainId = /* @__PURE__ */ ((ChainId3) => {
@@ -29,6 +74,13 @@ var ChainId = /* @__PURE__ */ ((ChainId3) => {
29
74
  ChainId3[ChainId3["GOERLI"] = 5] = "GOERLI";
30
75
  ChainId3[ChainId3["BSC"] = 56] = "BSC";
31
76
  ChainId3[ChainId3["BSC_TESTNET"] = 97] = "BSC_TESTNET";
77
+ ChainId3[ChainId3["ZKSYNC_TESTNET"] = 280] = "ZKSYNC_TESTNET";
78
+ ChainId3[ChainId3["ZKSYNC"] = 324] = "ZKSYNC";
79
+ ChainId3[ChainId3["POLYGON_ZKEVM"] = 1101] = "POLYGON_ZKEVM";
80
+ ChainId3[ChainId3["POLYGON_ZKEVM_TESTNET"] = 1442] = "POLYGON_ZKEVM_TESTNET";
81
+ ChainId3[ChainId3["ARBITRUM_ONE"] = 42161] = "ARBITRUM_ONE";
82
+ ChainId3[ChainId3["ARBITRUM_GOERLI"] = 421613] = "ARBITRUM_GOERLI";
83
+ ChainId3[ChainId3["LINEA_TESTNET"] = 59140] = "LINEA_TESTNET";
32
84
  return ChainId3;
33
85
  })(ChainId || {});
34
86
  var ZERO_PERCENT = new Percent("0");
@@ -39,7 +91,14 @@ var FACTORY_ADDRESS_MAP = {
39
91
  [1 /* ETHEREUM */]: FACTORY_ADDRESS_ETH,
40
92
  [5 /* GOERLI */]: FACTORY_ADDRESS_ETH,
41
93
  [56 /* BSC */]: FACTORY_ADDRESS,
42
- [97 /* BSC_TESTNET */]: "0x6725f303b657a9451d8ba641348b6761a6cc7a17"
94
+ [97 /* BSC_TESTNET */]: "0x6725f303b657a9451d8ba641348b6761a6cc7a17",
95
+ [42161 /* ARBITRUM_ONE */]: "0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E",
96
+ [421613 /* ARBITRUM_GOERLI */]: "0x333EAE459075b1d7dE8eb57997b5d4eee5F1070a",
97
+ [1101 /* POLYGON_ZKEVM */]: "0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E",
98
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: "0xBA40c83026213F9cbc79998752721a0312bdB74a",
99
+ [324 /* ZKSYNC */]: "0x0F70cE1e2c0FB5FC3B67E13ed4F422fE82d832bD",
100
+ [280 /* ZKSYNC_TESTNET */]: "0x48a33610Cd0E130af2024D55F67aE72a8C51aC27",
101
+ [59140 /* LINEA_TESTNET */]: "0xB6FAfd4ADbCd21cF665909767e0eD0D05709abfB"
43
102
  };
44
103
  var INIT_CODE_HASH = "0x00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5";
45
104
  var INIT_CODE_HASH_ETH = "0x57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d";
@@ -47,7 +106,15 @@ var INIT_CODE_HASH_MAP = {
47
106
  [1 /* ETHEREUM */]: INIT_CODE_HASH_ETH,
48
107
  [5 /* GOERLI */]: INIT_CODE_HASH_ETH,
49
108
  [56 /* BSC */]: INIT_CODE_HASH,
50
- [97 /* BSC_TESTNET */]: "0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66"
109
+ [97 /* BSC_TESTNET */]: "0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66",
110
+ [42161 /* ARBITRUM_ONE */]: INIT_CODE_HASH_ETH,
111
+ [421613 /* ARBITRUM_GOERLI */]: INIT_CODE_HASH_ETH,
112
+ [1101 /* POLYGON_ZKEVM */]: INIT_CODE_HASH_ETH,
113
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: INIT_CODE_HASH_ETH,
114
+ // TODO: new chains
115
+ [324 /* ZKSYNC */]: "0x1cb011040b91cd937ddff2327f17c9690653b05b6506e830baadf2493468d657",
116
+ [280 /* ZKSYNC_TESTNET */]: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43",
117
+ [59140 /* LINEA_TESTNET */]: INIT_CODE_HASH_ETH
51
118
  };
52
119
  var WETH9 = {
53
120
  [1 /* ETHEREUM */]: new ERC20Token(
@@ -81,6 +148,62 @@ var WETH9 = {
81
148
  "ETH",
82
149
  "ETH",
83
150
  "https://ethereum.org"
151
+ ),
152
+ [42161 /* ARBITRUM_ONE */]: new ERC20Token(
153
+ 42161 /* ARBITRUM_ONE */,
154
+ "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
155
+ 18,
156
+ "WETH",
157
+ "Wrapped Ether",
158
+ "https://weth.io"
159
+ ),
160
+ [421613 /* ARBITRUM_GOERLI */]: new ERC20Token(
161
+ 421613 /* ARBITRUM_GOERLI */,
162
+ "0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f",
163
+ 18,
164
+ "WETH",
165
+ "Wrapped Ether",
166
+ "https://weth.io"
167
+ ),
168
+ [324 /* ZKSYNC */]: new ERC20Token(
169
+ 324 /* ZKSYNC */,
170
+ "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
171
+ 18,
172
+ "WETH",
173
+ "Wrapped Ether",
174
+ "https://weth.io"
175
+ ),
176
+ [280 /* ZKSYNC_TESTNET */]: new ERC20Token(
177
+ 280 /* ZKSYNC_TESTNET */,
178
+ "0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0",
179
+ 18,
180
+ "WETH",
181
+ "Wrapped Ether",
182
+ "https://weth.io"
183
+ ),
184
+ [1101 /* POLYGON_ZKEVM */]: new ERC20Token(
185
+ 1101 /* POLYGON_ZKEVM */,
186
+ "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9",
187
+ 18,
188
+ "WETH",
189
+ "Wrapped Ether",
190
+ "https://weth.io"
191
+ ),
192
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: new ERC20Token(
193
+ 1442 /* POLYGON_ZKEVM_TESTNET */,
194
+ "0x30ec47F7DFae72eA79646e6cf64a8A7db538915b",
195
+ 18,
196
+ "WETH",
197
+ "Wrapped Ether",
198
+ "https://weth.io"
199
+ ),
200
+ [59140 /* LINEA_TESTNET */]: new ERC20Token(
201
+ 59140 /* LINEA_TESTNET */,
202
+ "0x2C1b868d6596a18e32E61B901E4060C872647b6C",
203
+ 18,
204
+ "WETH",
205
+ "Wrapped Ether",
206
+ "https://weth.io"
84
207
  )
85
208
  };
86
209
  var WBNB = {
@@ -113,10 +236,18 @@ var WNATIVE = {
113
236
  [1 /* ETHEREUM */]: WETH9[1 /* ETHEREUM */],
114
237
  [5 /* GOERLI */]: WETH9[5 /* GOERLI */],
115
238
  [56 /* BSC */]: WBNB[56 /* BSC */],
116
- [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */]
239
+ [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */],
240
+ [42161 /* ARBITRUM_ONE */]: WETH9[42161 /* ARBITRUM_ONE */],
241
+ [421613 /* ARBITRUM_GOERLI */]: WETH9[421613 /* ARBITRUM_GOERLI */],
242
+ [1101 /* POLYGON_ZKEVM */]: WETH9[1101 /* POLYGON_ZKEVM */],
243
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: WETH9[1442 /* POLYGON_ZKEVM_TESTNET */],
244
+ [324 /* ZKSYNC */]: WETH9[324 /* ZKSYNC */],
245
+ [280 /* ZKSYNC_TESTNET */]: WETH9[280 /* ZKSYNC_TESTNET */],
246
+ [59140 /* LINEA_TESTNET */]: WETH9[59140 /* LINEA_TESTNET */]
117
247
  };
248
+ var ETHER = { name: "Ether", symbol: "ETH", decimals: 18 };
118
249
  var NATIVE = {
119
- [1 /* ETHEREUM */]: { name: "Ether", symbol: "ETH", decimals: 18 },
250
+ [1 /* ETHEREUM */]: ETHER,
120
251
  [5 /* GOERLI */]: { name: "Goerli Ether", symbol: "GOR", decimals: 18 },
121
252
  [56 /* BSC */]: {
122
253
  name: "Binance Chain Native Token",
@@ -127,7 +258,18 @@ var NATIVE = {
127
258
  name: "Binance Chain Native Token",
128
259
  symbol: "tBNB",
129
260
  decimals: 18
130
- }
261
+ },
262
+ [42161 /* ARBITRUM_ONE */]: ETHER,
263
+ [421613 /* ARBITRUM_GOERLI */]: {
264
+ name: "Arbitrum Goerli Ether",
265
+ symbol: "AGOR",
266
+ decimals: 18
267
+ },
268
+ [1101 /* POLYGON_ZKEVM */]: ETHER,
269
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: ETHER,
270
+ [324 /* ZKSYNC */]: ETHER,
271
+ [280 /* ZKSYNC_TESTNET */]: ETHER,
272
+ [59140 /* LINEA_TESTNET */]: ETHER
131
273
  };
132
274
 
133
275
  // src/trade.ts
@@ -155,6 +297,13 @@ function getCreate2Address(from_, salt_, initCodeHash) {
155
297
  });
156
298
  return getAddress(slice(keccak256(concat([toBytes("0xff"), from, salt, toBytes(initCodeHash)])), 12));
157
299
  }
300
+ var EMPTY_INPU_HASH = "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
301
+ var ZKSYNC_PREFIX = "0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494";
302
+ function getCreate2AddressZkSync(from, salt, initCodeHash) {
303
+ return getAddress(
304
+ `0x${keccak256(concat([ZKSYNC_PREFIX, pad(from, { size: 32 }), salt, initCodeHash, EMPTY_INPU_HASH])).slice(26)}`
305
+ );
306
+ }
158
307
  var computePairAddress = ({
159
308
  factoryAddress,
160
309
  tokenA,
@@ -163,9 +312,10 @@ var computePairAddress = ({
163
312
  const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];
164
313
  const key = composeKey(token0, token1);
165
314
  if (PAIR_ADDRESS_CACHE?.[key] === void 0) {
315
+ const getCreate2Address_ = token0.chainId === 280 /* ZKSYNC_TESTNET */ || token1.chainId === 324 /* ZKSYNC */ ? getCreate2AddressZkSync : getCreate2Address;
166
316
  PAIR_ADDRESS_CACHE = {
167
317
  ...PAIR_ADDRESS_CACHE,
168
- [key]: getCreate2Address(
318
+ [key]: getCreate2Address_(
169
319
  factoryAddress,
170
320
  keccak256(encodePacked(["address", "address"], [token0.address, token1.address])),
171
321
  INIT_CODE_HASH_MAP[token0.chainId]
@@ -176,7 +326,11 @@ var computePairAddress = ({
176
326
  };
177
327
  var Pair = class {
178
328
  static getAddress(tokenA, tokenB) {
179
- return computePairAddress({ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId], tokenA, tokenB });
329
+ return computePairAddress({
330
+ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId],
331
+ tokenA,
332
+ tokenB
333
+ });
180
334
  }
181
335
  constructor(currencyAmountA, tokenAmountB) {
182
336
  const tokenAmounts = currencyAmountA.currency.sortsBefore(tokenAmountB.currency) ? [currencyAmountA, tokenAmountB] : [tokenAmountB, currencyAmountA];
@@ -215,7 +369,7 @@ var Pair = class {
215
369
  * @param token token to return price of
216
370
  */
217
371
  priceOf(token) {
218
- invariant4(this.involvesToken(token), "TOKEN");
372
+ invariant5(this.involvesToken(token), "TOKEN");
219
373
  return token.equals(this.token0) ? this.token0Price : this.token1Price;
220
374
  }
221
375
  /**
@@ -237,11 +391,11 @@ var Pair = class {
237
391
  return this.tokenAmounts[1];
238
392
  }
239
393
  reserveOf(token) {
240
- invariant4(this.involvesToken(token), "TOKEN");
394
+ invariant5(this.involvesToken(token), "TOKEN");
241
395
  return token.equals(this.token0) ? this.reserve0 : this.reserve1;
242
396
  }
243
397
  getOutputAmount(inputAmount) {
244
- invariant4(this.involvesToken(inputAmount.currency), "TOKEN");
398
+ invariant5(this.involvesToken(inputAmount.currency), "TOKEN");
245
399
  if (this.reserve0.quotient === ZERO || this.reserve1.quotient === ZERO) {
246
400
  throw new InsufficientReservesError();
247
401
  }
@@ -260,7 +414,7 @@ var Pair = class {
260
414
  return [outputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
261
415
  }
262
416
  getInputAmount(outputAmount) {
263
- invariant4(this.involvesToken(outputAmount.currency), "TOKEN");
417
+ invariant5(this.involvesToken(outputAmount.currency), "TOKEN");
264
418
  if (this.reserve0.quotient === ZERO || this.reserve1.quotient === ZERO || outputAmount.quotient >= this.reserveOf(outputAmount.currency).quotient) {
265
419
  throw new InsufficientReservesError();
266
420
  }
@@ -275,9 +429,9 @@ var Pair = class {
275
429
  return [inputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
276
430
  }
277
431
  getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB) {
278
- invariant4(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
432
+ invariant5(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
279
433
  const tokenAmounts = tokenAmountA.currency.sortsBefore(tokenAmountB.currency) ? [tokenAmountA, tokenAmountB] : [tokenAmountB, tokenAmountA];
280
- invariant4(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
434
+ invariant5(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
281
435
  let liquidity;
282
436
  if (totalSupply.quotient === ZERO) {
283
437
  liquidity = sqrt(tokenAmounts[0].quotient * tokenAmounts[1].quotient) - MINIMUM_LIQUIDITY;
@@ -292,15 +446,15 @@ var Pair = class {
292
446
  return CurrencyAmount.fromRawAmount(this.liquidityToken, liquidity);
293
447
  }
294
448
  getLiquidityValue(token, totalSupply, liquidity, feeOn = false, kLast) {
295
- invariant4(this.involvesToken(token), "TOKEN");
296
- invariant4(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
297
- invariant4(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
298
- invariant4(liquidity.quotient <= totalSupply.quotient, "LIQUIDITY");
449
+ invariant5(this.involvesToken(token), "TOKEN");
450
+ invariant5(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
451
+ invariant5(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
452
+ invariant5(liquidity.quotient <= totalSupply.quotient, "LIQUIDITY");
299
453
  let totalSupplyAdjusted;
300
454
  if (!feeOn) {
301
455
  totalSupplyAdjusted = totalSupply;
302
456
  } else {
303
- invariant4(!!kLast, "K_LAST");
457
+ invariant5(!!kLast, "K_LAST");
304
458
  const kLastParsed = BigInt(kLast);
305
459
  if (!(kLastParsed === ZERO)) {
306
460
  const rootK = sqrt(this.reserve0.quotient * this.reserve1.quotient);
@@ -326,19 +480,19 @@ var Pair = class {
326
480
  var Route = class {
327
481
  constructor(pairs, input, output) {
328
482
  this._midPrice = null;
329
- invariant4(pairs.length > 0, "PAIRS");
483
+ invariant5(pairs.length > 0, "PAIRS");
330
484
  const { chainId } = pairs[0];
331
- invariant4(
485
+ invariant5(
332
486
  pairs.every((pair) => pair.chainId === chainId),
333
487
  "CHAIN_IDS"
334
488
  );
335
489
  const wrappedInput = input.wrapped;
336
- invariant4(pairs[0].involvesToken(wrappedInput), "INPUT");
337
- invariant4(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
490
+ invariant5(pairs[0].involvesToken(wrappedInput), "INPUT");
491
+ invariant5(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
338
492
  const path = [wrappedInput];
339
493
  for (const [i, pair] of pairs.entries()) {
340
494
  const currentInput = path[i];
341
- invariant4(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
495
+ invariant5(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
342
496
  const output2 = currentInput.equals(pair.token0) ? pair.token1 : pair.token0;
343
497
  path.push(output2);
344
498
  }
@@ -364,8 +518,8 @@ var Route = class {
364
518
  }
365
519
  };
366
520
  function inputOutputComparator(a, b) {
367
- invariant4(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
368
- invariant4(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
521
+ invariant5(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
522
+ invariant5(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
369
523
  if (a.outputAmount.equalTo(b.outputAmount)) {
370
524
  if (a.inputAmount.equalTo(b.inputAmount)) {
371
525
  return 0;
@@ -415,7 +569,7 @@ var Trade = class {
415
569
  this.tradeType = tradeType;
416
570
  const tokenAmounts = new Array(route.path.length);
417
571
  if (tradeType === TradeType.EXACT_INPUT) {
418
- invariant4(amount.currency.equals(route.input), "INPUT");
572
+ invariant5(amount.currency.equals(route.input), "INPUT");
419
573
  tokenAmounts[0] = amount.wrapped;
420
574
  for (let i = 0; i < route.path.length - 1; i++) {
421
575
  const pair = route.pairs[i];
@@ -429,7 +583,7 @@ var Trade = class {
429
583
  tokenAmounts[tokenAmounts.length - 1].denominator
430
584
  );
431
585
  } else {
432
- invariant4(amount.currency.equals(route.output), "OUTPUT");
586
+ invariant5(amount.currency.equals(route.output), "OUTPUT");
433
587
  tokenAmounts[tokenAmounts.length - 1] = amount.wrapped;
434
588
  for (let i = route.path.length - 1; i > 0; i--) {
435
589
  const pair = route.pairs[i - 1];
@@ -456,7 +610,7 @@ var Trade = class {
456
610
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
457
611
  */
458
612
  minimumAmountOut(slippageTolerance) {
459
- invariant4(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
613
+ invariant5(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
460
614
  if (this.tradeType === TradeType.EXACT_OUTPUT) {
461
615
  return this.outputAmount;
462
616
  }
@@ -468,7 +622,7 @@ var Trade = class {
468
622
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
469
623
  */
470
624
  maximumAmountIn(slippageTolerance) {
471
- invariant4(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
625
+ invariant5(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
472
626
  if (this.tradeType === TradeType.EXACT_INPUT) {
473
627
  return this.inputAmount;
474
628
  }
@@ -490,9 +644,9 @@ var Trade = class {
490
644
  * @param bestTrades used in recursion; the current list of best trades
491
645
  */
492
646
  static bestTradeExactIn(pairs, currencyAmountIn, currencyOut, { maxNumResults = 3, maxHops = 3 } = {}, currentPairs = [], nextAmountIn = currencyAmountIn, bestTrades = []) {
493
- invariant4(pairs.length > 0, "PAIRS");
494
- invariant4(maxHops > 0, "MAX_HOPS");
495
- invariant4(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
647
+ invariant5(pairs.length > 0, "PAIRS");
648
+ invariant5(maxHops > 0, "MAX_HOPS");
649
+ invariant5(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
496
650
  const amountIn = nextAmountIn.wrapped;
497
651
  const tokenOut = currencyOut.wrapped;
498
652
  for (let i = 0; i < pairs.length; i++) {
@@ -568,9 +722,9 @@ var Trade = class {
568
722
  * @param bestTrades used in recursion; the current list of best trades
569
723
  */
570
724
  static bestTradeExactOut(pairs, currencyIn, currencyAmountOut, { maxNumResults = 3, maxHops = 3 } = {}, currentPairs = [], nextAmountOut = currencyAmountOut, bestTrades = []) {
571
- invariant4(pairs.length > 0, "PAIRS");
572
- invariant4(maxHops > 0, "MAX_HOPS");
573
- invariant4(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
725
+ invariant5(pairs.length > 0, "PAIRS");
726
+ invariant5(maxHops > 0, "MAX_HOPS");
727
+ invariant5(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
574
728
  const amountOut = nextAmountOut.wrapped;
575
729
  const tokenIn = currencyIn.wrapped;
576
730
  for (let i = 0; i < pairs.length; i++) {
@@ -630,14 +784,14 @@ var _Native = class extends NativeCurrency {
630
784
  }
631
785
  get wrapped() {
632
786
  const wnative = WNATIVE[this.chainId];
633
- invariant4(!!wnative, "WRAPPED");
787
+ invariant5(!!wnative, "WRAPPED");
634
788
  return wnative;
635
789
  }
636
790
  static onChain(chainId) {
637
791
  if (chainId in this.cache) {
638
792
  return this.cache[chainId];
639
793
  }
640
- invariant4(!!NATIVE[chainId], "NATIVE_CURRENCY");
794
+ invariant5(!!NATIVE[chainId], "NATIVE_CURRENCY");
641
795
  const { decimals, name, symbol } = NATIVE[chainId];
642
796
  return this.cache[chainId] = new _Native({ chainId, decimals, symbol, name });
643
797
  }
@@ -660,8 +814,8 @@ var Router = class {
660
814
  static swapCallParameters(trade, options) {
661
815
  const etherIn = trade.inputAmount.currency.isNative;
662
816
  const etherOut = trade.outputAmount.currency.isNative;
663
- invariant4(!(etherIn && etherOut), "ETHER_IN_OUT");
664
- invariant4(!("ttl" in options) || options.ttl > 0, "TTL");
817
+ invariant5(!(etherIn && etherOut), "ETHER_IN_OUT");
818
+ invariant5(!("ttl" in options) || options.ttl > 0, "TTL");
665
819
  const to = validateAndParseAddress(options.recipient);
666
820
  const amountIn = toHex(trade.maximumAmountIn(options.allowedSlippage));
667
821
  const amountOut = toHex(trade.minimumAmountOut(options.allowedSlippage));
@@ -688,7 +842,7 @@ var Router = class {
688
842
  }
689
843
  break;
690
844
  case TradeType.EXACT_OUTPUT:
691
- invariant4(!useFeeOnTransfer, "EXACT_OUT_FOT");
845
+ invariant5(!useFeeOnTransfer, "EXACT_OUT_FOT");
692
846
  if (etherIn) {
693
847
  methodName = "swapETHForExactTokens";
694
848
  args = [amountOut, path, to, deadline];
@@ -717,7 +871,7 @@ var _Ether = class extends NativeCurrency {
717
871
  }
718
872
  get wrapped() {
719
873
  const weth9 = WETH9[this.chainId];
720
- invariant4(!!weth9, "WRAPPED");
874
+ invariant5(!!weth9, "WRAPPED");
721
875
  return weth9;
722
876
  }
723
877
  static onChain(chainId) {
@@ -1526,7 +1680,7 @@ var Fetcher = class {
1526
1680
  * @param provider the provider to use to fetch the data
1527
1681
  */
1528
1682
  static async fetchPairData(tokenA, tokenB, publicClient = getDefaultClient(tokenA.chainId)) {
1529
- invariant4(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1683
+ invariant5(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1530
1684
  const address = Pair.getAddress(tokenA, tokenB);
1531
1685
  const pairContract = getContract({
1532
1686
  abi: pancakePairV2ABI,
@@ -1542,4 +1696,4 @@ var Fetcher = class {
1542
1696
  }
1543
1697
  };
1544
1698
 
1545
- export { ChainId, ERC20Token, Ether, FACTORY_ADDRESS, FACTORY_ADDRESS_MAP, Fetcher, INIT_CODE_HASH, INIT_CODE_HASH_MAP, NATIVE, Native, ONE_HUNDRED_PERCENT, Pair, Route, Router, Trade, WBNB, WETH9, WNATIVE, ZERO_PERCENT, computePairAddress, inputOutputComparator, isTradeBetter, pancakePairV2ABI, tradeComparator, validateAndParseAddress };
1699
+ export { ChainId, ERC20Token, Ether, FACTORY_ADDRESS, FACTORY_ADDRESS_MAP, Fetcher, INIT_CODE_HASH, INIT_CODE_HASH_MAP, NATIVE, Native, ONE_HUNDRED_PERCENT, OnRampCurrency, Pair, Route, Router, Trade, WBNB, WETH9, WNATIVE, ZERO_PERCENT, computePairAddress, inputOutputComparator, isTradeBetter, pancakePairV2ABI, tradeComparator, validateAndParseAddress };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pancakeswap/sdk",
3
3
  "license": "MIT",
4
- "version": "5.0.0",
4
+ "version": "5.1.0",
5
5
  "description": "🛠 An SDK for building applications on top of Pancakeswap.",
6
6
  "main": "dist/index.js",
7
7
  "typings": "dist/index.d.ts",
@@ -27,17 +27,15 @@
27
27
  "./package.json": "./package.json"
28
28
  },
29
29
  "dependencies": {
30
- "viem": "^1.0.7",
31
30
  "big.js": "^5.2.2",
32
31
  "decimal.js-light": "^2.5.0",
33
32
  "tiny-invariant": "^1.1.0",
34
33
  "tiny-warning": "^1.0.3",
35
34
  "toformat": "^2.0.0",
35
+ "viem": "^1.2.9",
36
36
  "@pancakeswap/swap-sdk-core": "1.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@swc/core": "^1.2.215",
40
- "@swc/jest": "^0.2.21",
41
39
  "@types/big.js": "^4.0.5",
42
40
  "tsup": "^6.7.0"
43
41
  },