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