sushi 6.3.0 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/_cjs/evm/api/quote.js +60 -27
  2. package/_cjs/evm/api/quote.js.map +1 -1
  3. package/_cjs/evm/api/swap.js +53 -20
  4. package/_cjs/evm/api/swap.js.map +1 -1
  5. package/_cjs/evm/currency/currency.js +35 -2
  6. package/_cjs/evm/currency/currency.js.map +1 -1
  7. package/_cjs/generic/chain/chains.js +4 -2
  8. package/_cjs/generic/chain/chains.js.map +1 -1
  9. package/_cjs/generic/currency/serialized-currency.js +2 -0
  10. package/_cjs/generic/currency/serialized-currency.js.map +1 -1
  11. package/_cjs/svm/chain/chains.js +54 -0
  12. package/_cjs/svm/chain/chains.js.map +1 -0
  13. package/_cjs/svm/chain/define-chain.js +13 -0
  14. package/_cjs/svm/chain/define-chain.js.map +1 -0
  15. package/_cjs/svm/chain/index.js +19 -0
  16. package/_cjs/svm/chain/index.js.map +1 -0
  17. package/_cjs/svm/config/index.js +19 -0
  18. package/_cjs/svm/config/index.js.map +1 -0
  19. package/_cjs/svm/config/simple-constants.js +6 -0
  20. package/_cjs/svm/config/simple-constants.js.map +1 -0
  21. package/_cjs/svm/config/tokens/index.js +19 -0
  22. package/_cjs/svm/config/tokens/index.js.map +1 -0
  23. package/_cjs/svm/config/tokens/token-maps/default-bases.js +21 -0
  24. package/_cjs/svm/config/tokens/token-maps/default-bases.js.map +1 -0
  25. package/_cjs/svm/config/tokens/token-maps/default-quote.js +13 -0
  26. package/_cjs/svm/config/tokens/token-maps/default-quote.js.map +1 -0
  27. package/_cjs/svm/config/tokens/token-maps/index.js +20 -0
  28. package/_cjs/svm/config/tokens/token-maps/index.js.map +1 -0
  29. package/_cjs/svm/config/tokens/token-maps/stables.js +20 -0
  30. package/_cjs/svm/config/tokens/token-maps/stables.js.map +1 -0
  31. package/_cjs/svm/config/tokens/tokens/USDC.js +18 -0
  32. package/_cjs/svm/config/tokens/tokens/USDC.js.map +1 -0
  33. package/_cjs/svm/config/tokens/tokens/USDT.js +18 -0
  34. package/_cjs/svm/config/tokens/tokens/USDT.js.map +1 -0
  35. package/_cjs/svm/config/tokens/tokens/WBTC.js +18 -0
  36. package/_cjs/svm/config/tokens/tokens/WBTC.js.map +1 -0
  37. package/_cjs/svm/config/tokens/tokens/WETH.js +18 -0
  38. package/_cjs/svm/config/tokens/tokens/WETH.js.map +1 -0
  39. package/_cjs/svm/config/tokens/tokens/WSOL.js +18 -0
  40. package/_cjs/svm/config/tokens/tokens/WSOL.js.map +1 -0
  41. package/_cjs/svm/config/tokens/tokens/index.js +22 -0
  42. package/_cjs/svm/config/tokens/tokens/index.js.map +1 -0
  43. package/_cjs/svm/config/tokens/wrapped-native.js +12 -0
  44. package/_cjs/svm/config/tokens/wrapped-native.js.map +1 -0
  45. package/_cjs/svm/currency/currency.js +17 -0
  46. package/_cjs/svm/currency/currency.js.map +1 -0
  47. package/_cjs/svm/currency/deserialize-currency.js +14 -0
  48. package/_cjs/svm/currency/deserialize-currency.js.map +1 -0
  49. package/_cjs/svm/currency/index.js +22 -0
  50. package/_cjs/svm/currency/index.js.map +1 -0
  51. package/_cjs/svm/currency/native.js +90 -0
  52. package/_cjs/svm/currency/native.js.map +1 -0
  53. package/_cjs/svm/currency/token.js +88 -0
  54. package/_cjs/svm/currency/token.js.map +1 -0
  55. package/_cjs/svm/currency/unwrap-token.js +15 -0
  56. package/_cjs/svm/currency/unwrap-token.js.map +1 -0
  57. package/_cjs/svm/index.js +20 -0
  58. package/_cjs/svm/index.js.map +1 -0
  59. package/_esm/evm/api/quote.js +1 -1
  60. package/_esm/evm/api/quote.js.map +1 -1
  61. package/_esm/evm/api/swap.js +1 -1
  62. package/_esm/evm/api/swap.js.map +1 -1
  63. package/_esm/evm/currency/currency.js +1 -1
  64. package/_esm/evm/currency/currency.js.map +1 -1
  65. package/_esm/generic/chain/chains.js +2 -0
  66. package/_esm/generic/chain/chains.js.map +1 -1
  67. package/_esm/generic/currency/serialized-currency.js +2 -0
  68. package/_esm/generic/currency/serialized-currency.js.map +1 -1
  69. package/_esm/svm/chain/chains.js +46 -0
  70. package/_esm/svm/chain/chains.js.map +1 -0
  71. package/_esm/svm/chain/define-chain.js +10 -0
  72. package/_esm/svm/chain/define-chain.js.map +1 -0
  73. package/_esm/svm/chain/index.js +3 -0
  74. package/_esm/svm/chain/index.js.map +1 -0
  75. package/_esm/svm/config/index.js +3 -0
  76. package/_esm/svm/config/index.js.map +1 -0
  77. package/_esm/svm/config/simple-constants.js +3 -0
  78. package/_esm/svm/config/simple-constants.js.map +1 -0
  79. package/_esm/svm/config/tokens/index.js +3 -0
  80. package/_esm/svm/config/tokens/index.js.map +1 -0
  81. package/_esm/svm/config/tokens/token-maps/default-bases.js +18 -0
  82. package/_esm/svm/config/tokens/token-maps/default-bases.js.map +1 -0
  83. package/_esm/svm/config/tokens/token-maps/default-quote.js +10 -0
  84. package/_esm/svm/config/tokens/token-maps/default-quote.js.map +1 -0
  85. package/_esm/svm/config/tokens/token-maps/index.js +4 -0
  86. package/_esm/svm/config/tokens/token-maps/index.js.map +1 -0
  87. package/_esm/svm/config/tokens/token-maps/stables.js +16 -0
  88. package/_esm/svm/config/tokens/token-maps/stables.js.map +1 -0
  89. package/_esm/svm/config/tokens/tokens/USDC.js +15 -0
  90. package/_esm/svm/config/tokens/tokens/USDC.js.map +1 -0
  91. package/_esm/svm/config/tokens/tokens/USDT.js +15 -0
  92. package/_esm/svm/config/tokens/tokens/USDT.js.map +1 -0
  93. package/_esm/svm/config/tokens/tokens/WBTC.js +15 -0
  94. package/_esm/svm/config/tokens/tokens/WBTC.js.map +1 -0
  95. package/_esm/svm/config/tokens/tokens/WETH.js +15 -0
  96. package/_esm/svm/config/tokens/tokens/WETH.js.map +1 -0
  97. package/_esm/svm/config/tokens/tokens/WSOL.js +15 -0
  98. package/_esm/svm/config/tokens/tokens/WSOL.js.map +1 -0
  99. package/_esm/svm/config/tokens/tokens/index.js +6 -0
  100. package/_esm/svm/config/tokens/tokens/index.js.map +1 -0
  101. package/_esm/svm/config/tokens/wrapped-native.js +9 -0
  102. package/_esm/svm/config/tokens/wrapped-native.js.map +1 -0
  103. package/_esm/svm/currency/currency.js +16 -0
  104. package/_esm/svm/currency/currency.js.map +1 -0
  105. package/_esm/svm/currency/deserialize-currency.js +12 -0
  106. package/_esm/svm/currency/deserialize-currency.js.map +1 -0
  107. package/_esm/svm/currency/index.js +6 -0
  108. package/_esm/svm/currency/index.js.map +1 -0
  109. package/_esm/svm/currency/native.js +52 -0
  110. package/_esm/svm/currency/native.js.map +1 -0
  111. package/_esm/svm/currency/token.js +49 -0
  112. package/_esm/svm/currency/token.js.map +1 -0
  113. package/_esm/svm/currency/unwrap-token.js +12 -0
  114. package/_esm/svm/currency/unwrap-token.js.map +1 -0
  115. package/_esm/svm/index.js +4 -0
  116. package/_esm/svm/index.js.map +1 -0
  117. package/_types/evm/api/quote.d.ts +1 -1
  118. package/_types/evm/api/quote.d.ts.map +1 -1
  119. package/_types/evm/api/swap.d.ts +1 -1
  120. package/_types/evm/api/swap.d.ts.map +1 -1
  121. package/_types/evm/currency/currency.d.ts +1 -1
  122. package/_types/evm/currency/currency.d.ts.map +1 -1
  123. package/_types/generic/chain/chains.d.ts +25 -1
  124. package/_types/generic/chain/chains.d.ts.map +1 -1
  125. package/_types/generic/chain/interface.d.ts +2 -1
  126. package/_types/generic/chain/interface.d.ts.map +1 -1
  127. package/_types/generic/currency/serialized-currency.d.ts +20 -2
  128. package/_types/generic/currency/serialized-currency.d.ts.map +1 -1
  129. package/_types/svm/chain/chains.d.ts +42 -0
  130. package/_types/svm/chain/chains.d.ts.map +1 -0
  131. package/_types/svm/chain/define-chain.d.ts +22 -0
  132. package/_types/svm/chain/define-chain.d.ts.map +1 -0
  133. package/_types/svm/chain/index.d.ts +3 -0
  134. package/_types/svm/chain/index.d.ts.map +1 -0
  135. package/_types/svm/config/index.d.ts +3 -0
  136. package/_types/svm/config/index.d.ts.map +1 -0
  137. package/_types/svm/config/simple-constants.d.ts +2 -0
  138. package/_types/svm/config/simple-constants.d.ts.map +1 -0
  139. package/_types/svm/config/tokens/index.d.ts +3 -0
  140. package/_types/svm/config/tokens/index.d.ts.map +1 -0
  141. package/_types/svm/config/tokens/token-maps/default-bases.d.ts +5 -0
  142. package/_types/svm/config/tokens/token-maps/default-bases.d.ts.map +1 -0
  143. package/_types/svm/config/tokens/token-maps/default-quote.d.ts +8 -0
  144. package/_types/svm/config/tokens/token-maps/default-quote.d.ts.map +1 -0
  145. package/_types/svm/config/tokens/token-maps/index.d.ts +4 -0
  146. package/_types/svm/config/tokens/token-maps/index.d.ts.map +1 -0
  147. package/_types/svm/config/tokens/token-maps/stables.d.ts +7 -0
  148. package/_types/svm/config/tokens/token-maps/stables.d.ts.map +1 -0
  149. package/_types/svm/config/tokens/tokens/USDC.d.ts +8 -0
  150. package/_types/svm/config/tokens/tokens/USDC.d.ts.map +1 -0
  151. package/_types/svm/config/tokens/tokens/USDT.d.ts +8 -0
  152. package/_types/svm/config/tokens/tokens/USDT.d.ts.map +1 -0
  153. package/_types/svm/config/tokens/tokens/WBTC.d.ts +8 -0
  154. package/_types/svm/config/tokens/tokens/WBTC.d.ts.map +1 -0
  155. package/_types/svm/config/tokens/tokens/WETH.d.ts +8 -0
  156. package/_types/svm/config/tokens/tokens/WETH.d.ts.map +1 -0
  157. package/_types/svm/config/tokens/tokens/WSOL.d.ts +8 -0
  158. package/_types/svm/config/tokens/tokens/WSOL.d.ts.map +1 -0
  159. package/_types/svm/config/tokens/tokens/index.d.ts +6 -0
  160. package/_types/svm/config/tokens/tokens/index.d.ts.map +1 -0
  161. package/_types/svm/config/tokens/wrapped-native.d.ts +7 -0
  162. package/_types/svm/config/tokens/wrapped-native.d.ts.map +1 -0
  163. package/_types/svm/currency/currency.d.ts +30 -0
  164. package/_types/svm/currency/currency.d.ts.map +1 -0
  165. package/_types/svm/currency/deserialize-currency.d.ts +6 -0
  166. package/_types/svm/currency/deserialize-currency.d.ts.map +1 -0
  167. package/_types/svm/currency/index.d.ts +6 -0
  168. package/_types/svm/currency/index.d.ts.map +1 -0
  169. package/_types/svm/currency/native.d.ts +25 -0
  170. package/_types/svm/currency/native.d.ts.map +1 -0
  171. package/_types/svm/currency/token.d.ts +31 -0
  172. package/_types/svm/currency/token.d.ts.map +1 -0
  173. package/_types/svm/currency/unwrap-token.d.ts +3 -0
  174. package/_types/svm/currency/unwrap-token.d.ts.map +1 -0
  175. package/_types/svm/index.d.ts +4 -0
  176. package/_types/svm/index.d.ts.map +1 -0
  177. package/evm/api/quote.ts +1 -1
  178. package/evm/api/swap.ts +1 -1
  179. package/evm/currency/currency.ts +1 -1
  180. package/generic/chain/chains.test.ts +7 -0
  181. package/generic/chain/chains.ts +2 -0
  182. package/generic/chain/interface.ts +2 -0
  183. package/generic/currency/currency.test-d.ts +56 -1
  184. package/generic/currency/serialized-currency.ts +7 -0
  185. package/package.json +18 -1
  186. package/svm/chain/chains.ts +93 -0
  187. package/svm/chain/define-chain.ts +50 -0
  188. package/svm/chain/index.ts +2 -0
  189. package/svm/config/index.ts +2 -0
  190. package/svm/config/simple-constants.ts +3 -0
  191. package/svm/config/tokens/index.ts +2 -0
  192. package/svm/config/tokens/token-maps/default-bases.ts +19 -0
  193. package/svm/config/tokens/token-maps/default-quote.ts +14 -0
  194. package/svm/config/tokens/token-maps/index.ts +3 -0
  195. package/svm/config/tokens/token-maps/stables.ts +22 -0
  196. package/svm/config/tokens/tokens/USDC.ts +18 -0
  197. package/svm/config/tokens/tokens/USDT.ts +18 -0
  198. package/svm/config/tokens/tokens/WBTC.ts +18 -0
  199. package/svm/config/tokens/tokens/WETH.ts +18 -0
  200. package/svm/config/tokens/tokens/WSOL.ts +18 -0
  201. package/svm/config/tokens/tokens/index.ts +5 -0
  202. package/svm/config/tokens/wrapped-native.ts +10 -0
  203. package/svm/currency/currency.ts +31 -0
  204. package/svm/currency/deserialize-currency.ts +17 -0
  205. package/svm/currency/index.ts +5 -0
  206. package/svm/currency/native.ts +81 -0
  207. package/svm/currency/token.ts +89 -0
  208. package/svm/currency/unwrap-token.ts +15 -0
  209. package/svm/index.ts +3 -0
