sushi 6.0.28 → 6.1.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 (61) hide show
  1. package/_cjs/generic/chain/chains.js +7 -1
  2. package/_cjs/generic/chain/chains.js.map +1 -1
  3. package/_cjs/generic/currency/serialized-currency.js +4 -2
  4. package/_cjs/generic/currency/serialized-currency.js.map +1 -1
  5. package/_cjs/kvm/chain/chains.js +49 -0
  6. package/_cjs/kvm/chain/chains.js.map +1 -0
  7. package/_cjs/kvm/chain/define-chain.js +13 -0
  8. package/_cjs/kvm/chain/define-chain.js.map +1 -0
  9. package/_cjs/kvm/chain/index.js +19 -0
  10. package/_cjs/kvm/chain/index.js.map +1 -0
  11. package/_cjs/kvm/currency/index.js +18 -0
  12. package/_cjs/kvm/currency/index.js.map +1 -0
  13. package/_cjs/kvm/currency/token.js +81 -0
  14. package/_cjs/kvm/currency/token.js.map +1 -0
  15. package/_cjs/kvm/index.js +19 -0
  16. package/_cjs/kvm/index.js.map +1 -0
  17. package/_esm/generic/chain/chains.js +7 -1
  18. package/_esm/generic/chain/chains.js.map +1 -1
  19. package/_esm/generic/currency/serialized-currency.js +2 -0
  20. package/_esm/generic/currency/serialized-currency.js.map +1 -1
  21. package/_esm/kvm/chain/chains.js +41 -0
  22. package/_esm/kvm/chain/chains.js.map +1 -0
  23. package/_esm/kvm/chain/define-chain.js +10 -0
  24. package/_esm/kvm/chain/define-chain.js.map +1 -0
  25. package/_esm/kvm/chain/index.js +3 -0
  26. package/_esm/kvm/chain/index.js.map +1 -0
  27. package/_esm/kvm/currency/index.js +2 -0
  28. package/_esm/kvm/currency/index.js.map +1 -0
  29. package/_esm/kvm/currency/token.js +43 -0
  30. package/_esm/kvm/currency/token.js.map +1 -0
  31. package/_esm/kvm/index.js +3 -0
  32. package/_esm/kvm/index.js.map +1 -0
  33. package/_types/generic/chain/chains.d.ts +20 -1
  34. package/_types/generic/chain/chains.d.ts.map +1 -1
  35. package/_types/generic/chain/interface.d.ts +2 -1
  36. package/_types/generic/chain/interface.d.ts.map +1 -1
  37. package/_types/generic/currency/serialized-currency.d.ts +43 -2
  38. package/_types/generic/currency/serialized-currency.d.ts.map +1 -1
  39. package/_types/kvm/chain/chains.d.ts +37 -0
  40. package/_types/kvm/chain/chains.d.ts.map +1 -0
  41. package/_types/kvm/chain/define-chain.d.ts +14 -0
  42. package/_types/kvm/chain/define-chain.d.ts.map +1 -0
  43. package/_types/kvm/chain/index.d.ts +3 -0
  44. package/_types/kvm/chain/index.d.ts.map +1 -0
  45. package/_types/kvm/currency/index.d.ts +2 -0
  46. package/_types/kvm/currency/index.d.ts.map +1 -0
  47. package/_types/kvm/currency/token.d.ts +63 -0
  48. package/_types/kvm/currency/token.d.ts.map +1 -0
  49. package/_types/kvm/index.d.ts +3 -0
  50. package/_types/kvm/index.d.ts.map +1 -0
  51. package/generic/chain/chains.ts +7 -1
  52. package/generic/chain/interface.ts +6 -1
  53. package/generic/currency/currency.test-d.ts +13 -0
  54. package/generic/currency/serialized-currency.ts +3 -0
  55. package/kvm/chain/chains.ts +88 -0
  56. package/kvm/chain/define-chain.ts +41 -0
  57. package/kvm/chain/index.ts +2 -0
  58. package/kvm/currency/index.ts +1 -0
  59. package/kvm/currency/token.ts +79 -0
  60. package/kvm/index.ts +2 -0
  61. package/package.json +11 -1
@@ -2,10 +2,11 @@ import * as z from 'zod';
2
2
  import { serializedEvmCurrencySchema } from '../../evm/currency/currency.js';
