sushi 6.6.8 → 6.6.10
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/currency/for-chain.js.map +1 -1
- package/_esm/generic/currency/for-chain.js.map +1 -1
- package/_types/generic/currency/for-chain.d.ts +10 -2
- package/_types/generic/currency/for-chain.d.ts.map +1 -1
- package/_types/generic/types/for-chain.d.ts +1 -1
- package/_types/generic/types/for-chain.d.ts.map +1 -1
- package/generic/currency/for-chain.test-d.ts +25 -1
- package/generic/currency/for-chain.ts +29 -10
- package/generic/types/for-chain.test-d.ts +28 -0
- package/generic/types/for-chain.ts +8 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-chain.js","sourceRoot":"","sources":["../../../generic/currency/for-chain.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"for-chain.js","sourceRoot":"","sources":["../../../generic/currency/for-chain.ts"],"names":[],"mappings":";;AAwEA,oCA6BC;AAED,kCAgDC;AAvJD,yDAIkC;AAClC,4DAAwD;AACxD,0DAAsD;AACtD,yDAAyE;AACzE,0DAAsD;AACtD,6DAGsC;AACtC,8DAA8D;AAC9D,yDAIkC;AAClC,4DAAwD;AACxD,0DAAsD;AAQtD,8DAAsD;AA4CtD,SAAgB,YAAY,CAG1B,OAAiB,EAAE,QAAmB;IACtC,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAA,2BAAe,EAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,IAAI,qBAAS,CAAC;YACnB,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM;YAC7C,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI;YACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ;YACjD,QAAQ;SACT,CAAmC,CAAA;IACtC,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAA,2BAAe,EAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,IAAI,qBAAS,CAAC;YACnB,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM;YACnC,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI;YAC/B,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ;YACvC,QAAQ;SACT,CAAmC,CAAA;IACtC,CAAC;IAED,IAAA,6BAAW,EAAC,OAAO,EAAE,sCAAsC,OAAO,EAAE,CAAC,CAAA;AACvE,CAAC;AAED,SAAgB,WAAW,CAIzB,OAAiB,EACjB,IAAkD;IAElD,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,mBAAQ,CAAC;YAClB,GAAG,IAAI;YACP,OAAO;SACgD,CAGxD,CAAA;IACH,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,mBAAQ,CAAC;YAClB,GAAG,IAAI;YACP,OAAO;SACgD,CAGxD,CAAA;IACH,CAAC;IAED,IAAI,IAAA,wBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,mBAAQ,CAAC;YAClB,GAAG,IAAI;YACP,OAAO;SACgD,CAGxD,CAAA;IACH,CAAC;IAED,IAAI,IAAA,4BAAgB,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,uBAAY,CAAC;YACtB,GAAG,IAAI;YACP,OAAO;SACoD,CAG5D,CAAA;IACH,CAAC;IAED,IAAA,6BAAW,EAAC,OAAO,EAAE,qCAAqC,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-chain.js","sourceRoot":"","sources":["../../../generic/currency/for-chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,YAAY,GACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EACL,gBAAgB,GAEjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,YAAY,GAEb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"for-chain.js","sourceRoot":"","sources":["../../../generic/currency/for-chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,YAAY,GACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EACL,gBAAgB,GAEjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,YAAY,GAEb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAQtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AA4CtD,MAAM,UAAU,YAAY,CAG1B,OAAiB,EAAE,QAAmB;IACtC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,IAAI,SAAS,CAAC;YACnB,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM;YAC7C,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI;YACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ;YACjD,QAAQ;SACT,CAAmC,CAAA;IACtC,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,IAAI,SAAS,CAAC;YACnB,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM;YACnC,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI;YAC/B,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ;YACvC,QAAQ;SACT,CAAmC,CAAA;IACtC,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,sCAAsC,OAAO,EAAE,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,WAAW,CAIzB,OAAiB,EACjB,IAAkD;IAElD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI;YACP,OAAO;SACgD,CAGxD,CAAA;IACH,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI;YACP,OAAO;SACgD,CAGxD,CAAA;IACH,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI;YACP,OAAO;SACgD,CAGxD,CAAA;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,YAAY,CAAC;YACtB,GAAG,IAAI;YACP,OAAO;SACoD,CAG5D,CAAA;IACH,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,qCAAqC,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { StellarToken } from '../../stellar/currency/token.js';
|
|
|
7
7
|
import { type SvmChainId } from '../../svm/chain/chains.js';
|
|
8
8
|
import { SvmToken } from '../../svm/currency/token.js';
|
|
9
9
|
import type { ChainId } from '../chain/chains.js';
|
|
10
|
-
import type { NativeChainId, NativeFor, TokenFor } from '../types/for-chain.js';
|
|
10
|
+
import type { AddressFor, NativeChainId, NativeFor, TokenFor } from '../types/for-chain.js';
|
|
11
11
|
import type { CurrencyMetadata } from './currency.js';
|
|
12
12
|
type ConstructorData<T extends abstract new (...args: any) => any> = ConstructorParameters<T>[0] extends {
|
|
13
13
|
chainId: infer TChainId;
|
|
@@ -18,7 +18,15 @@ type EvmTokenConstructorData<TMetadata extends CurrencyMetadata> = ConstructorDa
|
|
|
18
18
|
type MvmTokenConstructorData<TMetadata extends CurrencyMetadata> = ConstructorData<typeof MvmToken<TMetadata>>;
|
|
19
19
|
type SvmTokenConstructorData<TMetadata extends CurrencyMetadata> = ConstructorData<typeof SvmToken<TMetadata>>;
|
|
20
20
|
type StellarTokenConstructorData<TMetadata extends CurrencyMetadata> = ConstructorData<typeof StellarToken<TMetadata>>;
|
|
21
|
-
|
|
21
|
+
type GenericTokenConstructorData<TChainId extends ChainId, TMetadata extends CurrencyMetadata> = {
|
|
22
|
+
chainId?: TChainId;
|
|
23
|
+
address: AddressFor<TChainId>;
|
|
24
|
+
symbol: string;
|
|
25
|
+
name: string;
|
|
26
|
+
decimals: number;
|
|
27
|
+
metadata?: TMetadata;
|
|
28
|
+
};
|
|
29
|
+
export type TokenConstructorDataFor<TChainId extends ChainId, TMetadata extends CurrencyMetadata = CurrencyMetadata> = GenericTokenConstructorData<TChainId, TMetadata> | (TChainId extends EvmChainId ? EvmTokenConstructorData<TMetadata> : TChainId extends MvmChainId ? MvmTokenConstructorData<TMetadata> : TChainId extends SvmChainId ? SvmTokenConstructorData<TMetadata> : TChainId extends StellarChainId ? StellarTokenConstructorData<TMetadata> : never);
|
|
22
30
|
export declare function getNativeFor<TChainId extends NativeChainId, TMetadata extends CurrencyMetadata>(chainId: TChainId, metadata: TMetadata): NativeFor<TChainId, TMetadata>;
|
|
23
31
|
export declare function getTokenFor<TChainId extends ChainId, TMetadata extends CurrencyMetadata = Record<string, unknown>>(chainId: TChainId, data: TokenConstructorDataFor<TChainId, TMetadata>): TokenFor<TChainId, TMetadata>;
|
|
24
32
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-chain.d.ts","sourceRoot":"","sources":["../../../generic/currency/for-chain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAGhB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"for-chain.d.ts","sourceRoot":"","sources":["../../../generic/currency/for-chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ import type { SvmID } from '../../svm/types/id.js';
|
|
|
18
18
|
import type { ChainId } from '../chain/chains.js';
|
|
19
19
|
import type { CurrencyMetadata } from '../currency/currency.js';
|
|
20
20
|
export type TokenFor<TChainId extends ChainId, Metadata extends CurrencyMetadata = CurrencyMetadata> = TChainId extends EvmChainId ? EvmToken<Metadata> : TChainId extends MvmChainId ? MvmToken<Metadata> : TChainId extends SvmChainId ? SvmToken<Metadata> : TChainId extends StellarChainId ? StellarToken<Metadata> : never;
|
|
21
|
-
export type CurrencyFor<TChainId extends ChainId, Metadata extends CurrencyMetadata = CurrencyMetadata> = TChainId extends EvmChainId ? EvmCurrency<Metadata> : TChainId extends
|
|
21
|
+
export type CurrencyFor<TChainId extends ChainId, Metadata extends CurrencyMetadata = CurrencyMetadata> = TChainId extends EvmChainId ? EvmCurrency<Metadata> : TChainId extends SvmChainId ? SvmCurrency<Metadata> : TChainId extends MvmChainId ? MvmToken<Metadata> : TChainId extends StellarChainId ? StellarCurrency<Metadata> : never;
|
|
22
22
|
export type NativeChainId = EvmChainId | SvmChainId;
|
|
23
23
|
export type NativeFor<TChainId extends NativeChainId, Metadata extends CurrencyMetadata = CurrencyMetadata> = TChainId extends EvmChainId ? EvmNative<Metadata> : TChainId extends SvmChainId ? SvmNative<Metadata> : never;
|
|
24
24
|
export type AddressFor<TChainId extends ChainId> = TChainId extends EvmChainId ? EvmAddress : TChainId extends MvmChainId ? MvmAddress : TChainId extends SvmChainId ? SvmAddress : TChainId extends StellarChainId ? StellarAddress : never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-chain.d.ts","sourceRoot":"","sources":["../../../generic/types/for-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,MAAM,MAAM,QAAQ,CAClB,QAAQ,SAAS,OAAO,EACxB,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB,IAClD,QAAQ,SAAS,UAAU,GAC3B,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,UAAU,GACzB,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,UAAU,GACzB,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,cAAc,GAC7B,YAAY,CAAC,QAAQ,CAAC,GACtB,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"for-chain.d.ts","sourceRoot":"","sources":["../../../generic/types/for-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,MAAM,MAAM,QAAQ,CAClB,QAAQ,SAAS,OAAO,EACxB,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB,IAClD,QAAQ,SAAS,UAAU,GAC3B,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,UAAU,GACzB,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,UAAU,GACzB,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,cAAc,GAC7B,YAAY,CAAC,QAAQ,CAAC,GACtB,KAAK,CAAA;AAMf,MAAM,MAAM,WAAW,CACrB,QAAQ,SAAS,OAAO,EACxB,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB,IAClD,QAAQ,SAAS,UAAU,GAC3B,WAAW,CAAC,QAAQ,CAAC,GACrB,QAAQ,SAAS,UAAU,GACzB,WAAW,CAAC,QAAQ,CAAC,GACrB,QAAQ,SAAS,UAAU,GACzB,QAAQ,CAAC,QAAQ,CAAC,GAClB,QAAQ,SAAS,cAAc,GAC7B,eAAe,CAAC,QAAQ,CAAC,GACzB,KAAK,CAAA;AAEf,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,CAAA;AAEnD,MAAM,MAAM,SAAS,CACnB,QAAQ,SAAS,aAAa,EAC9B,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB,IAClD,QAAQ,SAAS,UAAU,GAC3B,SAAS,CAAC,QAAQ,CAAC,GACnB,QAAQ,SAAS,UAAU,GACzB,SAAS,CAAC,QAAQ,CAAC,GACnB,KAAK,CAAA;AAEX,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,OAAO,IAAI,QAAQ,SAAS,UAAU,GAC1E,UAAU,GACV,QAAQ,SAAS,UAAU,GACzB,UAAU,GACV,QAAQ,SAAS,UAAU,GACzB,UAAU,GACV,QAAQ,SAAS,cAAc,GAC7B,cAAc,GACd,KAAK,CAAA;AAEf,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,OAAO,IAAI,QAAQ,SAAS,UAAU,GACzE,SAAS,GACT,QAAQ,SAAS,UAAU,GACzB,SAAS,GACT,QAAQ,SAAS,UAAU,GACzB,SAAS,GACT,QAAQ,SAAS,cAAc,GAC7B,aAAa,GACb,KAAK,CAAA;AAEf,MAAM,MAAM,KAAK,CACf,QAAQ,SAAS,UAAU,GAAG,UAAU,GAAG,cAAc,EACzD,cAAc,SAAS,OAAO,GAAG,KAAK,IACpC,QAAQ,SAAS,UAAU,GAC3B,KAAK,CAAC,cAAc,CAAC,GACrB,QAAQ,SAAS,UAAU,GACzB,KAAK,CAAC,cAAc,CAAC,GACrB,QAAQ,SAAS,cAAc,GAC7B,SAAS,CAAC,cAAc,CAAC,GACzB,KAAK,CAAA"}
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
type SvmToken,
|
|
19
19
|
svmAddress,
|
|
20
20
|
} from '../../svm/currency/token.js'
|
|
21
|
-
import type { NativeChainId } from '../types/for-chain.js'
|
|
21
|
+
import type { AddressFor, NativeChainId, TokenFor } from '../types/for-chain.js'
|
|
22
22
|
import {
|
|
23
23
|
getNativeFor,
|
|
24
24
|
getTokenFor,
|
|
@@ -202,6 +202,30 @@ describe('generic/currency/for-chain.ts types', () => {
|
|
|
202
202
|
>()
|
|
203
203
|
})
|
|
204
204
|
|
|
205
|
+
it('accepts generic EVM/SVM token input with address derived from the chain id', () => {
|
|
206
|
+
type GenericTokenInput<TChainId extends EvmChainId | SvmChainId> = {
|
|
207
|
+
address: AddressFor<TChainId>
|
|
208
|
+
symbol: string
|
|
209
|
+
name: string
|
|
210
|
+
decimals: number
|
|
211
|
+
metadata: Metadata
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function getGenericTokenFor<TChainId extends EvmChainId | SvmChainId>(
|
|
215
|
+
chainId: TChainId,
|
|
216
|
+
input: GenericTokenInput<TChainId>,
|
|
217
|
+
) {
|
|
218
|
+
return getTokenFor(chainId, input)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const chainId = {} as EvmChainId | SvmChainId
|
|
222
|
+
const input = {} as GenericTokenInput<typeof chainId>
|
|
223
|
+
|
|
224
|
+
expectTypeOf(getGenericTokenFor(chainId, input)).toEqualTypeOf<
|
|
225
|
+
TokenFor<EvmChainId | SvmChainId, Metadata>
|
|
226
|
+
>()
|
|
227
|
+
})
|
|
228
|
+
|
|
205
229
|
it('rejects constructor data for a different chain family', () => {
|
|
206
230
|
getTokenFor(SvmChainId.SOLANA, {
|
|
207
231
|
// @ts-expect-error SVM token data requires an SVM address.
|
|
@@ -20,7 +20,12 @@ import {
|
|
|
20
20
|
import { SvmNative } from '../../svm/currency/native.js'
|
|
21
21
|
import { SvmToken } from '../../svm/currency/token.js'
|
|
22
22
|
import type { ChainId } from '../chain/chains.js'
|
|
23
|
-
import type {
|
|
23
|
+
import type {
|
|
24
|
+
AddressFor,
|
|
25
|
+
NativeChainId,
|
|
26
|
+
NativeFor,
|
|
27
|
+
TokenFor,
|
|
28
|
+
} from '../types/for-chain.js'
|
|
24
29
|
import { assertNever } from '../utils/assert-never.js'
|
|
25
30
|
import type { CurrencyMetadata } from './currency.js'
|
|
26
31
|
|
|
@@ -38,18 +43,32 @@ type SvmTokenConstructorData<TMetadata extends CurrencyMetadata> =
|
|
|
38
43
|
type StellarTokenConstructorData<TMetadata extends CurrencyMetadata> =
|
|
39
44
|
ConstructorData<typeof StellarToken<TMetadata>>
|
|
40
45
|
|
|
46
|
+
type GenericTokenConstructorData<
|
|
47
|
+
TChainId extends ChainId,
|
|
48
|
+
TMetadata extends CurrencyMetadata,
|
|
49
|
+
> = {
|
|
50
|
+
chainId?: TChainId
|
|
51
|
+
address: AddressFor<TChainId>
|
|
52
|
+
symbol: string
|
|
53
|
+
name: string
|
|
54
|
+
decimals: number
|
|
55
|
+
metadata?: TMetadata
|
|
56
|
+
}
|
|
57
|
+
|
|
41
58
|
export type TokenConstructorDataFor<
|
|
42
59
|
TChainId extends ChainId,
|
|
43
60
|
TMetadata extends CurrencyMetadata = CurrencyMetadata,
|
|
44
|
-
> =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
> =
|
|
62
|
+
| GenericTokenConstructorData<TChainId, TMetadata>
|
|
63
|
+
| (TChainId extends EvmChainId
|
|
64
|
+
? EvmTokenConstructorData<TMetadata>
|
|
65
|
+
: TChainId extends MvmChainId
|
|
66
|
+
? MvmTokenConstructorData<TMetadata>
|
|
67
|
+
: TChainId extends SvmChainId
|
|
68
|
+
? SvmTokenConstructorData<TMetadata>
|
|
69
|
+
: TChainId extends StellarChainId
|
|
70
|
+
? StellarTokenConstructorData<TMetadata>
|
|
71
|
+
: never)
|
|
53
72
|
|
|
54
73
|
export function getNativeFor<
|
|
55
74
|
TChainId extends NativeChainId,
|
|
@@ -89,6 +89,34 @@ describe('generic/types/for-chain.ts types', () => {
|
|
|
89
89
|
>()
|
|
90
90
|
})
|
|
91
91
|
|
|
92
|
+
it('should be assignable to CurrencyFor for native chain families', () => {
|
|
93
|
+
expectTypeOf<NativeFor<EvmChainId, Metadata>>().toMatchTypeOf<
|
|
94
|
+
CurrencyFor<EvmChainId, Metadata>
|
|
95
|
+
>()
|
|
96
|
+
expectTypeOf<NativeFor<SvmChainId, Metadata>>().toMatchTypeOf<
|
|
97
|
+
CurrencyFor<SvmChainId, Metadata>
|
|
98
|
+
>()
|
|
99
|
+
expectTypeOf<NativeFor<NativeChainId, Metadata>>().toMatchTypeOf<
|
|
100
|
+
CurrencyFor<NativeChainId, Metadata>
|
|
101
|
+
>()
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
it('should be assignable to CurrencyFor for a generic native chain id', () => {
|
|
105
|
+
// Regression guard: this only holds because CurrencyFor's branch order
|
|
106
|
+
// matches NativeFor's, letting TypeScript relate the two conditional
|
|
107
|
+
// types for an unresolved generic `T`. Concrete-type checks above pass
|
|
108
|
+
// regardless of order, so they don't cover this case. The constraint
|
|
109
|
+
// `A extends B` fails to compile if NativeFor<T> is not assignable to
|
|
110
|
+
// CurrencyFor<T>.
|
|
111
|
+
type AssertAssignable<_A extends B, B> = true
|
|
112
|
+
type _Guard<T extends NativeChainId> = AssertAssignable<
|
|
113
|
+
NativeFor<T, Metadata>,
|
|
114
|
+
CurrencyFor<T, Metadata>
|
|
115
|
+
>
|
|
116
|
+
|
|
117
|
+
expectTypeOf<_Guard<NativeChainId>>().toEqualTypeOf<true>()
|
|
118
|
+
})
|
|
119
|
+
|
|
92
120
|
it('should reject token-only chain families', () => {
|
|
93
121
|
type NativeForMvm = NativeFor<
|
|
94
122
|
// @ts-expect-error MVM is intentionally excluded from NativeChainId.
|
|
@@ -43,15 +43,19 @@ export type TokenFor<
|
|
|
43
43
|
? StellarToken<Metadata>
|
|
44
44
|
: never
|
|
45
45
|
|
|
46
|
+
// Branch order matches `NativeFor` (Evm, then Svm) so TypeScript can relate the
|
|
47
|
+
// two conditional types and prove `NativeFor<T>` is assignable to
|
|
48
|
+
// `CurrencyFor<T>` for a generic `T`. The chain families are disjoint, so the
|
|
49
|
+
// order has no effect on the resolved type.
|
|
46
50
|
export type CurrencyFor<
|
|
47
51
|
TChainId extends ChainId,
|
|
48
52
|
Metadata extends CurrencyMetadata = CurrencyMetadata,
|
|
49
53
|
> = TChainId extends EvmChainId
|
|
50
54
|
? EvmCurrency<Metadata>
|
|
51
|
-
: TChainId extends
|
|
52
|
-
?
|
|
53
|
-
: TChainId extends
|
|
54
|
-
?
|
|
55
|
+
: TChainId extends SvmChainId
|
|
56
|
+
? SvmCurrency<Metadata>
|
|
57
|
+
: TChainId extends MvmChainId
|
|
58
|
+
? MvmToken<Metadata>
|
|
55
59
|
: TChainId extends StellarChainId
|
|
56
60
|
? StellarCurrency<Metadata>
|
|
57
61
|
: never
|