diff options
Diffstat (limited to 'constants/config.ts')
-rw-r--r-- | constants/config.ts | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/constants/config.ts b/constants/config.ts new file mode 100644 index 0000000..6fa09b6 --- /dev/null +++ b/constants/config.ts @@ -0,0 +1,67 @@ +import { JsonRpcProvider, WebSocketProvider } from "ethers"; +import { ETHEREUM_NETWORK } from "../constants"; + +const isLocal = false; + +const INFURA_API = process.env.EXPO_PUBLIC_INFURA_API!; +const INFURA_API_SECRET_KEY = process.env.EXPO_PUBLIC_INFURA_API_SECRET_KEY!; +const NETWORK = process.env.EXPO_PUBLIC_NETWORK!; +const ETHERSCAN_API_KEY = process.env.EXPO_PUBLIC_ETHERSCAN_API_KEY!; +const requiredVars = [ + INFURA_API, + INFURA_API_SECRET_KEY, + NETWORK, + ETHERSCAN_API_KEY, +]; + +const missingVar = requiredVars.find((v) => !v); + +if (missingVar) { + throw new Error( + "Missing required environment variables. Check your .env file.", + ); +} + +export const WEBSOCKET_URL = `wss://${NETWORK}.infura.io/ws/v3/${INFURA_API}`; + +export const PROVIDER_URL = isLocal + ? "http://localhost:8545" + : `https://${NETWORK}.infura.io/v3/${INFURA_API}`; + +export const MAINNET_PROVIDER_URL = `https://mainnet.infura.io/v3/${INFURA_API}`; + +export const getEtherscanBaseUrl = () => { + console.log("NETWORK", NETWORK); + return NETWORK === ETHEREUM_NETWORK.MAINNET + ? "https://api.etherscan.io/api" + : `https://api-${NETWORK}.etherscan.io/api`; +}; + +export const httpProvider = new JsonRpcProvider( + `https://${NETWORK}.infura.io/v3/${INFURA_API}`, +); +export const wsProvider = new WebSocketProvider(WEBSOCKET_URL); + +export const getEthTxUrl = ( + walletAddress: string, + page: number = 1, + pageSize: number = 20, +) => + `${getEtherscanBaseUrl()}?module=account&action=txlist&address=${walletAddress}&startblock=0&endblock=99999999&page=${page}&offset=${pageSize}&sort=desc&apikey=${ETHERSCAN_API_KEY}`; + +export const getTokenTxUrl = ( + walletAddress: string, + page: number = 1, + pageSize: number = 20, +) => + `${getEtherscanBaseUrl()}?module=account&action=tokentx&address=${walletAddress}&startblock=0&endblock=99999999&page=${page}&offset=${pageSize}&sort=desc&apikey=${ETHERSCAN_API_KEY}`; + +export const getTokenIcon = (address: string) => + `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/${address}/logo.png`; + +export const getInternalTxUrl = ( + walletAddress: string, + page: number = 1, + pageSize: number = 20, +) => + `${getEtherscanBaseUrl()}?module=account&action=txlistinternal&address=${walletAddress}&startblock=0&endblock=99999999&page=${page}&offset=${pageSize}&sort=desc&apikey=${ETHERSCAN_API_KEY}`; |