From b3192e2fe2e03461e926e7d96da9554f6e178b43 Mon Sep 17 00:00:00 2001 From: Kieran O'Neill Date: Fri, 15 Aug 2025 09:14:55 +0200 Subject: [PATCH 1/2] fix(chains): adds evenchain class to chain type --- packages/chains/src/types/chains/Chain.ts | 4 ++-- packages/chains/src/types/chains/ChainConstructor.ts | 4 ++-- packages/chains/src/types/chains/NetworkInformation.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/chains/src/types/chains/Chain.ts b/packages/chains/src/types/chains/Chain.ts index 54f255c..af6d160 100644 --- a/packages/chains/src/types/chains/Chain.ts +++ b/packages/chains/src/types/chains/Chain.ts @@ -1,6 +1,6 @@ // decorators -import { AVMChain } from '@/decorators'; +import { AVMChain, EVMChain } from '@/decorators'; -type Chain = AVMChain; +type Chain = AVMChain | EVMChain; export default Chain; diff --git a/packages/chains/src/types/chains/ChainConstructor.ts b/packages/chains/src/types/chains/ChainConstructor.ts index e2c1303..b2ad804 100644 --- a/packages/chains/src/types/chains/ChainConstructor.ts +++ b/packages/chains/src/types/chains/ChainConstructor.ts @@ -1,6 +1,6 @@ // decorators -import { AVMChain } from '@/decorators'; +import { AVMChain, EVMChain } from '@/decorators'; -type ChainConstructor = typeof AVMChain; +type ChainConstructor = typeof AVMChain | typeof EVMChain; export default ChainConstructor; diff --git a/packages/chains/src/types/chains/NetworkInformation.ts b/packages/chains/src/types/chains/NetworkInformation.ts index 99b101b..f68704f 100644 --- a/packages/chains/src/types/chains/NetworkInformation.ts +++ b/packages/chains/src/types/chains/NetworkInformation.ts @@ -4,7 +4,7 @@ import { CAIP002Namespace } from '@/enums'; // types import { AVMNetworkInformation, EVMNetworkInformation } from '@/types'; -type NetworkInfomration = Namespace extends CAIP002Namespace.Algorand +type NetworkInformation = Namespace extends CAIP002Namespace.Algorand ? AVMNetworkInformation : Namespace extends CAIP002Namespace.AVM ? AVMNetworkInformation @@ -12,4 +12,4 @@ type NetworkInfomration = Namespace extends CAIP00 ? EVMNetworkInformation : never; -export default NetworkInfomration; +export default NetworkInformation; From ba805e46c3f80ebcbc9e5d00f27ec056876d0307 Mon Sep 17 00:00:00 2001 From: Kieran O'Neill Date: Fri, 15 Aug 2025 09:15:19 +0200 Subject: [PATCH 2/2] feat(chains): adds shote name to chains --- packages/chains/src/chains/Algorand.ts | 1 + packages/chains/src/chains/AlgorandBetanet.ts | 1 + packages/chains/src/chains/AlgorandFNet.ts | 1 + packages/chains/src/chains/AlgorandTestnet.ts | 1 + packages/chains/src/chains/ChiadoTestnet.ts | 1 + packages/chains/src/chains/Ethereum.ts | 1 + packages/chains/src/chains/EthereumSepolia.ts | 1 + packages/chains/src/chains/GnosisChain.ts | 1 + packages/chains/src/chains/Voi.ts | 1 + packages/chains/src/chains/VoiTestnet.ts | 1 + packages/chains/src/decorators/AVMChain.ts | 5 +++++ packages/chains/src/decorators/AbstractChain.ts | 15 +++++++++++++++ packages/chains/src/decorators/EVMChain.ts | 5 +++++ 13 files changed, 35 insertions(+) diff --git a/packages/chains/src/chains/Algorand.ts b/packages/chains/src/chains/Algorand.ts index 92ca5c2..11e9b04 100644 --- a/packages/chains/src/chains/Algorand.ts +++ b/packages/chains/src/chains/Algorand.ts @@ -21,6 +21,7 @@ export default class Algorand extends AVMChain { name: 'Algo', symbol: 'ALGO', }; + public static readonly shortName = 'algo'; public static readonly transports: Transports = { algods: { default: 0, diff --git a/packages/chains/src/chains/AlgorandBetanet.ts b/packages/chains/src/chains/AlgorandBetanet.ts index d7e7e26..192f366 100644 --- a/packages/chains/src/chains/AlgorandBetanet.ts +++ b/packages/chains/src/chains/AlgorandBetanet.ts @@ -21,6 +21,7 @@ export default class AlgorandBetanet extends AVMChain { name: 'Algo', symbol: 'ALGO', }; + public static readonly shortName = 'algo'; public static readonly transports: Transports = { algods: { default: 0, diff --git a/packages/chains/src/chains/AlgorandFNet.ts b/packages/chains/src/chains/AlgorandFNet.ts index c75bf53..d45c5d7 100644 --- a/packages/chains/src/chains/AlgorandFNet.ts +++ b/packages/chains/src/chains/AlgorandFNet.ts @@ -21,6 +21,7 @@ export default class AlgorandFNet extends AVMChain { name: 'Algo', symbol: 'ALGO', }; + public static readonly shortName = 'algo'; public static readonly transports: Transports = { algods: { default: 0, diff --git a/packages/chains/src/chains/AlgorandTestnet.ts b/packages/chains/src/chains/AlgorandTestnet.ts index d94daa3..e8eded5 100644 --- a/packages/chains/src/chains/AlgorandTestnet.ts +++ b/packages/chains/src/chains/AlgorandTestnet.ts @@ -21,6 +21,7 @@ export default class AlgorandTestnet extends AVMChain { name: 'Algo', symbol: 'ALGO', }; + public static readonly shortName = 'algo'; public static readonly transports: Transports = { algods: { default: 0, diff --git a/packages/chains/src/chains/ChiadoTestnet.ts b/packages/chains/src/chains/ChiadoTestnet.ts index 2223df9..f10f4c8 100644 --- a/packages/chains/src/chains/ChiadoTestnet.ts +++ b/packages/chains/src/chains/ChiadoTestnet.ts @@ -21,6 +21,7 @@ export default class ChiadoTestnet extends EVMChain { name: 'Testnet xDai', symbol: 'xDAI', }; + public static readonly shortName = 'gno'; public static readonly transports: Transports = { https: { default: 0, diff --git a/packages/chains/src/chains/Ethereum.ts b/packages/chains/src/chains/Ethereum.ts index 338e0f9..175df1f 100644 --- a/packages/chains/src/chains/Ethereum.ts +++ b/packages/chains/src/chains/Ethereum.ts @@ -21,6 +21,7 @@ export default class Ethereum extends EVMChain { name: 'Ether', symbol: 'ETH', }; + public static readonly shortName = 'eth'; public static readonly transports: Transports = { https: { default: 0, diff --git a/packages/chains/src/chains/EthereumSepolia.ts b/packages/chains/src/chains/EthereumSepolia.ts index 39e5866..23de33a 100644 --- a/packages/chains/src/chains/EthereumSepolia.ts +++ b/packages/chains/src/chains/EthereumSepolia.ts @@ -21,6 +21,7 @@ export default class EthereumSepolia extends EVMChain { name: 'Ether', symbol: 'ETH', }; + public static readonly shortName = 'eth'; public static readonly transports: Transports = { https: { default: 0, diff --git a/packages/chains/src/chains/GnosisChain.ts b/packages/chains/src/chains/GnosisChain.ts index 4f5e0eb..2268333 100644 --- a/packages/chains/src/chains/GnosisChain.ts +++ b/packages/chains/src/chains/GnosisChain.ts @@ -21,6 +21,7 @@ export default class GnosisChain extends EVMChain { name: 'xDai', symbol: 'xDAI', }; + public static readonly shortName = 'gno'; public static readonly transports: Transports = { https: { default: 0, diff --git a/packages/chains/src/chains/Voi.ts b/packages/chains/src/chains/Voi.ts index 2bc288e..81bef81 100644 --- a/packages/chains/src/chains/Voi.ts +++ b/packages/chains/src/chains/Voi.ts @@ -21,6 +21,7 @@ export default class Voi extends AVMChain { name: 'Voi', symbol: 'VOI', }; + public static readonly shortName = 'voi'; public static readonly transports: Transports = { algods: { default: 0, diff --git a/packages/chains/src/chains/VoiTestnet.ts b/packages/chains/src/chains/VoiTestnet.ts index c7013c1..8222ddd 100644 --- a/packages/chains/src/chains/VoiTestnet.ts +++ b/packages/chains/src/chains/VoiTestnet.ts @@ -21,6 +21,7 @@ export default class VoiTestnet extends AVMChain { name: 'Voi', symbol: 'VOI', }; + public static readonly shortName = 'voi'; public static readonly transports: Transports = { algods: { default: 0, diff --git a/packages/chains/src/decorators/AVMChain.ts b/packages/chains/src/decorators/AVMChain.ts index b4477e4..e67bf85 100644 --- a/packages/chains/src/decorators/AVMChain.ts +++ b/packages/chains/src/decorators/AVMChain.ts @@ -23,6 +23,7 @@ export default class AVMChain extends AbstractChain { */ public static readonly namespace: CAIP002Namespace.Algorand | CAIP002Namespace.AVM; + public static readonly shortName: string; public static readonly transports: Transports; protected constructor(params: ChainParameters) { @@ -98,6 +99,10 @@ export default class AVMChain extends AbstractChain { return (this.constructor as typeof AVMChain).namespace; } + public shortName(): string { + return (this.constructor as typeof AVMChain).shortName; + } + public transports(): Transports { return (this.constructor as typeof AVMChain).transports; } diff --git a/packages/chains/src/decorators/AbstractChain.ts b/packages/chains/src/decorators/AbstractChain.ts index a19ea76..fa97741 100644 --- a/packages/chains/src/decorators/AbstractChain.ts +++ b/packages/chains/src/decorators/AbstractChain.ts @@ -44,6 +44,12 @@ export default abstract class AbstractChain { * @readonly */ public static readonly namespace: CAIP002Namespace; + /** + * The chain's short name, as per [ERC-3770]{@link https://eips.ethereum.org/EIPS/eip-3770}. + * @static + * @readonly + */ + public static readonly shortName: string; /** * Details relating to the native currency of the chain. * @static @@ -97,6 +103,15 @@ export default abstract class AbstractChain { */ public abstract namespace(): CAIP002Namespace; + /** + * Gets the chain's short name, as per [ERC-3770]{@link https://eips.ethereum.org/EIPS/eip-3770}. + * + * @return {string} The chain's short name, as per [ERC-3770]{@link https://eips.ethereum.org/EIPS/eip-3770}. + * @public + * @abstract + */ + public abstract shortName(): string; + /** * Gets the transport configuration to communicate with the chain for the specified * [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} namespace. diff --git a/packages/chains/src/decorators/EVMChain.ts b/packages/chains/src/decorators/EVMChain.ts index c2035f9..4623d67 100644 --- a/packages/chains/src/decorators/EVMChain.ts +++ b/packages/chains/src/decorators/EVMChain.ts @@ -16,6 +16,7 @@ export default class EVMChain extends AbstractChain { */ public static readonly namespace: CAIP002Namespace.EIP155; + public static readonly shortName: string; public static readonly transports: Transports; protected constructor(params: ChainParameters) { @@ -71,6 +72,10 @@ export default class EVMChain extends AbstractChain { return (this.constructor as typeof EVMChain).namespace; } + public shortName(): string { + return (this.constructor as typeof EVMChain).shortName; + } + public transports(): Transports { return (this.constructor as typeof EVMChain).transports; }