liquidops
Version:
LiquidOps is an over-collateralised lending and borrowing protocol built on Arweave's L2 AO.
45 lines (38 loc) • 1.2 kB
text/typescript
import {
SupportedTokensTickers,
SupportedTokensAddresses,
SupportedOTokensTickers,
SupportedOTokensAddresses,
SupportedControllerAddresses,
tokens,
oTokens,
tokenData,
} from "./tokenAddressData";
export type TokenInput = SupportedTokensTickers | SupportedTokensAddresses;
export interface TokenInfo {
tokenAddress: SupportedTokensAddresses;
oTokenAddress: SupportedOTokensAddresses;
controllerAddress: SupportedControllerAddresses;
ticker: SupportedTokensTickers;
}
export function tokenInput(token: TokenInput): TokenInfo {
const tokenEntry = Object.entries(tokens).find(
([ticker, address]) => ticker === token || address === token,
);
if (tokenEntry) {
const [ticker, tokenAddress] = tokenEntry;
return {
tokenAddress,
oTokenAddress: oTokens[`o${ticker}` as SupportedOTokensTickers],
controllerAddress: tokenData[ticker].controllerAddress,
ticker,
};
}
if (
Object.values(oTokens).some((address) => address === token) ||
Object.keys(oTokens).includes(token as string)
) {
throw new Error("Token input cannot be an oToken ticker or address.");
}
throw new Error("Token input is not supported.");
}