3
3
  import type { serializedEvmTokenSchema } from '../../evm/currency/token.js';
4
4
  import type { serializedEvmNativeSchema } from '../../evm/index.js';
5
+ import { serializedKvmTokenSchema } from '../../kvm/index.js';
5
6
  import { serializedMvmTokenSchema } from '../../mvm/currency/token.js';
6
7
  import { serializedTvmCurrencySchema, type serializedTvmNativeSchema, type serializedTvmTokenSchema } from '../../tvm/index.js';
7
8
  import type { CurrencyMetadata } from './currency.js';
8
- export type SerializedCurrencySchema<TMetadata extends CurrencyMetadata = CurrencyMetadata> = ReturnType<typeof serializedEvmTokenSchema<TMetadata> | typeof serializedEvmNativeSchema<TMetadata> | typeof serializedEvmCurrencySchema<TMetadata> | typeof serializedMvmTokenSchema<TMetadata> | typeof serializedTvmTokenSchema<TMetadata> | typeof serializedTvmNativeSchema<TMetadata> | typeof serializedTvmCurrencySchema<TMetadata> | typeof serializedCurrencySchema<TMetadata>>;
9
+ export type SerializedCurrencySchema<TMetadata extends CurrencyMetadata = CurrencyMetadata> = ReturnType<typeof serializedEvmTokenSchema<TMetadata> | typeof serializedEvmNativeSchema<TMetadata> | typeof serializedEvmCurrencySchema<TMetadata> | typeof serializedMvmTokenSchema<TMetadata> | typeof serializedTvmTokenSchema<TMetadata> | typeof serializedTvmNativeSchema<TMetadata> | typeof serializedTvmCurrencySchema<TMetadata> | typeof serializedCurrencySchema<TMetadata> | typeof serializedKvmTokenSchema<TMetadata>>;
9
10
  export declare const serializedCurrencySchema: <TMetadata extends {} = CurrencyMetadata>(opts?: {
10
11
  metadata?: z.ZodType<TMetadata>;
11
12
  }) => z.ZodUnion<[z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
@@ -198,6 +199,46 @@ export declare const serializedCurrencySchema: <TMetadata extends {} = CurrencyM
198
199
  decimals: z.ZodNumber;
199
200
  type: z.ZodLiteral<"native">;
200
201
  metadata: z.ZodType<TMetadata, z.ZodTypeDef, TMetadata>;
201
- }>[k_9]; } : never>]>]>;
202
+ }>[k_9]; } : never>]>, z.ZodObject<{
203
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
204
+ address: z.ZodEffects<z.ZodString, import("../../kvm/index.js").KvmTokenAddress, string>;
205
+ symbol: z.ZodString;
206
+ name: z.ZodString;
207
+ decimals: z.ZodNumber;
208
+ type: z.ZodLiteral<"token">;
209
+ metadata: z.ZodType<TMetadata, z.ZodTypeDef, TMetadata>;
210
+ }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
211
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
212
+ address: z.ZodEffects<z.ZodString, import("../../kvm/index.js").KvmTokenAddress, string>;
213
+ symbol: z.ZodString;
214
+ name: z.ZodString;
215
+ decimals: z.ZodNumber;
216
+ type: z.ZodLiteral<"token">;
217
+ metadata: z.ZodType<TMetadata, z.ZodTypeDef, TMetadata>;
218
+ }>, any> extends infer T_10 ? { [k_10 in keyof T_10]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
219
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
220
+ address: z.ZodEffects<z.ZodString, import("../../kvm/index.js").KvmTokenAddress, string>;
221
+ symbol: z.ZodString;
222
+ name: z.ZodString;
223
+ decimals: z.ZodNumber;
224
+ type: z.ZodLiteral<"token">;
225
+ metadata: z.ZodType<TMetadata, z.ZodTypeDef, TMetadata>;
226
+ }>, any>[k_10]; } : never, z.baseObjectInputType<{
227
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
228
+ address: z.ZodEffects<z.ZodString, import("../../kvm/index.js").KvmTokenAddress, string>;
229
+ symbol: z.ZodString;
230
+ name: z.ZodString;
231
+ decimals: z.ZodNumber;
232
+ type: z.ZodLiteral<"token">;
233
+ metadata: z.ZodType<TMetadata, z.ZodTypeDef, TMetadata>;
234
+ }> extends infer T_11 ? { [k_11 in keyof T_11]: z.baseObjectInputType<{
235
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
236
+ address: z.ZodEffects<z.ZodString, import("../../kvm/index.js").KvmTokenAddress, string>;
237
+ symbol: z.ZodString;
238
+ name: z.ZodString;
239
+ decimals: z.ZodNumber;
240
+ type: z.ZodLiteral<"token">;
241
+ metadata: z.ZodType<TMetadata, z.ZodTypeDef, TMetadata>;
242
+ }>[k_11]; } : never>]>;
202
243
  export type SerializedCurrency<TMetadata extends CurrencyMetadata = CurrencyMetadata> = z.infer<ReturnType<typeof serializedCurrencySchema<TMetadata>>>;
