@moonbeam-network/xcm-types 1.0.0-dev.158 → 1.0.0-dev.159

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/build/index.d.ts CHANGED
@@ -124,6 +124,7 @@ declare class EvmParachain extends Parachain {
124
124
  readonly contracts?: Contracts;
125
125
  static is(obj: unknown): obj is EvmParachain;
126
126
  static isAnyParachain(obj: unknown): obj is EvmParachain | Parachain;
127
+ static isAnyEvmChain(obj: unknown): obj is EvmParachain | EvmChain;
127
128
  constructor({ id, rpc, isEvmSigner, contracts, ...others }: EvmParachainConstructorParams);
128
129
  getViemChain(): Chain$2;
129
130
  }
package/build/index.mjs CHANGED
@@ -279,6 +279,9 @@ var EvmParachain = class _EvmParachain extends Parachain {
279
279
  static isAnyParachain(obj) {
280
280
  return obj instanceof _EvmParachain || obj instanceof Parachain;
281
281
  }
282
+ static isAnyEvmChain(obj) {
283
+ return obj instanceof _EvmParachain || obj instanceof EvmChain;
284
+ }
282
285
  constructor({
283
286
  id,
284
287
  rpc,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/asset/Asset.ts","../src/asset/AssetAmount.ts","../src/asset/ChainAsset.ts","../src/chain/Chain.ts","../src/chain/Chain.interfaces.ts","../src/chain/Chain.utils.ts","../src/chain/EvmChain.ts","../src/chain/parachain/Parachain.ts","../src/chain/parachain/EvmParachain.ts"],"sourcesContent":["export interface AssetConstructorParams {\n key: string;\n originSymbol: string;\n}\n\nexport class Asset {\n readonly key: string;\n\n readonly originSymbol: string;\n\n constructor({ key, originSymbol }: AssetConstructorParams) {\n this.key = key;\n this.originSymbol = originSymbol;\n }\n\n copyWith(params: Partial<AssetConstructorParams>): Asset {\n return new Asset({\n ...this,\n ...params,\n });\n }\n\n isEqual(asset: Asset): boolean {\n return this.key === asset.key && this.originSymbol === asset.originSymbol;\n }\n}\n","import {\n convertDecimals,\n toBigInt,\n toDecimal,\n} from '@moonbeam-network/xcm-utils';\nimport Big, { type RoundingMode } from 'big.js';\nimport { ChainAsset, type ChainAssetConstructorParams } from './ChainAsset';\n\nBig.NE = -18;\n\nexport interface AssetAmountConstructorParams\n extends ChainAssetConstructorParams {\n amount: number | bigint;\n decimals: number;\n symbol?: string;\n}\n\nexport class AssetAmount extends ChainAsset {\n readonly amount: bigint;\n\n constructor({ amount, ...other }: AssetAmountConstructorParams) {\n super(other);\n\n this.amount = toBigInt(amount, other.decimals);\n }\n\n static fromChainAsset(\n asset: ChainAsset,\n params: Omit<\n AssetAmountConstructorParams,\n keyof ChainAssetConstructorParams\n >,\n ): AssetAmount {\n return new AssetAmount({\n ...asset,\n ...params,\n });\n }\n\n isSame(asset: ChainAsset | AssetAmount): boolean {\n return super.isEqual(asset) && this.decimals === asset.decimals;\n }\n\n isEqual(asset: AssetAmount): boolean {\n return this.isSame(asset) && this.amount === asset.amount;\n }\n\n copyWith(params: Partial<AssetAmountConstructorParams>): AssetAmount {\n return new AssetAmount({\n ...this,\n ...params,\n });\n }\n\n convertDecimals(decimals: number): AssetAmount {\n if (this.decimals === decimals) {\n return this.copyWith({});\n }\n\n return this.copyWith({\n amount: convertDecimals(this.amount, this.decimals, decimals),\n decimals,\n });\n }\n\n toBig(): Big {\n return Big(this.amount.toString());\n }\n\n toBigDecimal(maxDecimal?: number, roundType?: RoundingMode): Big {\n return Big(this.toDecimal(maxDecimal, roundType));\n }\n\n toDecimal(maxDecimal?: number, roundType?: RoundingMode): string {\n return toDecimal(this.amount, this.decimals, maxDecimal, roundType);\n }\n}\n","import { toBigInt } from '@moonbeam-network/xcm-utils';\nimport { Asset, type AssetConstructorParams } from './Asset';\n\nexport interface ChainAssetConstructorParams extends AssetConstructorParams {\n address?: string;\n decimals: number;\n ids?: ChainAssetIds;\n min?: number | bigint;\n symbol?: string;\n}\n\nexport interface ChainAssetIds {\n balanceId?: ChainAssetId;\n id?: ChainAssetId;\n minId?: ChainAssetId;\n palletInstance?: number;\n}\n\nexport type ChainAssetId =\n | string\n | number\n | bigint\n | { [key: string]: ChainAssetId };\n\nexport class ChainAsset extends Asset {\n readonly address?: string;\n\n readonly decimals: number;\n\n readonly ids?: ChainAssetIds;\n\n readonly min?: bigint;\n\n readonly symbol?: string;\n\n constructor({\n address,\n decimals,\n ids,\n min,\n symbol,\n ...other\n }: ChainAssetConstructorParams) {\n super(other);\n\n this.address = address;\n this.decimals = decimals;\n this.ids = ids;\n this.min = min ? toBigInt(min, decimals) : undefined;\n this.symbol = symbol;\n }\n\n static fromAsset(\n asset: Asset,\n params: Omit<ChainAssetConstructorParams, keyof AssetConstructorParams>,\n ): ChainAsset {\n return new ChainAsset({\n ...asset,\n ...params,\n });\n }\n\n copyWith(params: Partial<ChainAssetConstructorParams>): ChainAsset {\n return new ChainAsset({\n ...this,\n ...params,\n });\n }\n\n getSymbol(): string {\n return this.symbol || this.originSymbol;\n }\n\n getAssetId(): ChainAssetId {\n return this.ids?.id ?? this.originSymbol;\n }\n\n getBalanceAssetId(): ChainAssetId {\n return this.ids?.balanceId ?? this.getAssetId();\n }\n\n getMinAssetId(): ChainAssetId {\n return this.ids?.minId ?? this.getAssetId();\n }\n\n getAssetPalletInstance(): number | undefined {\n return this.ids?.palletInstance;\n }\n\n getAssetMin(): bigint {\n return this.min ?? 0n;\n }\n\n hasOnlyAddress(): this is { address: string } {\n return !!this.address && !this.ids?.id;\n }\n}\n","import type { Chain as WhChain } from '@wormhole-foundation/sdk-connect';\nimport type { Asset, AssetAmount, ChainAsset } from '../asset';\nimport type { Ecosystem, WormholeConfig } from './Chain.interfaces';\n\nexport interface ChainConstructorParams {\n assets: Map<string, ChainAsset> | ChainAsset[];\n ecosystem?: Ecosystem;\n explorer?: string;\n isTestChain?: boolean;\n key: string;\n name: string;\n nativeAsset: Asset;\n wh?: WormholeConfig;\n}\n\nexport abstract class Chain {\n readonly assets: Map<string, ChainAsset>;\n\n readonly ecosystem?: Ecosystem;\n\n readonly explorer?: string;\n\n readonly isTestChain: boolean;\n\n readonly key: string;\n\n readonly name: string;\n\n readonly #nativeAsset: Asset;\n\n readonly wh?: WormholeConfig;\n\n constructor({\n assets,\n ecosystem,\n explorer,\n isTestChain = false,\n key,\n name,\n nativeAsset,\n wh,\n }: ChainConstructorParams) {\n this.assets =\n assets instanceof Map\n ? assets\n : new Map(assets?.map((data) => [data.key, data]));\n this.ecosystem = ecosystem;\n this.explorer = explorer;\n this.isTestChain = isTestChain;\n this.key = key;\n this.name = name;\n this.#nativeAsset = nativeAsset;\n this.wh = wh;\n }\n\n get nativeAsset(): ChainAsset {\n return this.getChainAsset(this.#nativeAsset);\n }\n\n isEqual<T extends Chain>(chain: T): boolean {\n return this.key === chain.key;\n }\n\n getChainAsset(keyOrAsset: string | Asset | AssetAmount): ChainAsset {\n const key = typeof keyOrAsset === 'string' ? keyOrAsset : keyOrAsset.key;\n const chainAsset = this.assets.get(key);\n\n if (!chainAsset) {\n throw new Error(\n `No ChainAsset found by the key ${key} for chain ${this.name} (${this.key})`,\n );\n }\n\n return chainAsset;\n }\n\n getWormholeName(): WhChain {\n if (!this.wh?.name) {\n throw new Error(`Chain ${this.name} does not have a wormhole name`);\n }\n\n return this.wh.name;\n }\n}\n","import type { Chain } from '@wormhole-foundation/sdk-connect';\nimport type { EvmChain } from './EvmChain';\nimport type { EvmParachain, Parachain } from './parachain';\n\nexport type AnyChain = EvmChain | Parachain | EvmParachain;\nexport type AnyParachain = Parachain | EvmParachain;\n\nexport enum Ecosystem {\n Polkadot = 'polkadot',\n Kusama = 'kusama',\n AlphanetRelay = 'alphanet-relay',\n}\n\nexport interface WormholeConfig {\n name?: Chain;\n}\n","import { type Chain, defineChain } from 'viem';\nimport type { ChainAsset } from '../asset';\n\ninterface GetViemChainParams {\n id: number;\n name: string;\n nativeAsset: ChainAsset;\n rpc: string;\n}\n\nexport function getViemChain({\n id,\n name,\n nativeAsset,\n rpc,\n}: GetViemChainParams): Chain {\n return defineChain({\n id,\n name,\n nativeCurrency: {\n decimals: nativeAsset.decimals,\n name: nativeAsset.originSymbol,\n symbol: nativeAsset.originSymbol,\n },\n rpcUrls: {\n default: {\n http: [rpc],\n },\n },\n });\n}\n","import type { Chain as ViemChain } from 'viem';\nimport { Chain, type ChainConstructorParams } from './Chain';\nimport { getViemChain } from './Chain.utils';\n\nexport interface EvmChainConstructorParams extends ChainConstructorParams {\n id: number;\n rpc: string;\n}\n\nexport class EvmChain extends Chain {\n readonly id: number;\n\n readonly rpc: string;\n\n static is(obj: unknown): obj is EvmChain {\n return obj instanceof EvmChain;\n }\n\n constructor({ id, rpc, ...others }: EvmChainConstructorParams) {\n super(others);\n\n this.id = id;\n this.rpc = rpc;\n }\n\n getViemChain(): ViemChain {\n return getViemChain(this);\n }\n}\n","import { Chain, type ChainConstructorParams } from '../Chain';\n\nexport interface ParachainConstructorParams extends ChainConstructorParams {\n checkSovereignAccountBalances?: boolean;\n genesisHash: string;\n isRelay?: boolean;\n parachainId: number;\n ss58Format: number;\n usesChainDecimals?: boolean;\n weight?: number;\n ws: string[];\n}\n\nexport class Parachain extends Chain {\n readonly checkSovereignAccountBalances: boolean;\n\n readonly genesisHash: string;\n\n readonly isRelay: boolean;\n\n readonly parachainId: number;\n\n readonly ss58Format: number;\n\n readonly usesChainDecimals: boolean;\n\n readonly weight: number | undefined;\n\n readonly ws: string[];\n\n static is(obj: unknown): obj is Parachain {\n return obj instanceof Parachain;\n }\n\n constructor({\n checkSovereignAccountBalances,\n genesisHash,\n isRelay,\n parachainId,\n usesChainDecimals,\n ss58Format,\n weight,\n ws,\n ...others\n }: ParachainConstructorParams) {\n super(others);\n\n this.checkSovereignAccountBalances = !!checkSovereignAccountBalances;\n this.genesisHash = genesisHash;\n this.isRelay = !!isRelay;\n this.parachainId = parachainId;\n this.ss58Format = ss58Format;\n this.usesChainDecimals = !!usesChainDecimals;\n this.weight = weight;\n this.ws = ws;\n }\n}\n","import type { Address } from 'viem';\nimport type { Chain } from 'viem/chains';\nimport { getViemChain } from '../Chain.utils';\nimport { Parachain, type ParachainConstructorParams } from './Parachain';\n\nexport interface EvmParachainConstructorParams\n extends ParachainConstructorParams {\n id: number;\n rpc: string;\n isEvmSigner?: boolean;\n contracts?: Contracts;\n}\n\ntype Contracts = {\n Batch?: Address;\n XcmUtils?: Address;\n Xtokens?: Address;\n};\n\nexport class EvmParachain extends Parachain {\n readonly id: number;\n\n readonly rpc: string;\n\n readonly isEvmSigner: boolean;\n\n readonly contracts?: Contracts;\n\n static is(obj: unknown): obj is EvmParachain {\n return obj instanceof EvmParachain;\n }\n\n static isAnyParachain(obj: unknown): obj is EvmParachain | Parachain {\n return obj instanceof EvmParachain || obj instanceof Parachain;\n }\n\n constructor({\n id,\n rpc,\n isEvmSigner = false,\n contracts,\n ...others\n }: EvmParachainConstructorParams) {\n super(others);\n\n this.contracts = contracts;\n this.id = id;\n this.rpc = rpc;\n this.isEvmSigner = isEvmSigner;\n }\n\n getViemChain(): Chain {\n return getViemChain(this);\n }\n}\n"],"mappings":"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","names":["toBigInt","toBigInt","Ecosystem"]}
1
+ {"version":3,"sources":["../src/asset/Asset.ts","../src/asset/AssetAmount.ts","../src/asset/ChainAsset.ts","../src/chain/Chain.ts","../src/chain/Chain.interfaces.ts","../src/chain/Chain.utils.ts","../src/chain/EvmChain.ts","../src/chain/parachain/Parachain.ts","../src/chain/parachain/EvmParachain.ts"],"sourcesContent":["export interface AssetConstructorParams {\n key: string;\n originSymbol: string;\n}\n\nexport class Asset {\n readonly key: string;\n\n readonly originSymbol: string;\n\n constructor({ key, originSymbol }: AssetConstructorParams) {\n this.key = key;\n this.originSymbol = originSymbol;\n }\n\n copyWith(params: Partial<AssetConstructorParams>): Asset {\n return new Asset({\n ...this,\n ...params,\n });\n }\n\n isEqual(asset: Asset): boolean {\n return this.key === asset.key && this.originSymbol === asset.originSymbol;\n }\n}\n","import {\n convertDecimals,\n toBigInt,\n toDecimal,\n} from '@moonbeam-network/xcm-utils';\nimport Big, { type RoundingMode } from 'big.js';\nimport { ChainAsset, type ChainAssetConstructorParams } from './ChainAsset';\n\nBig.NE = -18;\n\nexport interface AssetAmountConstructorParams\n extends ChainAssetConstructorParams {\n amount: number | bigint;\n decimals: number;\n symbol?: string;\n}\n\nexport class AssetAmount extends ChainAsset {\n readonly amount: bigint;\n\n constructor({ amount, ...other }: AssetAmountConstructorParams) {\n super(other);\n\n this.amount = toBigInt(amount, other.decimals);\n }\n\n static fromChainAsset(\n asset: ChainAsset,\n params: Omit<\n AssetAmountConstructorParams,\n keyof ChainAssetConstructorParams\n >,\n ): AssetAmount {\n return new AssetAmount({\n ...asset,\n ...params,\n });\n }\n\n isSame(asset: ChainAsset | AssetAmount): boolean {\n return super.isEqual(asset) && this.decimals === asset.decimals;\n }\n\n isEqual(asset: AssetAmount): boolean {\n return this.isSame(asset) && this.amount === asset.amount;\n }\n\n copyWith(params: Partial<AssetAmountConstructorParams>): AssetAmount {\n return new AssetAmount({\n ...this,\n ...params,\n });\n }\n\n convertDecimals(decimals: number): AssetAmount {\n if (this.decimals === decimals) {\n return this.copyWith({});\n }\n\n return this.copyWith({\n amount: convertDecimals(this.amount, this.decimals, decimals),\n decimals,\n });\n }\n\n toBig(): Big {\n return Big(this.amount.toString());\n }\n\n toBigDecimal(maxDecimal?: number, roundType?: RoundingMode): Big {\n return Big(this.toDecimal(maxDecimal, roundType));\n }\n\n toDecimal(maxDecimal?: number, roundType?: RoundingMode): string {\n return toDecimal(this.amount, this.decimals, maxDecimal, roundType);\n }\n}\n","import { toBigInt } from '@moonbeam-network/xcm-utils';\nimport { Asset, type AssetConstructorParams } from './Asset';\n\nexport interface ChainAssetConstructorParams extends AssetConstructorParams {\n address?: string;\n decimals: number;\n ids?: ChainAssetIds;\n min?: number | bigint;\n symbol?: string;\n}\n\nexport interface ChainAssetIds {\n balanceId?: ChainAssetId;\n id?: ChainAssetId;\n minId?: ChainAssetId;\n palletInstance?: number;\n}\n\nexport type ChainAssetId =\n | string\n | number\n | bigint\n | { [key: string]: ChainAssetId };\n\nexport class ChainAsset extends Asset {\n readonly address?: string;\n\n readonly decimals: number;\n\n readonly ids?: ChainAssetIds;\n\n readonly min?: bigint;\n\n readonly symbol?: string;\n\n constructor({\n address,\n decimals,\n ids,\n min,\n symbol,\n ...other\n }: ChainAssetConstructorParams) {\n super(other);\n\n this.address = address;\n this.decimals = decimals;\n this.ids = ids;\n this.min = min ? toBigInt(min, decimals) : undefined;\n this.symbol = symbol;\n }\n\n static fromAsset(\n asset: Asset,\n params: Omit<ChainAssetConstructorParams, keyof AssetConstructorParams>,\n ): ChainAsset {\n return new ChainAsset({\n ...asset,\n ...params,\n });\n }\n\n copyWith(params: Partial<ChainAssetConstructorParams>): ChainAsset {\n return new ChainAsset({\n ...this,\n ...params,\n });\n }\n\n getSymbol(): string {\n return this.symbol || this.originSymbol;\n }\n\n getAssetId(): ChainAssetId {\n return this.ids?.id ?? this.originSymbol;\n }\n\n getBalanceAssetId(): ChainAssetId {\n return this.ids?.balanceId ?? this.getAssetId();\n }\n\n getMinAssetId(): ChainAssetId {\n return this.ids?.minId ?? this.getAssetId();\n }\n\n getAssetPalletInstance(): number | undefined {\n return this.ids?.palletInstance;\n }\n\n getAssetMin(): bigint {\n return this.min ?? 0n;\n }\n\n hasOnlyAddress(): this is { address: string } {\n return !!this.address && !this.ids?.id;\n }\n}\n","import type { Chain as WhChain } from '@wormhole-foundation/sdk-connect';\nimport type { Asset, AssetAmount, ChainAsset } from '../asset';\nimport type { Ecosystem, WormholeConfig } from './Chain.interfaces';\n\nexport interface ChainConstructorParams {\n assets: Map<string, ChainAsset> | ChainAsset[];\n ecosystem?: Ecosystem;\n explorer?: string;\n isTestChain?: boolean;\n key: string;\n name: string;\n nativeAsset: Asset;\n wh?: WormholeConfig;\n}\n\nexport abstract class Chain {\n readonly assets: Map<string, ChainAsset>;\n\n readonly ecosystem?: Ecosystem;\n\n readonly explorer?: string;\n\n readonly isTestChain: boolean;\n\n readonly key: string;\n\n readonly name: string;\n\n readonly #nativeAsset: Asset;\n\n readonly wh?: WormholeConfig;\n\n constructor({\n assets,\n ecosystem,\n explorer,\n isTestChain = false,\n key,\n name,\n nativeAsset,\n wh,\n }: ChainConstructorParams) {\n this.assets =\n assets instanceof Map\n ? assets\n : new Map(assets?.map((data) => [data.key, data]));\n this.ecosystem = ecosystem;\n this.explorer = explorer;\n this.isTestChain = isTestChain;\n this.key = key;\n this.name = name;\n this.#nativeAsset = nativeAsset;\n this.wh = wh;\n }\n\n get nativeAsset(): ChainAsset {\n return this.getChainAsset(this.#nativeAsset);\n }\n\n isEqual<T extends Chain>(chain: T): boolean {\n return this.key === chain.key;\n }\n\n getChainAsset(keyOrAsset: string | Asset | AssetAmount): ChainAsset {\n const key = typeof keyOrAsset === 'string' ? keyOrAsset : keyOrAsset.key;\n const chainAsset = this.assets.get(key);\n\n if (!chainAsset) {\n throw new Error(\n `No ChainAsset found by the key ${key} for chain ${this.name} (${this.key})`,\n );\n }\n\n return chainAsset;\n }\n\n getWormholeName(): WhChain {\n if (!this.wh?.name) {\n throw new Error(`Chain ${this.name} does not have a wormhole name`);\n }\n\n return this.wh.name;\n }\n}\n","import type { Chain } from '@wormhole-foundation/sdk-connect';\nimport type { EvmChain } from './EvmChain';\nimport type { EvmParachain, Parachain } from './parachain';\n\nexport type AnyChain = EvmChain | Parachain | EvmParachain;\nexport type AnyParachain = Parachain | EvmParachain;\n\nexport enum Ecosystem {\n Polkadot = 'polkadot',\n Kusama = 'kusama',\n AlphanetRelay = 'alphanet-relay',\n}\n\nexport interface WormholeConfig {\n name?: Chain;\n}\n","import { type Chain, defineChain } from 'viem';\nimport type { ChainAsset } from '../asset';\n\ninterface GetViemChainParams {\n id: number;\n name: string;\n nativeAsset: ChainAsset;\n rpc: string;\n}\n\nexport function getViemChain({\n id,\n name,\n nativeAsset,\n rpc,\n}: GetViemChainParams): Chain {\n return defineChain({\n id,\n name,\n nativeCurrency: {\n decimals: nativeAsset.decimals,\n name: nativeAsset.originSymbol,\n symbol: nativeAsset.originSymbol,\n },\n rpcUrls: {\n default: {\n http: [rpc],\n },\n },\n });\n}\n","import type { Chain as ViemChain } from 'viem';\nimport { Chain, type ChainConstructorParams } from './Chain';\nimport { getViemChain } from './Chain.utils';\n\nexport interface EvmChainConstructorParams extends ChainConstructorParams {\n id: number;\n rpc: string;\n}\n\nexport class EvmChain extends Chain {\n readonly id: number;\n\n readonly rpc: string;\n\n static is(obj: unknown): obj is EvmChain {\n return obj instanceof EvmChain;\n }\n\n constructor({ id, rpc, ...others }: EvmChainConstructorParams) {\n super(others);\n\n this.id = id;\n this.rpc = rpc;\n }\n\n getViemChain(): ViemChain {\n return getViemChain(this);\n }\n}\n","import { Chain, type ChainConstructorParams } from '../Chain';\n\nexport interface ParachainConstructorParams extends ChainConstructorParams {\n checkSovereignAccountBalances?: boolean;\n genesisHash: string;\n isRelay?: boolean;\n parachainId: number;\n ss58Format: number;\n usesChainDecimals?: boolean;\n weight?: number;\n ws: string[];\n}\n\nexport class Parachain extends Chain {\n readonly checkSovereignAccountBalances: boolean;\n\n readonly genesisHash: string;\n\n readonly isRelay: boolean;\n\n readonly parachainId: number;\n\n readonly ss58Format: number;\n\n readonly usesChainDecimals: boolean;\n\n readonly weight: number | undefined;\n\n readonly ws: string[];\n\n static is(obj: unknown): obj is Parachain {\n return obj instanceof Parachain;\n }\n\n constructor({\n checkSovereignAccountBalances,\n genesisHash,\n isRelay,\n parachainId,\n usesChainDecimals,\n ss58Format,\n weight,\n ws,\n ...others\n }: ParachainConstructorParams) {\n super(others);\n\n this.checkSovereignAccountBalances = !!checkSovereignAccountBalances;\n this.genesisHash = genesisHash;\n this.isRelay = !!isRelay;\n this.parachainId = parachainId;\n this.ss58Format = ss58Format;\n this.usesChainDecimals = !!usesChainDecimals;\n this.weight = weight;\n this.ws = ws;\n }\n}\n","import type { Address } from 'viem';\nimport type { Chain } from 'viem/chains';\nimport { getViemChain } from '../Chain.utils';\nimport { EvmChain } from '../EvmChain';\nimport { Parachain, type ParachainConstructorParams } from './Parachain';\n\nexport interface EvmParachainConstructorParams\n extends ParachainConstructorParams {\n id: number;\n rpc: string;\n isEvmSigner?: boolean;\n contracts?: Contracts;\n}\n\ntype Contracts = {\n Batch?: Address;\n XcmUtils?: Address;\n Xtokens?: Address;\n};\n\nexport class EvmParachain extends Parachain {\n readonly id: number;\n\n readonly rpc: string;\n\n readonly isEvmSigner: boolean;\n\n readonly contracts?: Contracts;\n\n static is(obj: unknown): obj is EvmParachain {\n return obj instanceof EvmParachain;\n }\n\n static isAnyParachain(obj: unknown): obj is EvmParachain | Parachain {\n return obj instanceof EvmParachain || obj instanceof Parachain;\n }\n\n static isAnyEvmChain(obj: unknown): obj is EvmParachain | EvmChain {\n return obj instanceof EvmParachain || obj instanceof EvmChain;\n }\n\n constructor({\n id,\n rpc,\n isEvmSigner = false,\n contracts,\n ...others\n }: EvmParachainConstructorParams) {\n super(others);\n\n this.contracts = contracts;\n this.id = id;\n this.rpc = rpc;\n this.isEvmSigner = isEvmSigner;\n }\n\n getViemChain(): Chain {\n return getViemChain(this);\n }\n}\n"],"mappings":"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","names":["toBigInt","toBigInt","Ecosystem"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moonbeam-network/xcm-types",
3
- "version": "1.0.0-dev.158",
3
+ "version": "1.0.0-dev.159",
4
4
  "description": "Moonbeam XCM Types",
5
5
  "repository": {
6
6
  "directory": "packages/types",
@@ -30,7 +30,7 @@
30
30
  "types": "./build/index.d.ts",
31
31
  "main": "./build/index.mjs",
32
32
  "dependencies": {
33
- "@moonbeam-network/xcm-utils": "1.0.0-dev.158",
33
+ "@moonbeam-network/xcm-utils": "1.0.0-dev.159",
34
34
  "big.js": "^6.2.1"
35
35
  },
36
36
  "devDependencies": {