summaryrefslogtreecommitdiff
path: root/constants/config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'constants/config.ts')
-rw-r--r--constants/config.ts67
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}`;