@luxexchange/config 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.depcheckrc +9 -0
- package/.eslintrc.js +20 -0
- package/README.md +31 -0
- package/dist/chains.d.ts +405 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +105 -0
- package/dist/contracts.d.ts +85 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +68 -0
- package/dist/env.d.ts +17 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +20 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/wagmi.d.ts +297 -0
- package/dist/wagmi.d.ts.map +1 -0
- package/dist/wagmi.js +19 -0
- package/env.d.ts +64 -0
- package/env.native.d.ts +40 -0
- package/package.json +33 -0
- package/project.json +18 -0
- package/src/chains.ts +224 -0
- package/src/config-types.ts +50 -0
- package/src/contracts.ts +193 -0
- package/src/env.ts +27 -0
- package/src/getConfig.native.ts +130 -0
- package/src/getConfig.ts +6 -0
- package/src/getConfig.web.ts +77 -0
- package/src/index.ts +37 -0
- package/src/wagmi.ts +27 -0
- package/tsconfig.json +18 -0
- package/tsconfig.lint.json +8 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Config } from '@luxfi/config/src/config-types'
|
|
2
|
+
import { isNonTestDev } from '@luxfi/utilities/src/environment/constants'
|
|
3
|
+
|
|
4
|
+
// Module-level cache for config to avoid recomputing on every call
|
|
5
|
+
let cachedConfig: Config | undefined
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line complexity
|
|
8
|
+
export const getConfig = (): Config => {
|
|
9
|
+
// Return cached config if already computed
|
|
10
|
+
if (cachedConfig !== undefined) {
|
|
11
|
+
return cachedConfig
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Web-specific config implementation that uses process.env directly
|
|
16
|
+
* instead of react-native-dotenv to avoid Node.js filesystem dependencies
|
|
17
|
+
* in browser extension builds.
|
|
18
|
+
*/
|
|
19
|
+
const config: Config = {
|
|
20
|
+
alchemyApiKey: process.env.REACT_APP_ALCHEMY_API_KEY || process.env.ALCHEMY_API_KEY || '',
|
|
21
|
+
amplitudeProxyUrlOverride: process.env.AMPLITUDE_PROXY_URL_OVERRIDE || '',
|
|
22
|
+
apiBaseUrlOverride: process.env.API_BASE_URL_OVERRIDE || '',
|
|
23
|
+
apiBaseUrlV2Override: process.env.API_BASE_URL_V2_OVERRIDE || '',
|
|
24
|
+
appsflyerApiKey: process.env.APPSFLYER_API_KEY || '',
|
|
25
|
+
appsflyerAppId: process.env.APPSFLYER_APP_ID || '',
|
|
26
|
+
blockaidProxyUrl: process.env.REACT_APP_BLOCKAID_PROXY_URL || process.env.BLOCKAID_PROXY_URL || '',
|
|
27
|
+
datadogClientToken: process.env.REACT_APP_DATADOG_CLIENT_TOKEN || process.env.DATADOG_CLIENT_TOKEN || '',
|
|
28
|
+
datadogProjectId: process.env.REACT_APP_DATADOG_PROJECT_ID || process.env.DATADOG_PROJECT_ID || '',
|
|
29
|
+
enableEntryGatewayProxy: process.env.VITE_ENABLE_ENTRY_GATEWAY_PROXY === 'true',
|
|
30
|
+
enableSessionService: process.env.ENABLE_SESSION_SERVICE === 'true',
|
|
31
|
+
enableSessionUpgradeAuto:
|
|
32
|
+
process.env.REACT_APP_ENABLE_SESSION_UPGRADE_AUTO === 'true' ||
|
|
33
|
+
process.env.ENABLE_SESSION_UPGRADE_AUTO === 'true',
|
|
34
|
+
isE2ETest: process.env.IS_E2E_TEST?.toLowerCase() === 'true',
|
|
35
|
+
forApiUrlOverride: process.env.FOR_API_URL_OVERRIDE || '',
|
|
36
|
+
graphqlUrlOverride: process.env.GRAPHQL_URL_OVERRIDE || '',
|
|
37
|
+
// G-Chain GraphQL: testnet=9650, mainnet=9630, devnet=9650
|
|
38
|
+
gChainGraphqlUrl:
|
|
39
|
+
process.env['REACT_APP_GCHAIN_GRAPHQL_URL'] ||
|
|
40
|
+
process.env['GCHAIN_GRAPHQL_URL'] ||
|
|
41
|
+
(process.env.NODE_ENV === 'production'
|
|
42
|
+
? 'http://localhost:9630/ext/bc/G/graphql'
|
|
43
|
+
: 'http://localhost:9650/ext/bc/G/graphql'),
|
|
44
|
+
infuraKey: process.env.REACT_APP_INFURA_KEY || '',
|
|
45
|
+
includePrototypeFeatures: process.env.INCLUDE_PROTOTYPE_FEATURES || '',
|
|
46
|
+
isVercelEnvironment: process.env.VERCEL === '1',
|
|
47
|
+
jupiterProxyUrl: process.env.REACT_APP_JUPITER_PROXY_URL || process.env.JUPITER_PROXY_URL || '',
|
|
48
|
+
onesignalAppId: process.env.ONESIGNAL_APP_ID || '',
|
|
49
|
+
quicknodeEndpointName: process.env.REACT_APP_QUICKNODE_ENDPOINT_NAME || process.env.QUICKNODE_ENDPOINT_NAME || '',
|
|
50
|
+
quicknodeEndpointToken:
|
|
51
|
+
process.env.REACT_APP_QUICKNODE_ENDPOINT_TOKEN || process.env.QUICKNODE_ENDPOINT_TOKEN || '',
|
|
52
|
+
scantasticApiUrlOverride: process.env.SCANTASTIC_API_URL_OVERRIDE || '',
|
|
53
|
+
statsigApiKey: process.env.REACT_APP_STATSIG_API_KEY || process.env.STATSIG_API_KEY || '',
|
|
54
|
+
statsigProxyUrlOverride: process.env.STATSIG_PROXY_URL_OVERRIDE || '',
|
|
55
|
+
tradingApiKey: process.env.REACT_APP_TRADING_API_KEY || process.env.TRADING_API_KEY || '',
|
|
56
|
+
tradingApiUrlOverride: process.env.REACT_APP_TRADING_API_URL_OVERRIDE || process.env.TRADING_API_URL_OVERRIDE || '',
|
|
57
|
+
tradingApiWebTestEnv: process.env.REACT_APP_TRADING_API_TEST_ENV || '',
|
|
58
|
+
liquidityServiceUrlOverride:
|
|
59
|
+
process.env.REACT_APP_LIQUIDITY_SERVICE_URL_OVERRIDE || process.env.LIQUIDITY_SERVICE_URL_OVERRIDE || '',
|
|
60
|
+
luxApiKey: process.env.LUX_API_KEY || '',
|
|
61
|
+
unitagsApiUrlOverride: process.env.UNITAGS_API_URL_OVERRIDE || '',
|
|
62
|
+
luxNotifApiBaseUrlOverride: process.env.LUX_NOTIF_API_BASE_URL_OVERRIDE || '',
|
|
63
|
+
entryGatewayApiUrlOverride: process.env.ENTRY_GATEWAY_API_URL_OVERRIDE || '',
|
|
64
|
+
luxGatewayUrlOverride: process.env['REACT_APP_LUX_GATEWAY_URL'] || process.env['LUX_GATEWAY_URL'] || '',
|
|
65
|
+
walletConnectProjectId:
|
|
66
|
+
process.env.REACT_APP_WALLET_CONNECT_PROJECT_ID || process.env.WALLETCONNECT_PROJECT_ID || '',
|
|
67
|
+
walletConnectProjectIdBeta: process.env.WALLETCONNECT_PROJECT_ID_BETA || '',
|
|
68
|
+
walletConnectProjectIdDev: process.env.WALLETCONNECT_PROJECT_ID_DEV || '',
|
|
69
|
+
}
|
|
70
|
+
if (isNonTestDev) {
|
|
71
|
+
// biome-ignore lint/suspicious/noConsole: Cannot use logger here, causes error from circular dep
|
|
72
|
+
console.debug('Using app config:', config)
|
|
73
|
+
}
|
|
74
|
+
// Cache and return frozen config
|
|
75
|
+
cachedConfig = Object.freeze(config)
|
|
76
|
+
return cachedConfig
|
|
77
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type { Config } from './config-types'
|
|
2
|
+
export { getConfig } from './getConfig'
|
|
3
|
+
|
|
4
|
+
// Chain definitions
|
|
5
|
+
export {
|
|
6
|
+
luxMainnet,
|
|
7
|
+
luxTestnet,
|
|
8
|
+
zooMainnet,
|
|
9
|
+
zooTestnet,
|
|
10
|
+
hanzoMainnet,
|
|
11
|
+
spcMainnet,
|
|
12
|
+
parsMainnet,
|
|
13
|
+
liquidEvm,
|
|
14
|
+
LUX_MAINNET_ID,
|
|
15
|
+
LUX_TESTNET_ID,
|
|
16
|
+
ZOO_MAINNET_ID,
|
|
17
|
+
ZOO_TESTNET_ID,
|
|
18
|
+
HANZO_MAINNET_ID,
|
|
19
|
+
SPC_MAINNET_ID,
|
|
20
|
+
PARS_MAINNET_ID,
|
|
21
|
+
LIQUID_EVM_ID,
|
|
22
|
+
supportedChains,
|
|
23
|
+
type SupportedChainId,
|
|
24
|
+
} from './chains'
|
|
25
|
+
|
|
26
|
+
// Contract addresses
|
|
27
|
+
export {
|
|
28
|
+
LUX_MAINNET_CONTRACTS,
|
|
29
|
+
LUX_TESTNET_CONTRACTS,
|
|
30
|
+
ZOO_MAINNET_CONTRACTS,
|
|
31
|
+
HANZO_MAINNET_CONTRACTS,
|
|
32
|
+
SPC_MAINNET_CONTRACTS,
|
|
33
|
+
PARS_MAINNET_CONTRACTS,
|
|
34
|
+
DEX_PRECOMPILES,
|
|
35
|
+
getContracts,
|
|
36
|
+
type ContractAddresses,
|
|
37
|
+
} from './contracts'
|
package/src/wagmi.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { http, createConfig } from 'wagmi'
|
|
2
|
+
import { mainnet, sepolia } from 'wagmi/chains'
|
|
3
|
+
import { luxMainnet, luxTestnet, zooMainnet, zooTestnet, hanzoMainnet, spcMainnet, parsMainnet, liquidEvm } from './chains'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Wagmi configuration for Lux Exchange
|
|
7
|
+
*/
|
|
8
|
+
export const wagmiConfig = createConfig({
|
|
9
|
+
chains: [luxMainnet, zooMainnet, hanzoMainnet, spcMainnet, parsMainnet, liquidEvm, luxTestnet, zooTestnet, mainnet, sepolia],
|
|
10
|
+
transports: {
|
|
11
|
+
// Lux C-Chain
|
|
12
|
+
[luxMainnet.id]: http(luxMainnet.rpcUrls.default.http[0]),
|
|
13
|
+
[luxTestnet.id]: http(luxTestnet.rpcUrls.default.http[0]),
|
|
14
|
+
// Subnet chains
|
|
15
|
+
[zooMainnet.id]: http(zooMainnet.rpcUrls.default.http[0]),
|
|
16
|
+
[zooTestnet.id]: http(zooTestnet.rpcUrls.default.http[0]),
|
|
17
|
+
[hanzoMainnet.id]: http(hanzoMainnet.rpcUrls.default.http[0]),
|
|
18
|
+
[spcMainnet.id]: http(spcMainnet.rpcUrls.default.http[0]),
|
|
19
|
+
[parsMainnet.id]: http(parsMainnet.rpcUrls.default.http[0]),
|
|
20
|
+
[liquidEvm.id]: http(liquidEvm.rpcUrls.default.http[0]),
|
|
21
|
+
// Ethereum (for bridging)
|
|
22
|
+
[mainnet.id]: http(),
|
|
23
|
+
[sepolia.id]: http(),
|
|
24
|
+
},
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
export type WagmiConfig = typeof wagmiConfig
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../config/tsconfig/app.json",
|
|
3
|
+
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.json", "env.native.d.ts", "env.d.ts"],
|
|
4
|
+
"exclude": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "src/**/*.test.ts", "src/**/*.test.tsx"],
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"emitDeclarationOnly": true,
|
|
7
|
+
"noEmit": false,
|
|
8
|
+
"types": ["node"],
|
|
9
|
+
"paths": {
|
|
10
|
+
"@universe/config/*": ["./src/*"]
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"references": [
|
|
14
|
+
{
|
|
15
|
+
"path": "../utilities"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|