{"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  generalKey?: GeneralKey;\n}\n\nexport type ChainAssetId =\n  | string\n  | number\n  | bigint\n  | { [key: string]: ChainAssetId };\n\nexport interface GeneralKey {\n  length: number;\n  data: string;\n}\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  getAssetRegisteredId(): ChainAssetId | undefined {\n    return this.ids?.id;\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 {\n    if (!this.ids?.palletInstance) {\n      throw new Error(\n        `Pallet instance is not defined for ${this.originSymbol}`,\n      );\n    }\n\n    return this.ids?.palletInstance;\n  }\n\n  getAssetMin(): bigint {\n    return this.min ?? 0n;\n  }\n\n  getGeneralKey(): GeneralKey | undefined {\n    return this.ids?.generalKey;\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?: Explorer;\n  isTestChain?: boolean;\n  key: string;\n  name: string;\n  nativeAsset: Asset;\n  wh?: WormholeConfig;\n}\n\ninterface Explorer {\n  base: string;\n  txPath?: string;\n}\n\nexport abstract class Chain {\n  readonly assets: Map<string, ChainAsset>;\n\n  readonly ecosystem?: Ecosystem;\n\n  readonly explorer?: Explorer;\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  StagenetRelay = 'stagenet-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  copyWith(params: Partial<EvmChainConstructorParams>): EvmChain {\n    return new EvmChain({\n      ...this,\n      ...params,\n    });\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  relayGenesisHash?: string;\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 relayGenesisHash?: string;\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    relayGenesisHash,\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.relayGenesisHash = relayGenesisHash;\n    this.ss58Format = ss58Format;\n    this.usesChainDecimals = !!usesChainDecimals;\n    this.weight = weight;\n    this.ws = ws;\n  }\n\n  copyWith(params: Partial<ParachainConstructorParams>): Parachain {\n    return new Parachain({\n      ...this,\n      ...params,\n    });\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  readonly ws: string[];\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    if (isEvmSigner) {\n      if (!id || !rpc) {\n        throw new Error(\n          `'id' and 'rpc' must be provided for ${this.name} if 'isEvmSigner' is true`,\n        );\n      }\n    }\n\n    this.contracts = contracts;\n    this.id = id ?? 0;\n    this.rpc = rpc ?? '';\n    this.isEvmSigner = isEvmSigner;\n    this.ws = others.ws;\n  }\n\n  getViemChain(): Chain {\n    return getViemChain(this);\n  }\n\n  copyWith(params: Partial<EvmParachainConstructorParams>): EvmParachain {\n    return new EvmParachain({\n      ...this,\n      ...params,\n    });\n  }\n}\n"],"mappings":"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","names":["toBigInt","toBigInt","Ecosystem"]}