@pancakeswap/sdk 5.0.0 → 5.2.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: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43";
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;;;;;;;;;;;;CAYW,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,14 @@ 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
+ [324 /* ZKSYNC */]: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43",
121
+ [280 /* ZKSYNC_TESTNET */]: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43",
122
+ [59140 /* LINEA_TESTNET */]: INIT_CODE_HASH_ETH
57
123
  };
58
124
  var WETH9 = {
59
125
  [1 /* ETHEREUM */]: new ERC20Token(
@@ -87,6 +153,62 @@ var WETH9 = {
87
153
  "ETH",
88
154
  "ETH",
89
155
  "https://ethereum.org"
156
+ ),
157
+ [42161 /* ARBITRUM_ONE */]: new ERC20Token(
158
+ 42161 /* ARBITRUM_ONE */,
159
+ "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
160
+ 18,
161
+ "WETH",
162
+ "Wrapped Ether",
163
+ "https://weth.io"
164
+ ),
165
+ [421613 /* ARBITRUM_GOERLI */]: new ERC20Token(
166
+ 421613 /* ARBITRUM_GOERLI */,
167
+ "0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f",
168
+ 18,
169
+ "WETH",
170
+ "Wrapped Ether",
171
+ "https://weth.io"
172
+ ),
173
+ [324 /* ZKSYNC */]: new ERC20Token(
174
+ 324 /* ZKSYNC */,
175
+ "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
176
+ 18,
177
+ "WETH",
178
+ "Wrapped Ether",
179
+ "https://weth.io"
180
+ ),
181
+ [280 /* ZKSYNC_TESTNET */]: new ERC20Token(
182
+ 280 /* ZKSYNC_TESTNET */,
183
+ "0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0",
184
+ 18,
185
+ "WETH",
186
+ "Wrapped Ether",
187
+ "https://weth.io"
188
+ ),
189
+ [1101 /* POLYGON_ZKEVM */]: new ERC20Token(
190
+ 1101 /* POLYGON_ZKEVM */,
191
+ "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9",
192
+ 18,
193
+ "WETH",
194
+ "Wrapped Ether",
195
+ "https://weth.io"
196
+ ),
197
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: new ERC20Token(
198
+ 1442 /* POLYGON_ZKEVM_TESTNET */,
199
+ "0x30ec47F7DFae72eA79646e6cf64a8A7db538915b",
200
+ 18,
201
+ "WETH",
202
+ "Wrapped Ether",
203
+ "https://weth.io"
204
+ ),
205
+ [59140 /* LINEA_TESTNET */]: new ERC20Token(
206
+ 59140 /* LINEA_TESTNET */,
207
+ "0x2C1b868d6596a18e32E61B901E4060C872647b6C",
208
+ 18,
209
+ "WETH",
210
+ "Wrapped Ether",
211
+ "https://weth.io"
90
212
  )
91
213
  };
92
214
  var WBNB = {
@@ -119,10 +241,18 @@ var WNATIVE = {
119
241
  [1 /* ETHEREUM */]: WETH9[1 /* ETHEREUM */],
120
242
  [5 /* GOERLI */]: WETH9[5 /* GOERLI */],
121
243
  [56 /* BSC */]: WBNB[56 /* BSC */],
122
- [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */]
244
+ [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */],
245
+ [42161 /* ARBITRUM_ONE */]: WETH9[42161 /* ARBITRUM_ONE */],
246
+ [421613 /* ARBITRUM_GOERLI */]: WETH9[421613 /* ARBITRUM_GOERLI */],
247
+ [1101 /* POLYGON_ZKEVM */]: WETH9[1101 /* POLYGON_ZKEVM */],
248
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: WETH9[1442 /* POLYGON_ZKEVM_TESTNET */],
249
+ [324 /* ZKSYNC */]: WETH9[324 /* ZKSYNC */],
250
+ [280 /* ZKSYNC_TESTNET */]: WETH9[280 /* ZKSYNC_TESTNET */],
251
+ [59140 /* LINEA_TESTNET */]: WETH9[59140 /* LINEA_TESTNET */]
123
252
  };
253
+ var ETHER = { name: "Ether", symbol: "ETH", decimals: 18 };
124
254
  var NATIVE = {
125
- [1 /* ETHEREUM */]: { name: "Ether", symbol: "ETH", decimals: 18 },
255
+ [1 /* ETHEREUM */]: ETHER,
126
256
  [5 /* GOERLI */]: { name: "Goerli Ether", symbol: "GOR", decimals: 18 },
127
257
  [56 /* BSC */]: {
128
258
  name: "Binance Chain Native Token",
@@ -133,7 +263,18 @@ var NATIVE = {
133
263
  name: "Binance Chain Native Token",
134
264
  symbol: "tBNB",
135
265
  decimals: 18
136
- }
266
+ },
267
+ [42161 /* ARBITRUM_ONE */]: ETHER,
268
+ [421613 /* ARBITRUM_GOERLI */]: {
269
+ name: "Arbitrum Goerli Ether",
270
+ symbol: "AGOR",
271
+ decimals: 18
272
+ },
273
+ [1101 /* POLYGON_ZKEVM */]: ETHER,
274
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: ETHER,
275
+ [324 /* ZKSYNC */]: ETHER,
276
+ [280 /* ZKSYNC_TESTNET */]: ETHER,
277
+ [59140 /* LINEA_TESTNET */]: ETHER
137
278
  };
138
279
 
139
280
  // src/trade.ts
@@ -161,6 +302,13 @@ function getCreate2Address(from_, salt_, initCodeHash) {
161
302
  });
162
303
  return viem.getAddress(viem.slice(viem.keccak256(viem.concat([viem.toBytes("0xff"), from, salt, viem.toBytes(initCodeHash)])), 12));
163
304
  }