203
244
  //# sourceMappingURL=serialized-currency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialized-currency.d.ts","sourceRoot":"","sources":["../../../generic/currency/serialized-currency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EACL,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,MAAM,wBAAwB,CAClC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,UAAU,CACV,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,yBAAyB,CAAC,SAAS,CAAC,GAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,GAC7C,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,yBAAyB,CAAC,SAAS,CAAC,GAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,GAC7C,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAC7C,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,SAAS,SAAS,EAAE,GAAG,gBAAgB,EAEvC,OAAM;IAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAM5C,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"}
1
+ {"version":3,"file":"serialized-currency.d.ts","sourceRoot":"","sources":["../../../generic/currency/serialized-currency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EACL,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,MAAM,wBAAwB,CAClC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,UAAU,CACV,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,yBAAyB,CAAC,SAAS,CAAC,GAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,GAC7C,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,yBAAyB,CAAC,SAAS,CAAC,GAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,GAC7C,OAAO,wBAAwB,CAAC,SAAS,CAAC,GAC1C,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAC7C,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,SAAS,SAAS,EAAE,GAAG,gBAAgB,EAEvC,OAAM;IAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAO5C,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,37 @@
1
+ export declare const kvmChains: readonly [{
2
+ readonly chainId: -3;
3
+ readonly key: "kadena";
4
+ readonly shortName: "kda";
5
+ readonly name: "Kadena";
6
+ readonly blockExplorers: {
7
+ readonly default: {
8
+ readonly name: "Kadena Explorer";
9
+ readonly url: "https://explorer.chainweb.com/mainnet";
10
+ };
11
+ };
12
+ readonly netType: "mainnet";
13
+ } & {
14
+ readonly type: "kvm";
15
+ readonly getTransactionUrl: (input: string) => string;
16
+ readonly getAccountUrl: (input: string) => string;
17
+ readonly getTokenUrl: (input: string) => string;
18
+ }];
19
+ export declare const kvmChainIds: -3[];
20
+ export type KvmChainId = (typeof kvmChainIds)[number];
21
+ export declare const KvmChainId: {
22
+ KADENA: -3;
23
+ };
24
+ export declare function isKvmChainId(chainId: number): chainId is KvmChainId;
25
+ export declare function getKvmChainById<C extends KvmChainId>(chainId: C): Extract<(typeof kvmChains)[number], {
26
+ chainId: C;
27
+ }>;
28
+ export type KvmMainnetChainId = Extract<(typeof kvmChains)[number], {
29
+ netType: 'mainnet';
30
+ }>['chainId'];
31
+ export declare function isKvmMainnetChainId(chainId: number): chainId is KvmMainnetChainId;
32
+ export type KvmChainKey = (typeof kvmChains)[number]['key'];
33
+ export declare function isKvmChainKey(key: string): key is KvmChainKey;
34
+ export declare function getKvmChainByKey<C extends KvmChainKey>(key: C): Extract<(typeof kvmChains)[number], {
35
+ key: C;
36
+ }>;
37
+ //# sourceMappingURL=chains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../kvm/chain/chains.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;EAAoB,CAAA;AAE1C,eAAO,MAAM,WAAW,MAEvB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAYrD,eAAO,MAAM,UAAU;;CAYtB,CAAA;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,UAAU,CAEnE;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GACE,OAAO,CACrE,CAAC,OAAO,SAAS,EAAE,MAAM,CAAC,EAC1B;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CACf,CACF;AAGD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,EAC1B;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,CACvB,CAAC,SAAS,CAAC,CAAA;AAEZ,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GACd,OAAO,IAAI,iBAAiB,CAI9B;AAGD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAA;AAE3D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,WAAW,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GACJ,OAAO,CAC7D,CAAC,OAAO,SAAS,EAAE,MAAM,CAAC,EAC1B;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CACX,CACF"}
@@ -0,0 +1,14 @@
1
+ import type { BlockExplorers, Chain, NetType } from '../../generic/chain/interface.js';
2
+ import type { KvmChainId, KvmChainKey } from './chains.js';
3
+ export type KvmChainType = 'kvm';
4
+ type KvmChainBase<TChainId extends number, TChainKey extends string> = Chain<KvmChainType, TChainId, TChainKey, Readonly<string>, Readonly<string>, NetType, BlockExplorers, string, string>;
5
+ export type KvmChain = KvmChainBase<KvmChainId, KvmChainKey>;
6
+ type KvmChainInput = Omit<KvmChainBase<number, string>, 'type' | 'getTransactionUrl' | 'getAccountUrl' | 'getTokenUrl' | 'networdId'>;
7
+ export declare function defineKvmChain<const T extends KvmChainInput>(chain: T): T & {
8
+ readonly type: "kvm";
9
+ readonly getTransactionUrl: (input: string) => string;
10
+ readonly getAccountUrl: (input: string) => string;
11
+ readonly getTokenUrl: (input: string) => string;
12
+ };
13
+ export {};
14
+ //# sourceMappingURL=define-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-chain.d.ts","sourceRoot":"","sources":["../../../kvm/chain/define-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,OAAO,EACR,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE1D,MAAM,MAAM,YAAY,GAAG,KAAK,CAAA;AAEhC,KAAK,YAAY,CAAC,QAAQ,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IAAI,KAAK,CAC1E,YAAY,EAEZ,QAAQ,EACR,SAAS,EACT,QAAQ,CAAC,MAAM,CAAC,EAChB,QAAQ,CAAC,MAAM,CAAC,EAChB,OAAO,EACP,cAAc,EACd,MAAM,EACN,MAAM,CACP,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;AAE5D,KAAK,aAAa,GAAG,IAAI,CACvB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,MAAM,GAAG,mBAAmB,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,CAC7E,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,CAAC;;wCAIvC,MAAM;oCAEV,MAAM;kCAER,MAAM;EAG9B"}
@@ -0,0 +1,3 @@
1
+ export * from './chains.js';
2
+ export * from './define-chain.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../kvm/chain/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './token.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../kvm/currency/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
@@ -0,0 +1,63 @@
1
+ import * as z from 'zod';
2
+ import type { CurrencyMetadata } from '../../generic/currency/currency.js';
3
+ import { Token } from '../../generic/currency/token.js';
4
+ import { type KvmChainId } from '../chain/chains.js';
5
+ export type KvmTokenAddress = `${string}.${string}` | 'coin';
6
+ export declare function isKvmTokenAddress(address: string): address is KvmTokenAddress;
7
+ export type KvmTokenOrigin = 'native';
8
+ export declare class KvmToken<TMetadata extends CurrencyMetadata = Record<string, unknown>> extends Token<KvmChainId, KvmTokenAddress, TMetadata> {
9
+ readonly origin: KvmTokenOrigin | undefined;
10
+ constructor({ origin, ...rest }: {
11
+ origin?: KvmTokenOrigin | undefined;
12
+ } & ConstructorParameters<typeof Token<KvmChainId, KvmTokenAddress, TMetadata>>[0]);
13
+ wrap(): KvmToken<TMetadata>;
14
+ toJSON(): SerializedKvmToken<TMetadata>;
15
+ static fromJSON<TMetadata extends CurrencyMetadata>(data: Omit<SerializedKvmToken<TMetadata>, 'metadata'> & {
16
+ metadata?: TMetadata;
17
+ }): KvmToken<TMetadata>;
18
+ }
19
+ export declare const serializedKvmTokenSchema: <TMetadata extends {} = CurrencyMetadata>({ metadata, }?: {
20
+ metadata?: z.ZodType<TMetadata>;
21
+ }) => z.ZodObject<{
22
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
23
+ address: z.ZodEffects<z.ZodString, KvmTokenAddress, string>;
24
+ symbol: z.ZodString;
25
+ name: z.ZodString;
26
+ decimals: z.ZodNumber;
27
+ type: z.ZodLiteral<"token">;
28
+ metadata: z.ZodType<TMetadata>;
29
+ }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
30
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
31
+ address: z.ZodEffects<z.ZodString, KvmTokenAddress, string>;
32
+ symbol: z.ZodString;
33
+ name: z.ZodString;
34
+ decimals: z.ZodNumber;
35
+ type: z.ZodLiteral<"token">;
36
+ metadata: z.ZodType<TMetadata>;
37
+ }>, any> extends infer T ? { [k in keyof T]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
38
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
39
+ address: z.ZodEffects<z.ZodString, KvmTokenAddress, string>;
40
+ symbol: z.ZodString;
41
+ name: z.ZodString;
42
+ decimals: z.ZodNumber;
43
+ type: z.ZodLiteral<"token">;
44
+ metadata: z.ZodType<TMetadata>;
45
+ }>, any>[k]; } : never, z.baseObjectInputType<{
46
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
47
+ address: z.ZodEffects<z.ZodString, KvmTokenAddress, string>;
48
+ symbol: z.ZodString;
49
+ name: z.ZodString;
50
+ decimals: z.ZodNumber;
51
+ type: z.ZodLiteral<"token">;
52
+ metadata: z.ZodType<TMetadata>;
53
+ }> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<{
54
+ chainId: z.ZodEffects<z.ZodNumber, -3, number>;
55
+ address: z.ZodEffects<z.ZodString, KvmTokenAddress, string>;
56
+ symbol: z.ZodString;
57
+ name: z.ZodString;
58
+ decimals: z.ZodNumber;
59
+ type: z.ZodLiteral<"token">;
60
+ metadata: z.ZodType<TMetadata>;
61
+ }>[k_1]; } : never>;
62
+ export type SerializedKvmToken<TMetadata extends CurrencyMetadata = CurrencyMetadata> = z.infer<ReturnType<typeof serializedKvmTokenSchema<TMetadata>>>;
63
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../kvm/currency/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,oBAAoB,CAAA;AAElE,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,MAAM,CAAA;AAE5D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,eAAe,CAI7E;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAA;AAErC,qBAAa,QAAQ,CACnB,SAAS,SAAS,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC5D,SAAQ,KAAK,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC;IACrD,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,eAAe,EAAE,SAAS,CAAC,CACrD,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;IAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;CAAO;;;;;;;cAUY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;;;;;;;;cAApB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;;;;;;;;cAApB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;;;;;;;;cAApB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;;;;;;;;cAApB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;mBACvE,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
+ export * from './chain/index.js';
2
+ export * from './currency/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../kvm/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
@@ -1,10 +1,16 @@
1
1
  import { evmChains } from '../../evm/chain/index.js'
