diff --git a/packages/chains/package.json b/packages/chains/package.json index f5532c1..0b5c470 100644 --- a/packages/chains/package.json +++ b/packages/chains/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "@kibisis/encoding": "workspace:^", - "axios": "^1.10.0" + "@stablelib/uuid": "^2.0.1", + "axios": "^1.11.0" } } diff --git a/packages/chains/src/chains/Algorand.ts b/packages/chains/src/chains/Algorand.ts index 182549e..92ca5c2 100644 --- a/packages/chains/src/chains/Algorand.ts +++ b/packages/chains/src/chains/Algorand.ts @@ -8,7 +8,7 @@ import { AVMChain } from '@/decorators'; import { CAIP002Namespace } from '@/enums'; // types -import type { NetworkConfiguration } from '@/types'; +import type { Transports } from '@/types'; export default class Algorand extends AVMChain { // public static variables @@ -21,7 +21,7 @@ export default class Algorand extends AVMChain { name: 'Algo', symbol: 'ALGO', }; - public static readonly networkConfiguration: NetworkConfiguration = { + public static readonly transports: Transports = { algods: { default: 0, nodes: [ diff --git a/packages/chains/src/chains/AlgorandBetanet.ts b/packages/chains/src/chains/AlgorandBetanet.ts index 7260a1d..d7e7e26 100644 --- a/packages/chains/src/chains/AlgorandBetanet.ts +++ b/packages/chains/src/chains/AlgorandBetanet.ts @@ -8,7 +8,7 @@ import { AVMChain } from '@/decorators'; import { CAIP002Namespace } from '@/enums'; // types -import type { NetworkConfiguration } from '@/types'; +import type { Transports } from '@/types'; export default class AlgorandBetanet extends AVMChain { // public static variables @@ -21,7 +21,7 @@ export default class AlgorandBetanet extends AVMChain { name: 'Algo', symbol: 'ALGO', }; - public static readonly networkConfiguration: NetworkConfiguration = { + public static readonly transports: Transports = { algods: { default: 0, nodes: [ diff --git a/packages/chains/src/chains/AlgorandFNet.ts b/packages/chains/src/chains/AlgorandFNet.ts index 41ce96c..c75bf53 100644 --- a/packages/chains/src/chains/AlgorandFNet.ts +++ b/packages/chains/src/chains/AlgorandFNet.ts @@ -8,7 +8,7 @@ import { AVMChain } from '@/decorators'; import { CAIP002Namespace } from '@/enums'; // types -import type { NetworkConfiguration } from '@/types'; +import type { Transports } from '@/types'; export default class AlgorandFNet extends AVMChain { // public static variables @@ -21,7 +21,7 @@ export default class AlgorandFNet extends AVMChain { name: 'Algo', symbol: 'ALGO', }; - public static readonly networkConfiguration: NetworkConfiguration = { + public static readonly transports: Transports = { algods: { default: 0, nodes: [ diff --git a/packages/chains/src/chains/AlgorandTestnet.ts b/packages/chains/src/chains/AlgorandTestnet.ts index a33abbe..d94daa3 100644 --- a/packages/chains/src/chains/AlgorandTestnet.ts +++ b/packages/chains/src/chains/AlgorandTestnet.ts @@ -8,7 +8,7 @@ import { AVMChain } from '@/decorators'; import { CAIP002Namespace } from '@/enums'; // types -import type { NetworkConfiguration } from '@/types'; +import type { Transports } from '@/types'; export default class AlgorandTestnet extends AVMChain { // public static variables @@ -21,7 +21,7 @@ export default class AlgorandTestnet extends AVMChain { name: 'Algo', symbol: 'ALGO', }; - public static readonly networkConfiguration: NetworkConfiguration = { + public static readonly transports: Transports = { algods: { default: 0, nodes: [ diff --git a/packages/chains/src/chains/Ethereum.ts b/packages/chains/src/chains/Ethereum.ts new file mode 100644 index 0000000..338e0f9 --- /dev/null +++ b/packages/chains/src/chains/Ethereum.ts @@ -0,0 +1,35 @@ +// constants +import { ETHEREUM_CHAIN_LOGO_URI, ETHEREUM_CURRENCY_ICON_URI } from '@/constants'; + +// decorators +import { EVMChain } from '@/decorators'; + +// enums +import { CAIP002Namespace } from '@/enums'; + +// types +import type { Transports } from '@/types'; + +export default class Ethereum extends EVMChain { + // public static variables + public static readonly displayName = 'Ethereum'; + public static readonly iconURI = ETHEREUM_CHAIN_LOGO_URI; + public static readonly namespace = CAIP002Namespace.EIP155; + public static readonly nativeCurrency = { + decimals: 18, + iconURI: ETHEREUM_CURRENCY_ICON_URI, + name: 'Ether', + symbol: 'ETH', + }; + public static readonly transports: Transports = { + https: { + default: 0, + rpcURLs: ['https://eth-mainnet.public.blastapi.io'], + }, + websockets: { + default: 0, + rpcURLs: ['wss://eth-mainnet.public.blastapi.io'], + }, + }; + public static readonly testnet = false; +} diff --git a/packages/chains/src/chains/EthereumSepolia.ts b/packages/chains/src/chains/EthereumSepolia.ts new file mode 100644 index 0000000..39e5866 --- /dev/null +++ b/packages/chains/src/chains/EthereumSepolia.ts @@ -0,0 +1,35 @@ +// constants +import { ETHEREUM_CHAIN_LOGO_URI, ETHEREUM_CURRENCY_ICON_URI } from '@/constants'; + +// decorators +import { EVMChain } from '@/decorators'; + +// enums +import { CAIP002Namespace } from '@/enums'; + +// types +import type { Transports } from '@/types'; + +export default class EthereumSepolia extends EVMChain { + // public static variables + public static readonly displayName = 'Ethereum Sepolia'; + public static readonly iconURI = ETHEREUM_CHAIN_LOGO_URI; + public static readonly namespace = CAIP002Namespace.EIP155; + public static readonly nativeCurrency = { + decimals: 18, + iconURI: ETHEREUM_CURRENCY_ICON_URI, + name: 'Ether', + symbol: 'ETH', + }; + public static readonly transports: Transports = { + https: { + default: 0, + rpcURLs: ['https://eth-sepolia.public.blastapi.io'], + }, + websockets: { + default: 0, + rpcURLs: ['wss://eth-sepolia.public.blastapi.io'], + }, + }; + public static readonly testnet = true; +} diff --git a/packages/chains/src/chains/Voi.ts b/packages/chains/src/chains/Voi.ts index 66c1cf3..2bc288e 100644 --- a/packages/chains/src/chains/Voi.ts +++ b/packages/chains/src/chains/Voi.ts @@ -8,7 +8,7 @@ import { AVMChain } from '@/decorators'; import { CAIP002Namespace } from '@/enums'; // types -import type { NetworkConfiguration } from '@/types'; +import type { Transports } from '@/types'; export default class Voi extends AVMChain { // public static variables @@ -21,7 +21,7 @@ export default class Voi extends AVMChain { name: 'Voi', symbol: 'VOI', }; - public static readonly networkConfiguration: NetworkConfiguration = { + public static readonly transports: Transports = { algods: { default: 0, nodes: [ diff --git a/packages/chains/src/chains/VoiTestnet.ts b/packages/chains/src/chains/VoiTestnet.ts index de7d10a..c7013c1 100644 --- a/packages/chains/src/chains/VoiTestnet.ts +++ b/packages/chains/src/chains/VoiTestnet.ts @@ -8,7 +8,7 @@ import { AVMChain } from '@/decorators'; import { CAIP002Namespace } from '@/enums'; // types -import type { NetworkConfiguration } from '@/types'; +import type { Transports } from '@/types'; export default class VoiTestnet extends AVMChain { // public static variables @@ -21,7 +21,7 @@ export default class VoiTestnet extends AVMChain { name: 'Voi', symbol: 'VOI', }; - public static readonly networkConfiguration: NetworkConfiguration = { + public static readonly transports: Transports = { algods: { default: 0, nodes: [ diff --git a/packages/chains/src/constants/AlgorandURIs.ts b/packages/chains/src/constants/AlgorandURIs.ts new file mode 100644 index 0000000..778c6ef --- /dev/null +++ b/packages/chains/src/constants/AlgorandURIs.ts @@ -0,0 +1,4 @@ +export const ALGORAND_CHAIN_LOGO_URI = + 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IGZpbGw9IiMwMDAwMDAiIGhlaWdodD0iNTEyIiB4PSI1ZS0wNyIgd2lkdGg9IjUxMiIgeT0iNWUtMDciLz4KICA8cG9seWdvbiBmaWxsPSIjZmZmZmZmIiBwb2ludHM9IjQzMy44OCwyNjQuOTUgNDA4LjE0LDMwOS43MSA0NDQuMTgsNDQ0LjMyIDQwNi44MSw0NDQuMzIgMzgyLjU0LDM1NC4wNCAzMzAuMzYsNDQ0LjMzIDI4OC42NCw0NDQuMzMgMzY5LjI5LDMwNC41NyAzNTYuMzEsMjU2LjA1IDI0Ny41Niw0NDQuMzYgMjA1LjgyLDQ0NC4zNiAzNDMuNjQsMjA1LjY0IDM4MC4xOCwyMDUuNjQgMzk2LjE4LDI2NC45NSAiIHRyYW5zZm9ybT0ibWF0cml4KDEuMDc0MDE0MSwwLDAsMS4wNzQwMTQxLC05My4wNTQ1ODMsLTkzLjA1NDU4MykiLz4KPC9zdmc+Cg=='; +export const ALGORAND_CURRENCY_ICON_URI = + 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgoJPHBhdGgKCSAgICAgIGQ9Ik0gMy43OTI0ODAxLDExOTYuNzU0NyBDIDcuMzg4OTI2LDExOTAuNzg2OCAxNzIuNTQ4ODcsOTA0LjUzNjYzIDI2Mi43MTM5Miw3NDggMzM5LjQwNzIzLDYxNC44NTE4MyA0MDIuMzI1MzUsNTA1Ljg0MDM4IDY1MC4yODM0OCw3Ni41IDY3Mi44MzYxMywzNy40NSA2OTIuMTU0MDgsNC4yNjI1IDY5My4yMTIyNSwyLjc1IEwgNjk1LjEzNjE5LDAgaCA5MC4zMDAxMyA5MC4zMDAxMyBsIDEuNTgzMTksNS43NSBjIDAuODcwNzUsMy4xNjI1IDE0LjkwOTk2LDU1LjcgMzEuMTk4MjUsMTE2Ljc1IDMzLjM0NTM2LDEyNC45ODE0OCA0NC43MjU4NiwxNjcuMTc1MzkgNDYuNjYxNDMsMTczIGwgMS4zMjkyMyw0IDkzLjczNDE1LDAuNSA5My43MzQxLDAuNSAtNjMuNjM4OSwxMTAgYyAtMzUuMDAxNCw2MC41IC02My44MjA2LDExMC45IC02NC4wNDI2LDExMiAtMC4yMjIsMS4xIDMuODc3NiwxNy41MzgxNCA5LjExMDIsMzYuNTI5MjEgQyAxMDQyLjUwNDksNjIxLjA4OTQzIDExOTcsMTE5Ny4yNzQ4IDExOTcsMTE5OC45ODY0IGMgMCwwLjY3NzUgLTMwLjc1OTIsMS4wMTM2IC05Mi43NjgzLDEuMDEzNiBoIC05Mi43Njg0IEwgOTc0LjA4NDA4LDEwNjAuMjUgQyA5NDMuMjg5Niw5NDUuMTE4NTQgODkxLjY2MjM3LDc1My45ODQ5OSA4ODkuMzc0MjMsNzQ2LjYzODQ5IGMgLTAuNDg0ODIsLTEuNTU2NTkgLTAuNzg3MDYsLTEuNjM4NDkgLTEuODQ1MiwtMC41IC0wLjY5NTk3LDAuNzQ4ODMgLTMzLjIyMzg2LDU2LjcxMTUxIC03Mi4yODQxOSwxMjQuMzYxNTEgLTM5LjA2MDMzLDY3LjY1IC05Ny42NTA3MSwxNjkuMTI1IC0xMzAuMjAwODUsMjI1LjUgLTMyLjU1MDE0LDU2LjM3NSAtNTkuNTEzMTIsMTAyLjgzOTYgLTU5LjkxNzczLDEwMy4yNTQ3IC0wLjQwNDYxLDAuNDE1MSAtNDcuMTUzMTUsMC42NDAxIC0xMDMuODg1NjUsMC41IEwgNDE4LjA5MDYzLDExOTkuNSA1MDcuMzYxNjUsMTA0NCBDIDU1Ni40NjA3MSw5NTguNDc1IDYzNi45MjIzNCw4MTguOTc1IDY4Ni4xNjUyNiw3MzQgNzc2LjYwMjU3LDU3Ny45Mzg4MSA4MTkuNzMxNzcsNTAzLjM0MDc3IDgyMS44NjcwOCw0OTkuMjg0NTkgYyAwLjk5MDY2LC0xLjg4MTgzIC0zLjUxMjA1LC0xOS43MjUwMiAtMjkuOTAzMzIsLTExOC41IEMgNzU0Ljg4MDcxLDI0MS45OTMyOSA3NTcuODg0MjUsMjUzIDc1Ny4wOTM1MiwyNTMgNzU1Ljc5NTAzLDI1MyA3MjMuMjI4NTcsMzA4Ljg3MTg4IDY0MS45NzUyLDQ1MC41IDU5Ni4yMjE4OCw1MzAuMjUgNTE3LjQ1ODcsNjY2LjgyNSA0NjYuOTQ1OSw3NTQgNDE2LjQzMzEsODQxLjE3NSAzMzcuODE3ODksOTc3LjA3NSAyOTIuMjQ1NDMsMTA1NiBsIC04Mi44NTkwMSwxNDMuNSAtMTAzLjc3NzY1LDAuMjU0NyAtMTAzLjc3NzY1MDcsMC4yNTQ2IHoiIC8+Cjwvc3ZnPgo='; diff --git a/packages/chains/src/constants/EthereumURIs.ts b/packages/chains/src/constants/EthereumURIs.ts new file mode 100644 index 0000000..87c4987 --- /dev/null +++ b/packages/chains/src/constants/EthereumURIs.ts @@ -0,0 +1,3 @@ +export const ETHEREUM_CHAIN_LOGO_URI = `data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxwYXRoIGQ9Ik0gMCwwIEggNTEyIFYgNTEyIEggMCBaIiBmaWxsPSIjZWNlZmYwIi8+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4yNjY2NjY2NywwLDAsMC4yNjY2NjY2Nyw2NC42MzIxMzMsMTA1LjI1NDYzKSI+CiAgICA8cGF0aCBkPSJNIDcxNy41MTkyNyw0MzkuMDIzMDggNDIwLDU3NC4yNzkxNSA3MTcuNTE5MjcsNzUwLjE1NjE0IDEwMTUuMDkzNyw1NzQuMjc5MTUgWiIgb3BhY2l0eT0iMC42Ii8+CiAgICA8cGF0aCBkPSJNIDQyMC4xMTAyMyw1NzQuMjc5MTUgNzE3LjYyOTUsNzUwLjE1NjE0IFYgNDM5LjAyMzA4IDgwLjYgWiIgb3BhY2l0eT0iMC40NSIvPgogICAgPHBhdGggZD0iTSA3MTcuNjI5NSw4MC42IFYgNDM5LjAyMzA4IDc1MC4xNTYxNCBMIDEwMTUuMTQ4OCw1NzQuMjc5MTUgWiIgb3BhY2l0eT0iMC44Ii8+CiAgICA8cGF0aCBkPSJNIDQyMCw2MzAuNzE4NTMgNzE3LjUxOTI3LDEwNDkuOTkwMyBWIDgwNi40ODUyOCBaIiBvcGFjaXR5PSIwLjQ1Ii8+CiAgICA8cGF0aCBkPSJNIDcxNy41MTkyNyw4MDYuNDg1MjggViAxMDQ5Ljk5MDMgTCAxMDE1LjI1OSw2MzAuNzE4NTMgWiIgb3BhY2l0eT0iMC44Ii8+CiAgPC9nPgo8L3N2Zz4K`; +export const ETHEREUM_CURRENCY_ICON_URI = + 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxwYXRoIGQ9Im0gMjUwLjc3NSw1MDQuNjAzMzggYyAtMi44Mjk3MSwtNC4wNjgxNSAtMTEuMDM3NiwtMTUuODI3NTMgLTE4LjIzOTc2LC0yNi4xMzE5NiAtNy4yMDIxNSwtMTAuMzA0NDMgLTE5LjY5MDE0LC0yOC4xNzUwNSAtMjcuNzUxMDcsLTM5LjcxMjQ4IC04LjA2MDkyLC0xMS41Mzc0NCAtMTguMjMyOTIsLTI2LjA5MzM1IC0yMi42MDQ0MywtMzIuMzQ2NDcgLTcuNjYyNTQsLTEwLjk2MDY3IC0xMC45ODczNiwtMTUuNzE4MzkgLTE4LjYwNDA0LC0yNi42MjE3NyAtMS45NTMzNywtMi43OTYzIC02LjM5NzAzLC05LjE1NTUgLTkuODc0NzgsLTE0LjEzMTU2IC0zLjQ3Nzc2LC00Ljk3NjA3IC03LjYzMjI0LC0xMC45MjA5MyAtOS4yMzIxNywtMTMuMjEwODEgLTEuNTk5OTMsLTIuMjg5ODggLTYuMjgyNzcsLTguOTkxMzYgLTEwLjQwNjMxLC0xNC44OTIxOCAtNC4xMjM1MywtNS45MDA4MyAtMTIuMDAzNDUsLTE3LjE3ODA1IC0xNy41MTA5MywtMjUuMDYwNTEgLTUuNTA3NDgsLTcuODgyNDQgLTEwLjkzNDcsLTE1LjY0NjggLTEyLjA2MDQ5LC0xNy4yNTQxMSAtMS4xMjU4LC0xLjYwNzMyIC0yLjAyMDcyLC0yLjkyMjQgLTEuOTg4NzEsLTIuOTIyNCAwLjAzMiwwIDMuOTAyOTgsMi40MDAxMiA4LjYwMjE3LDUuMzMzNTcgNC42OTkxOCwyLjkzMzQ2IDEzLjUxNjA0LDguNDM1OTYgMTkuNTkzMDEsMTIuMjI3NzggNi4wNzY5OCwzLjc5MTgzIDE3LjMxODE3LDEwLjgwNjQ5IDI0Ljk4MDQ0LDE1LjU4ODEyIDcuNjYyMjcsNC43ODE2NCAxNi4zODE0LDEwLjIyMTAxIDE5LjM3NTg1LDEyLjA4NzQ1IDIuOTk0NDUsMS44NjY0NiAxMC44MTI4NCw2Ljc0Mzg5IDE3LjM3NDIxLDEwLjgzODcyIDI3LjE3MDA1LDE2Ljk1NjQgNDkuOTg1MTEsMzEuMTkxNTIgNTYuNTY2MjgsMzUuMjkzNjcgbCA3LjAwNTczLDQuMzY2ODEgNy4wMDU3MiwtNC4zNjY4MSBjIDYuNTgxMTcsLTQuMTAyMTUgMjkuMzk2MjMsLTE4LjMzNzI3IDU2LjU2NjI4LC0zNS4yOTM2NyA2LjU2MTM3LC00LjA5NDgzIDE0LjM3OTc3LC04Ljk3MjI2IDE3LjM3NDIxLC0xMC44Mzg3MiAyLjk5NDQ1LC0xLjg2NjQ0IDExLjcxMzU4LC03LjMwNTgxIDE5LjM3NTg1LC0xMi4wODc0NSA3LjY2MjI3LC00Ljc4MTYzIDE4LjkwMzQ3LC0xMS43OTYyOSAyNC45ODA0NCwtMTUuNTg4MTIgNi4wNzY5NywtMy43OTE4MiAxNC44OTM4NCwtOS4yOTQzMiAxOS41OTMwMiwtMTIuMjI3NzggNC42OTkxOSwtMi45MzM0NSA4LjU3MDE2LC01LjMzMzU3IDguNjAyMTgsLTUuMzMzNTcgMC4wMzIsMCAtMC44NjI5MiwxLjMxNTA4IC0xLjk4ODcyLDIuOTIyNCAtMS4xMjU4LDEuNjA3MzEgLTYuNTUzMDMsOS4zNzE2NyAtMTIuMDYwNSwxNy4yNTQxMSAtNS41MDc0Nyw3Ljg4MjQ2IC0xMy4zODczOSwxOS4xNTk2OCAtMTcuNTEwOTIsMjUuMDYwNTEgLTQuMTIzNTQsNS45MDA4MiAtOC44MDYzNywxMi42MDIzIC0xMC40MDYzMSwxNC44OTIxOCAtMS41OTk5NSwyLjI4OTg4IC01Ljc1NDQyLDguMjM0NzQgLTkuMjMyMTgsMTMuMjEwODEgLTMuNDc3NzYsNC45NzYwNiAtNy45MDg4MiwxMS4zMTcyNSAtOS44NDY4MSwxNC4wOTE1MiAtNy41MDE5NiwxMC43MzkyMyAtMTAuOTU4MTcsMTUuNjg1IC0xOC42MzIsMjYuNjYxODEgLTQuMzcxNTIsNi4yNTMxMiAtMTQuNTQzNTIsMjAuODA5MDMgLTIyLjYwNDQ1LDMyLjM0NjQ3IC04LjA2MDkyLDExLjUzNzQzIC0yMC41NDg5MSwyOS40MDgwNSAtMjcuNzUxMDcsMzkuNzEyNDggLTcuMjAyMTQsMTAuMzA0NDMgLTE1LjQxMDA0LDIyLjA2MzgxIC0xOC4yMzk3NSwyNi4xMzE5NiBDIDI1OC4zOTUyOCw1MDguNjcxNTIgMjU2LjA0NDA0LDUxMiAyNTYsNTEyIGMgLTAuMDQ0LDAgLTIuMzk1MjksLTMuMzI4NDggLTUuMjI1LC03LjM5NjYyIHogTSAyMzkuNjY2NjMsMzQ2LjgzMzM5IGMgLTE2LjMyMDI3LC0xMC4xOTg0MyAtMjIuMzA0OTEsLTEzLjkzNDUgLTQ5LjI0MDI3LC0zMC43Mzk1OCAtMjUuMTk0NjgsLTE1LjcxOTA2IC0zNS40OTg0OSwtMjIuMTQ3OTMgLTQ4LjExOTM3LC0zMC4wMjMyMiAtNi43Mzc1MSwtNC4yMDQxMyAtMTguNDQ3MDksLTExLjUxMDM0IC0yNi4wMjEyOSwtMTYuMjM1OTkgLTcuNTc0MTksLTQuNzI1NjcgLTEzLjc5NDYzLC04LjY1OTcgLTEzLjgyMzE5LC04Ljc0MjMxIC0wLjAyODYsLTAuMDgyNiA2LjEwNDY4LC0xMC42MTg2NiAxMy42Mjk0NCwtMjMuNDEzNTEgNy41MjQ3NSwtMTIuNzk0ODYgMTguNjM3ODgsLTMxLjY5NDI2IDI0LjY5NTg1LC00MS45OTg2OSA2LjA1Nzk2LC0xMC4zMDQ0MyAxOS4xNzE0NCwtMzIuNjA2NjggMjkuMTQxMDYsLTQ5LjU2MDU1IDkuOTY5NjIsLTE2Ljk1Mzg4IDI1Ljc1MTczLC00My43OTU4MyAzNS4wNzEzNSwtNTkuNjQ4ODAxIEMgMjQ3LjYzNzM2LDEzLjk0MzY0NCAyNTUuODYxMjEsMS42NWUtNiAyNTYsMS42NWUtNiBjIDAuMTM4NzgsMCA4LjM2MjYzLDEzLjk0MzY0MjM1IDUwLjk5OTc4LDg2LjQ3MDczNzM1IDkuMzE5NjIsMTUuODUyOTcxIDI1LjEwMTczLDQyLjY5NDkyMSAzNS4wNzEzNiw1OS42NDg4MDEgOS45Njk2MSwxNi45NTM4NyAyMy4wODMwOSwzOS4yNTYxMiAyOS4xNDEwNiw0OS41NjA1NSA2LjA1Nzk2LDEwLjMwNDQzIDE3LjE3MTEsMjkuMjAzODMgMjQuNjk1ODUsNDEuOTk4NjkgNy41MjQ3NSwxMi43OTQ4NSAxMy42NTgwMSwyMy4zMzA5MyAxMy42Mjk0NCwyMy40MTM1MSAtMC4wMjg2LDAuMDgyNiAtNi4yNDksNC4wMTY1NiAtMTMuODIzMiw4Ljc0MjEzIC03LjU3NDE5LDQuNzI1NTggLTE4Ljk5NTU0LDExLjg1MTk2IC0yNS4zODA3NiwxNS44MzYzOSAtMjAuMTk5NTIsMTIuNjA0NjUgLTM1LjI1NjA5LDIxLjk5OTI3IC00Ny41NTg5MSwyOS42NzQ2NCAtMTYuMzQyNjIsMTAuMTk1NjkgLTMwLjg3NzI5LDE5LjI2NDQxIC01MC4zMjMxNywzMS4zOTg1MSAtOS4wNTA0OCw1LjY0NzQ1IC0xNi40NzI1NywxMC4yNjMxMiAtMTYuNDkzNDksMTAuMjU3MDQgLTAuMDIwOSwtMC4wMDYgLTcuMzUyMDIsLTQuNTgxNTEgLTE2LjI5MTMzLC0xMC4xNjc2MSB6Ii8+Cjwvc3ZnPgo='; diff --git a/packages/chains/src/constants/URIs.ts b/packages/chains/src/constants/VoiURIs.ts similarity index 76% rename from packages/chains/src/constants/URIs.ts rename to packages/chains/src/constants/VoiURIs.ts index b4af4c7..1b44c7d 100644 --- a/packages/chains/src/constants/URIs.ts +++ b/packages/chains/src/constants/VoiURIs.ts @@ -1,7 +1,3 @@ -export const ALGORAND_CHAIN_LOGO_URI = - 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IGZpbGw9IiMwMDAwMDAiIGhlaWdodD0iNTEyIiB4PSI1ZS0wNyIgd2lkdGg9IjUxMiIgeT0iNWUtMDciLz4KICA8cG9seWdvbiBmaWxsPSIjZmZmZmZmIiBwb2ludHM9IjQzMy44OCwyNjQuOTUgNDA4LjE0LDMwOS43MSA0NDQuMTgsNDQ0LjMyIDQwNi44MSw0NDQuMzIgMzgyLjU0LDM1NC4wNCAzMzAuMzYsNDQ0LjMzIDI4OC42NCw0NDQuMzMgMzY5LjI5LDMwNC41NyAzNTYuMzEsMjU2LjA1IDI0Ny41Niw0NDQuMzYgMjA1LjgyLDQ0NC4zNiAzNDMuNjQsMjA1LjY0IDM4MC4xOCwyMDUuNjQgMzk2LjE4LDI2NC45NSAiIHRyYW5zZm9ybT0ibWF0cml4KDEuMDc0MDE0MSwwLDAsMS4wNzQwMTQxLC05My4wNTQ1ODMsLTkzLjA1NDU4MykiLz4KPC9zdmc+Cg=='; -export const ALGORAND_CURRENCY_ICON_URI = - 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIwMCAxMjAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgoJPHBhdGgKCSAgICAgIGQ9Ik0gMy43OTI0ODAxLDExOTYuNzU0NyBDIDcuMzg4OTI2LDExOTAuNzg2OCAxNzIuNTQ4ODcsOTA0LjUzNjYzIDI2Mi43MTM5Miw3NDggMzM5LjQwNzIzLDYxNC44NTE4MyA0MDIuMzI1MzUsNTA1Ljg0MDM4IDY1MC4yODM0OCw3Ni41IDY3Mi44MzYxMywzNy40NSA2OTIuMTU0MDgsNC4yNjI1IDY5My4yMTIyNSwyLjc1IEwgNjk1LjEzNjE5LDAgaCA5MC4zMDAxMyA5MC4zMDAxMyBsIDEuNTgzMTksNS43NSBjIDAuODcwNzUsMy4xNjI1IDE0LjkwOTk2LDU1LjcgMzEuMTk4MjUsMTE2Ljc1IDMzLjM0NTM2LDEyNC45ODE0OCA0NC43MjU4NiwxNjcuMTc1MzkgNDYuNjYxNDMsMTczIGwgMS4zMjkyMyw0IDkzLjczNDE1LDAuNSA5My43MzQxLDAuNSAtNjMuNjM4OSwxMTAgYyAtMzUuMDAxNCw2MC41IC02My44MjA2LDExMC45IC02NC4wNDI2LDExMiAtMC4yMjIsMS4xIDMuODc3NiwxNy41MzgxNCA5LjExMDIsMzYuNTI5MjEgQyAxMDQyLjUwNDksNjIxLjA4OTQzIDExOTcsMTE5Ny4yNzQ4IDExOTcsMTE5OC45ODY0IGMgMCwwLjY3NzUgLTMwLjc1OTIsMS4wMTM2IC05Mi43NjgzLDEuMDEzNiBoIC05Mi43Njg0IEwgOTc0LjA4NDA4LDEwNjAuMjUgQyA5NDMuMjg5Niw5NDUuMTE4NTQgODkxLjY2MjM3LDc1My45ODQ5OSA4ODkuMzc0MjMsNzQ2LjYzODQ5IGMgLTAuNDg0ODIsLTEuNTU2NTkgLTAuNzg3MDYsLTEuNjM4NDkgLTEuODQ1MiwtMC41IC0wLjY5NTk3LDAuNzQ4ODMgLTMzLjIyMzg2LDU2LjcxMTUxIC03Mi4yODQxOSwxMjQuMzYxNTEgLTM5LjA2MDMzLDY3LjY1IC05Ny42NTA3MSwxNjkuMTI1IC0xMzAuMjAwODUsMjI1LjUgLTMyLjU1MDE0LDU2LjM3NSAtNTkuNTEzMTIsMTAyLjgzOTYgLTU5LjkxNzczLDEwMy4yNTQ3IC0wLjQwNDYxLDAuNDE1MSAtNDcuMTUzMTUsMC42NDAxIC0xMDMuODg1NjUsMC41IEwgNDE4LjA5MDYzLDExOTkuNSA1MDcuMzYxNjUsMTA0NCBDIDU1Ni40NjA3MSw5NTguNDc1IDYzNi45MjIzNCw4MTguOTc1IDY4Ni4xNjUyNiw3MzQgNzc2LjYwMjU3LDU3Ny45Mzg4MSA4MTkuNzMxNzcsNTAzLjM0MDc3IDgyMS44NjcwOCw0OTkuMjg0NTkgYyAwLjk5MDY2LC0xLjg4MTgzIC0zLjUxMjA1LC0xOS43MjUwMiAtMjkuOTAzMzIsLTExOC41IEMgNzU0Ljg4MDcxLDI0MS45OTMyOSA3NTcuODg0MjUsMjUzIDc1Ny4wOTM1MiwyNTMgNzU1Ljc5NTAzLDI1MyA3MjMuMjI4NTcsMzA4Ljg3MTg4IDY0MS45NzUyLDQ1MC41IDU5Ni4yMjE4OCw1MzAuMjUgNTE3LjQ1ODcsNjY2LjgyNSA0NjYuOTQ1OSw3NTQgNDE2LjQzMzEsODQxLjE3NSAzMzcuODE3ODksOTc3LjA3NSAyOTIuMjQ1NDMsMTA1NiBsIC04Mi44NTkwMSwxNDMuNSAtMTAzLjc3NzY1LDAuMjU0NyAtMTAzLjc3NzY1MDcsMC4yNTQ2IHoiIC8+Cjwvc3ZnPgo='; export const VOI_CHAIN_LOGO_URI = 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IGZpbGw9IiM2ZjJhZTIiIGhlaWdodD0iNTEyIiB4PSIxLjE4NTE4NTFlLTA3IiB3aWR0aD0iNTEyIiB5PSIxLjE4NTE4NTFlLTA3Ii8+CiAgPHBhdGggZD0ibSAzMTAuNjU1NzQsMjE0LjMwOTc5IGMgLTAuMTYzNTYsLTAuMjgyMDcgLTAuMzM2NTksLTAuNTU3MDMgLTAuNTEyLC0wLjgyOTYzIC0wLjAyODQsLTAuMDQ1IC0wLjA1OTMsLTAuMDkyNCAtMC4wODc3LC0wLjEzNTExIC0wLjE3NTQxLC0wLjI3MjU5IC0wLjM2MDMsLTAuNTQwNDQgLTAuNTQ5OTMsLTAuODA1OTIgLTAuMDMzMiwtMC4wNDUgLTAuMDcxMSwtMC4wOTcyIC0wLjEwNDMsLTAuMTQ2OTcgLTAuMTgwMTQsLTAuMjQ0MTQgLTAuMzY1MDMsLTAuNDgzNTUgLTAuNTU0NjYsLTAuNzIwNTkgLTAuMDQ5OCwtMC4wNjY0IC0wLjA5OTYsLTAuMTM1MTEgLTAuMTU0MDgsLTAuMTk2NzQgLTAuMTY4MjksLTAuMjA2MjIgLTAuMzM4OTYsLTAuNDEwMDcgLTAuNTE2NzQsLTAuNjA5MTkgLTAuMDgwNiwtMC4wOTI0IC0wLjE1ODgxLC0wLjE4OTYyIC0wLjIzOTQxLC0wLjI3NzMzIC0wLjE0Njk2LC0wLjE2MzU1IC0wLjI5ODY2LC0wLjMyMjM3IC0wLjQ1Mjc0LC0wLjQ4MzU1IC0wLjExODUxLC0wLjEyMDg5IC0wLjIyOTkyLC0wLjI0NDE1IC0wLjM1MzE4LC0wLjM2NTA0IC0wLjExODUyLC0wLjExODUyIC0wLjI0NDE1LC0wLjIzNDY3IC0wLjM2NTA0LC0wLjM1MzE5IC0wLjE1ODgxLC0wLjE1MTcgLTAuMzE1MjYsLTAuMzAxMDMgLTAuNDc4ODEsLTAuNDQ4IC0wLjA5MjQsLTAuMDgwNiAtMC4xODQ4OSwtMC4xNTg4MSAtMC4yNzczNCwtMC4yNDQxNCAtMC4yMDE0OCwtMC4xNzMwNCAtMC40MDI5NiwtMC4zNDM3MSAtMC42MDkxOCwtMC41MTIgLTAuMDY0LC0wLjA1NDUgLTAuMTM1MTEsLTAuMTA0MyAtMC4xOTY3NCwtMC4xNTg4MiAtMC4yMzk0MSwtMC4xODk2MyAtMC40Nzg4MiwtMC4zNzQ1MiAtMC43MjA2LC0wLjU0OTkzIC0wLjA0OTgsLTAuMDM3OSAtMC4wOTk2LC0wLjA3MTEgLTAuMTQ2OTYsLTAuMTA0MjkgLTAuMjYzMTEsLTAuMTg5NjMgLTAuNTMzMzMsLTAuMzc0NTIgLTAuODA1OTIsLTAuNTU0NjcgLTAuMDQ1LC0wLjAyODQgLTAuMDg3NywtMC4wNTkzIC0wLjEzNTEyLC0wLjA4MyAtMC4yNzczMywtMC4xODAxNSAtMC41NTQ2NiwtMC4zNDg0NSAtMC44Mjk2MiwtMC41MTIgLTAuMDI4NSwtMC4wMTY2IC0wLjA1NDUsLTAuMDMzMiAtMC4wODA2LC0wLjA0OTggLTAuMDMzMiwtMC4wMjEzIC0wLjA3MTEsLTAuMDM3OSAtMC4xMDQyOSwtMC4wNTQ1IC0wLjI1NiwtMC4xNDY5NiAtMC41MTY3NCwtMC4yODkxOCAtMC43NzUxMSwtMC40MjkwMyAtMC4wOTk2LC0wLjA0OTggLTAuMTk2NzUsLTAuMDk5NiAtMC4yOTg2NywtMC4xNTE3MSAtMC4yMTMzMywtMC4xMDkwNCAtMC40MjkwNCwtMC4yMDg1OSAtMC42NDIzNywtMC4zMTA1MiAtMC4xNTE3MSwtMC4wNzExIC0wLjMwMTA0LC0wLjE0MjIyIC0wLjQ1Mjc0LC0wLjIwNjIyIC0wLjE1ODgyLC0wLjA3MTEgLTAuMzIsLTAuMTM3NDggLTAuNDc4ODIsLTAuMjAxNDggLTAuMjA2MjIsLTAuMDg3NyAtMC40MTQ4MSwtMC4xNzMwNCAtMC42MjU3OCwtMC4yNTEyNiAtMC4wOTk1LC0wLjAzNzkgLTAuMjAxNDgsLTAuMDcxMSAtMC4zMDEwMywtMC4xMDkwNCAtMC4yNjMxMSwtMC4wOTcyIC0wLjUyODU5LC0wLjE4OTYzIC0wLjc5MTcxLC0wLjI3MjU5IC0wLjA0NSwtMC4wMTY2IC0wLjA5NzIsLTAuMDI4NCAtMC4xNDIyMiwtMC4wNDI3IC0wLjMxNTI2LC0wLjA5OTUgLTAuNjI4MTUsLTAuMTkyIC0wLjk0MzQxLC0wLjI3NzMzIC0wLjAwNSwwIC0wLjAwOSwwIC0wLjAxMTgsLTAuMDA1IC0xLjA1MjQ0LC0wLjI3NzMzIC0yLjExNDM3LC0wLjQ3ODgxIC0zLjE3ODY2LC0wLjYwNDQ0IC0wLjAyNjEsLTAuMDA1IC0wLjA0OTgsLTAuMDA1IC0wLjA3NTksLTAuMDA5IC0wLjMyMjM3LC0wLjAzMzIgLTAuNjQ5NDgsLTAuMDY2NCAtMC45NzQyMiwtMC4wODc3IC0wLjA5NzIsLTAuMDA5IC0wLjE5MiwtMC4wMDkgLTAuMjg5MTgsLTAuMDE2NiAtMC4yNTEyNiwtMC4wMTE5IC0wLjUwMjUyLC0wLjAyNjEgLTAuNzU2MTUsLTAuMDMzMiAtMC4xODk2MywtMC4wMDUgLTAuMzc2ODksMCAtMC41NzEyNiwwIC0wLjE1NDA3LDAgLTAuMzE1MjYsLTAuMDA1IC0wLjQ3NDA3LDAgLTAuMjgyMDgsMC4wMDkgLTAuNTYxNzgsMC4wMjEzIC0wLjg0Mzg2LDAuMDM3OSAtMC4wNjY0LDAuMDA1IC0wLjEzNTExLDAuMDA5IC0wLjIwMTQ4LDAuMDExOCAtMS43NTQwNywwLjExODUyIC0zLjUwODE1LDAuNDQ1NjMgLTUuMjI2NjYsMC45OTA4MiAtMC4wMzMyLDAuMDA5IC0wLjA2NjQsMC4wMjEzIC0wLjA5OTYsMC4wMjg0IC0wLjI4MjA3LDAuMDg3NyAtMC41NTQ2NywwLjE4NDg5IC0wLjgyOTYzLDAuMjg0NDQgLTAuMDg3NywwLjAzMzIgLTAuMTgwMTUsMC4wNjQgLTAuMjY3ODUsMC4wOTcyIC0wLjIxODA4LDAuMDgzIC0wLjQzNjE1LDAuMTczMDQgLTAuNjU0MjIsMC4yNjA3NCAtMC4xNDY5NywwLjA2NCAtMC4yOTg2NywwLjEyNTYzIC0wLjQ0OCwwLjE4OTYzIC0wLjE1ODgyLDAuMDcxMSAtMC4zMTUyNiwwLjE0MjIyIC0wLjQ3NDA4LDAuMjE4MDcgLTAuMjA4NTksMC4wOTcyIC0wLjQxOTU1LDAuMTk2NzQgLTAuNjI1NzgsMC4zMDEwNCAtMC4xMDQyOSwwLjA0OTggLTAuMjA4NTksMC4xMDQzIC0wLjMxMDUxLDAuMTU4ODIgLTAuMjYwNzUsMC4xMzUxMSAtMC41MTY3NSwwLjI3NzMzIC0wLjc2OCwwLjQxOTU1IC0wLjAzMzIsMC4wMjEzIC0wLjA3MTEsMC4wMzc5IC0wLjEwNDMsMC4wNTkzIC0wLjAyODUsMC4wMTY2IC0wLjA1NDUsMC4wMzMyIC0wLjA4MywwLjA0OTggLTAuMjc3MzQsMC4xNjM1NSAtMC41NTQ2NywwLjMzMTg1IC0wLjgyNzI2LDAuNTA3MjYgLTAuMDQ1LDAuMDI4NCAtMC4wOTI1LDAuMDU5MyAtMC4xNDIyMywwLjA5MjQgLTAuMjY3ODUsMC4xNzU0MSAtMC41MzMzMywwLjM1NTU2IC0wLjc5MTcsMC41NDUxOSAtMC4wNDk4LDAuMDM3OSAtMC4xMDQzLDAuMDc1OSAtMC4xNTQwNywwLjEwOTAzIC0wLjI0NDE1LDAuMTc1NDEgLTAuNDc4ODIsMC4zNjAzIC0wLjcxMzQ4LDAuNTQ1MTkgLTAuMDcxMSwwLjA1NDUgLTAuMTM3NDksMC4xMDkwNCAtMC4yMDg2LDAuMTYzNTUgLTAuMjAxNDgsMC4xNjgzIC0wLjM5ODIyLDAuMzM2NiAtMC41OTk3LDAuNTEyIC0wLjA5MjUsMC4wODA2IC0wLjE4OTYzLDAuMTYzNTYgLTAuMjgyMDcsMC4yNDY1MiAtMC4xNjM1NiwwLjE0MjIzIC0wLjMyLDAuMjkzOTMgLTAuNDc0MDgsMC40NDA4OSAtMC4xMjU2MywwLjEyMDg5IC0wLjI1MTI2LDAuMjM5NDEgLTAuMzc0NTIsMC4zNjAzIC0wLjEyMzI2LDAuMTIwODkgLTAuMjI5OTIsMC4yMzk0MSAtMC4zNDM3LDAuMzYwMjkgLTAuMTU0MDgsMC4xNTg4MiAtMC4zMDU3OCwwLjMyIC0wLjQ1NzQ4LDAuNDgzNTYgLTAuMDgwNiwwLjA4NzcgLTAuMTU0MDgsMC4xODAxNSAtMC4yMzQ2NywwLjI3MjU5IC0wLjE3NTQxLDAuMjAxNDggLTAuMzUzMTgsMC40MDc3MSAtMC41MTkxMSwwLjYxMTU2IC0wLjA0OTgsMC4wNjQgLTAuMDk5NiwwLjEzMDM3IC0wLjE1NDA3LDAuMTkyIC0wLjE4OTYzLDAuMjM5NDEgLTAuMzc0NTIsMC40ODM1NSAtMC41NTQ2NywwLjcyNTMzIC0wLjAzMzIsMC4wNDk4IC0wLjA2NjQsMC4wOTcyIC0wLjA5OTYsMC4xNDY5NiAtMC4xOTIsMC4yNjMxMiAtMC4zNzY4OSwwLjUzMzM0IC0wLjU1NDY2LDAuODA1OTMgLTAuMDI4NCwwLjA0MjcgLTAuMDU5MywwLjA4NzcgLTAuMDg3NywwLjEzNTExIC0wLjE3NTQsMC4yNzI1OSAtMC4zNDg0NCwwLjU0OTkzIC0wLjUxMiwwLjgyOTYzIC0wLjAxNjYsMC4wMjg0IC0wLjAzMzIsMC4wNTQ1IC0wLjA0OTgsMC4wODA2IGwgLTE1LjUyMTE5LDI2Ljc0MjUxIC0xNS4zNTc2MywtMjYuNDU4MDYgYyAzLjc4MzExLDYuNzU3OTIgNC4wMDU5MywxNS4yNzcwNCAtMC4xNjM1NiwyMi40NTkyNSBsIC0xOS41OTM0OCwzMy43NTE3IDE1LjUyNTkzLDI2LjczNzc4IGMgNC4wNTMzMyw2Ljk4MDc0IDExLjUxNTI2LDExLjI4MDU5IDE5LjU5MTExLDExLjI4MDU5IDguMDc1ODUsMCAxNS41Mzc3OCwtNC4yOTk4NSAxOS41OTExMSwtMTEuMjgwNTkgbCAxNS41MjU5MywtMjYuNzQyNTIgMTUuMzUwNTIsMjYuNDQ4NTkgYyAtMy43NzYsLTYuNzUzMTggLTMuOTk0MDgsLTE1LjI3NDY2IDAuMTczMDMsLTIyLjQ1MjE0IGwgMTkuNTkxMTEsLTMzLjc0OTM0IC0xNS41MjExOCwtMjYuNzQyNTEgYyAtMC4wMTY2LC0wLjAyNjEgLTAuMDMzMiwtMC4wNDk4IC0wLjA0OTgsLTAuMDgwNiB6IG0gLTM3LjEwMTA0LDY0LjI4NDQ0IGMgLTEyLjQ3MDUyLDAgLTIyLjU4MjUyLC0xMC4xMTQzNyAtMjIuNTgyNTIsLTIyLjU4NDg5IDAsLTEyLjQ3MDUyIDEwLjEwOTYzLC0yMi41ODQ4OCAyMi41ODI1MiwtMjIuNTg0ODggMTIuNDcyODksMCAyMi41ODQ4OSwxMC4xMTQzNiAyMi41ODQ4OSwyMi41ODQ4OCAwLDEyLjQ3MDUyIC0xMC4xMDk2MywyMi41ODQ4OSAtMjIuNTg0ODksMjIuNTg0ODkgeiIgZmlsbD0iIzMxMDA3ZiIvPgogIDxwYXRoIGQ9Im0gMTg1Ljc3MDQxLDMwOC44OTk4MiBjIC04LjA3MzQ5LDAgLTE1LjUzNzc4LC00LjI5NzQ5IC0xOS41OTExMiwtMTEuMjgwNiBsIC0zNS4xMTQ2NiwtNjAuNDg5NDggYyAtNi4yODE0OCwtMTAuODE4MzYgLTIuNjAwMywtMjQuNjgyNjYgOC4yMTgwNywtMzAuOTY0MTQgMTAuODIwNzQsLTYuMjgxNDggMjQuNjgyNjcsLTIuNjAwMyAzMC45NjQxNSw4LjIxODA3IGwgMTUuNTIzNTYsMjYuNzQwMTUgMTUuNTIzNTUsLTI2Ljc0MDE1IGMgNi4yODE0OCwtMTAuODE4MzcgMjAuMTQzNDEsLTE0LjQ5OTU1IDMwLjk2NDE1LC04LjIxODA3IDEwLjgyMDc0LDYuMjgxNDggMTQuNDk5NTYsMjAuMTQzNDEgOC4yMTgwNywzMC45NjQxNCBsIC0zNS4xMTQ2Niw2MC40ODk0OCBjIC00LjA1MzM0LDYuOTgzMTEgLTExLjUxNzYzLDExLjI4MDYgLTE5LjU5MTExLDExLjI4MDYgeiIgZmlsbD0iI2ZmZmZmZiIvPgogIDxwYXRoIGQ9Im0gMzI2LjIwNzc0LDMwOC45MDEyNiBjIC0zLjg2MTMzLDAgLTcuNzcyNDUsLTAuOTg4NDQgLTExLjM1MTcsLTMuMDY0ODkgLTEwLjgyMDc1LC02LjI4MTQ4IC0xNC40OTk1NiwtMjAuMTQzNCAtOC4yMTgwOCwtMzAuOTY0MTQgbCAzNS4xMTQ2NywtNjAuNDg5NDggYyA2LjI4MTQ4LC0xMC44MjA3NCAyMC4xNDM0MSwtMTQuNDk5NTYgMzAuOTY0MTUsLTguMjE4MDggMTAuODIwNzQsNi4yODE0OSAxNC40OTk1NSwyMC4xNDM0MSA4LjIxODA3LDMwLjk2NDE1IGwgLTM1LjExNDY3LDYwLjQ4OTQ4IGMgLTQuMjAyNjYsNy4yNDE0OCAtMTEuODAyMDcsMTEuMjgyOTYgLTE5LjYxMjQ0LDExLjI4Mjk2IHoiIGZpbGw9IiNmZmZmZmYiLz4KICA8Y2lyY2xlIGN4PSIyNzMuNTU3MDciIGN5PSIyNTYiIGZpbGw9IiNmZmZmZmYiIHI9IjIyLjU4NDg4OCIvPgo8L3N2Zz4K'; export const VOI_CURRENCY_ICON_URI = diff --git a/packages/chains/src/constants/index.ts b/packages/chains/src/constants/index.ts index 33f80f1..7761c4d 100644 --- a/packages/chains/src/constants/index.ts +++ b/packages/chains/src/constants/index.ts @@ -1 +1,3 @@ -export * from './URIs'; +export * from './AlgorandURIs'; +export * from './EthereumURIs'; +export * from './VoiURIs'; diff --git a/packages/chains/src/decorators/AVMChain.ts b/packages/chains/src/decorators/AVMChain.ts index 0429c6e..b4477e4 100644 --- a/packages/chains/src/decorators/AVMChain.ts +++ b/packages/chains/src/decorators/AVMChain.ts @@ -14,7 +14,7 @@ import type { AVMNode, AVMNodeCollection, AVMTransactionParamsResponse, - NetworkConfiguration, + Transports, } from '@/types'; export default class AVMChain extends AbstractChain { @@ -23,6 +23,7 @@ export default class AVMChain extends AbstractChain { */ public static readonly namespace: CAIP002Namespace.Algorand | CAIP002Namespace.AVM; + public static readonly transports: Transports; protected constructor(params: ChainParameters) { super(params); @@ -34,8 +35,11 @@ export default class AVMChain extends AbstractChain { /** * Returns the default node from the provided node collection. + * * @param {AVMNodeCollection} nodeCollection - The collection of nodes containing a default node identifier. * @returns {AVMNode} The default node from the node collection. + * @protected + * @static */ protected static _defaultNode(nodeCollection: AVMNodeCollection): AVMNode { return nodeCollection.nodes[nodeCollection.default]; @@ -46,7 +50,7 @@ export default class AVMChain extends AbstractChain { */ public static async initialize(this: T): Promise { - const algod = this._defaultNode(this.networkConfiguration.algods); + const algod = this._defaultNode(this.transports.algods); const baseURL = `${algod.origin}${algod.port ? `:${algod.port}` : ''}`; const config: AxiosRequestConfig | undefined = algod.token ? { @@ -94,7 +98,7 @@ export default class AVMChain extends AbstractChain { return (this.constructor as typeof AVMChain).namespace; } - public networkConfiguration(): NetworkConfiguration { - return (this.constructor as typeof AVMChain).networkConfiguration; + 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 f606be8..a19ea76 100644 --- a/packages/chains/src/decorators/AbstractChain.ts +++ b/packages/chains/src/decorators/AbstractChain.ts @@ -2,14 +2,15 @@ import { CAIP002Namespace } from '@/enums'; // types -import type { ChainParameters, NativeCurrency, NetworkConfiguration, NetworkInformation } from '@/types'; +import type { ChainParameters, NativeCurrency, NetworkInformation, Transports } from '@/types'; /** * Provides a base abstraction for a blockchain chain, containing properties and methods * to define and interact with chain-specific information. It is designed as an abstract * class and should be extended to represent specific blockchains. * - * The class supports CAIP-002 (Chain Agnostic Improvement Proposals) for chain identification. + * The class supports [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} (Chain Agnostic Improvement Proposals) + * for chain identification. * * **Implementation Requirements: ** * - Subclasses **MUST** implement a static `initialize()` method. @@ -37,7 +38,8 @@ export default abstract class AbstractChain { */ public static readonly iconURI: string; /** - * The CAIP-002 namespace of the chain. It acts as a resolution to the chain's reference. + * The [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} namespace of the chain. It acts as a resolution to the + * chain's reference. * @static * @readonly */ @@ -49,11 +51,11 @@ export default abstract class AbstractChain { */ public static readonly nativeCurrency: NativeCurrency; /** - * Network configuration containing node information and settings for the chain. + * Transport configuration that facilitates communication to the network. * @static * @readonly */ - public static readonly networkConfiguration: NetworkConfiguration; + public static readonly transports: Transports; /** * Whether this chain is considered a testnet. * @static @@ -71,7 +73,7 @@ export default abstract class AbstractChain { */ public readonly networkInformation: NetworkInformation; /** - * A unique identifier for the chain within the CAIP-002 namespace. + * A unique identifier for the chain within the [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} namespace. * @readonly */ public readonly reference: string; @@ -86,33 +88,36 @@ export default abstract class AbstractChain { */ /** - * Retrieves the CAIP-002 namespace associated with the current implementation. + * Retrieves the [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} namespace associated with the current implementation. * - * @return {CAIP002Namespace} An instance representing the CAIP-002 namespace. + * @return {CAIP002Namespace} An instance representing the [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} + * namespace. * @public * @abstract */ public abstract namespace(): CAIP002Namespace; /** - * Abstract method to retrieve the network configuration for the specified CAIP-002 namespace. - * This method must be implemented to define how network configurations are fetched, created or managed. + * Gets the transport configuration to communicate with the chain for the specified + * [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} namespace. * - * @return {NetworkConfiguration} The network configuration associated with the given namespace. + * This method must be implemented to define how the chain is communicated to. + * + * @return {Transports} The transport configuration associated with the given namespace. * @public * @abstract */ - public abstract networkConfiguration(): NetworkConfiguration; + public abstract transports(): Transports; /** * public methods */ /** - * Generates the CAIP-002 chain identifier by combining the namespace and reference with a colon. + * Generates the [CAIP-002]{@link https://chainagnostic.org/CAIPs/caip-2} chain identifier by combining the namespace + * and reference with a colon. * * @return {string} The CAIP-002 chain identifier as "namespace:reference". - * @see {@link https://chainagnostic.org/CAIPs/caip-2} * @public */ public chainID(): string { diff --git a/packages/chains/src/decorators/EVMChain.ts b/packages/chains/src/decorators/EVMChain.ts new file mode 100644 index 0000000..c2035f9 --- /dev/null +++ b/packages/chains/src/decorators/EVMChain.ts @@ -0,0 +1,77 @@ +import { uuid } from '@stablelib/uuid'; +import axios, { type AxiosResponse } from 'axios'; + +// enums +import { CAIP002Namespace } from '@/enums'; + +// decorators +import AbstractChain from './AbstractChain'; + +// types +import type { ChainParameters, RPCPayload, RPCResponse, RPCURLs, Transports } from '@/types'; + +export default class EVMChain extends AbstractChain { + /** + * public static variables + */ + + public static readonly namespace: CAIP002Namespace.EIP155; + public static readonly transports: Transports; + + protected constructor(params: ChainParameters) { + super(params); + } + + /** + * protected static methods + */ + + /** + * Returns the default RPC URL from the provided list. + * + * @param {RPCURLs} value - The list of RPC URLs containing a default identifier. + * @returns {string} The default RPC URL from the list. + * @protected + * @static + */ + protected static _defaultRPCURL(value: RPCURLs): string { + return value.rpcURLs[value.default]; + } + + /** + * public static methods + */ + + public static async initialize(this: T): Promise { + const rpcURL = this._defaultRPCURL(this.transports.https); + const id = uuid(); + const { data } = await axios.post, AxiosResponse, RPCPayload>, RPCPayload>( + rpcURL, + { + id, + jsonrpc: '2.0', + method: 'net_version', + params: [], + } + ); + + return new this({ + reference: data.result, + networkInformation: { + networkID: data.result, + }, + }); + } + + /** + * public methods + */ + + public namespace(): CAIP002Namespace.EIP155 { + return (this.constructor as typeof EVMChain).namespace; + } + + public transports(): Transports { + return (this.constructor as typeof EVMChain).transports; + } +} diff --git a/packages/chains/src/decorators/index.ts b/packages/chains/src/decorators/index.ts index 6af06b4..891dad7 100644 --- a/packages/chains/src/decorators/index.ts +++ b/packages/chains/src/decorators/index.ts @@ -1,2 +1,3 @@ export { default as AbstractChain } from './AbstractChain'; export { default as AVMChain } from './AVMChain'; +export { default as EVMChain } from './EVMChain'; diff --git a/packages/chains/src/enums/CAIP002Namespace.ts b/packages/chains/src/enums/CAIP002Namespace.ts index b9b6300..68a5fb4 100644 --- a/packages/chains/src/enums/CAIP002Namespace.ts +++ b/packages/chains/src/enums/CAIP002Namespace.ts @@ -1,6 +1,7 @@ enum CAIP002Namespace { Algorand = 'algorand', AVM = 'avm', + EIP155 = 'eip155', } export default CAIP002Namespace; diff --git a/packages/chains/src/types/avm/AVMNetworkConfiguration.ts b/packages/chains/src/types/avm/AVMTransports.ts similarity index 79% rename from packages/chains/src/types/avm/AVMNetworkConfiguration.ts rename to packages/chains/src/types/avm/AVMTransports.ts index fe45a9b..43d77de 100644 --- a/packages/chains/src/types/avm/AVMNetworkConfiguration.ts +++ b/packages/chains/src/types/avm/AVMTransports.ts @@ -5,9 +5,9 @@ import type AVMNodeCollection from './AVMNodeCollection'; * @property {AVMNodeCollection} algods - A collection of Algod nodes. * @property {AVMNodeCollection} indexers - [optional] A collection of Indexer nodes. */ -interface AVMNetworkConfiguration { +interface AVMTransports { algods: AVMNodeCollection; indexers?: AVMNodeCollection; } -export default AVMNetworkConfiguration; +export default AVMTransports; diff --git a/packages/chains/src/types/avm/index.ts b/packages/chains/src/types/avm/index.ts index 56dd9c4..e2c21a5 100644 --- a/packages/chains/src/types/avm/index.ts +++ b/packages/chains/src/types/avm/index.ts @@ -1,6 +1,6 @@ export type { default as AVMGenesisResponse } from './AVMGenesisResponse'; -export type { default as AVMNetworkConfiguration } from './AVMNetworkConfiguration'; export type { default as AVMNetworkInformation } from './AVMNetworkInformation'; export type { default as AVMNode } from './AVMNode'; export type { default as AVMNodeCollection } from './AVMNodeCollection'; export type { default as AVMTransactionParamsResponse } from './AVMTransactionParamsResponse'; +export type { default as AVMTransports } from './AVMTransports'; diff --git a/packages/chains/src/types/chains/NetworkConfiguration.ts b/packages/chains/src/types/chains/NetworkConfiguration.ts deleted file mode 100644 index a3a0535..0000000 --- a/packages/chains/src/types/chains/NetworkConfiguration.ts +++ /dev/null @@ -1,13 +0,0 @@ -// enums -import { CAIP002Namespace } from '@/enums'; - -// types -import type { AVMNetworkConfiguration } from '@/types'; - -type NetworkConfiguration = Namespace extends CAIP002Namespace.Algorand - ? AVMNetworkConfiguration - : Namespace extends CAIP002Namespace.AVM - ? AVMNetworkConfiguration - : never; - -export default NetworkConfiguration; diff --git a/packages/chains/src/types/chains/NetworkInformation.ts b/packages/chains/src/types/chains/NetworkInformation.ts index a4588b4..99b101b 100644 --- a/packages/chains/src/types/chains/NetworkInformation.ts +++ b/packages/chains/src/types/chains/NetworkInformation.ts @@ -2,12 +2,14 @@ import { CAIP002Namespace } from '@/enums'; // types -import type { AVMNetworkInformation } from '@/types'; +import { AVMNetworkInformation, EVMNetworkInformation } from '@/types'; type NetworkInfomration = Namespace extends CAIP002Namespace.Algorand ? AVMNetworkInformation : Namespace extends CAIP002Namespace.AVM ? AVMNetworkInformation - : never; + : Namespace extends CAIP002Namespace.EIP155 + ? EVMNetworkInformation + : never; export default NetworkInfomration; diff --git a/packages/chains/src/types/chains/Transports.ts b/packages/chains/src/types/chains/Transports.ts new file mode 100644 index 0000000..76f5287 --- /dev/null +++ b/packages/chains/src/types/chains/Transports.ts @@ -0,0 +1,15 @@ +// enums +import { CAIP002Namespace } from '@/enums'; + +// types +import type { AVMTransports, EVMTransports } from '@/types'; + +type Transports = Namespace extends CAIP002Namespace.Algorand + ? AVMTransports + : Namespace extends CAIP002Namespace.AVM + ? AVMTransports + : Namespace extends CAIP002Namespace.EIP155 + ? EVMTransports + : never; + +export default Transports; diff --git a/packages/chains/src/types/chains/index.ts b/packages/chains/src/types/chains/index.ts index b8da09d..7b6bce4 100644 --- a/packages/chains/src/types/chains/index.ts +++ b/packages/chains/src/types/chains/index.ts @@ -1,5 +1,5 @@ export type { default as Chain } from './Chain'; export type { default as ChainConstructor } from './ChainConstructor'; export type { default as ChainParameters } from './ChainParameters'; -export type { default as NetworkConfiguration } from './NetworkConfiguration'; export type { default as NetworkInformation } from './NetworkInformation'; +export type { default as Transports } from './Transports'; diff --git a/packages/chains/src/types/evm/EVMNetworkInformation.ts b/packages/chains/src/types/evm/EVMNetworkInformation.ts new file mode 100644 index 0000000..9091ad5 --- /dev/null +++ b/packages/chains/src/types/evm/EVMNetworkInformation.ts @@ -0,0 +1,8 @@ +/** + * @property {string} networkID - The current network ID. + */ +interface EVMNetworkInformation { + networkID: string; +} + +export default EVMNetworkInformation; diff --git a/packages/chains/src/types/evm/EVMTransports.ts b/packages/chains/src/types/evm/EVMTransports.ts new file mode 100644 index 0000000..822498b --- /dev/null +++ b/packages/chains/src/types/evm/EVMTransports.ts @@ -0,0 +1,13 @@ +// types +import type { RPCURLs } from '@/types'; + +/** + * @property {RPCURLs} https - A collection of HTTPS URLs. + * @property {RPCURLs} websockets - A collection of WebSocket URLs. + */ +interface EVMTransports { + https: RPCURLs; + websockets: RPCURLs; +} + +export default EVMTransports; diff --git a/packages/chains/src/types/evm/index.ts b/packages/chains/src/types/evm/index.ts new file mode 100644 index 0000000..af01b5b --- /dev/null +++ b/packages/chains/src/types/evm/index.ts @@ -0,0 +1,2 @@ +export type { default as EVMNetworkInformation } from './EVMNetworkInformation'; +export type { default as EVMTransports } from './EVMTransports'; diff --git a/packages/chains/src/types/index.ts b/packages/chains/src/types/index.ts index 332ef92..3d83477 100644 --- a/packages/chains/src/types/index.ts +++ b/packages/chains/src/types/index.ts @@ -1,3 +1,5 @@ export * from './avm'; export * from './chains'; export * from './currencies'; +export * from './evm'; +export * from './transports'; diff --git a/packages/chains/src/types/transports/RPCPayload.ts b/packages/chains/src/types/transports/RPCPayload.ts new file mode 100644 index 0000000..71dcef3 --- /dev/null +++ b/packages/chains/src/types/transports/RPCPayload.ts @@ -0,0 +1,8 @@ +interface RPCPayload { + id: number | string | null; + jsonrpc: '2.0'; + method: string; + params: Params; +} + +export default RPCPayload; diff --git a/packages/chains/src/types/transports/RPCResponse.ts b/packages/chains/src/types/transports/RPCResponse.ts new file mode 100644 index 0000000..e608f2a --- /dev/null +++ b/packages/chains/src/types/transports/RPCResponse.ts @@ -0,0 +1,7 @@ +interface RPCResponse { + id: number | string | null; + jsonrpc: '2.0'; + result: Result; +} + +export default RPCResponse; diff --git a/packages/chains/src/types/transports/RPCURLs.ts b/packages/chains/src/types/transports/RPCURLs.ts new file mode 100644 index 0000000..d060e6d --- /dev/null +++ b/packages/chains/src/types/transports/RPCURLs.ts @@ -0,0 +1,10 @@ +/** + * @property {number} default - The index of the default URL. + * @property {[string, ...string[]]} rpcURLs - A list of RPC URLs. + */ +interface RPCURLs { + default: number; + rpcURLs: [string, ...string[]]; +} + +export default RPCURLs; diff --git a/packages/chains/src/types/transports/index.ts b/packages/chains/src/types/transports/index.ts new file mode 100644 index 0000000..8d69416 --- /dev/null +++ b/packages/chains/src/types/transports/index.ts @@ -0,0 +1,3 @@ +export type { default as RPCPayload } from './RPCPayload'; +export type { default as RPCResponse } from './RPCResponse'; +export type { default as RPCURLs } from './RPCURLs'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d67b78f..bf7114b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,9 +104,12 @@ importers: '@kibisis/encoding': specifier: workspace:^ version: link:../encoding + '@stablelib/uuid': + specifier: ^2.0.1 + version: 2.0.1 axios: - specifier: ^1.10.0 - version: 1.10.0 + specifier: ^1.11.0 + version: 1.11.0 devDependencies: '@eslint/js': specifier: 'catalog:' @@ -2182,8 +2185,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.10.0: - resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} + axios@1.11.0: + resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} @@ -7009,7 +7012,7 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.10.0: + axios@1.11.0: dependencies: follow-redirects: 1.15.9 form-data: 4.0.4