Skip to content

Commit 56c532b

Browse files
feat: story (ip) tesnet usdc token onboarding + few code improvements
Ticket: WIN-7914
1 parent 704a646 commit 56c532b

File tree

7 files changed

+94
-67
lines changed

7 files changed

+94
-67
lines changed

modules/bitgo/src/v2/coinFactory.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,16 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine
903903
}
904904
}
905905

906+
const ethLikeChainToTestnetMap: Record<string, string> = {
907+
ip: 'tip',
908+
};
906909
export function getTokenConstructor(tokenConfig: TokenConfig): CoinConstructor | undefined {
910+
if (tokenConfig.coin in ethLikeChainToTestnetMap) {
911+
return EthLikeErc20Token.createTokenConstructor(tokenConfig as EthLikeTokenConfig, {
912+
Mainnet: tokenConfig.coin,
913+
Testnet: ethLikeChainToTestnetMap[tokenConfig.coin],
914+
});
915+
}
907916
switch (tokenConfig.coin) {
908917
case 'eth':
909918
case 'hteth':

modules/statics/src/allCoinsAndTokens.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,6 +1596,7 @@ export const allCoinsAndTokens = [
15961596
CoinFeature.EVM_COMPATIBLE_UI,
15971597
CoinFeature.EVM_NON_BITGO_RECOVERY,
15981598
CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY,
1599+
CoinFeature.SUPPORTS_ERC20,
15991600
]
16001601
),
16011602
account(
@@ -1615,6 +1616,7 @@ export const allCoinsAndTokens = [
16151616
CoinFeature.EVM_NON_BITGO_RECOVERY,
16161617
CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY,
16171618
CoinFeature.STAKING,
1619+
CoinFeature.SUPPORTS_ERC20,
16181620
]
16191621
),
16201622
account(
@@ -2677,6 +2679,28 @@ export const allCoinsAndTokens = [
26772679
Networks.main.mon
26782680
),
26792681

2682+
// Story testnet tokens
2683+
erc20Token(
2684+
'f9a9c36f-8938-4206-bf0d-5016a861c58f',
2685+
'tip:usdc',
2686+
'Testnet Story USDC',
2687+
6,
2688+
'0x8c7c52eabb0fcbcaebce2556d9a719d539ea02d8',
2689+
UnderlyingAsset['tip:usdc'],
2690+
Networks.test.ip
2691+
),
2692+
2693+
// Story Mainnet tokens
2694+
erc20Token(
2695+
'832c10c5-5bea-481f-948c-dbf6dd1560e5',
2696+
'ip:aria',
2697+
'Story Aria',
2698+
18,
2699+
'0xc9cbbd8f211300dd0e7a3933b7aeedac6f61dd52',
2700+
UnderlyingAsset['ip:aria'],
2701+
Networks.main.ip
2702+
),
2703+
26802704
hederaCoin(
26812705
'98aad956-27ee-45dd-aa43-6a23c9a1d1d0',
26822706
'hbar',

modules/statics/src/base.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2886,6 +2886,12 @@ export enum UnderlyingAsset {
28862886
'xdc:srx' = 'xdc:srx',
28872887
'xdc:weth' = 'xdc:weth',
28882888

2889+
// Story testnet tokens
2890+
'tip:usdc' = 'tip:usdc',
2891+
2892+
// Story mainnet tokens
2893+
'ip:aria' = 'ip:aria',
2894+
28892895
// Arbitrum testnet tokens
28902896
'tarbeth:link' = 'tarbeth:link',
28912897
'tarbeth:xsgd' = 'tarbeth:xsgd',

modules/statics/src/coins.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export function createToken(token: AmsTokenConfig): Readonly<BaseCoin> | undefin
6060
seievm: erc20Token,
6161
mon: erc20Token,
6262
xdc: erc20Token,
63+
ip: erc20Token,
6364
bsc: bscToken,
6465
celo: celoToken,
6566
cosmos: cosmosToken,
@@ -125,6 +126,7 @@ export function createToken(token: AmsTokenConfig): Readonly<BaseCoin> | undefin
125126
case 'seievm':
126127
case 'mon':
127128
case 'xdc':
129+
case 'ip':
128130
case 'celo':
129131
case 'eth':
130132
case 'opeth':

modules/statics/src/tokenConfig.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ export interface Tokens {
269269
mon: {
270270
tokens: EthLikeTokenConfig[];
271271
};
272+
ip: {
273+
tokens: EthLikeTokenConfig[];
274+
};
272275
xdc: {
273276
tokens: EthLikeTokenConfig[];
274277
};
@@ -316,6 +319,9 @@ export interface Tokens {
316319
mon: {
317320
tokens: EthLikeTokenConfig[];
318321
};
322+
ip: {
323+
tokens: EthLikeTokenConfig[];
324+
};
319325
xdc: {
320326
tokens: EthLikeTokenConfig[];
321327
};
@@ -805,6 +811,25 @@ const getFormattedXdcTokens = (customCoinMap = coins) =>
805811
return acc;
806812
}, []);
807813

814+
function getEthLikeTokenConfig(coin: EthLikeERC20Token): EthLikeTokenConfig {
815+
return {
816+
type: coin.name,
817+
coin: coin.network.type === NetworkType.MAINNET ? coin.name : 't'.concat(coin.name),
818+
network: coin.network.type === NetworkType.MAINNET ? 'Mainnet' : 'Testnet',
819+
name: coin.fullName,
820+
tokenContractAddress: coin.contractAddress.toString().toLowerCase(),
821+
decimalPlaces: coin.decimalPlaces,
822+
};
823+
}
824+
825+
const getFormattedEthLikeTokenConfig = (customCoinMap = coins) =>
826+
customCoinMap.reduce((acc: EthLikeTokenConfig[], coin) => {
827+
if (coin instanceof EthLikeERC20Token) {
828+
acc.push(getEthLikeTokenConfig(coin));
829+
}
830+
return acc;
831+
}, []);
832+
808833
function getFlowTokenConfig(coin: EthLikeERC20Token): EthLikeTokenConfig {
809834
return {
810835
type: coin.name,
@@ -1313,6 +1338,9 @@ export const getFormattedTokens = (coinMap = coins): Tokens => {
13131338
xdc: {
13141339
tokens: getFormattedXdcTokens(coinMap).filter((token) => token.network === 'Mainnet'),
13151340
},
1341+
ip: {
1342+
tokens: getFormattedEthLikeTokenConfig(coinMap).filter((token) => token.network === 'Mainnet'),
1343+
},
13161344
lineaeth: {
13171345
tokens: getFormattedLineaethTokens(coinMap).filter((token) => token.network === 'Mainnet'),
13181346
},
@@ -1435,6 +1463,9 @@ export const getFormattedTokens = (coinMap = coins): Tokens => {
14351463
mon: {
14361464
tokens: getFormattedMonadTokens(coinMap).filter((token) => token.network === 'Testnet'),
14371465
},
1466+
ip: {
1467+
tokens: getFormattedEthLikeTokenConfig(coinMap).filter((token) => token.network === 'Testnet'),
1468+
},
14381469
xdc: {
14391470
tokens: getFormattedXdcTokens(coinMap).filter((token) => token.network === 'Testnet'),
14401471
},

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,11 @@
104104
"request": "npm:@cypress/[email protected]",
105105
"**/avalanche/store2": "2.14.4",
106106
"webpack-dev-server": "5.2.1",
107-
"memfs": "4.46.0"
107+
"memfs": "4.46.0",
108+
"**/lerna/**/glob": "11.1.0",
109+
"**/yeoman-generator/**/glob": "11.1.0",
110+
"**/cacache/glob": "11.1.0",
111+
"**/pacote/glob": "11.1.0"
108112
},
109113
"workspaces": [
110114
"modules/*"

yarn.lock

Lines changed: 17 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -4316,11 +4316,6 @@
43164316
tslib "^2.6.2"
43174317
webcrypto-core "^1.8.0"
43184318

4319-
"@pkgjs/parseargs@^0.11.0":
4320-
version "0.11.0"
4321-
resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
4322-
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
4323-
43244319
"@polka/url@^1.0.0-next.24":
43254320
version "1.0.0-next.29"
43264321
resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1"
@@ -11729,7 +11724,7 @@ foreground-child@^2.0.0:
1172911724
cross-spawn "^7.0.0"
1173011725
signal-exit "^3.0.2"
1173111726

11732-
foreground-child@^3.1.0, foreground-child@^3.3.1:
11727+
foreground-child@^3.3.1:
1173311728
version "3.3.1"
1173411729
resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz"
1173511730
integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
@@ -12140,31 +12135,19 @@ glob-to-regexp@^0.4.1:
1214012135
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
1214112136
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
1214212137

12143-
glob@^10.2.2:
12144-
version "10.4.5"
12145-
resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz"
12146-
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
12147-
dependencies:
12148-
foreground-child "^3.1.0"
12149-
jackspeak "^3.1.2"
12150-
minimatch "^9.0.4"
12151-
minipass "^7.1.2"
12152-
package-json-from-dist "^1.0.0"
12153-
path-scurry "^1.11.1"
12154-
12155-
glob@^11.0.3:
12156-
version "11.0.3"
12157-
resolved "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6"
12158-
integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==
12138+
[email protected], glob@^10.2.2, glob@^11.0.3, glob@^7.0.0, glob@^8.0.1, glob@^9.2.0:
12139+
version "11.1.0"
12140+
resolved "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz#4f826576e4eb99c7dad383793d2f9f08f67e50a6"
12141+
integrity sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==
1215912142
dependencies:
1216012143
foreground-child "^3.3.1"
1216112144
jackspeak "^4.1.1"
12162-
minimatch "^10.0.3"
12145+
minimatch "^10.1.1"
1216312146
minipass "^7.1.2"
1216412147
package-json-from-dist "^1.0.0"
1216512148
path-scurry "^2.0.0"
1216612149

12167-
glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@~7.2.3:
12150+
glob@^7.0.3, glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@~7.2.3:
1216812151
version "7.2.3"
1216912152
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
1217012153
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -12176,7 +12159,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, gl
1217612159
once "^1.3.0"
1217712160
path-is-absolute "^1.0.0"
1217812161

12179-
glob@^8.0.0, glob@^8.0.1, glob@^8.1.0:
12162+
glob@^8.0.0, glob@^8.1.0:
1218012163
version "8.1.0"
1218112164
resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz"
1218212165
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
@@ -12187,16 +12170,6 @@ glob@^8.0.0, glob@^8.0.1, glob@^8.1.0:
1218712170
minimatch "^5.0.1"
1218812171
once "^1.3.0"
1218912172

12190-
glob@^9.2.0:
12191-
version "9.3.5"
12192-
resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21"
12193-
integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==
12194-
dependencies:
12195-
fs.realpath "^1.0.0"
12196-
minimatch "^8.0.2"
12197-
minipass "^4.2.4"
12198-
path-scurry "^1.6.1"
12199-
1220012173
global-directory@^4.0.1:
1220112174
version "4.0.1"
1220212175
resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz"
@@ -13669,15 +13642,6 @@ istanbul-reports@^3.0.0, istanbul-reports@^3.0.2:
1366913642
html-escaper "^2.0.0"
1367013643
istanbul-lib-report "^3.0.0"
1367113644

13672-
jackspeak@^3.1.2:
13673-
version "3.4.3"
13674-
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz"
13675-
integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
13676-
dependencies:
13677-
"@isaacs/cliui" "^8.0.2"
13678-
optionalDependencies:
13679-
"@pkgjs/parseargs" "^0.11.0"
13680-
1368113645
jackspeak@^4.1.1:
1368213646
version "4.1.1"
1368313647
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae"
@@ -14679,7 +14643,7 @@ lowercase-keys@^2.0.0:
1467914643
resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz"
1468014644
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
1468114645

14682-
lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2:
14646+
lru-cache@^10.0.1, lru-cache@^10.2.2:
1468314647
version "10.4.3"
1468414648
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz"
1468514649
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
@@ -15127,6 +15091,13 @@ minimatch@^10.0.3:
1512715091
dependencies:
1512815092
"@isaacs/brace-expansion" "^5.0.0"
1512915093

15094+
minimatch@^10.1.1:
15095+
version "10.1.1"
15096+
resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55"
15097+
integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==
15098+
dependencies:
15099+
"@isaacs/brace-expansion" "^5.0.0"
15100+
1513015101
minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
1513115102
version "3.1.2"
1513215103
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
@@ -15148,13 +15119,6 @@ minimatch@^7.2.0, minimatch@^7.4.6:
1514815119
dependencies:
1514915120
brace-expansion "^2.0.1"
1515015121

15151-
minimatch@^8.0.2:
15152-
version "8.0.4"
15153-
resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229"
15154-
integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==
15155-
dependencies:
15156-
brace-expansion "^2.0.1"
15157-
1515815122
minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5:
1515915123
version "9.0.5"
1516015124
resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
@@ -15259,17 +15223,12 @@ minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6:
1525915223
dependencies:
1526015224
yallist "^4.0.0"
1526115225

15262-
minipass@^4.2.4:
15263-
version "4.2.8"
15264-
resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a"
15265-
integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==
15266-
1526715226
minipass@^5.0.0:
1526815227
version "5.0.0"
1526915228
resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
1527015229
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
1527115230

15272-
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2:
15231+
minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2:
1527315232
version "7.1.2"
1527415233
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
1527515234
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
@@ -16740,14 +16699,6 @@ path-platform@~0.11.15:
1674016699
resolved "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz"
1674116700
integrity sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==
1674216701

16743-
path-scurry@^1.11.1, path-scurry@^1.6.1:
16744-
version "1.11.1"
16745-
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz"
16746-
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
16747-
dependencies:
16748-
lru-cache "^10.2.0"
16749-
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
16750-
1675116702
path-scurry@^2.0.0:
1675216703
version "2.0.0"
1675316704
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580"

0 commit comments

Comments
 (0)