sushi 6.3.1 → 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 (188) hide show
  1. package/_cjs/generic/chain/chains.js +4 -2
  2. package/_cjs/generic/chain/chains.js.map +1 -1
  3. package/_cjs/generic/currency/serialized-currency.js +2 -0
  4. package/_cjs/generic/currency/serialized-currency.js.map +1 -1
  5. package/_cjs/svm/chain/chains.js +54 -0
  6. package/_cjs/svm/chain/chains.js.map +1 -0
  7. package/_cjs/svm/chain/define-chain.js +13 -0
  8. package/_cjs/svm/chain/define-chain.js.map +1 -0
  9. package/_cjs/svm/chain/index.js +19 -0
  10. package/_cjs/svm/chain/index.js.map +1 -0
  11. package/_cjs/svm/config/index.js +19 -0
  12. package/_cjs/svm/config/index.js.map +1 -0
  13. package/_cjs/svm/config/simple-constants.js +6 -0
  14. package/_cjs/svm/config/simple-constants.js.map +1 -0
  15. package/_cjs/svm/config/tokens/index.js +19 -0
  16. package/_cjs/svm/config/tokens/index.js.map +1 -0
  17. package/_cjs/svm/config/tokens/token-maps/default-bases.js +21 -0
  18. package/_cjs/svm/config/tokens/token-maps/default-bases.js.map +1 -0
  19. package/_cjs/svm/config/tokens/token-maps/default-quote.js +13 -0
  20. package/_cjs/svm/config/tokens/token-maps/default-quote.js.map +1 -0
  21. package/_cjs/svm/config/tokens/token-maps/index.js +20 -0
  22. package/_cjs/svm/config/tokens/token-maps/index.js.map +1 -0
  23. package/_cjs/svm/config/tokens/token-maps/stables.js +20 -0
  24. package/_cjs/svm/config/tokens/token-maps/stables.js.map +1 -0
  25. package/_cjs/svm/config/tokens/tokens/USDC.js +18 -0
  26. package/_cjs/svm/config/tokens/tokens/USDC.js.map +1 -0
  27. package/_cjs/svm/config/tokens/tokens/USDT.js +18 -0
  28. package/_cjs/svm/config/tokens/tokens/USDT.js.map +1 -0
  29. package/_cjs/svm/config/tokens/tokens/WBTC.js +18 -0
  30. package/_cjs/svm/config/tokens/tokens/WBTC.js.map +1 -0
  31. package/_cjs/svm/config/tokens/tokens/WETH.js +18 -0
  32. package/_cjs/svm/config/tokens/tokens/WETH.js.map +1 -0
  33. package/_cjs/svm/config/tokens/tokens/WSOL.js +18 -0
  34. package/_cjs/svm/config/tokens/tokens/WSOL.js.map +1 -0
  35. package/_cjs/svm/config/tokens/tokens/index.js +22 -0
  36. package/_cjs/svm/config/tokens/tokens/index.js.map +1 -0
  37. package/_cjs/svm/config/tokens/wrapped-native.js +12 -0
  38. package/_cjs/svm/config/tokens/wrapped-native.js.map +1 -0
  39. package/_cjs/svm/currency/currency.js +17 -0
  40. package/_cjs/svm/currency/currency.js.map +1 -0
  41. package/_cjs/svm/currency/deserialize-currency.js +14 -0
  42. package/_cjs/svm/currency/deserialize-currency.js.map +1 -0
  43. package/_cjs/svm/currency/index.js +22 -0
  44. package/_cjs/svm/currency/index.js.map +1 -0
  45. package/_cjs/svm/currency/native.js +90 -0
  46. package/_cjs/svm/currency/native.js.map +1 -0
  47. package/_cjs/svm/currency/token.js +88 -0
  48. package/_cjs/svm/currency/token.js.map +1 -0
  49. package/_cjs/svm/currency/unwrap-token.js +15 -0
  50. package/_cjs/svm/currency/unwrap-token.js.map +1 -0
  51. package/_cjs/svm/index.js +20 -0
  52. package/_cjs/svm/index.js.map +1 -0
  53. package/_esm/generic/chain/chains.js +2 -0
  54. package/_esm/generic/chain/chains.js.map +1 -1
  55. package/_esm/generic/currency/serialized-currency.js +2 -0
  56. package/_esm/generic/currency/serialized-currency.js.map +1 -1
  57. package/_esm/svm/chain/chains.js +46 -0
  58. package/_esm/svm/chain/chains.js.map +1 -0
  59. package/_esm/svm/chain/define-chain.js +10 -0
  60. package/_esm/svm/chain/define-chain.js.map +1 -0
  61. package/_esm/svm/chain/index.js +3 -0
  62. package/_esm/svm/chain/index.js.map +1 -0
  63. package/_esm/svm/config/index.js +3 -0
  64. package/_esm/svm/config/index.js.map +1 -0
  65. package/_esm/svm/config/simple-constants.js +3 -0
  66. package/_esm/svm/config/simple-constants.js.map +1 -0
  67. package/_esm/svm/config/tokens/index.js +3 -0
  68. package/_esm/svm/config/tokens/index.js.map +1 -0
  69. package/_esm/svm/config/tokens/token-maps/default-bases.js +18 -0
  70. package/_esm/svm/config/tokens/token-maps/default-bases.js.map +1 -0
  71. package/_esm/svm/config/tokens/token-maps/default-quote.js +10 -0
  72. package/_esm/svm/config/tokens/token-maps/default-quote.js.map +1 -0
  73. package/_esm/svm/config/tokens/token-maps/index.js +4 -0
  74. package/_esm/svm/config/tokens/token-maps/index.js.map +1 -0
  75. package/_esm/svm/config/tokens/token-maps/stables.js +16 -0
  76. package/_esm/svm/config/tokens/token-maps/stables.js.map +1 -0
  77. package/_esm/svm/config/tokens/tokens/USDC.js +15 -0
  78. package/_esm/svm/config/tokens/tokens/USDC.js.map +1 -0
  79. package/_esm/svm/config/tokens/tokens/USDT.js +15 -0
  80. package/_esm/svm/config/tokens/tokens/USDT.js.map +1 -0
  81. package/_esm/svm/config/tokens/tokens/WBTC.js +15 -0
  82. package/_esm/svm/config/tokens/tokens/WBTC.js.map +1 -0
  83. package/_esm/svm/config/tokens/tokens/WETH.js +15 -0
  84. package/_esm/svm/config/tokens/tokens/WETH.js.map +1 -0
  85. package/_esm/svm/config/tokens/tokens/WSOL.js +15 -0
  86. package/_esm/svm/config/tokens/tokens/WSOL.js.map +1 -0
  87. package/_esm/svm/config/tokens/tokens/index.js +6 -0
  88. package/_esm/svm/config/tokens/tokens/index.js.map +1 -0
  89. package/_esm/svm/config/tokens/wrapped-native.js +9 -0
  90. package/_esm/svm/config/tokens/wrapped-native.js.map +1 -0
  91. package/_esm/svm/currency/currency.js +16 -0
  92. package/_esm/svm/currency/currency.js.map +1 -0
  93. package/_esm/svm/currency/deserialize-currency.js +12 -0
  94. package/_esm/svm/currency/deserialize-currency.js.map +1 -0
  95. package/_esm/svm/currency/index.js +6 -0
  96. package/_esm/svm/currency/index.js.map +1 -0
  97. package/_esm/svm/currency/native.js +52 -0
  98. package/_esm/svm/currency/native.js.map +1 -0
  99. package/_esm/svm/currency/token.js +49 -0
  100. package/_esm/svm/currency/token.js.map +1 -0
  101. package/_esm/svm/currency/unwrap-token.js +12 -0
  102. package/_esm/svm/currency/unwrap-token.js.map +1 -0
  103. package/_esm/svm/index.js +4 -0
  104. package/_esm/svm/index.js.map +1 -0
  105. package/_types/generic/chain/chains.d.ts +25 -1
  106. package/_types/generic/chain/chains.d.ts.map +1 -1
  107. package/_types/generic/chain/interface.d.ts +2 -1
  108. package/_types/generic/chain/interface.d.ts.map +1 -1
  109. package/_types/generic/currency/serialized-currency.d.ts +20 -2
  110. package/_types/generic/currency/serialized-currency.d.ts.map +1 -1
  111. package/_types/svm/chain/chains.d.ts +42 -0
  112. package/_types/svm/chain/chains.d.ts.map +1 -0
  113. package/_types/svm/chain/define-chain.d.ts +22 -0
  114. package/_types/svm/chain/define-chain.d.ts.map +1 -0
  115. package/_types/svm/chain/index.d.ts +3 -0
  116. package/_types/svm/chain/index.d.ts.map +1 -0
  117. package/_types/svm/config/index.d.ts +3 -0
  118. package/_types/svm/config/index.d.ts.map +1 -0
  119. package/_types/svm/config/simple-constants.d.ts +2 -0
  120. package/_types/svm/config/simple-constants.d.ts.map +1 -0
  121. package/_types/svm/config/tokens/index.d.ts +3 -0
  122. package/_types/svm/config/tokens/index.d.ts.map +1 -0
  123. package/_types/svm/config/tokens/token-maps/default-bases.d.ts +5 -0
  124. package/_types/svm/config/tokens/token-maps/default-bases.d.ts.map +1 -0
  125. package/_types/svm/config/tokens/token-maps/default-quote.d.ts +8 -0
  126. package/_types/svm/config/tokens/token-maps/default-quote.d.ts.map +1 -0
  127. package/_types/svm/config/tokens/token-maps/index.d.ts +4 -0
  128. package/_types/svm/config/tokens/token-maps/index.d.ts.map +1 -0
  129. package/_types/svm/config/tokens/token-maps/stables.d.ts +7 -0
  130. package/_types/svm/config/tokens/token-maps/stables.d.ts.map +1 -0
  131. package/_types/svm/config/tokens/tokens/USDC.d.ts +8 -0
  132. package/_types/svm/config/tokens/tokens/USDC.d.ts.map +1 -0
  133. package/_types/svm/config/tokens/tokens/USDT.d.ts +8 -0
  134. package/_types/svm/config/tokens/tokens/USDT.d.ts.map +1 -0
  135. package/_types/svm/config/tokens/tokens/WBTC.d.ts +8 -0
  136. package/_types/svm/config/tokens/tokens/WBTC.d.ts.map +1 -0
  137. package/_types/svm/config/tokens/tokens/WETH.d.ts +8 -0
  138. package/_types/svm/config/tokens/tokens/WETH.d.ts.map +1 -0
  139. package/_types/svm/config/tokens/tokens/WSOL.d.ts +8 -0
  140. package/_types/svm/config/tokens/tokens/WSOL.d.ts.map +1 -0
  141. package/_types/svm/config/tokens/tokens/index.d.ts +6 -0
  142. package/_types/svm/config/tokens/tokens/index.d.ts.map +1 -0
  143. package/_types/svm/config/tokens/wrapped-native.d.ts +7 -0
  144. package/_types/svm/config/tokens/wrapped-native.d.ts.map +1 -0
  145. package/_types/svm/currency/currency.d.ts +30 -0
  146. package/_types/svm/currency/currency.d.ts.map +1 -0
  147. package/_types/svm/currency/deserialize-currency.d.ts +6 -0
  148. package/_types/svm/currency/deserialize-currency.d.ts.map +1 -0
  149. package/_types/svm/currency/index.d.ts +6 -0
  150. package/_types/svm/currency/index.d.ts.map +1 -0
  151. package/_types/svm/currency/native.d.ts +25 -0
  152. package/_types/svm/currency/native.d.ts.map +1 -0
  153. package/_types/svm/currency/token.d.ts +31 -0
  154. package/_types/svm/currency/token.d.ts.map +1 -0
  155. package/_types/svm/currency/unwrap-token.d.ts +3 -0
  156. package/_types/svm/currency/unwrap-token.d.ts.map +1 -0
  157. package/_types/svm/index.d.ts +4 -0
  158. package/_types/svm/index.d.ts.map +1 -0
  159. package/generic/chain/chains.test.ts +7 -0
  160. package/generic/chain/chains.ts +2 -0
  161. package/generic/chain/interface.ts +2 -0
  162. package/generic/currency/currency.test-d.ts +56 -1
  163. package/generic/currency/serialized-currency.ts +7 -0
  164. package/package.json +15 -1
  165. package/svm/chain/chains.ts +93 -0
  166. package/svm/chain/define-chain.ts +50 -0
  167. package/svm/chain/index.ts +2 -0
  168. package/svm/config/index.ts +2 -0
  169. package/svm/config/simple-constants.ts +3 -0
  170. package/svm/config/tokens/index.ts +2 -0
  171. package/svm/config/tokens/token-maps/default-bases.ts +19 -0
  172. package/svm/config/tokens/token-maps/default-quote.ts +14 -0
  173. package/svm/config/tokens/token-maps/index.ts +3 -0
  174. package/svm/config/tokens/token-maps/stables.ts +22 -0
  175. package/svm/config/tokens/tokens/USDC.ts +18 -0
  176. package/svm/config/tokens/tokens/USDT.ts +18 -0
  177. package/svm/config/tokens/tokens/WBTC.ts +18 -0
  178. package/svm/config/tokens/tokens/WETH.ts +18 -0
  179. package/svm/config/tokens/tokens/WSOL.ts +18 -0
  180. package/svm/config/tokens/tokens/index.ts +5 -0
  181. package/svm/config/tokens/wrapped-native.ts +10 -0
  182. package/svm/currency/currency.ts +31 -0
  183. package/svm/currency/deserialize-currency.ts +17 -0
  184. package/svm/currency/index.ts +5 -0
  185. package/svm/currency/native.ts +81 -0
  186. package/svm/currency/token.ts +89 -0
  187. package/svm/currency/unwrap-token.ts +15 -0
  188. package/svm/index.ts +3 -0
