From fbfe03dc316cde25faf8425444b69c39082c1d9c Mon Sep 17 00:00:00 2001 From: Kieran O'Neill Date: Fri, 15 Aug 2025 20:07:45 +0200 Subject: [PATCH] fix(chains): uses conditional namespace for inferring chain type --- packages/chains/src/types/chains/Chain.ts | 11 ++++++++++- packages/chains/src/types/chains/ChainConstructor.ts | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) 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;