@andrekorol/kollateral
Version:
Typescript library for Kollateral, the flash loan building block
69 lines (61 loc) • 2.04 kB
text/typescript
import {Network} from "./network";
export enum Token {
ETH,
USDC,
DAI
}
const ETHER_TOKEN_ADDRESS = "0x0000000000000000000000000000000000000001";
const tokenToAddressMap: Map<Network, Map<Token, string>> = new Map([
[],
[],
[]
])],
[],
[],
[]
])],
[],
[],
[]
])]
]);
const addressToTokenMap: Map<Network, Map<string, Token>> =
new Map(Array.from(tokenToAddressMap.entries())
.map(kv => [kv[0], new Map(Array.from(kv[1].entries())
.map(kv => [kv[1], kv[0]]))
]));
export class TokenUtils {
static getAddress(network: Network, token: Token): string | null {
if (!tokenToAddressMap.has(network)) {
return null;
}
if (!tokenToAddressMap.get(network)!.has(token)) {
return null;
}
return tokenToAddressMap.get(network)!.get(token)!;
}
static fromAddress(network: Network, tokenAddress: string): Token | null {
if (!addressToTokenMap.has(network)) {
return null;
}
if (!addressToTokenMap.get(network)!.has(tokenAddress)) {
return null;
}
return addressToTokenMap.get(network)!.get(tokenAddress)!;
}
static getSupportedTokens(network: Network): Token[] {
if (!addressToTokenMap.has(network)) {
return [];
}
return Array.from(tokenToAddressMap.get(network)!.keys());
}
static isSupportedToken(network: Network, token: Token): boolean {
if (!tokenToAddressMap.has(network)) {
return false;
}
return tokenToAddressMap.get(network)!.has(token);
}
}