@@ -28,6 +28,7 @@ export enum TokenId {
2828 cKES = 'cKES' ,
2929 PUSO = 'PUSO' ,
3030 cCOP = 'cCOP' ,
31+ cGHS = 'cGHS' ,
3132}
3233
3334export const NativeStableTokenIds = [ TokenId . cUSD , TokenId . cEUR , TokenId . cREAL ]
@@ -122,6 +123,14 @@ export const cCOP: Token = Object.freeze({
122123 decimals : 18 ,
123124} )
124125
126+ export const cGHS : Token = Object . freeze ( {
127+ id : TokenId . cGHS ,
128+ symbol : TokenId . cGHS ,
129+ name : 'cGHS' ,
130+ color : Color . usdcBlue ,
131+ decimals : 18 ,
132+ } )
133+
125134export const Tokens : Record < TokenId , Token > = {
126135 CELO ,
127136 cUSD,
@@ -135,6 +144,7 @@ export const Tokens: Record<TokenId, Token> = {
135144 cKES,
136145 PUSO ,
137146 cCOP,
147+ cGHS,
138148}
139149
140150export const TokenAddresses : Record < ChainId , Record < TokenId , Address > > = Object . freeze ( {
@@ -151,6 +161,7 @@ export const TokenAddresses: Record<ChainId, Record<TokenId, Address>> = Object.
151161 [ TokenId . cKES ] : '0x1E0433C1769271ECcF4CFF9FDdD515eefE6CdF92' ,
152162 [ TokenId . PUSO ] : '0x5E0E3c9419C42a1B04e2525991FB1A2C467AB8bF' ,
153163 [ TokenId . cCOP ] : '0xe6A57340f0df6E020c1c0a80bC6E13048601f0d4' ,
164+ [ TokenId . cGHS ] : '0xf419dfab059c36cbafb43a088ebeb2811f9789b9' ,
154165 } ,
155166 [ ChainId . Baklava ] : {
156167 [ TokenId . CELO ] : '0xdDc9bE57f553fe75752D61606B94CBD7e0264eF8' ,
@@ -165,6 +176,7 @@ export const TokenAddresses: Record<ChainId, Record<TokenId, Address>> = Object.
165176 [ TokenId . cKES ] : '0x8813Ae180017057d0Cf98C930cED1E7101B97370' ,
166177 [ TokenId . PUSO ] : '' ,
167178 [ TokenId . cCOP ] : '' ,
179+ [ TokenId . cGHS ] : '' ,
168180 } ,
169181 [ ChainId . Celo ] : {
170182 [ TokenId . CELO ] : '0x471EcE3750Da237f93B8E339c536989b8978a438' ,
@@ -179,6 +191,7 @@ export const TokenAddresses: Record<ChainId, Record<TokenId, Address>> = Object.
179191 [ TokenId . cKES ] : '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0' ,
180192 [ TokenId . PUSO ] : '0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B' ,
181193 [ TokenId . cCOP ] : '0x8A567e2aE79CA692Bd748aB832081C45de4041eA' ,
194+ [ TokenId . cGHS ] : '0xfAeA5F3404bbA20D3cc2f8C4B0A888F55a3c7313' ,
182195 } ,
183196} )
184197
@@ -203,10 +216,20 @@ export async function isSwappable(token_1: string, token_2: string, chainId: num
203216 )
204217}
205218
206- export function getSwappableTokenOptions ( token : string , chainId : ChainId ) {
207- return getTokenOptionsByChainId ( chainId )
208- . filter ( ( tkn ) => isSwappable ( tkn , token , chainId ) )
209- . filter ( ( tkn ) => token !== tkn )
219+ export async function getSwappableTokenOptions ( token : string , chainId : ChainId ) {
220+ const options = getTokenOptionsByChainId ( chainId )
221+
222+ const swappableOptions = await Promise . all (
223+ options . map ( async ( tkn ) => ( {
224+ token : tkn ,
225+ isSwappable : await isSwappable ( tkn , token , chainId ) ,
226+ } ) )
227+ ) . then ( ( results ) => {
228+ return results
229+ . filter ( ( result ) => result . isSwappable && result . token !== token )
230+ . map ( ( result ) => result . token )
231+ } )
232+ return swappableOptions
210233}
211234
212235export function getTokenOptionsByChainId ( chainId : ChainId ) : TokenId [ ] {
@@ -219,8 +242,8 @@ export function getTokenOptionsByChainId(chainId: ChainId): TokenId[] {
219242 : [ ]
220243}
221244
222- export function getTokenById ( id : string ) : Token | null {
223- return Tokens [ id as TokenId ] || null
245+ export function getTokenById ( id : TokenId | string ) : Token {
246+ return Tokens [ id as TokenId ]
224247}
225248
226249export function getTokenAddress ( id : TokenId , chainId : ChainId ) : Address {
0 commit comments