diff --git a/packages/chains/src/types/chains/Chain.ts b/packages/chains/src/types/chains/Chain.ts index af6d160..7fdbb0e 100644 --- a/packages/chains/src/types/chains/Chain.ts +++ b/packages/chains/src/types/chains/Chain.ts @@ -1,6 +1,15 @@ // decorators import { AVMChain, EVMChain } from '@/decorators'; -type Chain = AVMChain | EVMChain; +// enums +import { CAIP002Namespace } from '@/enums'; + +type Chain = Namespace extends CAIP002Namespace.Algorand + ? AVMChain + : Namespace extends CAIP002Namespace.AVM + ? AVMChain + : Namespace extends CAIP002Namespace.EIP155 + ? EVMChain + : never; export default Chain; diff --git a/packages/chains/src/types/chains/ChainConstructor.ts b/packages/chains/src/types/chains/ChainConstructor.ts index b2ad804..2aa173d 100644 --- a/packages/chains/src/types/chains/ChainConstructor.ts +++ b/packages/chains/src/types/chains/ChainConstructor.ts @@ -1,6 +1,15 @@ // decorators import { AVMChain, EVMChain } from '@/decorators'; -type ChainConstructor = typeof AVMChain | typeof EVMChain; +// enums +import { CAIP002Namespace } from '@/enums'; + +type ChainConstructor = Namespace extends CAIP002Namespace.Algorand + ? typeof AVMChain + : Namespace extends CAIP002Namespace.AVM + ? typeof AVMChain + : Namespace extends CAIP002Namespace.EIP155 + ? typeof EVMChain + : never; export default ChainConstructor;