@@ -0,0 +1,7 @@
1
+ export declare const SVM_WNATIVE_ADDRESS: {
2
+ [-5]: import("@solana/addresses").Address<"So11111111111111111111111111111111111111112">;
3
+ };
4
+ export declare const SVM_WNATIVE: {
5
+ [-5]: import("../../index.js").SvmToken<Record<string, unknown>>;
6
+ };
7
+ //# sourceMappingURL=wrapped-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapped-native.d.ts","sourceRoot":"","sources":["../../../../svm/config/tokens/wrapped-native.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;CAE/B,CAAA;AAED,eAAO,MAAM,WAAW;;CAEvB,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ import type { CurrencyMetadata } from '../../generic/currency/currency.js';
3
+ import { type SvmNative } from './native.js';
4
+ import { type SvmToken } from './token.js';
5
+ export type SvmCurrency<TMetadata extends CurrencyMetadata = Record<string, unknown>> = SvmToken<TMetadata> | SvmNative;
6
+ export declare const serializedSvmCurrencySchema: <TMetadata extends {} = CurrencyMetadata>(opts?: {
7
+ metadata?: z.ZodType<TMetadata>;
8
+ }) => z.ZodDiscriminatedUnion<[z.ZodObject<{
9
+ chainId: z.ZodPipe<z.ZodNumber, z.ZodTransform<-5, number>>;
10
+ address: z.ZodPipe<z.ZodString, z.ZodTransform<import("@solana/addresses/dist/types/address.js").Address, string>>;
11
+ symbol: z.ZodString;
12
+ name: z.ZodString;
13
+ decimals: z.ZodNumber;
14
+ type: z.ZodLiteral<"token">;
15
+ metadata: z.ZodType<TMetadata, unknown, z.core.$ZodTypeInternals<TMetadata, unknown>>;
16
+ }, z.core.$strip>, z.ZodObject<{
17
+ chainId: z.ZodPipe<z.ZodNumber, z.ZodTransform<-5, number>>;
18
+ symbol: z.ZodString;
19
+ name: z.ZodString;
20
+ decimals: z.ZodNumber;
21
+ type: z.ZodLiteral<"native">;
22
+ metadata: z.ZodType<TMetadata, unknown, z.core.$ZodTypeInternals<TMetadata, unknown>>;
23
+ }, z.core.$strip>], "type">;
24
+ /**
25
+ *
26
+ * @returns The address of the currency. If the currency is native, returns the native address constant.
27
+ */
28
+ export declare function getSvmCurrencyAddress(currency: SvmCurrency): import("@solana/addresses/dist/types/address.js").Address;
29
+ export type SerializedSvmCurrency<TMetadata extends CurrencyMetadata = CurrencyMetadata> = z.infer<ReturnType<typeof serializedSvmCurrencySchema<TMetadata>>>;
30
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../../svm/currency/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAE1E,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,KAAK,QAAQ,EAA4B,MAAM,YAAY,CAAA;AAEpE,MAAM,MAAM,WAAW,CACrB,SAAS,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC1D,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;AAEnC,eAAO,MAAM,2BAA2B,GACtC,SAAS,SAAS,EAAE,GAAG,gBAAgB,EAEvC,OAAM;IAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;CAAO;;;;;;;;;;;;;;;2BAK5C,CAAA;AAEJ;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,6DAE1D;AAED,MAAM,MAAM,qBAAqB,CAC/B,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { type SerializedSvmNative, SvmNative } from './native.js';
2
+ import { type SerializedSvmToken, SvmToken } from './token.js';
3
+ declare function deserializeSvmCurrency(data: SerializedSvmToken): SvmToken;
4
+ declare function deserializeSvmCurrency(data: SerializedSvmNative): SvmNative;
5
+ export { deserializeSvmCurrency };
6
+ //# sourceMappingURL=deserialize-currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deserialize-currency.d.ts","sourceRoot":"","sources":["../../../svm/currency/deserialize-currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE9D,iBAAS,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,GAAG,QAAQ,CAAA;AACnE,iBAAS,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CAAA;AAYrE,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './currency.js';
2
+ export * from './deserialize-currency.js';
3
+ export * from './native.js';
4
+ export * from './token.js';
5
+ export * from './unwrap-token.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../svm/currency/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,2BAA2B,CAAA;AACzC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,25 @@
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 { type SvmChainId } from '../chain/chains.js';
5
+ import { SvmToken } from './token.js';
6
+ export declare class SvmNative<TMetadata extends CurrencyMetadata = Record<string, unknown>> extends Native<SvmChainId, TMetadata> {
7
+ wrap(): SvmToken<TMetadata>;
8
+ toJSON(): SerializedSvmNative<TMetadata>;
9
+ static fromJSON<TMetadata extends CurrencyMetadata>(data: Omit<SerializedSvmNative<TMetadata>, 'metadata'> & {
10
+ metadata?: TMetadata;
11
+ }): SvmNative<TMetadata>;
12
+ static fromChainId(chainId: SvmChainId): SvmNative;
13
+ }
14
+ export declare const serializedSvmNativeSchema: <TMetadata extends {} = CurrencyMetadata>({ metadata, }?: {
15
+ metadata?: z.ZodType<TMetadata>;
16
+ }) => z.ZodObject<{
17
+ chainId: z.ZodPipe<z.ZodNumber, z.ZodTransform<-5, number>>;
18
+ symbol: z.ZodString;
19
+ name: z.ZodString;
20
+ decimals: z.ZodNumber;
21
+ type: z.ZodLiteral<"native">;
22
+ metadata: z.ZodType<TMetadata>;
23
+ }, z.core.$strip>;
24
+ export type SerializedSvmNative<TMetadata extends CurrencyMetadata = CurrencyMetadata> = z.infer<ReturnType<typeof serializedSvmNativeSchema<TMetadata>>>;
25
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../svm/currency/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,qBAAa,SAAS,CACpB,SAAS,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC5D,SAAQ,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;IACrB,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC;IAO3B,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC;IAYxD,MAAM,CAAC,QAAQ,CAAC,SAAS,SAAS,gBAAgB,EAChD,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;QACvD,QAAQ,CAAC,EAAE,SAAS,CAAA;KACrB,GACA,SAAS,CAAC,SAAS,CAAC;IAIvB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;CAUnD;AAED,eAAO,MAAM,yBAAyB,GACpC,SAAS,SAAS,EAAE,GAAG,gBAAgB,EACvC,gBAEC;IACD,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;CAC3B;;;;;;cAgBmB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;iBACzC,CAAA;AAEJ,MAAM,MAAM,mBAAmB,CAC7B,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { isAddress as isSvmAddress, type Address as SvmAddress, address as svmAddress } from '@solana/addresses';
2
+ import * as z from 'zod';
3
+ import type { CurrencyMetadata } from '../../generic/currency/currency.js';
4
+ import { Token } from '../../generic/currency/token.js';
5
+ import { type SvmChainId } from '../chain/chains.js';
6
+ export { type SvmAddress, svmAddress, isSvmAddress };
7
+ export type SvmTokenOrigin = 'native' | 'native-bridge';
8
+ export declare class SvmToken<TMetadata extends CurrencyMetadata = Record<string, unknown>> extends Token<SvmChainId, SvmAddress, TMetadata> {
9
+ readonly origin: SvmTokenOrigin | undefined;
10
+ constructor({ origin, ...rest }: {
11
+ origin?: SvmTokenOrigin | undefined;
12
+ } & ConstructorParameters<typeof Token<SvmChainId, SvmAddress, TMetadata>>[0]);
13
+ wrap(): SvmToken<TMetadata>;
14
+ toJSON(): SerializedSvmToken<TMetadata>;
15
+ static fromJSON<TMetadata extends CurrencyMetadata>(data: Omit<SerializedSvmToken<TMetadata>, 'metadata'> & {
16
+ metadata?: TMetadata;
17
+ }): SvmToken<TMetadata>;
18
+ }
19
+ export declare const serializedSvmTokenSchema: <TMetadata extends {} = CurrencyMetadata>({ metadata, }?: {
20
+ metadata?: z.ZodType<TMetadata>;
21
+ }) => z.ZodObject<{
22
+ chainId: z.ZodPipe<z.ZodNumber, z.ZodTransform<-5, number>>;
23
+ address: z.ZodPipe<z.ZodString, z.ZodTransform<SvmAddress, string>>;
24
+ symbol: z.ZodString;
25
+ name: z.ZodString;
26
+ decimals: z.ZodNumber;
27
+ type: z.ZodLiteral<"token">;
28
+ metadata: z.ZodType<TMetadata>;
29
+ }, z.core.$strip>;
30
+ export type SerializedSvmToken<TMetadata extends CurrencyMetadata = CurrencyMetadata> = z.infer<ReturnType<typeof serializedSvmTokenSchema<TMetadata>>>;
31
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../svm/currency/token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,IAAI,YAAY,EACzB,KAAK,OAAO,IAAI,UAAU,EAC1B,OAAO,IAAI,UAAU,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACvD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAElE,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,CAAA;AAEpD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,eAAe,CAAA;AAEvD,qBAAa,QAAQ,CACnB,SAAS,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC5D,SAAQ,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC;IAChD,SAAgB,MAAM,EAAE,cAAc,GAAG,SAAS,CAAA;gBAEtC,EACV,MAAM,EACN,GAAG,IAAI,EACR,EAAE;QACD,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;KACpC,GAAG,qBAAqB,CACvB,OAAO,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAChD,CAAC,CAAC,CAAC;IAKY,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC;IAI3B,MAAM,IAAI,kBAAkB,CAAC,SAAS,CAAC;IAavD,MAAM,CAAC,QAAQ,CAAC,SAAS,SAAS,gBAAgB,EAChD,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;QACtD,QAAQ,CAAC,EAAE,SAAS,CAAA;KACrB,GACA,QAAQ,CAAC,SAAS,CAAC;CAGvB;AAED,eAAO,MAAM,wBAAwB,GACnC,SAAS,SAAS,EAAE,GAAG,gBAAgB,EACvC,gBAEC;IACD,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;CAC3B;;;;;;;cAoBmB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;iBACzC,CAAA;AAEJ,MAAM,MAAM,kBAAkB,CAC5B,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { SvmCurrency } from './currency.js';
2
+ export declare function unwrapSvmToken(currency: SvmCurrency): SvmCurrency;
3
+ //# sourceMappingURL=unwrap-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrap-token.d.ts","sourceRoot":"","sources":["../../../svm/currency/unwrap-token.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAUjE"}
@@ -0,0 +1,4 @@
1
+ export * from './chain/index.js';
2
+ export * from './config/index.js';
3
+ export * from './currency/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../svm/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
@@ -15,6 +15,13 @@ describe('generic/chain/chains.ts functions', () => {
15
15
  expect(id).toBe(1)
16
16
  })
