@@ -31,6 +31,7 @@ import {
3131 ZkethERC20Token ,
3232 VetNFTCollection ,
3333 AdaToken ,
34+ JettonToken ,
3435} from './account' ;
3536import { CoinFamily , CoinKind , BaseCoin } from './base' ;
3637import { coins } from './coins' ;
@@ -141,6 +142,10 @@ export type CosmosTokenConfig = BaseNetworkConfig & {
141142 denom : string ;
142143} ;
143144
145+ export type JettonTokenConfig = BaseNetworkConfig & {
146+ contractAddress : string ;
147+ } ;
148+
144149export type TokenConfig =
145150 | Erc20TokenConfig
146151 | StellarTokenConfig
@@ -164,7 +169,8 @@ export type TokenConfig =
164169 | VetTokenConfig
165170 | VetNFTCollectionConfig
166171 | TaoTokenConfig
167- | PolyxTokenConfig ;
172+ | PolyxTokenConfig
173+ | JettonTokenConfig ;
168174
169175export interface Tokens {
170176 bitcoin : {
@@ -261,6 +267,9 @@ export interface Tokens {
261267 cosmos : {
262268 tokens : CosmosTokenConfig [ ] ;
263269 } ;
270+ ton : {
271+ tokens : JettonTokenConfig [ ] ;
272+ } ;
264273 } ;
265274 testnet : {
266275 eth : {
@@ -356,6 +365,9 @@ export interface Tokens {
356365 cosmos : {
357366 tokens : CosmosTokenConfig [ ] ;
358367 } ;
368+ ton : {
369+ tokens : JettonTokenConfig [ ] ;
370+ } ;
359371 } ;
360372}
361373
@@ -1053,6 +1065,25 @@ function getCosmosTokenConfig(coin: CosmosChainToken): CosmosTokenConfig {
10531065 } ;
10541066}
10551067
1068+ function getJettonTokenConfig ( coin : JettonToken ) : JettonTokenConfig {
1069+ return {
1070+ type : coin . name ,
1071+ coin : coin . network . type === NetworkType . MAINNET ? 'ton' : 'tton' ,
1072+ network : coin . network . type === NetworkType . MAINNET ? 'Mainnet' : 'Testnet' ,
1073+ name : coin . fullName ,
1074+ contractAddress : coin . contractAddress ,
1075+ decimalPlaces : coin . decimalPlaces ,
1076+ } ;
1077+ }
1078+
1079+ const getFormattedJettonTokens = ( customCoinMap = coins ) =>
1080+ customCoinMap . reduce ( ( acc : JettonTokenConfig [ ] , coin ) => {
1081+ if ( coin instanceof JettonToken ) {
1082+ acc . push ( getJettonTokenConfig ( coin ) ) ;
1083+ }
1084+ return acc ;
1085+ } , [ ] ) ;
1086+
10561087export const getFormattedTokens = ( coinMap = coins ) : Tokens => {
10571088 const formattedAptNFTCollections = getFormattedAptNFTCollections ( coinMap ) ;
10581089 const formattedVetNFTCollections = getFormattedVetNFTCollections ( coinMap ) ;
@@ -1157,6 +1188,9 @@ export const getFormattedTokens = (coinMap = coins): Tokens => {
11571188 cosmos : {
11581189 tokens : getFormattedCosmosChainTokens ( coinMap ) . filter ( ( token ) => token . network === 'Mainnet' ) ,
11591190 } ,
1191+ ton : {
1192+ tokens : getFormattedJettonTokens ( coinMap ) . filter ( ( token ) => token . network === 'Mainnet' ) ,
1193+ } ,
11601194 } ,
11611195 testnet : {
11621196 eth : {
@@ -1258,6 +1292,9 @@ export const getFormattedTokens = (coinMap = coins): Tokens => {
12581292 cosmos : {
12591293 tokens : getFormattedCosmosChainTokens ( coinMap ) . filter ( ( token ) => token . network === 'Testnet' ) ,
12601294 } ,
1295+ ton : {
1296+ tokens : getFormattedJettonTokens ( coinMap ) . filter ( ( token ) => token . network === 'Testnet' ) ,
1297+ } ,
12611298 } ,
12621299 } ;
12631300} ;
@@ -1369,6 +1406,8 @@ export function getFormattedTokenConfigForCoin(coin: Readonly<BaseCoin>): TokenC
13691406 return getVetNFTCollectionConfig ( coin ) ;
13701407 } else if ( coin instanceof CoredaoERC20Token ) {
13711408 return getCoredaoTokenConfig ( coin ) ;
1409+ } else if ( coin instanceof JettonToken ) {
1410+ return getJettonTokenConfig ( coin ) ;
13721411 }
13731412 return undefined ;
13741413}
0 commit comments