@@ -0,0 +1,81 @@
1
+ import * as z from 'zod'
2
+ import type { CurrencyMetadata } from '~/generic/currency/currency.js'
3
+ import { Native } from '../../generic/currency/native.js'
4
+ import {
5
+ getSvmChainById,
6
+ isSvmChainId,
7
+ type SvmChainId,
8
+ } from '../chain/chains.js'
9
+ import { SVM_WNATIVE } from '../config/index.js'
10
+ import { SvmToken } from './token.js'
11
+
12
+ export class SvmNative<
13
+ TMetadata extends CurrencyMetadata = Record<string, unknown>,
14
+ > extends Native<SvmChainId, TMetadata> {
15
+ public override wrap(): SvmToken<TMetadata> {
16
+ return new SvmToken({
17
+ ...SVM_WNATIVE[this.chainId],
18
+ metadata: structuredClone(this.metadata),
19
+ })
20
+ }
21
+
22
+ public override toJSON(): SerializedSvmNative<TMetadata> {
23
+ return {
24
+ chainId: this.chainId,
25
+ symbol: this.symbol,
26
+ name: this.name,
27
+ decimals: this.decimals,
28
+ type: this.type,
29
+
30
+ metadata: this.metadata,
31
+ } as const
32
+ }
33
+
34
+ static fromJSON<TMetadata extends CurrencyMetadata>(
35
+ data: Omit<SerializedSvmNative<TMetadata>, 'metadata'> & {
36
+ metadata?: TMetadata
37
+ },
38
+ ): SvmNative<TMetadata> {
39
+ return new this(data)
40
+ }
41
+
42
+ static fromChainId(chainId: SvmChainId): SvmNative {
43
+ const chain = getSvmChainById(chainId)
44
+
45
+ return new SvmNative({
46
+ chainId,
47
+ symbol: chain.nativeCurrency.symbol,
48
+ name: chain.nativeCurrency.name,
49
+ decimals: chain.nativeCurrency.decimals,
50
+ })
51
+ }
52
+ }
53
+
54
+ export const serializedSvmNativeSchema = <
55
+ TMetadata extends {} = CurrencyMetadata,
56
+ >({
57
+ metadata,
58
+ }: {
59
+ metadata?: z.ZodType<TMetadata>
60
+ } = {}) =>
61
+ z.object({
62
+ chainId: z
63
+ .number()
64
+ .int()
65
+ .refine(isSvmChainId)
66
+ .transform((chainId) => chainId as SvmChainId),
67
+ symbol: z.string(),
68
+ name: z.string(),
69
+ decimals: z.number().int().nonnegative(),
70
+ type: z.literal('native'),
71
+
72
+ metadata: (metadata ||
73
+ z
74
+ .record(z.string(), z.unknown())
75
+ .optional()
76
+ .default({})) as z.ZodType<TMetadata>,
77
+ })
78
+
79
+ export type SerializedSvmNative<
80
+ TMetadata extends CurrencyMetadata = CurrencyMetadata,
81
+ > = z.infer<ReturnType<typeof serializedSvmNativeSchema<TMetadata>>>
@@ -0,0 +1,89 @@
1
+ import {
2
+ isAddress as isSvmAddress,
3
+ type Address as SvmAddress,
4
+ address as svmAddress,
5
+ } from '@solana/addresses'
6
+ import * as z from 'zod'
7
+ import type { CurrencyMetadata } from '../../generic/currency/currency.js'
8
+ import { Token } from '../../generic/currency/token.js'
9
+ import { isSvmChainId, type SvmChainId } from '../chain/chains.js'
10
+
11
+ export { type SvmAddress, svmAddress, isSvmAddress }
12
+
13
+ export type SvmTokenOrigin = 'native' | 'native-bridge'
14
+
15
+ export class SvmToken<
16
+ TMetadata extends CurrencyMetadata = Record<string, unknown>,
17
+ > extends Token<SvmChainId, SvmAddress, TMetadata> {
18
+ public readonly origin: SvmTokenOrigin | undefined
19
+
20
+ constructor({
21
+ origin,
22
+ ...rest
23
+ }: {
24
+ origin?: SvmTokenOrigin | undefined
25
+ } & ConstructorParameters<
26
+ typeof Token<SvmChainId, SvmAddress, TMetadata>
27
+ >[0]) {
28
+ super({ ...rest })
29
+ this.origin = origin
30
+ }
31
+
32
+ public override wrap(): SvmToken<TMetadata> {
33
+ return this
34
+ }
35
+
36
+ public override toJSON(): SerializedSvmToken<TMetadata> {
37
+ return {
38
+ chainId: this.chainId,
39
+ address: this.address,
40
+ symbol: this.symbol,
41
+ name: this.name,
42
+ decimals: this.decimals,
43
+ type: this.type,
44
+
45
+ metadata: this.metadata,
46
+ } as const
47
+ }
48
+
49
+ static fromJSON<TMetadata extends CurrencyMetadata>(
50
+ data: Omit<SerializedSvmToken<TMetadata>, 'metadata'> & {
51
+ metadata?: TMetadata
52
+ },
53
+ ): SvmToken<TMetadata> {
54
+ return new this(data)
55
+ }
56
+ }
57
+
58
+ export const serializedSvmTokenSchema = <
59
+ TMetadata extends {} = CurrencyMetadata,
60
+ >({
61
+ metadata,
62
+ }: {
63
+ metadata?: z.ZodType<TMetadata>
64
+ } = {}) =>
65
+ z.object({
66
+ chainId: z
67
+ .number()
68
+ .int()
69
+ .refine(isSvmChainId)
70
+ .transform((chainId) => chainId as SvmChainId),
71
+ address: z
72
+ .string()
73
+ .refine(isSvmAddress)
74
+ .transform((address) => address as SvmAddress),
75
+ symbol: z.string(),
76
+ name: z.string(),
77
+ decimals: z.number().int().nonnegative(),
78
+ type: z.literal('token'),
79
+
80
+ metadata: (metadata ||
81
+ z
82
+ .record(z.string(), z.unknown())
83
+ .optional()
84
+ .default({})) as z.ZodType<TMetadata>,
85
+ })
86
+
87
+ export type SerializedSvmToken<
88
+ TMetadata extends CurrencyMetadata = CurrencyMetadata,
89
+ > = z.infer<ReturnType<typeof serializedSvmTokenSchema<TMetadata>>>
@@ -0,0 +1,15 @@
1
+ import { SVM_WNATIVE_ADDRESS } from '../config/index.js'
2
+ import type { SvmCurrency } from './currency.js'
3
+ import { SvmNative } from './native.js'
4
+
5
+ export function unwrapSvmToken(currency: SvmCurrency): SvmCurrency {
6
+ if (currency.type === 'native') {
7
+ return currency
8
+ }
9
+
10
+ if (currency.address === SVM_WNATIVE_ADDRESS[currency.chainId]) {
11
+ return SvmNative.fromChainId(currency.chainId)
12
+ }
13
+
14
+ return currency
15
+ }
package/svm/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './chain/index.js'
2
+ export * from './config/index.js'
3
+ export * from './currency/index.js'