17
17
 
18
+ it('should return an id for solana chain key', () => {
19
+ const id = ChainId.SOLANA
20
+
21
+ expect(id).toBeDefined()
22
+ expect(id).toBe(-5)
23
+ })
24
+
18
25
  it('should return undefined for an invalid chain key', () => {
19
26
  expect((ChainId as any).STRING).toBeUndefined()
20
27
  })
@@ -2,6 +2,7 @@ import { evmChains } from '../../evm/chain/index.js'
2
2
  import { kvmChains } from '../../kvm/chain/chains.js'
3
3
  import { mvmChains } from '../../mvm/chain/chains.js'
4
4
  import { stellarChains } from '../../stellar/chain/chains.js'
5
+ import { svmChains } from '../../svm/chain/chains.js'
5
6
  import { tvmChains } from '../../tvm/chain/chains.js'
6
7
  import type { Replace } from '../types/replace.js'
7
8
  import type { UnionToIntersection } from '../types/union-to-intersection.js'
@@ -12,6 +13,7 @@ export const chains = [
12
13
  ...tvmChains,
13
14
  ...kvmChains,
14
15
  ...stellarChains,
16
+ ...svmChains,
15
17
  ] as const
16
18
 
17
19
  // ChainId
@@ -2,6 +2,7 @@ import type { EvmChainType } from '../../evm/chain/define-chain.js'
2
2
  import type { KvmChainType } from '../../kvm/chain/define-chain.js'
