Commit ed3a0451 authored by Noah Zinsmeister's avatar Noah Zinsmeister

shift around some functions and types

parent 0263b6dd
......@@ -2,7 +2,8 @@ import BigNumber from 'bignumber.js'
import { ethers } from 'ethers'
import { BigNumberish } from '../types'
import { normalizeBigNumberish } from '../_utils'
import { ETH } from '../constants'
import { normalizeBigNumberish, getEthToken } from '../_utils'
interface TestCase {
input: BigNumberish
......@@ -88,3 +89,7 @@ describe('normalizeBigNumberish', (): void => {
testFailures(expectedFailures)
})
})
test('getEthToken', (): void => {
expect(getEthToken(1).address).toEqual(ETH)
})
import { Token, TokenReservesNormalized } from '../types'
import { ETH as _ETH, _CHAIN_ID_NAME } from '../constants'
import { getTokenReserves, getEthToken } from '../data'
import { getTokenReserves } from '../data'
import { ethers } from 'ethers'
const ETH: Token = {
......@@ -44,7 +44,3 @@ describe('getTokenReserves', (): void => {
done()
})
})
test('getEthToken', (): void => {
expect(getEthToken(1)).toEqual(ETH)
})
import BigNumber from 'bignumber.js'
import { ethers } from 'ethers'
import { BigNumberish } from '../types'
import { _0, _MAX_UINT8, _MAX_UINT256 } from '../constants'
import { BigNumberish, Token } from '../types'
import { _0, _MAX_UINT8, _MAX_UINT256, ETH } from '../constants'
function ensureUInt8(number: number): void {
if (!Number.isInteger(number) || number < 0 || number > _MAX_UINT8) {
......@@ -47,3 +47,11 @@ export function normalizeBigNumberish(bigNumberish: BigNumberish): BigNumber {
export function normalizeAddress(address: string): string {
return ethers.utils.getAddress(address.toLowerCase())
}
export function getEthToken(chainId?: number): Token {
return {
...(chainId ? { chainId } : {}),
address: ETH,
decimals: 18
}
}
......@@ -17,8 +17,7 @@ import {
_AnyRate
} from '../types'
import { TRADE_TYPE } from '../constants'
import { normalizeBigNumberish, ensureAllUInt8, ensureAllUInt256 } from '../_utils'
import { getEthToken } from '../data'
import { normalizeBigNumberish, ensureAllUInt8, ensureAllUInt256, getEthToken } from '../_utils'
import { calculateDecimalRate } from './_utils'
function normalizeTokenAmount(tokenAmount: TokenAmount): TokenAmountNormalized {
......
......@@ -2,7 +2,7 @@ import { ethers } from 'ethers'
import { ChainIdOrProvider, isChainId, Token, TokenReservesNormalized, _ChainIdAndProvider } from '../types'
import { ETH, SUPPORTED_CHAIN_ID, FACTORY_ABI, FACTORY_ADDRESS, _CHAIN_ID_NAME, _ERC20_ABI } from '../constants'
import { normalizeBigNumberish, normalizeAddress } from '../_utils'
import { normalizeBigNumberish, normalizeAddress, getEthToken } from '../_utils'
function getContract(address: string, ABI: string, provider: ethers.providers.BaseProvider): ethers.Contract {
return new ethers.Contract(address, ABI, provider)
......@@ -18,7 +18,8 @@ async function getChainIdAndProvider(chainIdOrProvider: ChainIdOrProvider): Prom
}
// if a provider is provided, fetch the chainId from it
else {
const { chainId }: ethers.utils.Network = await chainIdOrProvider.getNetwork()
const provider: ethers.providers.Web3Provider = new ethers.providers.Web3Provider(chainIdOrProvider)
const { chainId }: ethers.utils.Network = await provider.getNetwork()
if (!(chainId in SUPPORTED_CHAIN_ID)) {
throw Error(`chainId ${chainId} is not valid.`)
......@@ -26,19 +27,11 @@ async function getChainIdAndProvider(chainIdOrProvider: ChainIdOrProvider): Prom
return {
chainId,
provider: chainIdOrProvider
provider
}
}
}
export function getEthToken(chainId?: number): Token {
return {
...(chainId ? { chainId } : {}),
address: ETH,
decimals: 18
}
}
async function getToken(tokenAddress: string, chainIdAndProvider: _ChainIdAndProvider): Promise<Token> {
if (tokenAddress === ETH) {
return getEthToken(chainIdAndProvider.chainId)
......
......@@ -6,7 +6,7 @@ import { SUPPORTED_CHAIN_ID, TRADE_TYPE, TRADE_EXACT, FIXED_UNDERFLOW_BEHAVIOR }
export type BigNumberish = BigNumber | ethers.utils.BigNumber | string | number
//// types for on-chain, submitted, and normalized data
export type ChainIdOrProvider = SUPPORTED_CHAIN_ID | ethers.providers.BaseProvider
export type ChainIdOrProvider = SUPPORTED_CHAIN_ID | ethers.providers.AsyncSendable
// type guard for ChainIdOrProvider
export function isChainId(chainIdOrProvider: ChainIdOrProvider): chainIdOrProvider is SUPPORTED_CHAIN_ID {
......@@ -138,7 +138,7 @@ export interface FormatFixedOptions {
//// internal-only interfaces
export interface _ChainIdAndProvider {
chainId: number
provider: ethers.providers.BaseProvider
provider: ethers.providers.Web3Provider | ethers.providers.BaseProvider
}
export interface _ParsedOptionalReserves {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment