From 3d2d7b00f93e6b4dae5ce38193a6e371fdd06efd Mon Sep 17 00:00:00 2001 From: prithvishet2503 Date: Mon, 4 Aug 2025 15:32:10 +0530 Subject: [PATCH] feat: adding story chain config Ticket: WIN-6480 TICKET: WIN-6480 --- modules/bitgo/test/v2/unit/keychains.ts | 1 + modules/sdk-core/src/bitgo/environments.ts | 6 ++++ modules/statics/src/base.ts | 2 ++ modules/statics/src/coins.ts | 32 +++++++++++++++++++ modules/statics/src/networks.ts | 20 ++++++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 ++ 6 files changed, 63 insertions(+) diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index 0b3ff2d766..82e70f1f61 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -95,6 +95,7 @@ describe('V2 Keychains', function () { n.asset !== UnderlyingAsset.KAIA && n.asset !== UnderlyingAsset.IRYS && n.asset !== UnderlyingAsset.LINEAETH && + n.asset !== UnderlyingAsset.IP && // Story Chain coinFamilyValues.includes(n.name) ); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 5eab79dcea..4ce7b594ad 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -238,6 +238,9 @@ const mainnetBase: EnvironmentTemplate = { lineaeth: { baseUrl: 'https://api.etherscan.io/v2', }, + ip: { + baseUrl: 'https://api.storyscan.app/', + }, }, icpNodeUrl: 'https://ic0.app', worldExplorerBaseUrl: 'https://worldscan.org/', @@ -348,6 +351,9 @@ const testnetBase: EnvironmentTemplate = { lineaeth: { baseUrl: 'https://api.etherscan.io/v2', }, + ip: { + baseUrl: 'https://api.storyscan.app/', + }, }, stxNodeUrl: 'https://api.testnet.hiro.so', vetNodeUrl: 'https://rpc-testnet.vechain.energy', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 3b8b984857..0ca6ab87cf 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -106,6 +106,7 @@ export enum CoinFamily { ZETA = 'zeta', ZKETH = 'zketh', LINEAETH = 'lineaeth', + IP = 'ip', // Story Chain } /** @@ -489,6 +490,7 @@ export enum UnderlyingAsset { HASH = 'hash', // Provenance HBAR = 'hbar', // Hedera main coin ICP = 'icp', + IP = 'ip', // Story Chain INITIA = 'initia', INJECTIVE = 'injective', IRYS = 'irys', diff --git a/modules/statics/src/coins.ts b/modules/statics/src/coins.ts index 4b1928ac30..3d9584ec69 100644 --- a/modules/statics/src/coins.ts +++ b/modules/statics/src/coins.ts @@ -1490,6 +1490,38 @@ export const coins = CoinMap.fromCoins([ CoinFeature.EVM_COMPATIBLE_UI, ] ), + account( + 'ead0435a-ee3f-4dc5-91fd-8897f1811701', + 'ip', + 'Story', + Networks.main.ip, + 18, + UnderlyingAsset.IP, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + ] + ), + account( + '86e7b7d6-02db-4ef7-9552-e8aeeeec2d52', + 'tip', + 'Story Testnet', + Networks.test.ip, + 18, + UnderlyingAsset.IP, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + ] + ), account( 'e907fdbd-2c5d-45d6-b622-9da38937da73', 'hypeevm', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index f314db2f60..83f08b416d 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1280,6 +1280,24 @@ class CoredaoTestnet extends Testnet implements EthereumNetwork { forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b'; } +class IP extends Mainnet implements EthereumNetwork { + name = 'Story'; + family = CoinFamily.IP; + explorerUrl = 'https://www.storyscan.io/tx/'; + accountExplorerUrl = 'https://www.storyscan.io/address/'; + chainId = 1514; + nativeCoinOperationHashPrefix = '1514'; +} + +class IPTestnet extends Testnet implements EthereumNetwork { + name = 'StoryTestnet'; + family = CoinFamily.IP; + explorerUrl = 'https://aeneid.explorer.story.foundation/transactions/'; + accountExplorerUrl = 'https://aeneid.storyscan.io/address/'; + chainId = 1315; + nativeCoinOperationHashPrefix = '1315'; +} + class ApeChain extends Mainnet implements EthereumNetwork { name = 'ApeChain'; family = CoinFamily.APECHAIN; @@ -1759,6 +1777,7 @@ export const Networks = { hash: Object.freeze(new Hash()), hedera: Object.freeze(new Hedera()), icp: Object.freeze(new Icp()), + ip: Object.freeze(new IP()), initia: Object.freeze(new Initia()), injective: Object.freeze(new Injective()), irys: Object.freeze(new Irys()), @@ -1848,6 +1867,7 @@ export const Networks = { hash: Object.freeze(new HashTestnet()), hedera: Object.freeze(new HederaTestnet()), icp: Object.freeze(new IcpTestnet()), + ip: Object.freeze(new IPTestnet()), initia: Object.freeze(new InitiaTestnet()), injective: Object.freeze(new InjectiveTestnet()), irys: Object.freeze(new IrysTestnet()), diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index 93c71d6404..7c14ed250a 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -70,6 +70,7 @@ export const expectedColdFeatures = { 'flr', 'hash', 'icp', + 'ip', // Story chain 'initia', 'irys', 'islm', @@ -126,6 +127,7 @@ export const expectedColdFeatures = { 'thorchain:rune', 'tia', 'ticp', + 'tip', // Story chain 'tinitia', 'tirys', 'tislm',