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.
- package/_cjs/generic/chain/chains.js +4 -2
- package/_cjs/generic/chain/chains.js.map +1 -1
- package/_cjs/generic/currency/serialized-currency.js +2 -0
- package/_cjs/generic/currency/serialized-currency.js.map +1 -1
- package/_cjs/svm/chain/chains.js +54 -0
- package/_cjs/svm/chain/chains.js.map +1 -0
- package/_cjs/svm/chain/define-chain.js +13 -0
- package/_cjs/svm/chain/define-chain.js.map +1 -0
- package/_cjs/svm/chain/index.js +19 -0
- package/_cjs/svm/chain/index.js.map +1 -0
- package/_cjs/svm/config/index.js +19 -0
- package/_cjs/svm/config/index.js.map +1 -0
- package/_cjs/svm/config/simple-constants.js +6 -0
- package/_cjs/svm/config/simple-constants.js.map +1 -0
- package/_cjs/svm/config/tokens/index.js +19 -0
- package/_cjs/svm/config/tokens/index.js.map +1 -0
- package/_cjs/svm/config/tokens/token-maps/default-bases.js +21 -0
- package/_cjs/svm/config/tokens/token-maps/default-bases.js.map +1 -0
- package/_cjs/svm/config/tokens/token-maps/default-quote.js +13 -0
- package/_cjs/svm/config/tokens/token-maps/default-quote.js.map +1 -0
- package/_cjs/svm/config/tokens/token-maps/index.js +20 -0
- package/_cjs/svm/config/tokens/token-maps/index.js.map +1 -0
- package/_cjs/svm/config/tokens/token-maps/stables.js +20 -0
- package/_cjs/svm/config/tokens/token-maps/stables.js.map +1 -0
- package/_cjs/svm/config/tokens/tokens/USDC.js +18 -0
- package/_cjs/svm/config/tokens/tokens/USDC.js.map +1 -0
- package/_cjs/svm/config/tokens/tokens/USDT.js +18 -0
- package/_cjs/svm/config/tokens/tokens/USDT.js.map +1 -0
- package/_cjs/svm/config/tokens/tokens/WBTC.js +18 -0
- package/_cjs/svm/config/tokens/tokens/WBTC.js.map +1 -0
- package/_cjs/svm/config/tokens/tokens/WETH.js +18 -0
- package/_cjs/svm/config/tokens/tokens/WETH.js.map +1 -0
- package/_cjs/svm/config/tokens/tokens/WSOL.js +18 -0
- package/_cjs/svm/config/tokens/tokens/WSOL.js.map +1 -0
- package/_cjs/svm/config/tokens/tokens/index.js +22 -0
- package/_cjs/svm/config/tokens/tokens/index.js.map +1 -0
- package/_cjs/svm/config/tokens/wrapped-native.js +12 -0
- package/_cjs/svm/config/tokens/wrapped-native.js.map +1 -0
- package/_cjs/svm/currency/currency.js +17 -0
- package/_cjs/svm/currency/currency.js.map +1 -0
- package/_cjs/svm/currency/deserialize-currency.js +14 -0
- package/_cjs/svm/currency/deserialize-currency.js.map +1 -0
- package/_cjs/svm/currency/index.js +22 -0
- package/_cjs/svm/currency/index.js.map +1 -0
- package/_cjs/svm/currency/native.js +90 -0
- package/_cjs/svm/currency/native.js.map +1 -0
- package/_cjs/svm/currency/token.js +88 -0
- package/_cjs/svm/currency/token.js.map +1 -0
- package/_cjs/svm/currency/unwrap-token.js +15 -0
- package/_cjs/svm/currency/unwrap-token.js.map +1 -0
- package/_cjs/svm/index.js +20 -0
- package/_cjs/svm/index.js.map +1 -0
- package/_esm/generic/chain/chains.js +2 -0
- package/_esm/generic/chain/chains.js.map +1 -1
- package/_esm/generic/currency/serialized-currency.js +2 -0
- package/_esm/generic/currency/serialized-currency.js.map +1 -1
- package/_esm/svm/chain/chains.js +46 -0
- package/_esm/svm/chain/chains.js.map +1 -0
- package/_esm/svm/chain/define-chain.js +10 -0
- package/_esm/svm/chain/define-chain.js.map +1 -0
- package/_esm/svm/chain/index.js +3 -0
- package/_esm/svm/chain/index.js.map +1 -0
- package/_esm/svm/config/index.js +3 -0
- package/_esm/svm/config/index.js.map +1 -0
- package/_esm/svm/config/simple-constants.js +3 -0
- package/_esm/svm/config/simple-constants.js.map +1 -0
- package/_esm/svm/config/tokens/index.js +3 -0
- package/_esm/svm/config/tokens/index.js.map +1 -0
- package/_esm/svm/config/tokens/token-maps/default-bases.js +18 -0
- package/_esm/svm/config/tokens/token-maps/default-bases.js.map +1 -0
- package/_esm/svm/config/tokens/token-maps/default-quote.js +10 -0
- package/_esm/svm/config/tokens/token-maps/default-quote.js.map +1 -0
- package/_esm/svm/config/tokens/token-maps/index.js +4 -0
- package/_esm/svm/config/tokens/token-maps/index.js.map +1 -0
- package/_esm/svm/config/tokens/token-maps/stables.js +16 -0
- package/_esm/svm/config/tokens/token-maps/stables.js.map +1 -0
- package/_esm/svm/config/tokens/tokens/USDC.js +15 -0
- package/_esm/svm/config/tokens/tokens/USDC.js.map +1 -0
- package/_esm/svm/config/tokens/tokens/USDT.js +15 -0
- package/_esm/svm/config/tokens/tokens/USDT.js.map +1 -0
- package/_esm/svm/config/tokens/tokens/WBTC.js +15 -0
- package/_esm/svm/config/tokens/tokens/WBTC.js.map +1 -0
- package/_esm/svm/config/tokens/tokens/WETH.js +15 -0
- package/_esm/svm/config/tokens/tokens/WETH.js.map +1 -0
- package/_esm/svm/config/tokens/tokens/WSOL.js +15 -0
- package/_esm/svm/config/tokens/tokens/WSOL.js.map +1 -0
- package/_esm/svm/config/tokens/tokens/index.js +6 -0
- package/_esm/svm/config/tokens/tokens/index.js.map +1 -0
- package/_esm/svm/config/tokens/wrapped-native.js +9 -0
- package/_esm/svm/config/tokens/wrapped-native.js.map +1 -0
- package/_esm/svm/currency/currency.js +16 -0
- package/_esm/svm/currency/currency.js.map +1 -0
- package/_esm/svm/currency/deserialize-currency.js +12 -0
- package/_esm/svm/currency/deserialize-currency.js.map +1 -0
- package/_esm/svm/currency/index.js +6 -0
- package/_esm/svm/currency/index.js.map +1 -0
- package/_esm/svm/currency/native.js +52 -0
- package/_esm/svm/currency/native.js.map +1 -0
- package/_esm/svm/currency/token.js +49 -0
- package/_esm/svm/currency/token.js.map +1 -0
- package/_esm/svm/currency/unwrap-token.js +12 -0
- package/_esm/svm/currency/unwrap-token.js.map +1 -0
- package/_esm/svm/index.js +4 -0
- package/_esm/svm/index.js.map +1 -0
- package/_types/generic/chain/chains.d.ts +25 -1
- package/_types/generic/chain/chains.d.ts.map +1 -1
- package/_types/generic/chain/interface.d.ts +2 -1
- package/_types/generic/chain/interface.d.ts.map +1 -1
- package/_types/generic/currency/serialized-currency.d.ts +20 -2
- package/_types/generic/currency/serialized-currency.d.ts.map +1 -1
- package/_types/svm/chain/chains.d.ts +42 -0
- package/_types/svm/chain/chains.d.ts.map +1 -0
- package/_types/svm/chain/define-chain.d.ts +22 -0
- package/_types/svm/chain/define-chain.d.ts.map +1 -0
- package/_types/svm/chain/index.d.ts +3 -0
- package/_types/svm/chain/index.d.ts.map +1 -0
- package/_types/svm/config/index.d.ts +3 -0
- package/_types/svm/config/index.d.ts.map +1 -0
- package/_types/svm/config/simple-constants.d.ts +2 -0
- package/_types/svm/config/simple-constants.d.ts.map +1 -0
- package/_types/svm/config/tokens/index.d.ts +3 -0
- package/_types/svm/config/tokens/index.d.ts.map +1 -0
- package/_types/svm/config/tokens/token-maps/default-bases.d.ts +5 -0
- package/_types/svm/config/tokens/token-maps/default-bases.d.ts.map +1 -0
- package/_types/svm/config/tokens/token-maps/default-quote.d.ts +8 -0
- package/_types/svm/config/tokens/token-maps/default-quote.d.ts.map +1 -0
- package/_types/svm/config/tokens/token-maps/index.d.ts +4 -0
- package/_types/svm/config/tokens/token-maps/index.d.ts.map +1 -0
- package/_types/svm/config/tokens/token-maps/stables.d.ts +7 -0
- package/_types/svm/config/tokens/token-maps/stables.d.ts.map +1 -0
- package/_types/svm/config/tokens/tokens/USDC.d.ts +8 -0
- package/_types/svm/config/tokens/tokens/USDC.d.ts.map +1 -0
- package/_types/svm/config/tokens/tokens/USDT.d.ts +8 -0
- package/_types/svm/config/tokens/tokens/USDT.d.ts.map +1 -0
- package/_types/svm/config/tokens/tokens/WBTC.d.ts +8 -0
- package/_types/svm/config/tokens/tokens/WBTC.d.ts.map +1 -0
- package/_types/svm/config/tokens/tokens/WETH.d.ts +8 -0
- package/_types/svm/config/tokens/tokens/WETH.d.ts.map +1 -0
- package/_types/svm/config/tokens/tokens/WSOL.d.ts +8 -0
- package/_types/svm/config/tokens/tokens/WSOL.d.ts.map +1 -0
- package/_types/svm/config/tokens/tokens/index.d.ts +6 -0
- package/_types/svm/config/tokens/tokens/index.d.ts.map +1 -0
- package/_types/svm/config/tokens/wrapped-native.d.ts +7 -0
- package/_types/svm/config/tokens/wrapped-native.d.ts.map +1 -0
- package/_types/svm/currency/currency.d.ts +30 -0
- package/_types/svm/currency/currency.d.ts.map +1 -0
- package/_types/svm/currency/deserialize-currency.d.ts +6 -0
- package/_types/svm/currency/deserialize-currency.d.ts.map +1 -0
- package/_types/svm/currency/index.d.ts +6 -0
- package/_types/svm/currency/index.d.ts.map +1 -0
- package/_types/svm/currency/native.d.ts +25 -0
- package/_types/svm/currency/native.d.ts.map +1 -0
- package/_types/svm/currency/token.d.ts +31 -0
- package/_types/svm/currency/token.d.ts.map +1 -0
- package/_types/svm/currency/unwrap-token.d.ts +3 -0
- package/_types/svm/currency/unwrap-token.d.ts.map +1 -0
- package/_types/svm/index.d.ts +4 -0
- package/_types/svm/index.d.ts.map +1 -0
- package/generic/chain/chains.test.ts +7 -0
- package/generic/chain/chains.ts +2 -0
- package/generic/chain/interface.ts +2 -0
- package/generic/currency/currency.test-d.ts +56 -1
- package/generic/currency/serialized-currency.ts +7 -0
- package/package.json +15 -1
- package/svm/chain/chains.ts +93 -0
- package/svm/chain/define-chain.ts +50 -0
- package/svm/chain/index.ts +2 -0
- package/svm/config/index.ts +2 -0
- package/svm/config/simple-constants.ts +3 -0
- package/svm/config/tokens/index.ts +2 -0
- package/svm/config/tokens/token-maps/default-bases.ts +19 -0
- package/svm/config/tokens/token-maps/default-quote.ts +14 -0
- package/svm/config/tokens/token-maps/index.ts +3 -0
- package/svm/config/tokens/token-maps/stables.ts +22 -0
- package/svm/config/tokens/tokens/USDC.ts +18 -0
- package/svm/config/tokens/tokens/USDT.ts +18 -0
- package/svm/config/tokens/tokens/WBTC.ts +18 -0
- package/svm/config/tokens/tokens/WETH.ts +18 -0
- package/svm/config/tokens/tokens/WSOL.ts +18 -0
- package/svm/config/tokens/tokens/index.ts +5 -0
- package/svm/config/tokens/wrapped-native.ts +10 -0
- package/svm/currency/currency.ts +31 -0
- package/svm/currency/deserialize-currency.ts +17 -0
- package/svm/currency/index.ts +5 -0
- package/svm/currency/native.ts +81 -0
- package/svm/currency/token.ts +89 -0
- package/svm/currency/unwrap-token.ts +15 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
})
|
package/generic/chain/chains.ts
CHANGED
|
@@ -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.
|
|
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,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,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
|