2
+ import { kvmChains } from '../../kvm/index.js'
2
3
  import { mvmChains } from '../../mvm/chain/chains.js'
3
4
  import { tvmChains } from '../../tvm/chain/chains.js'
4
5
  import type { Replace } from '../types/replace.js'
5
6
  import type { UnionToIntersection } from '../types/union-to-intersection.js'
6
7
 
7
- export const chains = [...evmChains, ...mvmChains, ...tvmChains] as const
8
+ export const chains = [
9
+ ...evmChains,
10
+ ...mvmChains,
11
+ ...tvmChains,
12
+ ...kvmChains,
13
+ ] as const
8
14
 
9
15
  // ChainId
10
16
 
@@ -1,9 +1,14 @@
1
1
  import type { EvmChainType } from '../../evm/chain/define-chain.js'
2
+ import type { KvmChainType } from '../../kvm/chain/define-chain.js'
2
3
  import type { MvmChainType } from '../../mvm/chain/define-chain.js'
3
4
  import type { TvmChainType } from '../../tvm/chain/define-chain.js'
4
5
  import type { ChainId, ChainKey } from './chains.js'
5
6
 
6
- export type ChainType = EvmChainType | MvmChainType | TvmChainType
7
+ export type ChainType =
8
+ | EvmChainType
9
+ | MvmChainType
10
+ | TvmChainType
11
+ | KvmChainType
7
12
 