305
+ var EMPTY_INPU_HASH = "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
306
+ var ZKSYNC_PREFIX = "0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494";
307
+ function getCreate2AddressZkSync(from, salt, initCodeHash) {
308
+ return viem.getAddress(
309
+ `0x${viem.keccak256(viem.concat([ZKSYNC_PREFIX, viem.pad(from, { size: 32 }), salt, initCodeHash, EMPTY_INPU_HASH])).slice(26)}`
310
+ );
311
+ }
164
312
  var computePairAddress = ({
165
313
  factoryAddress,
166
314
  tokenA,
@@ -169,9 +317,10 @@ var computePairAddress = ({
169
317
  const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];
170
318
  const key = composeKey(token0, token1);
171
319
  if (PAIR_ADDRESS_CACHE?.[key] === void 0) {
320
+ const getCreate2Address_ = token0.chainId === 280 /* ZKSYNC_TESTNET */ || token1.chainId === 324 /* ZKSYNC */ ? getCreate2AddressZkSync : getCreate2Address;
172
321
  PAIR_ADDRESS_CACHE = {
173
322
  ...PAIR_ADDRESS_CACHE,
174
- [key]: getCreate2Address(
323
+ [key]: getCreate2Address_(
175
324
  factoryAddress,
176
325
  viem.keccak256(viem.encodePacked(["address", "address"], [token0.address, token1.address])),
177
326
  INIT_CODE_HASH_MAP[token0.chainId]
@@ -182,7 +331,11 @@ var computePairAddress = ({
182
331
  };
183
332
  var Pair = class {
184
333
  static getAddress(tokenA, tokenB) {
185
- return computePairAddress({ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId], tokenA, tokenB });
334
+ return computePairAddress({
335
+ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId],
336
+ tokenA,
337
+ tokenB
338
+ });
186
339
  }
187
340
  constructor(currencyAmountA, tokenAmountB) {
188
341
  const tokenAmounts = currencyAmountA.currency.sortsBefore(tokenAmountB.currency) ? [currencyAmountA, tokenAmountB] : [tokenAmountB, currencyAmountA];
@@ -221,7 +374,7 @@ var Pair = class {
221
374
  * @param token token to return price of
222
375
  */
223
376
  priceOf(token) {
224
- invariant4__default.default(this.involvesToken(token), "TOKEN");
377
+ invariant5__default.default(this.involvesToken(token), "TOKEN");
225
378
  return token.equals(this.token0) ? this.token0Price : this.token1Price;
226
379
  }
227
380
  /**
@@ -243,11 +396,11 @@ var Pair = class {
243
396
  return this.tokenAmounts[1];
244
397
  }
245
398
  reserveOf(token) {
246
- invariant4__default.default(this.involvesToken(token), "TOKEN");
399
+ invariant5__default.default(this.involvesToken(token), "TOKEN");
247
400
  return token.equals(this.token0) ? this.reserve0 : this.reserve1;
248
401
  }
249
402
  getOutputAmount(inputAmount) {
250
- invariant4__default.default(this.involvesToken(inputAmount.currency), "TOKEN");
403
+ invariant5__default.default(this.involvesToken(inputAmount.currency), "TOKEN");
251
404
  if (this.reserve0.quotient === swapSdkCore.ZERO || this.reserve1.quotient === swapSdkCore.ZERO) {
252
405
  throw new swapSdkCore.InsufficientReservesError();
253
406
  }
@@ -266,7 +419,7 @@ var Pair = class {
266
419
  return [outputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
267
420
  }
268
421
  getInputAmount(outputAmount) {
269
- invariant4__default.default(this.involvesToken(outputAmount.currency), "TOKEN");
422
+ invariant5__default.default(this.involvesToken(outputAmount.currency), "TOKEN");
270
423
  if (this.reserve0.quotient === swapSdkCore.ZERO || this.reserve1.quotient === swapSdkCore.ZERO || outputAmount.quotient >= this.reserveOf(outputAmount.currency).quotient) {
271
424
  throw new swapSdkCore.InsufficientReservesError();
272
425
  }
@@ -281,9 +434,9 @@ var Pair = class {
281
434
  return [inputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
282
435
  }
283
436
  getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB) {
284
- invariant4__default.default(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
437
+ invariant5__default.default(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
285
438
  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");
439
+ invariant5__default.default(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
287
440
  let liquidity;
288
441
  if (totalSupply.quotient === swapSdkCore.ZERO) {
289
442
  liquidity = swapSdkCore.sqrt(tokenAmounts[0].quotient * tokenAmounts[1].quotient) - swapSdkCore.MINIMUM_LIQUIDITY;
@@ -298,15 +451,15 @@ var Pair = class {
298
451
  return swapSdkCore.CurrencyAmount.fromRawAmount(this.liquidityToken, liquidity);
299
452
  }
300
453
  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");
454
+ invariant5__default.default(this.involvesToken(token), "TOKEN");
455
+ invariant5__default.default(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
456
+ invariant5__default.default(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
457
+ invariant5__default.default(liquidity.quotient <= totalSupply.quotient, "LIQUIDITY");
305
458
  let totalSupplyAdjusted;
306
459
  if (!feeOn) {
307
460
  totalSupplyAdjusted = totalSupply;
308
461
  } else {
309
- invariant4__default.default(!!kLast, "K_LAST");
462
+ invariant5__default.default(!!kLast, "K_LAST");
310
463
  const kLastParsed = BigInt(kLast);
311
464
  if (!(kLastParsed === swapSdkCore.ZERO)) {
312
465
  const rootK = swapSdkCore.sqrt(this.reserve0.quotient * this.reserve1.quotient);
@@ -332,19 +485,19 @@ var Pair = class {
332
485
  var Route = class {
333
486
  constructor(pairs, input, output) {
334
487
  this._midPrice = null;
335
- invariant4__default.default(pairs.length > 0, "PAIRS");
488
+ invariant5__default.default(pairs.length > 0, "PAIRS");
336
489
  const { chainId } = pairs[0];
337
- invariant4__default.default(
490
+ invariant5__default.default(
338
491
  pairs.every((pair) => pair.chainId === chainId),
339
492
  "CHAIN_IDS"
340
493
  );
341
494
  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");
495
+ invariant5__default.default(pairs[0].involvesToken(wrappedInput), "INPUT");
496
+ invariant5__default.default(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
344
497
  const path = [wrappedInput];
345
498
  for (const [i, pair] of pairs.entries()) {
346
499
  const currentInput = path[i];
347
- invariant4__default.default(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
500
+ invariant5__default.default(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
348
501
  const output2 = currentInput.equals(pair.token0) ? pair.token1 : pair.token0;
349
502
  path.push(output2);
350
503
  }
@@ -370,8 +523,8 @@ var Route = class {
370
523
  }
371
524
  };
372
525
  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");
526
+ invariant5__default.default(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
527
+ invariant5__default.default(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
375
528
  if (a.outputAmount.equalTo(b.outputAmount)) {
376
529
  if (a.inputAmount.equalTo(b.inputAmount)) {
377
530
  return 0;
@@ -421,7 +574,7 @@ var Trade = class {
421
574
  this.tradeType = tradeType;
422
575
  const tokenAmounts = new Array(route.path.length);
423
576
  if (tradeType === swapSdkCore.TradeType.EXACT_INPUT) {
424
- invariant4__default.default(amount.currency.equals(route.input), "INPUT");
577
+ invariant5__default.default(amount.currency.equals(route.input), "INPUT");
425
578
  tokenAmounts[0] = amount.wrapped;
426
579
  for (let i = 0; i < route.path.length - 1; i++) {
427
580
  const pair = route.pairs[i];
@@ -435,7 +588,7 @@ var Trade = class {
435
588
  tokenAmounts[tokenAmounts.length - 1].denominator
436
589
  );
437
590
  } else {
438
- invariant4__default.default(amount.currency.equals(route.output), "OUTPUT");
591
+ invariant5__default.default(amount.currency.equals(route.output), "OUTPUT");
439
592
  tokenAmounts[tokenAmounts.length - 1] = amount.wrapped;
440
593
  for (let i = route.path.length - 1; i > 0; i--) {
441
594
  const pair = route.pairs[i - 1];
@@ -462,7 +615,7 @@ var Trade = class {
462
615
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
463
616
  */
464
617
  minimumAmountOut(slippageTolerance) {
465
- invariant4__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
618
+ invariant5__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
466
619
  if (this.tradeType === swapSdkCore.TradeType.EXACT_OUTPUT) {
467
620
  return this.outputAmount;
468
621
  }
@@ -474,7 +627,7 @@ var Trade = class {
474
627
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
475
628
  */
476
629
  maximumAmountIn(slippageTolerance) {
477
- invariant4__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
630
+ invariant5__default.default(!slippageTolerance.lessThan(swapSdkCore.ZERO), "SLIPPAGE_TOLERANCE");
478
631
  if (this.tradeType === swapSdkCore.TradeType.EXACT_INPUT) {
479
632
  return this.inputAmount;
480
633
  }
@@ -496,9 +649,9 @@ var Trade = class {
496
649
  * @param bestTrades used in recursion; the current list of best trades
497
650
  */
498
651
  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");
652
+ invariant5__default.default(pairs.length > 0, "PAIRS");
653
+ invariant5__default.default(maxHops > 0, "MAX_HOPS");
654
+ invariant5__default.default(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
502
655
  const amountIn = nextAmountIn.wrapped;
503
656
  const tokenOut = currencyOut.wrapped;
504
657
  for (let i = 0; i < pairs.length; i++) {
@@ -574,9 +727,9 @@ var Trade = class {
574
727
  * @param bestTrades used in recursion; the current list of best trades
575
728
  */
576
729
  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");
730
+ invariant5__default.default(pairs.length > 0, "PAIRS");
731
+ invariant5__default.default(maxHops > 0, "MAX_HOPS");
732
+ invariant5__default.default(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
580
733
  const amountOut = nextAmountOut.wrapped;
581
734
  const tokenIn = currencyIn.wrapped;
582
735
  for (let i = 0; i < pairs.length; i++) {
@@ -636,14 +789,14 @@ var _Native = class extends swapSdkCore.NativeCurrency {
636
789
  }
637
790
  get wrapped() {
638
791
  const wnative = WNATIVE[this.chainId];
639
- invariant4__default.default(!!wnative, "WRAPPED");
792
+ invariant5__default.default(!!wnative, "WRAPPED");
640
793
  return wnative;
641
794
  }
642
795
  static onChain(chainId) {
643
796
  if (chainId in this.cache) {
644
797
  return this.cache[chainId];
645
798
  }
646
- invariant4__default.default(!!NATIVE[chainId], "NATIVE_CURRENCY");
799
+ invariant5__default.default(!!NATIVE[chainId], "NATIVE_CURRENCY");
647
800
  const { decimals, name, symbol } = NATIVE[chainId];
648
801
  return this.cache[chainId] = new _Native({ chainId, decimals, symbol, name });
649
802
  }
@@ -666,8 +819,8 @@ var Router = class {
666
819
  static swapCallParameters(trade, options) {
667
820
  const etherIn = trade.inputAmount.currency.isNative;
668
821
  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");
822
+ invariant5__default.default(!(etherIn && etherOut), "ETHER_IN_OUT");
823
+ invariant5__default.default(!("ttl" in options) || options.ttl > 0, "TTL");
671
824
  const to = validateAndParseAddress(options.recipient);
672
825
  const amountIn = toHex(trade.maximumAmountIn(options.allowedSlippage));
673
826
  const amountOut = toHex(trade.minimumAmountOut(options.allowedSlippage));
@@ -694,7 +847,7 @@ var Router = class {
694
847
  }
695
848
  break;
696
849
  case swapSdkCore.TradeType.EXACT_OUTPUT:
697
- invariant4__default.default(!useFeeOnTransfer, "EXACT_OUT_FOT");
850
+ invariant5__default.default(!useFeeOnTransfer, "EXACT_OUT_FOT");
698
851
  if (etherIn) {
699
852
  methodName = "swapETHForExactTokens";
700
853
  args = [amountOut, path, to, deadline];
@@ -723,7 +876,7 @@ var _Ether = class extends swapSdkCore.NativeCurrency {
723
876
  }
724
877
  get wrapped() {
725
878
  const weth9 = WETH9[this.chainId];
726
- invariant4__default.default(!!weth9, "WRAPPED");
879
+ invariant5__default.default(!!weth9, "WRAPPED");
727
880
  return weth9;
728
881
  }
729
882
  static onChain(chainId) {
@@ -1532,7 +1685,7 @@ var Fetcher = class {
1532
1685
  * @param provider the provider to use to fetch the data
1533
1686
  */
1534
1687
  static async fetchPairData(tokenA, tokenB, publicClient = getDefaultClient(tokenA.chainId)) {
1535
- invariant4__default.default(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1688
+ invariant5__default.default(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1536
1689
  const address = Pair.getAddress(tokenA, tokenB);
1537
1690
  const pairContract = viem.getContract({
1538
1691
  abi: pancakePairV2ABI,
@@ -1559,6 +1712,7 @@ exports.INIT_CODE_HASH_MAP = INIT_CODE_HASH_MAP;
1559
1712
  exports.NATIVE = NATIVE;
1560
1713
  exports.Native = Native;
1561
1714
  exports.ONE_HUNDRED_PERCENT = ONE_HUNDRED_PERCENT;
1715
+ exports.OnRampCurrency = OnRampCurrency;
1562
1716
  exports.Pair = Pair;
1563
1717
  exports.Route = Route;
1564
1718
  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,14 @@ 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
+ [324 /* ZKSYNC */]: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43",
115
+ [280 /* ZKSYNC_TESTNET */]: "0x0100045707a42494392b3558029b9869f865ff9df8f375dc1bf20b0555093f43",
116
+ [59140 /* LINEA_TESTNET */]: INIT_CODE_HASH_ETH
51
117
  };
52
118
  var WETH9 = {
53
119
  [1 /* ETHEREUM */]: new ERC20Token(
@@ -81,6 +147,62 @@ var WETH9 = {
81
147
  "ETH",
82
148
  "ETH",
83
149
  "https://ethereum.org"
150
+ ),
151
+ [42161 /* ARBITRUM_ONE */]: new ERC20Token(
152
+ 42161 /* ARBITRUM_ONE */,
153
+ "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
154
+ 18,
155
+ "WETH",
156
+ "Wrapped Ether",
157
+ "https://weth.io"
158
+ ),
159
+ [421613 /* ARBITRUM_GOERLI */]: new ERC20Token(
160
+ 421613 /* ARBITRUM_GOERLI */,
161
+ "0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f",
162
+ 18,
163
+ "WETH",
164
+ "Wrapped Ether",
165
+ "https://weth.io"
166
+ ),
167
+ [324 /* ZKSYNC */]: new ERC20Token(
168
+ 324 /* ZKSYNC */,
169
+ "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
170
+ 18,
171
+ "WETH",
172
+ "Wrapped Ether",
173
+ "https://weth.io"
174
+ ),
175
+ [280 /* ZKSYNC_TESTNET */]: new ERC20Token(
176
+ 280 /* ZKSYNC_TESTNET */,
177
+ "0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0",
178
+ 18,
179
+ "WETH",
180
+ "Wrapped Ether",
181
+ "https://weth.io"
182
+ ),
183
+ [1101 /* POLYGON_ZKEVM */]: new ERC20Token(
184
+ 1101 /* POLYGON_ZKEVM */,
185
+ "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9",
186
+ 18,
187
+ "WETH",
188
+ "Wrapped Ether",
189
+ "https://weth.io"
190
+ ),
191
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: new ERC20Token(
192
+ 1442 /* POLYGON_ZKEVM_TESTNET */,
193
+ "0x30ec47F7DFae72eA79646e6cf64a8A7db538915b",
194
+ 18,
195
+ "WETH",
196
+ "Wrapped Ether",
197
+ "https://weth.io"
198
+ ),
199
+ [59140 /* LINEA_TESTNET */]: new ERC20Token(
200
+ 59140 /* LINEA_TESTNET */,
201
+ "0x2C1b868d6596a18e32E61B901E4060C872647b6C",
202
+ 18,
203
+ "WETH",
204
+ "Wrapped Ether",
205
+ "https://weth.io"
84
206
  )
85
207
  };
86
208
  var WBNB = {
@@ -113,10 +235,18 @@ var WNATIVE = {
113
235
  [1 /* ETHEREUM */]: WETH9[1 /* ETHEREUM */],
114
236
  [5 /* GOERLI */]: WETH9[5 /* GOERLI */],
115
237
  [56 /* BSC */]: WBNB[56 /* BSC */],
116
- [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */]
238
+ [97 /* BSC_TESTNET */]: WBNB[97 /* BSC_TESTNET */],
239
+ [42161 /* ARBITRUM_ONE */]: WETH9[42161 /* ARBITRUM_ONE */],
240
+ [421613 /* ARBITRUM_GOERLI */]: WETH9[421613 /* ARBITRUM_GOERLI */],
241
+ [1101 /* POLYGON_ZKEVM */]: WETH9[1101 /* POLYGON_ZKEVM */],
242
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: WETH9[1442 /* POLYGON_ZKEVM_TESTNET */],
243
+ [324 /* ZKSYNC */]: WETH9[324 /* ZKSYNC */],
244
+ [280 /* ZKSYNC_TESTNET */]: WETH9[280 /* ZKSYNC_TESTNET */],
245
+ [59140 /* LINEA_TESTNET */]: WETH9[59140 /* LINEA_TESTNET */]
117
246
  };
247
+ var ETHER = { name: "Ether", symbol: "ETH", decimals: 18 };
118
248
  var NATIVE = {
119
- [1 /* ETHEREUM */]: { name: "Ether", symbol: "ETH", decimals: 18 },
249
+ [1 /* ETHEREUM */]: ETHER,
120
250
  [5 /* GOERLI */]: { name: "Goerli Ether", symbol: "GOR", decimals: 18 },
121
251
  [56 /* BSC */]: {
122
252
  name: "Binance Chain Native Token",
@@ -127,7 +257,18 @@ var NATIVE = {
127
257
  name: "Binance Chain Native Token",
128
258
  symbol: "tBNB",
129
259
  decimals: 18
130
- }
260
+ },
261
+ [42161 /* ARBITRUM_ONE */]: ETHER,
262
+ [421613 /* ARBITRUM_GOERLI */]: {
263
+ name: "Arbitrum Goerli Ether",
264
+ symbol: "AGOR",
265
+ decimals: 18
266
+ },
267
+ [1101 /* POLYGON_ZKEVM */]: ETHER,
268
+ [1442 /* POLYGON_ZKEVM_TESTNET */]: ETHER,
269
+ [324 /* ZKSYNC */]: ETHER,
270
+ [280 /* ZKSYNC_TESTNET */]: ETHER,
271
+ [59140 /* LINEA_TESTNET */]: ETHER
131
272
  };
132
273
 
133
274
  // src/trade.ts
@@ -155,6 +296,13 @@ function getCreate2Address(from_, salt_, initCodeHash) {
155
296
  });
156
297
  return getAddress(slice(keccak256(concat([toBytes("0xff"), from, salt, toBytes(initCodeHash)])), 12));
157
298
  }
299
+ var EMPTY_INPU_HASH = "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
300
+ var ZKSYNC_PREFIX = "0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494";
301
+ function getCreate2AddressZkSync(from, salt, initCodeHash) {
302
+ return getAddress(
303
+ `0x${keccak256(concat([ZKSYNC_PREFIX, pad(from, { size: 32 }), salt, initCodeHash, EMPTY_INPU_HASH])).slice(26)}`
304
+ );
305
+ }
158
306
  var computePairAddress = ({
159
307
  factoryAddress,
160
308
  tokenA,
@@ -163,9 +311,10 @@ var computePairAddress = ({
163
311
  const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];
164
312
  const key = composeKey(token0, token1);
165
313
  if (PAIR_ADDRESS_CACHE?.[key] === void 0) {
314
+ const getCreate2Address_ = token0.chainId === 280 /* ZKSYNC_TESTNET */ || token1.chainId === 324 /* ZKSYNC */ ? getCreate2AddressZkSync : getCreate2Address;
166
315
  PAIR_ADDRESS_CACHE = {
167
316
  ...PAIR_ADDRESS_CACHE,
168
- [key]: getCreate2Address(
317
+ [key]: getCreate2Address_(
169
318
  factoryAddress,
170
319
  keccak256(encodePacked(["address", "address"], [token0.address, token1.address])),
171
320
  INIT_CODE_HASH_MAP[token0.chainId]
@@ -176,7 +325,11 @@ var computePairAddress = ({
176
325
  };
177
326
  var Pair = class {
178
327
  static getAddress(tokenA, tokenB) {
179
- return computePairAddress({ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId], tokenA, tokenB });
328
+ return computePairAddress({
329
+ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId],
330
+ tokenA,
331
+ tokenB
332
+ });
180
333
  }
181
334
  constructor(currencyAmountA, tokenAmountB) {
182
335
  const tokenAmounts = currencyAmountA.currency.sortsBefore(tokenAmountB.currency) ? [currencyAmountA, tokenAmountB] : [tokenAmountB, currencyAmountA];
@@ -215,7 +368,7 @@ var Pair = class {
215
368
  * @param token token to return price of
216
369
  */
217
370
  priceOf(token) {
218
- invariant4(this.involvesToken(token), "TOKEN");
371
+ invariant5(this.involvesToken(token), "TOKEN");
219
372
  return token.equals(this.token0) ? this.token0Price : this.token1Price;
220
373
  }
221
374
  /**
@@ -237,11 +390,11 @@ var Pair = class {
237
390
  return this.tokenAmounts[1];
238
391
  }
239
392
  reserveOf(token) {
240
- invariant4(this.involvesToken(token), "TOKEN");
393
+ invariant5(this.involvesToken(token), "TOKEN");
241
394
  return token.equals(this.token0) ? this.reserve0 : this.reserve1;
242
395
  }
243
396
  getOutputAmount(inputAmount) {
244
- invariant4(this.involvesToken(inputAmount.currency), "TOKEN");
397
+ invariant5(this.involvesToken(inputAmount.currency), "TOKEN");
245
398
  if (this.reserve0.quotient === ZERO || this.reserve1.quotient === ZERO) {
246
399
  throw new InsufficientReservesError();
247
400
  }
@@ -260,7 +413,7 @@ var Pair = class {
260
413
  return [outputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
261
414
  }
262
415
  getInputAmount(outputAmount) {
263
- invariant4(this.involvesToken(outputAmount.currency), "TOKEN");
416
+ invariant5(this.involvesToken(outputAmount.currency), "TOKEN");
264
417
  if (this.reserve0.quotient === ZERO || this.reserve1.quotient === ZERO || outputAmount.quotient >= this.reserveOf(outputAmount.currency).quotient) {
265
418
  throw new InsufficientReservesError();
266
419
  }
@@ -275,9 +428,9 @@ var Pair = class {
275
428
  return [inputAmount, new Pair(inputReserve.add(inputAmount), outputReserve.subtract(outputAmount))];
276
429
  }
277
430
  getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB) {
278
- invariant4(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
431
+ invariant5(totalSupply.currency.equals(this.liquidityToken), "LIQUIDITY");
279
432
  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");
433
+ invariant5(tokenAmounts[0].currency.equals(this.token0) && tokenAmounts[1].currency.equals(this.token1), "TOKEN");
281
434
  let liquidity;
282
435
  if (totalSupply.quotient === ZERO) {
283
436
  liquidity = sqrt(tokenAmounts[0].quotient * tokenAmounts[1].quotient) - MINIMUM_LIQUIDITY;
@@ -292,15 +445,15 @@ var Pair = class {
292
445
  return CurrencyAmount.fromRawAmount(this.liquidityToken, liquidity);
293
446
  }
294
447
  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");
448
+ invariant5(this.involvesToken(token), "TOKEN");
449
+ invariant5(totalSupply.currency.equals(this.liquidityToken), "TOTAL_SUPPLY");
450
+ invariant5(liquidity.currency.equals(this.liquidityToken), "LIQUIDITY");
451
+ invariant5(liquidity.quotient <= totalSupply.quotient, "LIQUIDITY");
299
452
  let totalSupplyAdjusted;
300
453
  if (!feeOn) {
301
454
  totalSupplyAdjusted = totalSupply;
302
455
  } else {
303
- invariant4(!!kLast, "K_LAST");
456
+ invariant5(!!kLast, "K_LAST");
304
457
  const kLastParsed = BigInt(kLast);
305
458
  if (!(kLastParsed === ZERO)) {
306
459
  const rootK = sqrt(this.reserve0.quotient * this.reserve1.quotient);
@@ -326,19 +479,19 @@ var Pair = class {
326
479
  var Route = class {
327
480
  constructor(pairs, input, output) {
328
481
  this._midPrice = null;
329
- invariant4(pairs.length > 0, "PAIRS");
482
+ invariant5(pairs.length > 0, "PAIRS");
330
483
  const { chainId } = pairs[0];
331
- invariant4(
484
+ invariant5(
332
485
  pairs.every((pair) => pair.chainId === chainId),
333
486
  "CHAIN_IDS"
334
487
  );
335
488
  const wrappedInput = input.wrapped;
336
- invariant4(pairs[0].involvesToken(wrappedInput), "INPUT");
337
- invariant4(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
489
+ invariant5(pairs[0].involvesToken(wrappedInput), "INPUT");
490
+ invariant5(typeof output === "undefined" || pairs[pairs.length - 1].involvesToken(output.wrapped), "OUTPUT");
338
491
  const path = [wrappedInput];
339
492
  for (const [i, pair] of pairs.entries()) {
340
493
  const currentInput = path[i];
341
- invariant4(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
494
+ invariant5(currentInput.equals(pair.token0) || currentInput.equals(pair.token1), "PATH");
342
495
  const output2 = currentInput.equals(pair.token0) ? pair.token1 : pair.token0;
343
496
  path.push(output2);
344
497
  }
@@ -364,8 +517,8 @@ var Route = class {
364
517
  }
365
518
  };
366
519
  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");
520
+ invariant5(a.inputAmount.currency.equals(b.inputAmount.currency), "INPUT_CURRENCY");
521
+ invariant5(a.outputAmount.currency.equals(b.outputAmount.currency), "OUTPUT_CURRENCY");
369
522
  if (a.outputAmount.equalTo(b.outputAmount)) {
370
523
  if (a.inputAmount.equalTo(b.inputAmount)) {
371
524
  return 0;
@@ -415,7 +568,7 @@ var Trade = class {
415
568
  this.tradeType = tradeType;
416
569
  const tokenAmounts = new Array(route.path.length);
417
570
  if (tradeType === TradeType.EXACT_INPUT) {
418
- invariant4(amount.currency.equals(route.input), "INPUT");
571
+ invariant5(amount.currency.equals(route.input), "INPUT");
419
572
  tokenAmounts[0] = amount.wrapped;
420
573
  for (let i = 0; i < route.path.length - 1; i++) {
421
574
  const pair = route.pairs[i];
@@ -429,7 +582,7 @@ var Trade = class {
429
582
  tokenAmounts[tokenAmounts.length - 1].denominator
430
583
  );
431
584
  } else {
432
- invariant4(amount.currency.equals(route.output), "OUTPUT");
585
+ invariant5(amount.currency.equals(route.output), "OUTPUT");
433
586
  tokenAmounts[tokenAmounts.length - 1] = amount.wrapped;
434
587
  for (let i = route.path.length - 1; i > 0; i--) {
435
588
  const pair = route.pairs[i - 1];
@@ -456,7 +609,7 @@ var Trade = class {
456
609
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
457
610
  */
458
611
  minimumAmountOut(slippageTolerance) {
459
- invariant4(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
612
+ invariant5(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
460
613
  if (this.tradeType === TradeType.EXACT_OUTPUT) {
461
614
  return this.outputAmount;
462
615
  }
@@ -468,7 +621,7 @@ var Trade = class {
468
621
  * @param slippageTolerance tolerance of unfavorable slippage from the execution price of this trade
469
622
  */
470
623
  maximumAmountIn(slippageTolerance) {
471
- invariant4(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
624
+ invariant5(!slippageTolerance.lessThan(ZERO), "SLIPPAGE_TOLERANCE");
472
625
  if (this.tradeType === TradeType.EXACT_INPUT) {
473
626
  return this.inputAmount;
474
627
  }
@@ -490,9 +643,9 @@ var Trade = class {
490
643
  * @param bestTrades used in recursion; the current list of best trades
491
644
  */
492
645
  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");
646
+ invariant5(pairs.length > 0, "PAIRS");
647
+ invariant5(maxHops > 0, "MAX_HOPS");
648
+ invariant5(currencyAmountIn === nextAmountIn || currentPairs.length > 0, "INVALID_RECURSION");
496
649
  const amountIn = nextAmountIn.wrapped;
497
650
  const tokenOut = currencyOut.wrapped;
498
651
  for (let i = 0; i < pairs.length; i++) {
@@ -568,9 +721,9 @@ var Trade = class {
568
721
  * @param bestTrades used in recursion; the current list of best trades
569
722
  */
570
723
  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");
724
+ invariant5(pairs.length > 0, "PAIRS");
725
+ invariant5(maxHops > 0, "MAX_HOPS");
726
+ invariant5(currencyAmountOut === nextAmountOut || currentPairs.length > 0, "INVALID_RECURSION");
574
727
  const amountOut = nextAmountOut.wrapped;
575
728
  const tokenIn = currencyIn.wrapped;
576
729
  for (let i = 0; i < pairs.length; i++) {
@@ -630,14 +783,14 @@ var _Native = class extends NativeCurrency {
630
783
  }
631
784
  get wrapped() {
632
785
  const wnative = WNATIVE[this.chainId];
633
- invariant4(!!wnative, "WRAPPED");
786
+ invariant5(!!wnative, "WRAPPED");
634
787
  return wnative;
635
788
  }
636
789
  static onChain(chainId) {
637
790
  if (chainId in this.cache) {
638
791
  return this.cache[chainId];
639
792
  }
640
- invariant4(!!NATIVE[chainId], "NATIVE_CURRENCY");
793
+ invariant5(!!NATIVE[chainId], "NATIVE_CURRENCY");
641
794
  const { decimals, name, symbol } = NATIVE[chainId];
642
795
  return this.cache[chainId] = new _Native({ chainId, decimals, symbol, name });
643
796
  }
@@ -660,8 +813,8 @@ var Router = class {
660
813
  static swapCallParameters(trade, options) {
661
814
  const etherIn = trade.inputAmount.currency.isNative;
662
815
  const etherOut = trade.outputAmount.currency.isNative;
663
- invariant4(!(etherIn && etherOut), "ETHER_IN_OUT");
664
- invariant4(!("ttl" in options) || options.ttl > 0, "TTL");
816
+ invariant5(!(etherIn && etherOut), "ETHER_IN_OUT");
817
+ invariant5(!("ttl" in options) || options.ttl > 0, "TTL");
665
818
  const to = validateAndParseAddress(options.recipient);
666
819
  const amountIn = toHex(trade.maximumAmountIn(options.allowedSlippage));
667
820
  const amountOut = toHex(trade.minimumAmountOut(options.allowedSlippage));
@@ -688,7 +841,7 @@ var Router = class {
688
841
  }
689
842
  break;
690
843
  case TradeType.EXACT_OUTPUT:
691
- invariant4(!useFeeOnTransfer, "EXACT_OUT_FOT");
844
+ invariant5(!useFeeOnTransfer, "EXACT_OUT_FOT");
692
845
  if (etherIn) {
693
846
  methodName = "swapETHForExactTokens";
694
847
  args = [amountOut, path, to, deadline];
@@ -717,7 +870,7 @@ var _Ether = class extends NativeCurrency {
717
870
  }
718
871
  get wrapped() {
719
872
  const weth9 = WETH9[this.chainId];
720
- invariant4(!!weth9, "WRAPPED");
873
+ invariant5(!!weth9, "WRAPPED");
721
874
  return weth9;
722
875
  }
723
876
  static onChain(chainId) {
@@ -1526,7 +1679,7 @@ var Fetcher = class {
1526
1679
  * @param provider the provider to use to fetch the data
1527
1680
  */
1528
1681
  static async fetchPairData(tokenA, tokenB, publicClient = getDefaultClient(tokenA.chainId)) {
1529
- invariant4(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1682
+ invariant5(tokenA.chainId === tokenB.chainId, "CHAIN_ID");
1530
1683
  const address = Pair.getAddress(tokenA, tokenB);
1531
1684
  const pairContract = getContract({
1532
1685
  abi: pancakePairV2ABI,
@@ -1542,4 +1695,4 @@ var Fetcher = class {
1542
1695
  }
1543
1696
  };
1544
1697
 
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 };
1698
+ 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.2.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
  },