UNPKG

0xtrails

Version:

SDK for Trails

232 lines (197 loc) 6.43 kB
import { PROD_SEQUENCE_INDEXER_URL, PROD_SEQUENCE_API_URL, DEFAULT_WALLETCONNECT_PROJECT_ID, DEFAULT_SLIPPAGE_TOLERANCE, PROD_SEQUENCE_PROJECT_ACCESS_KEY, DEV_SEQUENCE_INDEXER_URL, DEV_SEQUENCE_API_URL, DEV_SEQUENCE_PROJECT_ACCESS_KEY, DEFAULT_SEQUENCE_ENV, PROD_SEQUENCE_NODE_GATEWAY_URL, DEV_SEQUENCE_NODE_GATEWAY_URL, } from "./constants.js" import { getQueryParam } from "./queryParams.js" type SequenceEnv = "prod" | "dev" | "local" | "cors-anywhere" export const globalConfig: { sequenceProjectAccessKey: string sequenceIndexerUrl: string sequenceNodeGatewayUrl: string sequenceApiUrl: string sequenceEnv: SequenceEnv walletConnectProjectId: string slippageTolerance: string debug: boolean commitHash: string | undefined } = { commitHash: declareCommitHash(), sequenceProjectAccessKey: declareSequenceProjectAccessKey(), sequenceIndexerUrl: declareSequenceIndexerUrl(), sequenceNodeGatewayUrl: declareSequenceNodeGatewayUrl(), sequenceApiUrl: declareSequenceApiUrl(), sequenceEnv: declareSequenceEnv(), walletConnectProjectId: DEFAULT_WALLETCONNECT_PROJECT_ID, slippageTolerance: DEFAULT_SLIPPAGE_TOLERANCE, debug: false, } export function declareSequenceEnv(): SequenceEnv { // Check for Vite development environment with HMR if (typeof window !== "undefined" && (import.meta as any)?.hot) { return "local" } if (typeof process !== "undefined") { if (getEnvVar("ENV") === "local") { return "local" } if (getEnvVar("ENV") === "development" || getEnvVar("ENV") === "dev") { return "dev" } if ( getEnvVar("CF_PAGES_BRANCH") === "master" || getEnvVar("CF_PAGES_BRANCH") === "main" || getEnvVar("ENV") === "production" || getEnvVar("ENV") === "prod" ) { return "prod" } } return DEFAULT_SEQUENCE_ENV } export function declareSequenceIndexerUrl() { if (declareSequenceEnv() === "prod") { return PROD_SEQUENCE_INDEXER_URL } return DEV_SEQUENCE_INDEXER_URL } export function declareSequenceApiUrl() { if (declareSequenceEnv() === "prod") { return PROD_SEQUENCE_API_URL } if (declareSequenceEnv() === "local") { return getEnvVar("TEST_API_URL") || DEV_SEQUENCE_API_URL } return DEV_SEQUENCE_API_URL } export function declareSequenceNodeGatewayUrl() { if (declareSequenceEnv() === "prod") { return PROD_SEQUENCE_NODE_GATEWAY_URL } return DEV_SEQUENCE_NODE_GATEWAY_URL } export function declareSequenceProjectAccessKey() { if (declareSequenceEnv() === "prod") { return PROD_SEQUENCE_PROJECT_ACCESS_KEY } return DEV_SEQUENCE_PROJECT_ACCESS_KEY } export function declareCommitHash() { const cfPagesCommitHash = getEnvVar("CF_PAGES_COMMIT_SHA") const viteCommitHash = getEnvVar("VITE_COMMIT_SHA") if (cfPagesCommitHash) { console.log(`Commit hash from CF_PAGES_COMMIT_SHA: ${cfPagesCommitHash}`) } if (viteCommitHash) { console.log(`Commit hash from VITE_COMMIT_SHA: ${viteCommitHash}`) } return cfPagesCommitHash || viteCommitHash } export function getSequenceProjectAccessKey() { return globalConfig.sequenceProjectAccessKey } export function setSequenceProjectAccessKey(sequenceProjectAccessKey: string) { globalConfig.sequenceProjectAccessKey = sequenceProjectAccessKey } export function setSequenceIndexerUrl(sequenceIndexerUrl: string) { globalConfig.sequenceIndexerUrl = sequenceIndexerUrl } export function getSequenceIndexerUrl() { return globalConfig.sequenceIndexerUrl } export function setSequenceNodeGatewayUrl(sequenceNodeGatewayUrl: string) { globalConfig.sequenceNodeGatewayUrl = sequenceNodeGatewayUrl } export function getSequenceNodeGatewayUrl() { return globalConfig.sequenceNodeGatewayUrl } export function setSequenceApiUrl(sequenceApiUrl: string) { globalConfig.sequenceApiUrl = sequenceApiUrl } export function getSequenceApiUrl() { return globalConfig.sequenceApiUrl } export function setSequenceEnv(sequenceEnv: SequenceEnv) { globalConfig.sequenceEnv = sequenceEnv if (sequenceEnv === "prod") { setSequenceIndexerUrl(PROD_SEQUENCE_INDEXER_URL) setSequenceApiUrl(PROD_SEQUENCE_API_URL) setSequenceNodeGatewayUrl(PROD_SEQUENCE_NODE_GATEWAY_URL) } if (sequenceEnv === "local") { if (getEnvVar("API_URL")) { setSequenceApiUrl(getEnvVar("API_URL")) } } if (sequenceEnv === "dev") { setSequenceIndexerUrl(DEV_SEQUENCE_INDEXER_URL) setSequenceApiUrl(DEV_SEQUENCE_API_URL) setSequenceNodeGatewayUrl(DEV_SEQUENCE_NODE_GATEWAY_URL) } } export function getSequenceEnv() { return globalConfig.sequenceEnv } export function setWalletConnectProjectId(walletConnectProjectId: string) { globalConfig.walletConnectProjectId = walletConnectProjectId } export function getWalletConnectProjectId() { return globalConfig.walletConnectProjectId } /** * Set slippage tolerance for swaps * @param slippageTolerance - Slippage tolerance as decimal string (e.g., "0.05" for 5%, "0.001" for 0.1%) */ export function setSlippageTolerance(slippageTolerance: string) { globalConfig.slippageTolerance = slippageTolerance } /** * Get current slippage tolerance * @returns Slippage tolerance as decimal string (e.g., "0.05" for 5%, "0.001" for 0.1%) */ export function getSlippageTolerance() { return globalConfig.slippageTolerance } export function setDebug(debug: boolean) { globalConfig.debug = debug } export function getDebug() { return globalConfig.debug || getQueryParam("debug") === "true" } export function setCommitHash(commitHash: string) { globalConfig.commitHash = commitHash console.log(`Commit hash manually set to: ${commitHash}`) } export function getCommitHash() { return globalConfig.commitHash } export function getAccountIntentTransactionHistory() { return FeatureFlags.accountIntentTransactionHistory } export function getSameChainSwapDifferentIntentAddresses() { return FeatureFlags.sameChainSwapDifferentIntentAddresses } export const FeatureFlags = { accountIntentTransactionHistory: false, sameChainSwapDifferentIntentAddresses: false, } export function getEnvVar(name: string) { if (typeof process !== "undefined") { return process?.env?.[name] } if ((import.meta as any)?.env) { return (import.meta as any).env[name] } if ((import.meta as any).env[`VITE_${name}`]) { return (import.meta as any).env[`VITE_${name}`] } return undefined }