3
3
  import type { MvmChainType } from '../../mvm/chain/define-chain.js'
4
4
  import type { StellarChainType } from '../../stellar/chain/define-chain.js'
5
+ import type { SvmChainType } from '../../svm/chain/define-chain.js'
5
6
  import type { TvmChainType } from '../../tvm/chain/define-chain.js'
6
7
  import type { ChainId, ChainKey } from './chains.js'
7
8
 
@@ -11,6 +12,7 @@ export type ChainType =
11
12
  | TvmChainType
12
13
  | KvmChainType
13
14
  | StellarChainType
15
+ | SvmChainType
14
16
 
15
17
  export type NetType = 'mainnet' | 'testnet'
16
18
 
@@ -5,6 +5,7 @@ import type { EvmChainId } from '~/evm/chain/chains.js'
5
5
  import type { EvmCurrency } from '~/evm/currency/currency.js'
6
6
  import type { EvmID } from '~/evm/types/id.js'
7
7
  import { KvmToken } from '~/kvm/index.js'
8
+ import { svmAddress } from '~/svm/currency/token.js'
8
9
  import { EvmNative } from '../../evm/currency/native.js'
9
10
  import {
10
11
  type EvmAddress,
@@ -13,6 +14,12 @@ import {
13
14
  serializedEvmTokenSchema,
14
15
  } from '../../evm/currency/token.js'
15
16
  import { MvmToken } from '../../mvm/currency/token.js'
17
+ import {
18
+ type SvmAddress,
19
+ type SvmChainId,
20
+ SvmNative,
21
+ SvmToken,
22
+ } from '../../svm/index.js'
16
23
  import { TvmNative } from '../../tvm/currency/native.js'
17
24
  import { TvmToken } from '../../tvm/currency/token.js'
18
25
  import { getChainIdAddressFromId } from '../utils/id.js'
@@ -37,6 +44,17 @@ describe('generic/currency/currency.ts types', () => {
37
44
  expectTypeOf(evmMockNative.id).toEqualTypeOf<`${EvmChainId}:NATIVE`>()
38
45
  })
39
46
 
47
+ it('should return the correct id for SvmNative', () => {
48
+ const svmMockNative = new SvmNative({
49
+ chainId: -5,
50
+ symbol: 'SVM',
51
+ name: 'Svm Native',
52
+ decimals: 9,
53
+ })
54
+
55
+ expectTypeOf(svmMockNative.id).toEqualTypeOf<`${SvmChainId}:NATIVE`>()
56
+ })
57
+
40
58
  it('should return the correct id for EvmToken', () => {
41
59
  const evmMockToken = new EvmToken({
42
60
  chainId: 1,
@@ -50,6 +68,20 @@ describe('generic/currency/currency.ts types', () => {
50
68
  evmMockToken.id,
51
69
  ).toEqualTypeOf<`${EvmChainId}:${EvmAddress}`>()
52
70
  })
71
+
72
+ it('should return the correct id for SvmToken', () => {
73
+ const svmMockToken = new SvmToken({
74
+ chainId: -5,
75
+ address: svmAddress('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
76
+ symbol: 'USDC',
77
+ name: 'USD Coin',
78
+ decimals: 6,
79
+ })
80
+
81
+ expectTypeOf(
82
+ svmMockToken.id,
83
+ ).toEqualTypeOf<`${SvmChainId}:${SvmAddress}`>()
84
+ })
53
85
  })
54
86
 
55
87
  describe('wrapCurrency', () => {
@@ -100,7 +132,7 @@ describe('generic/currency/currency.ts types', () => {
100
132
  expect(tvmMockToken.address).toBe('t1234567890abcdef1234567890abcdef1')
101
133
  })
102
134
 
103
- it('should not lowercase the address - Kvm', () => {
135
+ it('should not lowercase the address - Kvm / Svm', () => {
104
136
  const kvmMockToken = new KvmToken({
105
137
  chainId: -3,
106
138
  symbol: 'KVM',
@@ -110,6 +142,18 @@ describe('generic/currency/currency.ts types', () => {
110
142
  })
111
143
 
112
144
  expect(kvmMockToken.address).toBe('My-Namespace.My-Token')
145
+
146
+ const svmMockToken = new SvmToken({
147
+ chainId: -5,
148
+ symbol: 'USDC',
149
+ name: 'USD Coin',
150
+ decimals: 6,
151
+ address: svmAddress('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
152
+ })
153
+
154
+ expect(svmMockToken.address).toBe(
155
+ 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
156
+ )
113
157
  })
114
158
 
115
159
  it('should return the same chaintype - Mvm', () => {
@@ -135,6 +179,17 @@ describe('generic/currency/currency.ts types', () => {
135
179
  expectTypeOf(tvmMockToken.wrap()).toEqualTypeOf<TvmToken>()
136
180
  })
137
181
 
182
+ it('should return the same chaintype - Svm', () => {
183
+ const svmMockNative = new SvmNative({
184
+ chainId: -5,
185
+ symbol: 'SVM',
186
+ name: 'Svm Native',
187
+ decimals: 9,
188
+ })
189
+
190
+ expectTypeOf(svmMockNative.wrap()).toEqualTypeOf<SvmToken>()
191
+ })
192
+
138
193
  it('should return the same chaintype - Kvm', () => {
139
194
  const kvmMockToken = new KvmToken({
140
195
  chainId: -3,
@@ -4,6 +4,9 @@ import type { serializedEvmNativeSchema } from '../../evm/currency/native.js'
4
4
  import type { serializedEvmTokenSchema } from '../../evm/currency/token.js'
5
5
  import { serializedKvmTokenSchema } from '../../kvm/currency/token.js'
6
6
  import { serializedMvmTokenSchema } from '../../mvm/currency/token.js'
7
+ import { serializedSvmCurrencySchema } from '../../svm/currency/currency.js'
8
+ import type { serializedSvmNativeSchema } from '../../svm/currency/native.js'
9
+ import type { serializedSvmTokenSchema } from '../../svm/index.js'
7
10
  import {
8
11
  serializedTvmCurrencySchema,
9
12
  type serializedTvmNativeSchema,
@@ -23,6 +26,9 @@ export type SerializedCurrencySchema<
23
26
  | typeof serializedTvmCurrencySchema<TMetadata>
24
27
  | typeof serializedCurrencySchema<TMetadata>
25
28
  | typeof serializedKvmTokenSchema<TMetadata>
29
+ | typeof serializedSvmNativeSchema<TMetadata>
30
+ | typeof serializedSvmTokenSchema<TMetadata>
31
+ | typeof serializedSvmCurrencySchema<TMetadata>
26
32
  >
27
33
 
28
34
  export const serializedCurrencySchema = <
@@ -35,6 +41,7 @@ export const serializedCurrencySchema = <
35
41
  serializedMvmTokenSchema(opts),
36
42
  serializedTvmCurrencySchema(opts),
37
43
  serializedKvmTokenSchema(opts),
44
+ serializedSvmCurrencySchema(opts),
38
45
  ])
39
46
 
40
47
  export type SerializedCurrency<
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sushi",
3
3
  "description": "Sushi",
4
- "version": "6.3.1",
4
+ "version": "6.4.0",
5
5
  "type": "module",
6
6
  "main": "./_cjs/generic/index.js",
7
7
  "module": "./_esm/generic/index.js",
@@ -17,6 +17,7 @@
17
17
  "tvm",
18
18
  "kvm",
19
19
  "stellar",
20
+ "svm",
20
21
  "package.json"
21
22
  ],
22
23
  "exports": {
@@ -56,6 +57,12 @@
56
57
  "require": "./_cjs/stellar/index.js",
57
58
  "default": "./_esm/stellar/index.js"
58
59
  },
60
+ "./svm": {
61
+ "types": "./_types/svm/index.d.ts",
62
+ "import": "./_esm/svm/index.js",
63
+ "require": "./_cjs/svm/index.js",
64
+ "default": "./_esm/svm/index.js"
65
+ },
59
66
  "./package.json": "./package.json"
60
67
  },
61
68
  "typesVersions": {
@@ -74,6 +81,9 @@
74
81
  ],
75
82
  "stellar": [
76
83
  "_types/stellar/index.d.ts"
84
+ ],
85
+ "svm": [
86
+ "_types/svm/index.d.ts"
77
87
  ]
78
88
  }
79
89
  },
@@ -82,11 +92,15 @@
82
92
  "tiny-invariant": "1.3.3"
83
93
  },
84
94
  "peerDependencies": {
95
+ "@solana/addresses": ">=5",
85
96
  "typescript": ">= 5.8.3 < 6",
86
97
  "viem": "*",
87
98
  "zod": ">=4"
88
99
  },
89
100
  "peerDependenciesMeta": {
101
+ "@solana/addresses": {
102
+ "optional": true
103
+ },
90
104
  "typescript": {
91
105
  "optional": true
92
106
  },
@@ -0,0 +1,93 @@
1
+ import type { Replace } from '../../generic/types/replace.js'
2
+ import type { UnionToIntersection } from '../../generic/types/union-to-intersection.js'
3
+ import { defineSvmChain } from './define-chain.js'
4
+
5
+ const solana = defineSvmChain({
6
+ chainId: -5,
7
+ key: 'solana',
8
+ shortName: 'sol',
9
+ name: 'Solana',
10
+ blockExplorers: {
11
+ default: {
12
+ name: 'Solscan',
13
+ url: 'https://solscan.io',
14
+ },
15
+ },
16
+ netType: 'mainnet',
17
+ nativeCurrency: {
18
+ name: 'Solana',
19
+ symbol: 'SOL',
20
+ decimals: 9,
21
+ },
22
+ })
23
+
24
+ export const svmChains = [solana] as const
25
+
26
+ export const svmChainIds = /* @__PURE__ */ svmChains.map(
27
+ (chain) => chain.chainId,
28
+ )
29
+
30
+ export type SvmChainId = (typeof svmChainIds)[number]
31
+
32
+ type SvmChainIdMap = UnionToIntersection<
33
+ (typeof svmChains)[number] extends infer I
34
+ ? I extends { key: infer K; chainId: infer C }
35
+ ? K extends string
36
+ ? { [key in K as Uppercase<Replace<key, '-', '_'>>]: C }
37
+ : never
38
+ : never
39
+ : never
40
+ >
41
+
42
+ export const SvmChainId = /* @__PURE__ */ new Proxy<SvmChainIdMap>(
43
+ {} as SvmChainIdMap,
44
+ {
45
+ get: (_: unknown, key: keyof SvmChainIdMap) => {
46
+ const _key = key.toLowerCase().replace(/_/g, '-') as SvmChainKey
47
+ const chain = svmChains.find((chain) => chain.key === _key)
48
+
49
+ if (!chain) return undefined
50
+
51
+ return chain.chainId
52
+ },
53
+ },
54
+ )
55
+
56
+ export function isSvmChainId(chainId: number): chainId is SvmChainId {
57
+ return svmChains.some((chain) => chain.chainId === chainId)
58
+ }
59
+
60
+ export function getSvmChainById<C extends SvmChainId>(chainId: C) {
61
+ return svmChains.find((chain) => chain.chainId === chainId)! as Extract<
62
+ (typeof svmChains)[number],
63
+ { chainId: C }
64
+ >
65
+ }
66
+
67
+ // SvmMainnetChainId
68
+ export type SvmMainnetChainId = Extract<
69
+ (typeof svmChains)[number],
70
+ { netType: 'mainnet' }
71
+ >['chainId']
72
+
73
+ export function isSvmMainnetChainId(
74
+ chainId: number,
75
+ ): chainId is SvmMainnetChainId {
76
+ return svmChains.some(
77
+ (chain) => chain.chainId === chainId && chain.netType === 'mainnet',
78
+ )
79
+ }
80
+
81
+ // SvmChainKey
82
+ export type SvmChainKey = (typeof svmChains)[number]['key']
83
+
84
+ export function isSvmChainKey(key: string): key is SvmChainKey {
85
+ return svmChains.some((chain) => chain.key === key)
86
+ }
87
+
88
+ export function getSvmChainByKey<C extends SvmChainKey>(key: C) {
89
+ return svmChains.find((chain) => chain.key === key)! as Extract<
90
+ (typeof svmChains)[number],
91
+ { key: C }
92
+ >
93
+ }
@@ -0,0 +1,50 @@
1
+ import type {
2
+ BlockExplorers,
3
+ Chain,
4
+ NetType,
5
+ } from '../../generic/chain/interface.js'
6
+ import type { SvmAddress } from '../currency/token.js'
7
+ import type { SvmChainId, SvmChainKey } from './chains.js'
8
+
9
+ export type SvmChainType = 'svm'
10
+
11
+ type SvmChainNativeCurrency = {
12
+ name: string
13
+ symbol: string
14
+ decimals: number
15
+ }
16
+
17
+ type SvmChainBase<TChainId extends number, TChainKey extends string> = Chain<
18
+ SvmChainType,
19
+ // @ts-expect-error infinite loop
20
+ TChainId,
21
+ TChainKey,
22
+ Readonly<string>,
23
+ Readonly<string>,
24
+ NetType,
25
+ BlockExplorers,
26
+ SvmAddress,
27
+ string
28
+ > & {
29
+ nativeCurrency: SvmChainNativeCurrency
30
+ }
31
+
32
+ export type SvmChain = SvmChainBase<SvmChainId, SvmChainKey>
33
+
34
+ type SvmChainInput = Omit<
35
+ SvmChainBase<number, string>,
36
+ 'type' | 'getTransactionUrl' | 'getAccountUrl' | 'getTokenUrl'
37
+ >
38
+
39
+ export function defineSvmChain<const T extends SvmChainInput>(chain: T) {
40
+ return {
41
+ ...chain,
42
+ type: 'svm' as const,
43
+ getTransactionUrl: (input: string) =>
44
+ `${chain.blockExplorers.default.url}/tx/${input}`,
45
+ getAccountUrl: (input: string) =>
46
+ `${chain.blockExplorers.default.url}/account/${input}`,
47
+ getTokenUrl: (input: SvmAddress) =>
48
+ `${chain.blockExplorers.default.url}/token/${input}`,
49
+ } as const satisfies SvmChainBase<number, string>
50
+ }
@@ -0,0 +1,2 @@
1
+ export * from './chains.js'
2
+ export * from './define-chain.js'
@@ -0,0 +1,2 @@
1
+ export * from './simple-constants.js'
2
+ export * from './tokens/index.js'
@@ -0,0 +1,3 @@
1
+ import { svmAddress } from '../currency/token.js'
2
+
3
+ export const svmNativeAddress = svmAddress('11111111111111111111111111111111')
@@ -0,0 +1,2 @@
1
+ export * from './tokens/index.js'
2
+ export * from './wrapped-native.js'
@@ -0,0 +1,19 @@
1
+ import { SvmChainId } from '../../../../svm/chain/index.js'
2
+ import type { SvmCurrency } from '../../../../svm/currency/currency.js'
3
+ import { SvmNative } from '../../../../svm/currency/native.js'
4
+ import { SVM_USDC } from '../tokens/USDC.js'
5
+ import { SVM_USDT } from '../tokens/USDT.js'
6
+ import { SVM_WBTC } from '../tokens/WBTC.js'
7
+ import { SVM_WETH } from '../tokens/WETH.js'
8
+ import { WSOL } from '../tokens/WSOL.js'
9
+
10
+ export const SVM_DEFAULT_BASES = {
11
+ [SvmChainId.SOLANA]: [
12
+ SvmNative.fromChainId(SvmChainId.SOLANA),
13
+ WSOL[SvmChainId.SOLANA],
14
+ SVM_USDC[SvmChainId.SOLANA],
15
+ SVM_USDT[SvmChainId.SOLANA],
16
+ SVM_WBTC[SvmChainId.SOLANA],
17
+ SVM_WETH[SvmChainId.SOLANA],
18
+ ],
19
+ } as const satisfies Record<SvmChainId, Readonly<SvmCurrency[]>>
@@ -0,0 +1,14 @@
1
+ import { SvmChainId, svmChainIds } from '../../../../svm/chain/index.js'
2
+ import type { SvmCurrency } from '../../../../svm/currency/currency.js'
3
+ import { SvmNative } from '../../../../svm/currency/native.js'
4
+ import { SVM_USDC } from '../tokens/USDC.js'
5
+
6
+ export const svmDefaultCurrency = {
7
+ ...(Object.fromEntries(
8
+ svmChainIds.map((chainId) => [chainId, SvmNative.fromChainId(chainId)]),
9
+ ) as Record<SvmChainId, SvmCurrency>),
10
+ } as const satisfies Record<SvmChainId, SvmCurrency>
11
+
12
+ export const svmDefaultQuoteCurrency = {
13
+ [SvmChainId.SOLANA]: SVM_USDC[SvmChainId.SOLANA],
14
+ } as const satisfies Record<SvmChainId, SvmCurrency>
@@ -0,0 +1,3 @@
1
+ export * from './default-bases.js'
2
+ export * from './default-quote.js'
3
+ export * from './stables.js'
@@ -0,0 +1,22 @@
1
+ import { SvmChainId } from '../../../../svm/chain/index.js'
2
+ import type { SvmCurrency } from '../../../../svm/currency/currency.js'
3
+ import type { SvmToken } from '../../../../svm/currency/token.js'
4
+ import { SVM_USDC } from '../tokens/USDC.js'
5
+ import { SVM_USDT } from '../tokens/USDT.js'
6
+
7
+ export const SVM_STABLES = {
8
+ [SvmChainId.SOLANA]: [
9
+ SVM_USDC[SvmChainId.SOLANA],
10
+ SVM_USDT[SvmChainId.SOLANA],
11
+ ],
12
+ } as const satisfies Record<SvmChainId, SvmToken[]>
13
+
14
+ export function isSvmStable(currency: SvmCurrency): boolean {
15
+ if (currency.type === 'native') {
16
+ return false
17
+ }
18
+
19
+ return SVM_STABLES[currency.chainId]?.some(
20
+ (stable) => stable.address.toLowerCase() === currency.address.toLowerCase(),
21
+ )
22
+ }
@@ -0,0 +1,18 @@
1
+ import { SvmChainId } from '../../../../svm/chain/index.js'
2
+ import { SvmToken, svmAddress } from '../../../../svm/currency/token.js'
3
+
4
+ export const SVM_USDC_ADDRESS = {
5
+ [SvmChainId.SOLANA]: svmAddress(
6
+ 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
7
+ ),
8
+ } as const
9
+
10
+ export const SVM_USDC = {
11
+ [SvmChainId.SOLANA]: new SvmToken({
12
+ chainId: SvmChainId.SOLANA,
13
+ address: SVM_USDC_ADDRESS[SvmChainId.SOLANA],
14
+ decimals: 6,
15
+ symbol: 'USDC',
16
+ name: 'USD Coin',
17
+ }),
18
+ } as const