8
13
  export type NetType = 'mainnet' | 'testnet'
9
14
 
@@ -4,6 +4,7 @@ import * as z from 'zod'
4
4
  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
+ import { KvmToken } from '~/kvm/index.js'
7
8
  import { EvmNative } from '../../evm/currency/native.js'
8
9
  import {
9
10
  type EvmAddress,
@@ -85,6 +86,18 @@ describe('generic/currency/currency.ts types', () => {
85
86
 
86
87
  expectTypeOf(tvmMockToken.wrap()).toEqualTypeOf<TvmToken>()
87
88
  })
89
+
90
+ it('should return the same chaintype - Kvm', () => {
91
+ const kvmMockToken = new KvmToken({
92
+ chainId: -3,
93
+ symbol: 'KVM',
94
+ name: 'Kvm Token',
95
+ decimals: 12,
96
+ address: 'my-namespace.my-token',
97
+ })
98
+
99
+ expectTypeOf(kvmMockToken.wrap()).toEqualTypeOf<KvmToken>()
100
+ })
88
101
  })
89
102
 
90
103
  describe('isNative/isToken', () => {
@@ -2,6 +2,7 @@ import * as z from 'zod'
2
2
  import { serializedEvmCurrencySchema } from '../../evm/currency/currency.js'
3
3
  import type { serializedEvmTokenSchema } from '../../evm/currency/token.js'
4
4
  import type { serializedEvmNativeSchema } from '../../evm/index.js'
5
+ import { serializedKvmTokenSchema } from '../../kvm/index.js'
5
6
  import { serializedMvmTokenSchema } from '../../mvm/currency/token.js'
6
7
  import {
7
8
  serializedTvmCurrencySchema,
@@ -21,6 +22,7 @@ export type SerializedCurrencySchema<
21
22
  | typeof serializedTvmNativeSchema<TMetadata>
22
23
  | typeof serializedTvmCurrencySchema<TMetadata>
23
24
  | typeof serializedCurrencySchema<TMetadata>
25
+ | typeof serializedKvmTokenSchema<TMetadata>
24
26
  >
25
27
 
26
28
  export const serializedCurrencySchema = <
@@ -32,6 +34,7 @@ export const serializedCurrencySchema = <
32
34
  serializedEvmCurrencySchema(opts),
33
35
  serializedMvmTokenSchema(opts),
34
36
  serializedTvmCurrencySchema(opts),
37
+ serializedKvmTokenSchema(opts),
35
38
  ])
36
39
 
37
40
  export type SerializedCurrency<
@@ -0,0 +1,88 @@
1
+ import type { Replace } from '../../generic/types/replace.js'
2
+ import type { UnionToIntersection } from '../../generic/types/union-to-intersection.js'
3
+ import { defineKvmChain } from './define-chain.js'
4
+
5
+ const kadena = defineKvmChain({
6
+ chainId: -3,
7
+ key: 'kadena',
8
+ shortName: 'kda',
9
+ name: 'Kadena',
10
+ blockExplorers: {
11
+ default: {
12
+ name: 'Kadena Explorer',
13
+ url: 'https://explorer.chainweb.com/mainnet',
14
+ },
15
+ },
16
+ netType: 'mainnet',
17
+ })
18
+
19
+ export const kvmChains = [kadena] as const
20
+
21
+ export const kvmChainIds = /* @__PURE__ */ kvmChains.map(
22
+ (chain) => chain.chainId,
23
+ )
24
+
25
+ export type KvmChainId = (typeof kvmChainIds)[number]
26
+
27
+ type KvmChainIdMap = UnionToIntersection<
28
+ (typeof kvmChains)[number] extends infer I
29
+ ? I extends { key: infer K; chainId: infer C }
30
+ ? K extends string
31
+ ? { [key in K as Uppercase<Replace<key, '-', '_'>>]: C }
32
+ : never
33
+ : never
34
+ : never
35
+ >
36
+
37
+ export const KvmChainId = /* @__PURE__ */ new Proxy<KvmChainIdMap>(
38
+ {} as KvmChainIdMap,
39
+ {
40
+ get: (_: unknown, key: keyof KvmChainIdMap) => {
41
+ const _key = key.toLowerCase().replace(/_/g, '-') as KvmChainKey
42
+ const chain = kvmChains.find((chain) => chain.key === _key)
43
+
44
+ if (!chain) return undefined
45
+
46
+ return chain.chainId
47
+ },
48
+ },
49
+ )
50
+
51
+ export function isKvmChainId(chainId: number): chainId is KvmChainId {
52
+ return kvmChains.some((chain) => chain.chainId === chainId)
53
+ }
54
+
55
+ export function getKvmChainById<C extends KvmChainId>(chainId: C) {
56
+ return kvmChains.find((chain) => chain.chainId === chainId)! as Extract<
57
+ (typeof kvmChains)[number],
58
+ { chainId: C }
59
+ >
60
+ }
61
+
62
+ // KvmMainnetChainId
63
+ export type KvmMainnetChainId = Extract<
64
+ (typeof kvmChains)[number],
65
+ { netType: 'mainnet' }
66
+ >['chainId']
67
+
68
+ export function isKvmMainnetChainId(
69
+ chainId: number,
70
+ ): chainId is KvmMainnetChainId {
71
+ return kvmChains.some(
72
+ (chain) => chain.chainId === chainId && chain.netType === 'mainnet',
73
+ )
74
+ }
75
+
76
+ // KvmChainKey
77
+ export type KvmChainKey = (typeof kvmChains)[number]['key']
78
+
79
+ export function isKvmChainKey(key: string): key is KvmChainKey {
80
+ return kvmChains.some((chain) => chain.key === key)
81
+ }
82
+
83
+ export function getKvmChainByKey<C extends KvmChainKey>(key: C) {
84
+ return kvmChains.find((chain) => chain.key === key)! as Extract<
85
+ (typeof kvmChains)[number],
86
+ { key: C }
87
+ >
88
+ }
@@ -0,0 +1,41 @@
1
+ import type {
2
+ BlockExplorers,
3
+ Chain,
4
+ NetType,
5
+ } from '../../generic/chain/interface.js'
6
+ import type { KvmChainId, KvmChainKey } from './chains.js'
7
+
8
+ export type KvmChainType = 'kvm'
9
+
10
+ type KvmChainBase<TChainId extends number, TChainKey extends string> = Chain<
11
+ KvmChainType,
12
+ // @ts-ignore infinite loop
13
+ TChainId,
14
+ TChainKey,
15
+ Readonly<string>,
16
+ Readonly<string>,
17
+ NetType,
18
+ BlockExplorers,
19
+ string,
20
+ string
21
+ >
22
+
23
+ export type KvmChain = KvmChainBase<KvmChainId, KvmChainKey>
24
+
25
+ type KvmChainInput = Omit<
26
+ KvmChainBase<number, string>,
27
+ 'type' | 'getTransactionUrl' | 'getAccountUrl' | 'getTokenUrl' | 'networdId'
28
+ >
29
+
30
+ export function defineKvmChain<const T extends KvmChainInput>(chain: T) {
31
+ return {
32
+ ...chain,
33
+ type: 'kvm' as const,
34
+ getTransactionUrl: (input: string) =>
35
+ `${chain.blockExplorers.default.url}/txdetail/${input}`,
36
+ getAccountUrl: (input: string) =>
37
+ `${chain.blockExplorers.default.url}/account/${input}`,
38
+ getTokenUrl: (input: string) =>
39
+ `${chain.blockExplorers.default.url}/account/${input}`,
40
+ } as const satisfies KvmChainBase<number, string>
41
+ }
@@ -0,0 +1,2 @@
1
+ export * from './chains.js'
2
+ export * from './define-chain.js'
@@ -0,0 +1 @@
1
+ export * from './token.js'
@@ -0,0 +1,79 @@
1
+ import * as z from 'zod'
2
+ import type { CurrencyMetadata } from '../../generic/currency/currency.js'
3
+ import { Token } from '../../generic/currency/token.js'
4
+
5
+ import { type KvmChainId, isKvmChainId } from '../chain/chains.js'
6
+
7
+ export type KvmTokenAddress = `${string}.${string}` | 'coin'
8
+
9
+ export function isKvmTokenAddress(address: string): address is KvmTokenAddress {
10
+ if (address === 'coin') return true
11
+ // `${string}.${string}` - namespace.name - string parts can include alphanumeric characters, underscores, and dashes
12
+ return !!address.match(/^([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/)
13
+ }
14
+
15
+ export type KvmTokenOrigin = 'native'
16
+
17
+ export class KvmToken<
18
+ TMetadata extends CurrencyMetadata = Record<string, unknown>,
19
+ > extends Token<KvmChainId, KvmTokenAddress, TMetadata> {
20
+ public readonly origin: KvmTokenOrigin | undefined
21
+
22
+ constructor({
23
+ origin,
24
+ ...rest
25
+ }: {
26
+ origin?: KvmTokenOrigin | undefined
27
+ } & ConstructorParameters<
28
+ typeof Token<KvmChainId, KvmTokenAddress, TMetadata>
29
+ >[0]) {
30
+ super(rest)
31
+ this.origin = origin
32
+ }
33
+
34
+ public override wrap(): KvmToken<TMetadata> {
35
+ return this
36
+ }
37
+
38
+ public override toJSON(): SerializedKvmToken<TMetadata> {
39
+ return {
40
+ chainId: this.chainId,
41
+ address: this.address,
42
+ symbol: this.symbol,
43
+ name: this.name,
44
+ decimals: this.decimals,
45
+ type: this.type,
46
+
47
+ metadata: this.metadata,
48
+ } as const
49
+ }
50
+
51
+ static fromJSON<TMetadata extends CurrencyMetadata>(
52
+ data: Omit<SerializedKvmToken<TMetadata>, 'metadata'> & {
53
+ metadata?: TMetadata
54
+ },
55
+ ): KvmToken<TMetadata> {
56
+ return new this(data)
57
+ }
58
+ }
59
+
60
+ export const serializedKvmTokenSchema = <
61
+ TMetadata extends {} = CurrencyMetadata,
62
+ >({
63
+ metadata,
64
+ }: { metadata?: z.ZodType<TMetadata> } = {}) =>
65
+ z.object({
66
+ chainId: z.number().int().refine(isKvmChainId),
67
+ address: z.string().refine(isKvmTokenAddress),
68
+ symbol: z.string(),
69
+ name: z.string(),
70
+ decimals: z.number().int().nonnegative(),
71
+ type: z.literal('token'),
72
+
73
+ metadata: (metadata ||
74
+ z.record(z.unknown()).optional().default({})) as z.ZodType<TMetadata>,
75
+ })
76
+
77
+ export type SerializedKvmToken<
78
+ TMetadata extends CurrencyMetadata = CurrencyMetadata,
79
+ > = z.infer<ReturnType<typeof serializedKvmTokenSchema<TMetadata>>>
package/kvm/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './chain/index.js'
2
+ export * from './currency/index.js'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sushi",
3
3
  "description": "Sushi",
4
- "version": "6.0.28",
4
+ "version": "6.1.0",
5
5
  "type": "module",
6
6
  "main": "./_cjs/generic/index.js",
7
7
  "module": "./_esm/generic/index.js",
@@ -15,6 +15,7 @@
15
15
  "evm",
16
16
  "mvm",
17
17
  "tvm",
18
+ "kvm",
18
19
  "package.json"
19
20
  ],
20
21
  "exports": {
@@ -42,6 +43,12 @@
42
43
  "require": "./_cjs/tvm/index.js",
43
44
  "default": "./_esm/tvm/index.js"
44
45
  },
46
+ "./kvm": {
47
+ "types": "./_types/kvm/index.d.ts",
48
+ "import": "./_esm/kvm/index.js",
49
+ "require": "./_cjs/kvm/index.js",
50
+ "default": "./_esm/kvm/index.js"
51
+ },
45
52
  "./package.json": "./package.json"
46
53
  },
47
54
  "typesVersions": {
@@ -54,6 +61,9 @@
54
61
  ],
55
62
  "tvm": [
56
63
  "_types/tvm/index.d.ts"
64
+ ],
65
+ "kvm": [
66
+ "_types/kvm/index.d.ts"
57
67
  ]
58
68
  }
59
69
  },