diff --git a/packages/config/src/chains.ts b/packages/config/src/chains.ts index 0dc39e04..94ae2818 100644 --- a/packages/config/src/chains.ts +++ b/packages/config/src/chains.ts @@ -909,11 +909,9 @@ export const laosAlphanet = new EvmParachain({ '0x324e69fa1a64c0b3badec0016aca64878bc2f4b6146e6da26c7aaddee21947f7', key: 'laos-alphanet', name: 'Laos Alphanet', - id: 0, // TODO isTestChain: true, nativeAsset: maos, parachainId: 4001, - rpc: 'https://rpc.laosalphanet.gorengine.com', // TODO ss58Format: 42, ws: ['wss://rpc.laosalphanet.gorengine.com'], }); diff --git a/packages/types/src/chain/parachain/EvmParachain.ts b/packages/types/src/chain/parachain/EvmParachain.ts index 60ef2789..1e3a7b33 100644 --- a/packages/types/src/chain/parachain/EvmParachain.ts +++ b/packages/types/src/chain/parachain/EvmParachain.ts @@ -4,14 +4,26 @@ import { getViemChain } from '../Chain.utils'; import { EvmChain } from '../EvmChain'; import { Parachain, type ParachainConstructorParams } from './Parachain'; -export interface EvmParachainConstructorParams - extends ParachainConstructorParams { - id: number; - rpc: string; +interface EvmParachainConstructorParams extends ParachainConstructorParams { isEvmSigner?: boolean; contracts?: Contracts; } +type EvmParachainConstructorParamsForEvmSigner = + EvmParachainConstructorParams & { + id: number; + rpc: string; + }; + +type EvmParachainConstructorParamsForNonEvmSigner = Omit< + EvmParachainConstructorParams, + 'id' | 'rpc' +>; + +type EvmParachainConstructorParamsConditional = + | (EvmParachainConstructorParamsForEvmSigner & { isEvmSigner: true }) + | (EvmParachainConstructorParamsForNonEvmSigner & { isEvmSigner?: false }); + type Contracts = { Batch?: Address; XcmUtils?: Address; @@ -39,19 +51,13 @@ export class EvmParachain extends Parachain { return obj instanceof EvmParachain || obj instanceof EvmChain; } - constructor({ - id, - rpc, - isEvmSigner = false, - contracts, - ...others - }: EvmParachainConstructorParams) { - super(others); - - this.contracts = contracts; - this.id = id; - this.rpc = rpc; - this.isEvmSigner = isEvmSigner; + constructor(params: EvmParachainConstructorParamsConditional) { + super(params); + + this.contracts = params.contracts; + this.id = 'id' in params ? params.id : 0; + this.rpc = 'rpc' in params ? params.rpc : ''; + this.isEvmSigner = params.isEvmSigner ?? false; } getViemChain(): Chain {