@one_deploy/sdk 1.0.1 → 1.0.3
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/dist/config/index.d.mts +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +10 -8
- package/dist/config/index.js.map +1 -1
- package/dist/config/index.mjs +10 -8
- package/dist/config/index.mjs.map +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.js +12 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -10
- package/dist/index.mjs.map +1 -1
- package/dist/providers/index.js +11 -9
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/index.mjs +11 -9
- package/dist/providers/index.mjs.map +1 -1
- package/dist/react-native.js +9 -7
- package/dist/react-native.js.map +1 -1
- package/dist/react-native.mjs +9 -7
- package/dist/react-native.mjs.map +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/config/index.ts +15 -9
package/dist/config/index.d.mts
CHANGED
|
@@ -15,7 +15,7 @@ interface OneConfig {
|
|
|
15
15
|
supabaseAnonKey?: string;
|
|
16
16
|
thirdwebClientId?: string;
|
|
17
17
|
}
|
|
18
|
-
declare function initOneSDK(options: OneConfig): void;
|
|
18
|
+
declare function initOneSDK(options: Partial<OneConfig>): void;
|
|
19
19
|
declare function getConfig(): OneConfig;
|
|
20
20
|
declare function isInitialized(): boolean;
|
|
21
21
|
declare function getEngineUrl(): string;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ interface OneConfig {
|
|
|
15
15
|
supabaseAnonKey?: string;
|
|
16
16
|
thirdwebClientId?: string;
|
|
17
17
|
}
|
|
18
|
-
declare function initOneSDK(options: OneConfig): void;
|
|
18
|
+
declare function initOneSDK(options: Partial<OneConfig>): void;
|
|
19
19
|
declare function getConfig(): OneConfig;
|
|
20
20
|
declare function isInitialized(): boolean;
|
|
21
21
|
declare function getEngineUrl(): string;
|
package/dist/config/index.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// src/config/index.ts
|
|
4
|
+
var DEFAULT_ENGINE_URL = "https://api.one23.io";
|
|
5
|
+
var DEFAULT_CLIENT_ID = "one_pk_e8f647bfa643fdcfaa3a23f760488e49be09f929296eed4a6c399d437d907f60";
|
|
4
6
|
var config = null;
|
|
5
7
|
function initOneSDK(options) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
const engineUrl = options.oneEngineUrl || DEFAULT_ENGINE_URL;
|
|
9
|
+
const clientId = options.oneClientId || DEFAULT_CLIENT_ID;
|
|
10
|
+
config = {
|
|
11
|
+
...options,
|
|
12
|
+
oneEngineUrl: engineUrl,
|
|
13
|
+
oneClientId: clientId
|
|
14
|
+
};
|
|
13
15
|
}
|
|
14
16
|
function getConfig() {
|
|
15
17
|
if (!config) {
|
|
@@ -21,7 +23,7 @@ function isInitialized() {
|
|
|
21
23
|
return config !== null;
|
|
22
24
|
}
|
|
23
25
|
function getEngineUrl() {
|
|
24
|
-
return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL ||
|
|
26
|
+
return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || DEFAULT_ENGINE_URL;
|
|
25
27
|
}
|
|
26
28
|
var chainsCache = null;
|
|
27
29
|
var chainsCacheTimestamp = 0;
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * ONE SDK Configuration\n *\n * Chain data is fetched from ONE Engine API - no duplicates needed here.\n * Engine is the single source of truth for 200+ EVM chains.\n */\n\nimport type { ChainConfig } from '../types';\n\n// ===== SDK Configuration =====\nexport interface OneConfig {\n // ONE Engine (required)\n oneEngineUrl: string;\n oneClientId: string;\n oneSecretKey?: string; // Only for backend usage\n\n // Optional: Direct Supabase access (for realtime subscriptions)\n supabaseUrl?: string;\n supabaseAnonKey?: string;\n\n // Deprecated: Use ONE Engine instead\n thirdwebClientId?: string;\n}\n\nlet config: OneConfig | null = null;\n\nexport function initOneSDK(options: OneConfig): void {\n if (!options.oneEngineUrl) {\n throw new Error('oneEngineUrl is required');\n }\n if (!options.oneClientId) {\n throw new Error('oneClientId is required');\n }\n config = options;\n}\n\nexport function getConfig(): OneConfig {\n if (!config) {\n throw new Error('ONE SDK not initialized. Call initOneSDK() first.');\n }\n return config;\n}\n\nexport function isInitialized(): boolean {\n return config !== null;\n}\n\nexport function getEngineUrl(): string {\n return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || 'http://localhost:4000/api';\n}\n\n// ===== Chain Data (Fetched from Engine) =====\n\n// Cache for chain data\nlet chainsCache: ChainConfig[] | null = null;\nlet chainsCacheTimestamp = 0;\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Fetch chains from ONE Engine API\n * Engine is the source of truth for 200+ EVM chains\n */\nexport async function fetchChains(options?: {\n category?: 'mainnet' | 'l2' | 'testnet' | 'gaming' | 'recommended';\n smartWallet?: boolean;\n limit?: number;\n}): Promise<ChainConfig[]> {\n const engineUrl = getEngineUrl();\n const params = new URLSearchParams();\n\n if (options?.category) params.set('category', options.category);\n if (options?.smartWallet) params.set('smartWallet', 'true');\n if (options?.limit) params.set('limit', options.limit.toString());\n\n const response = await fetch(`${engineUrl}/v1/chains?${params}`);\n const data = await response.json();\n\n if (!data.success) {\n throw new Error(data.error?.message || 'Failed to fetch chains');\n }\n\n // Transform Engine response to SDK ChainConfig format\n return data.data.chains.map((chain: any) => ({\n id: chain.id,\n name: chain.name,\n shortName: chain.shortName || chain.slug || chain.name.toLowerCase(),\n icon: getChainIcon(chain.id),\n nativeCurrency: chain.nativeCurrency,\n rpcUrls: Array.isArray(chain.rpc) ? chain.rpc : [chain.rpc],\n blockExplorerUrls: chain.blockExplorer ? [chain.blockExplorer] : [],\n testnet: chain.testnet,\n }));\n}\n\n/**\n * Get all supported chains (cached)\n */\nexport async function getChains(): Promise<ChainConfig[]> {\n const now = Date.now();\n if (chainsCache && (now - chainsCacheTimestamp) < CACHE_TTL) {\n return chainsCache;\n }\n\n chainsCache = await fetchChains({ limit: 200 });\n chainsCacheTimestamp = now;\n return chainsCache;\n}\n\n/**\n * Get chain by ID\n */\nexport async function getChainById(chainId: number): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n return chains.find(c => c.id === chainId);\n}\n\n/**\n * Get chain by name/shortName\n */\nexport async function getChainByName(name: string): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n const lowerName = name.toLowerCase();\n return chains.find(\n c => c.name.toLowerCase() === lowerName || c.shortName.toLowerCase() === lowerName\n );\n}\n\n/**\n * Get recommended chains for UI display\n */\nexport async function getRecommendedChains(): Promise<ChainConfig[]> {\n return fetchChains({ category: 'recommended', limit: 10 });\n}\n\n/**\n * Get chains with smart wallet support\n */\nexport async function getSmartWalletChains(): Promise<ChainConfig[]> {\n return fetchChains({ smartWallet: true, limit: 50 });\n}\n\n// ===== Default Chain Constants =====\n// These are commonly used chain IDs, but full data should be fetched from Engine\n\nexport const CHAIN_IDS = {\n ETHEREUM: 1,\n POLYGON: 137,\n BSC: 56,\n ARBITRUM: 42161,\n OPTIMISM: 10,\n BASE: 8453,\n AVALANCHE: 43114,\n ZKSYNC: 324,\n LINEA: 59144,\n SCROLL: 534352,\n BLAST: 81457,\n // Testnets\n SEPOLIA: 11155111,\n BASE_SEPOLIA: 84532,\n ARBITRUM_SEPOLIA: 421614,\n} as const;\n\nexport const DEFAULT_CHAIN_ID = CHAIN_IDS.BASE;\n\n// ===== Chain Icons (Simple emoji fallback) =====\nconst CHAIN_ICONS: Record<number, string> = {\n 1: '\\u229F', // Ethereum\n 137: '\\uD83D\\uDFE3', // Polygon\n 56: '\\uD83D\\uDFE1', // BSC\n 42161: '\\uD83D\\uDD35', // Arbitrum\n 10: '\\uD83D\\uDD34', // Optimism\n 8453: '\\uD83D\\uDD37', // Base\n 43114: '\\uD83D\\uDD3A', // Avalanche\n 324: '\\u26A1', // zkSync\n 59144: '\\uD83D\\uDD39', // Linea\n 534352: '\\uD83D\\uDCDC', // Scroll\n};\n\nfunction getChainIcon(chainId: number): string {\n return CHAIN_ICONS[chainId] || '\\uD83D\\uDD17';\n}\n\n// ===== Token Names Mapping =====\n// Common token symbols to human-readable names\nexport const TOKEN_NAMES: Record<string, string> = {\n ETH: 'Ethereum',\n BTC: 'Bitcoin',\n BNB: 'BNB',\n MATIC: 'Polygon',\n POL: 'Polygon',\n AVAX: 'Avalanche',\n USDT: 'Tether',\n USDC: 'USD Coin',\n DAI: 'Dai',\n WBTC: 'Wrapped Bitcoin',\n WETH: 'Wrapped Ether',\n ARB: 'Arbitrum',\n OP: 'Optimism',\n LINK: 'Chainlink',\n UNI: 'Uniswap',\n AAVE: 'Aave',\n CRV: 'Curve',\n MKR: 'Maker',\n SNX: 'Synthetix',\n COMP: 'Compound',\n SUSHI: 'SushiSwap',\n YFI: 'Yearn Finance',\n SOL: 'Solana',\n DOT: 'Polkadot',\n ATOM: 'Cosmos',\n NEAR: 'Near Protocol',\n};\n\n// ===== CoinGecko ID Mapping =====\n// For price lookups via CoinGecko API\nexport const COINGECKO_IDS: Record<string, string> = {\n ETH: 'ethereum',\n BTC: 'bitcoin',\n BNB: 'binancecoin',\n MATIC: 'matic-network',\n POL: 'matic-network',\n AVAX: 'avalanche-2',\n USDT: 'tether',\n USDC: 'usd-coin',\n DAI: 'dai',\n WBTC: 'wrapped-bitcoin',\n WETH: 'weth',\n ARB: 'arbitrum',\n OP: 'optimism',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n SOL: 'solana',\n};\n\n// ===== Backwards Compatibility =====\n// @deprecated - Use getChains() or fetch from Engine API\n// These static configs are kept for backwards compatibility only\n\nexport const CHAIN_CONFIGS: Record<string, ChainConfig> = {\n ethereum: {\n id: 1,\n name: 'Ethereum',\n shortName: 'ETH',\n icon: '\\u229F',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://ethereum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://etherscan.io'],\n testnet: false,\n },\n polygon: {\n id: 137,\n name: 'Polygon',\n shortName: 'MATIC',\n icon: '\\uD83D\\uDFE3',\n nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n rpcUrls: ['https://polygon.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://polygonscan.com'],\n testnet: false,\n },\n base: {\n id: 8453,\n name: 'Base',\n shortName: 'BASE',\n icon: '\\uD83D\\uDD37',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://base.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://basescan.org'],\n testnet: false,\n },\n arbitrum: {\n id: 42161,\n name: 'Arbitrum One',\n shortName: 'ARB',\n icon: '\\uD83D\\uDD35',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://arbitrum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://arbiscan.io'],\n testnet: false,\n },\n optimism: {\n id: 10,\n name: 'Optimism',\n shortName: 'OP',\n icon: '\\uD83D\\uDD34',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://optimism.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n testnet: false,\n },\n};\n\n// @deprecated - Use getChains() to get all supported chains\nexport const SUPPORTED_CHAINS = Object.keys(CHAIN_CONFIGS);\n\n// @deprecated - Use getChainByName() instead\nexport function getChainConfig(chain: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[chain.toLowerCase()];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * ONE SDK Configuration\n *\n * Chain data is fetched from ONE Engine API - no duplicates needed here.\n * Engine is the single source of truth for 200+ EVM chains.\n */\n\nimport type { ChainConfig } from '../types';\n\n// ===== SDK Configuration =====\nexport interface OneConfig {\n // ONE Engine (required)\n oneEngineUrl: string;\n oneClientId: string;\n oneSecretKey?: string; // Only for backend usage\n\n // Optional: Direct Supabase access (for realtime subscriptions)\n supabaseUrl?: string;\n supabaseAnonKey?: string;\n\n // Deprecated: Use ONE Engine instead\n thirdwebClientId?: string;\n}\n\n// Default configuration values\nconst DEFAULT_ENGINE_URL = 'https://api.one23.io';\nconst DEFAULT_CLIENT_ID = 'one_pk_e8f647bfa643fdcfaa3a23f760488e49be09f929296eed4a6c399d437d907f60';\n\nlet config: OneConfig | null = null;\n\nexport function initOneSDK(options: Partial<OneConfig>): void {\n // Use defaults if not provided\n const engineUrl = options.oneEngineUrl || DEFAULT_ENGINE_URL;\n const clientId = options.oneClientId || DEFAULT_CLIENT_ID;\n\n config = {\n ...options,\n oneEngineUrl: engineUrl,\n oneClientId: clientId,\n } as OneConfig;\n}\n\nexport function getConfig(): OneConfig {\n if (!config) {\n throw new Error('ONE SDK not initialized. Call initOneSDK() first.');\n }\n return config;\n}\n\nexport function isInitialized(): boolean {\n return config !== null;\n}\n\nexport function getEngineUrl(): string {\n return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || DEFAULT_ENGINE_URL;\n}\n\n// ===== Chain Data (Fetched from Engine) =====\n\n// Cache for chain data\nlet chainsCache: ChainConfig[] | null = null;\nlet chainsCacheTimestamp = 0;\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Fetch chains from ONE Engine API\n * Engine is the source of truth for 200+ EVM chains\n */\nexport async function fetchChains(options?: {\n category?: 'mainnet' | 'l2' | 'testnet' | 'gaming' | 'recommended';\n smartWallet?: boolean;\n limit?: number;\n}): Promise<ChainConfig[]> {\n const engineUrl = getEngineUrl();\n const params = new URLSearchParams();\n\n if (options?.category) params.set('category', options.category);\n if (options?.smartWallet) params.set('smartWallet', 'true');\n if (options?.limit) params.set('limit', options.limit.toString());\n\n const response = await fetch(`${engineUrl}/v1/chains?${params}`);\n const data = await response.json();\n\n if (!data.success) {\n throw new Error(data.error?.message || 'Failed to fetch chains');\n }\n\n // Transform Engine response to SDK ChainConfig format\n return data.data.chains.map((chain: any) => ({\n id: chain.id,\n name: chain.name,\n shortName: chain.shortName || chain.slug || chain.name.toLowerCase(),\n icon: getChainIcon(chain.id),\n nativeCurrency: chain.nativeCurrency,\n rpcUrls: Array.isArray(chain.rpc) ? chain.rpc : [chain.rpc],\n blockExplorerUrls: chain.blockExplorer ? [chain.blockExplorer] : [],\n testnet: chain.testnet,\n }));\n}\n\n/**\n * Get all supported chains (cached)\n */\nexport async function getChains(): Promise<ChainConfig[]> {\n const now = Date.now();\n if (chainsCache && (now - chainsCacheTimestamp) < CACHE_TTL) {\n return chainsCache;\n }\n\n chainsCache = await fetchChains({ limit: 200 });\n chainsCacheTimestamp = now;\n return chainsCache;\n}\n\n/**\n * Get chain by ID\n */\nexport async function getChainById(chainId: number): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n return chains.find(c => c.id === chainId);\n}\n\n/**\n * Get chain by name/shortName\n */\nexport async function getChainByName(name: string): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n const lowerName = name.toLowerCase();\n return chains.find(\n c => c.name.toLowerCase() === lowerName || c.shortName.toLowerCase() === lowerName\n );\n}\n\n/**\n * Get recommended chains for UI display\n */\nexport async function getRecommendedChains(): Promise<ChainConfig[]> {\n return fetchChains({ category: 'recommended', limit: 10 });\n}\n\n/**\n * Get chains with smart wallet support\n */\nexport async function getSmartWalletChains(): Promise<ChainConfig[]> {\n return fetchChains({ smartWallet: true, limit: 50 });\n}\n\n// ===== Default Chain Constants =====\n// These are commonly used chain IDs, but full data should be fetched from Engine\n\nexport const CHAIN_IDS = {\n ETHEREUM: 1,\n POLYGON: 137,\n BSC: 56,\n ARBITRUM: 42161,\n OPTIMISM: 10,\n BASE: 8453,\n AVALANCHE: 43114,\n ZKSYNC: 324,\n LINEA: 59144,\n SCROLL: 534352,\n BLAST: 81457,\n // Testnets\n SEPOLIA: 11155111,\n BASE_SEPOLIA: 84532,\n ARBITRUM_SEPOLIA: 421614,\n} as const;\n\nexport const DEFAULT_CHAIN_ID = CHAIN_IDS.BASE;\n\n// ===== Chain Icons (Simple emoji fallback) =====\nconst CHAIN_ICONS: Record<number, string> = {\n 1: '\\u229F', // Ethereum\n 137: '\\uD83D\\uDFE3', // Polygon\n 56: '\\uD83D\\uDFE1', // BSC\n 42161: '\\uD83D\\uDD35', // Arbitrum\n 10: '\\uD83D\\uDD34', // Optimism\n 8453: '\\uD83D\\uDD37', // Base\n 43114: '\\uD83D\\uDD3A', // Avalanche\n 324: '\\u26A1', // zkSync\n 59144: '\\uD83D\\uDD39', // Linea\n 534352: '\\uD83D\\uDCDC', // Scroll\n};\n\nfunction getChainIcon(chainId: number): string {\n return CHAIN_ICONS[chainId] || '\\uD83D\\uDD17';\n}\n\n// ===== Token Names Mapping =====\n// Common token symbols to human-readable names\nexport const TOKEN_NAMES: Record<string, string> = {\n ETH: 'Ethereum',\n BTC: 'Bitcoin',\n BNB: 'BNB',\n MATIC: 'Polygon',\n POL: 'Polygon',\n AVAX: 'Avalanche',\n USDT: 'Tether',\n USDC: 'USD Coin',\n DAI: 'Dai',\n WBTC: 'Wrapped Bitcoin',\n WETH: 'Wrapped Ether',\n ARB: 'Arbitrum',\n OP: 'Optimism',\n LINK: 'Chainlink',\n UNI: 'Uniswap',\n AAVE: 'Aave',\n CRV: 'Curve',\n MKR: 'Maker',\n SNX: 'Synthetix',\n COMP: 'Compound',\n SUSHI: 'SushiSwap',\n YFI: 'Yearn Finance',\n SOL: 'Solana',\n DOT: 'Polkadot',\n ATOM: 'Cosmos',\n NEAR: 'Near Protocol',\n};\n\n// ===== CoinGecko ID Mapping =====\n// For price lookups via CoinGecko API\nexport const COINGECKO_IDS: Record<string, string> = {\n ETH: 'ethereum',\n BTC: 'bitcoin',\n BNB: 'binancecoin',\n MATIC: 'matic-network',\n POL: 'matic-network',\n AVAX: 'avalanche-2',\n USDT: 'tether',\n USDC: 'usd-coin',\n DAI: 'dai',\n WBTC: 'wrapped-bitcoin',\n WETH: 'weth',\n ARB: 'arbitrum',\n OP: 'optimism',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n SOL: 'solana',\n};\n\n// ===== Backwards Compatibility =====\n// @deprecated - Use getChains() or fetch from Engine API\n// These static configs are kept for backwards compatibility only\n\nexport const CHAIN_CONFIGS: Record<string, ChainConfig> = {\n ethereum: {\n id: 1,\n name: 'Ethereum',\n shortName: 'ETH',\n icon: '\\u229F',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://ethereum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://etherscan.io'],\n testnet: false,\n },\n polygon: {\n id: 137,\n name: 'Polygon',\n shortName: 'MATIC',\n icon: '\\uD83D\\uDFE3',\n nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n rpcUrls: ['https://polygon.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://polygonscan.com'],\n testnet: false,\n },\n base: {\n id: 8453,\n name: 'Base',\n shortName: 'BASE',\n icon: '\\uD83D\\uDD37',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://base.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://basescan.org'],\n testnet: false,\n },\n arbitrum: {\n id: 42161,\n name: 'Arbitrum One',\n shortName: 'ARB',\n icon: '\\uD83D\\uDD35',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://arbitrum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://arbiscan.io'],\n testnet: false,\n },\n optimism: {\n id: 10,\n name: 'Optimism',\n shortName: 'OP',\n icon: '\\uD83D\\uDD34',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://optimism.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n testnet: false,\n },\n};\n\n// @deprecated - Use getChains() to get all supported chains\nexport const SUPPORTED_CHAINS = Object.keys(CHAIN_CONFIGS);\n\n// @deprecated - Use getChainByName() instead\nexport function getChainConfig(chain: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[chain.toLowerCase()];\n}\n"]}
|
package/dist/config/index.mjs
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// src/config/index.ts
|
|
2
|
+
var DEFAULT_ENGINE_URL = "https://api.one23.io";
|
|
3
|
+
var DEFAULT_CLIENT_ID = "one_pk_e8f647bfa643fdcfaa3a23f760488e49be09f929296eed4a6c399d437d907f60";
|
|
2
4
|
var config = null;
|
|
3
5
|
function initOneSDK(options) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const engineUrl = options.oneEngineUrl || DEFAULT_ENGINE_URL;
|
|
7
|
+
const clientId = options.oneClientId || DEFAULT_CLIENT_ID;
|
|
8
|
+
config = {
|
|
9
|
+
...options,
|
|
10
|
+
oneEngineUrl: engineUrl,
|
|
11
|
+
oneClientId: clientId
|
|
12
|
+
};
|
|
11
13
|
}
|
|
12
14
|
function getConfig() {
|
|
13
15
|
if (!config) {
|
|
@@ -19,7 +21,7 @@ function isInitialized() {
|
|
|
19
21
|
return config !== null;
|
|
20
22
|
}
|
|
21
23
|
function getEngineUrl() {
|
|
22
|
-
return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL ||
|
|
24
|
+
return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || DEFAULT_ENGINE_URL;
|
|
23
25
|
}
|
|
24
26
|
var chainsCache = null;
|
|
25
27
|
var chainsCacheTimestamp = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.ts"],"names":[],"mappings":";AAwBA,IAAI,MAAA,GAA2B,IAAA;AAExB,SAAS,WAAW,OAAA,EAA0B;AACnD,EAAA,IAAI,CAAC,QAAQ,YAAA,EAAc;AACzB,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,EAC5C;AACA,EAAA,IAAI,CAAC,QAAQ,WAAA,EAAa;AACxB,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AACA,EAAA,MAAA,GAAS,OAAA;AACX;AAEO,SAAS,SAAA,GAAuB;AACrC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,aAAA,GAAyB;AACvC,EAAA,OAAO,MAAA,KAAW,IAAA;AACpB;AAEO,SAAS,YAAA,GAAuB;AACrC,EAAA,OAAO,MAAA,EAAQ,YAAA,IAAgB,OAAA,CAAQ,GAAA,CAAI,0BAAA,IAA8B,2BAAA;AAC3E;AAKA,IAAI,WAAA,GAAoC,IAAA;AACxC,IAAI,oBAAA,GAAuB,CAAA;AAC3B,IAAM,SAAA,GAAY,IAAI,EAAA,GAAK,GAAA;AAM3B,eAAsB,YAAY,OAAA,EAIP;AACzB,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AAEnC,EAAA,IAAI,SAAS,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,QAAQ,QAAQ,CAAA;AAC9D,EAAA,IAAI,OAAA,EAAS,WAAA,EAAa,MAAA,CAAO,GAAA,CAAI,eAAe,MAAM,CAAA;AAC1D,EAAA,IAAI,OAAA,EAAS,OAAO,MAAA,CAAO,GAAA,CAAI,SAAS,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA;AAEhE,EAAA,MAAM,WAAW,MAAM,KAAA,CAAM,GAAG,SAAS,CAAA,WAAA,EAAc,MAAM,CAAA,CAAE,CAAA;AAC/D,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,EAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,IAAA,MAAM,IAAI,KAAA,CAAM,IAAA,CAAK,KAAA,EAAO,WAAW,wBAAwB,CAAA;AAAA,EACjE;AAGA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAgB;AAAA,IAC3C,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,WAAW,KAAA,CAAM,SAAA,IAAa,MAAM,IAAA,IAAQ,KAAA,CAAM,KAAK,WAAA,EAAY;AAAA,IACnE,IAAA,EAAM,YAAA,CAAa,KAAA,CAAM,EAAE,CAAA;AAAA,IAC3B,gBAAgB,KAAA,CAAM,cAAA;AAAA,IACtB,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,GAAG,IAAI,KAAA,CAAM,GAAA,GAAM,CAAC,KAAA,CAAM,GAAG,CAAA;AAAA,IAC1D,mBAAmB,KAAA,CAAM,aAAA,GAAgB,CAAC,KAAA,CAAM,aAAa,IAAI,EAAC;AAAA,IAClE,SAAS,KAAA,CAAM;AAAA,GACjB,CAAE,CAAA;AACJ;AAKA,eAAsB,SAAA,GAAoC;AACxD,EAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,EAAA,IAAI,WAAA,IAAgB,GAAA,GAAM,oBAAA,GAAwB,SAAA,EAAW;AAC3D,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,WAAA,GAAc,MAAM,WAAA,CAAY,EAAE,KAAA,EAAO,KAAK,CAAA;AAC9C,EAAA,oBAAA,GAAuB,GAAA;AACvB,EAAA,OAAO,WAAA;AACT;AAKA,eAAsB,aAAa,OAAA,EAAmD;AACpF,EAAA,MAAM,MAAA,GAAS,MAAM,SAAA,EAAU;AAC/B,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAC1C;AAKA,eAAsB,eAAe,IAAA,EAAgD;AACnF,EAAA,MAAM,MAAA,GAAS,MAAM,SAAA,EAAU;AAC/B,EAAA,MAAM,SAAA,GAAY,KAAK,WAAA,EAAY;AACnC,EAAA,OAAO,MAAA,CAAO,IAAA;AAAA,IACZ,CAAA,CAAA,KAAK,EAAE,IAAA,CAAK,WAAA,OAAkB,SAAA,IAAa,CAAA,CAAE,SAAA,CAAU,WAAA,EAAY,KAAM;AAAA,GAC3E;AACF;AAKA,eAAsB,oBAAA,GAA+C;AACnE,EAAA,OAAO,YAAY,EAAE,QAAA,EAAU,aAAA,EAAe,KAAA,EAAO,IAAI,CAAA;AAC3D;AAKA,eAAsB,oBAAA,GAA+C;AACnE,EAAA,OAAO,YAAY,EAAE,WAAA,EAAa,IAAA,EAAM,KAAA,EAAO,IAAI,CAAA;AACrD;AAKO,IAAM,SAAA,GAAY;AAAA,EACvB,QAAA,EAAU,CAAA;AAAA,EACV,OAAA,EAAS,GAAA;AAAA,EACT,GAAA,EAAK,EAAA;AAAA,EACL,QAAA,EAAU,KAAA;AAAA,EACV,QAAA,EAAU,EAAA;AAAA,EACV,IAAA,EAAM,IAAA;AAAA,EACN,SAAA,EAAW,KAAA;AAAA,EACX,MAAA,EAAQ,GAAA;AAAA,EACR,KAAA,EAAO,KAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,KAAA;AAAA;AAAA,EAEP,OAAA,EAAS,QAAA;AAAA,EACT,YAAA,EAAc,KAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAEO,IAAM,mBAAmB,SAAA,CAAU;AAG1C,IAAM,WAAA,GAAsC;AAAA,EAC1C,CAAA,EAAG,QAAA;AAAA;AAAA,EACH,GAAA,EAAK,WAAA;AAAA;AAAA,EACL,EAAA,EAAI,WAAA;AAAA;AAAA,EACJ,KAAA,EAAO,WAAA;AAAA;AAAA,EACP,EAAA,EAAI,WAAA;AAAA;AAAA,EACJ,IAAA,EAAM,WAAA;AAAA;AAAA,EACN,KAAA,EAAO,WAAA;AAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA;AAAA,EACL,KAAA,EAAO,WAAA;AAAA;AAAA,EACP,MAAA,EAAQ;AAAA;AACV,CAAA;AAEA,SAAS,aAAa,OAAA,EAAyB;AAC7C,EAAA,OAAO,WAAA,CAAY,OAAO,CAAA,IAAK,WAAA;AACjC;AAIO,IAAM,WAAA,GAAsC;AAAA,EACjD,GAAA,EAAK,UAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,SAAA;AAAA,EACL,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,UAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM,eAAA;AAAA,EACN,GAAA,EAAK,UAAA;AAAA,EACL,EAAA,EAAI,UAAA;AAAA,EACJ,IAAA,EAAM,WAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,OAAA;AAAA,EACL,GAAA,EAAK,OAAA;AAAA,EACL,GAAA,EAAK,WAAA;AAAA,EACL,IAAA,EAAM,UAAA;AAAA,EACN,KAAA,EAAO,WAAA;AAAA,EACP,GAAA,EAAK,eAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,UAAA;AAAA,EACL,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM;AACR;AAIO,IAAM,aAAA,GAAwC;AAAA,EACnD,GAAA,EAAK,UAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,aAAA;AAAA,EACL,KAAA,EAAO,eAAA;AAAA,EACP,GAAA,EAAK,eAAA;AAAA,EACL,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,UAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,UAAA;AAAA,EACL,EAAA,EAAI,UAAA;AAAA,EACJ,IAAA,EAAM,WAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK;AACP;AAMO,IAAM,aAAA,GAA6C;AAAA,EACxD,QAAA,EAAU;AAAA,IACR,EAAA,EAAI,CAAA;AAAA,IACJ,IAAA,EAAM,UAAA;AAAA,IACN,SAAA,EAAW,KAAA;AAAA,IACX,IAAA,EAAM,QAAA;AAAA,IACN,gBAAgB,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,KAAA,EAAO,UAAU,EAAA,EAAG;AAAA,IAC7D,OAAA,EAAS,CAAC,mCAAmC,CAAA;AAAA,IAC7C,iBAAA,EAAmB,CAAC,sBAAsB,CAAA;AAAA,IAC1C,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,EAAA,EAAI,GAAA;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,SAAA,EAAW,OAAA;AAAA,IACX,IAAA,EAAM,WAAA;AAAA,IACN,gBAAgB,EAAE,IAAA,EAAM,OAAO,MAAA,EAAQ,KAAA,EAAO,UAAU,EAAA,EAAG;AAAA,IAC3D,OAAA,EAAS,CAAC,kCAAkC,CAAA;AAAA,IAC5C,iBAAA,EAAmB,CAAC,yBAAyB,CAAA;AAAA,IAC7C,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW,MAAA;AAAA,IACX,IAAA,EAAM,WAAA;AAAA,IACN,gBAAgB,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,KAAA,EAAO,UAAU,EAAA,EAAG;AAAA,IAC7D,OAAA,EAAS,CAAC,+BAA+B,CAAA;AAAA,IACzC,iBAAA,EAAmB,CAAC,sBAAsB,CAAA;AAAA,IAC1C,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,cAAA;AAAA,IACN,SAAA,EAAW,KAAA;AAAA,IACX,IAAA,EAAM,WAAA;AAAA,IACN,gBAAgB,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,KAAA,EAAO,UAAU,EAAA,EAAG;AAAA,IAC7D,OAAA,EAAS,CAAC,mCAAmC,CAAA;AAAA,IAC7C,iBAAA,EAAmB,CAAC,qBAAqB,CAAA;AAAA,IACzC,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,EAAA,EAAI,EAAA;AAAA,IACJ,IAAA,EAAM,UAAA;AAAA,IACN,SAAA,EAAW,IAAA;AAAA,IACX,IAAA,EAAM,WAAA;AAAA,IACN,gBAAgB,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,KAAA,EAAO,UAAU,EAAA,EAAG;AAAA,IAC7D,OAAA,EAAS,CAAC,mCAAmC,CAAA;AAAA,IAC7C,iBAAA,EAAmB,CAAC,iCAAiC,CAAA;AAAA,IACrD,OAAA,EAAS;AAAA;AAEb;AAGO,IAAM,gBAAA,GAAmB,MAAA,CAAO,IAAA,CAAK,aAAa;AAGlD,SAAS,eAAe,KAAA,EAAwC;AACrE,EAAA,OAAO,aAAA,CAAc,KAAA,CAAM,WAAA,EAAa,CAAA;AAC1C","file":"index.mjs","sourcesContent":["/**\n * ONE SDK Configuration\n *\n * Chain data is fetched from ONE Engine API - no duplicates needed here.\n * Engine is the single source of truth for 200+ EVM chains.\n */\n\nimport type { ChainConfig } from '../types';\n\n// ===== SDK Configuration =====\nexport interface OneConfig {\n // ONE Engine (required)\n oneEngineUrl: string;\n oneClientId: string;\n oneSecretKey?: string; // Only for backend usage\n\n // Optional: Direct Supabase access (for realtime subscriptions)\n supabaseUrl?: string;\n supabaseAnonKey?: string;\n\n // Deprecated: Use ONE Engine instead\n thirdwebClientId?: string;\n}\n\nlet config: OneConfig | null = null;\n\nexport function initOneSDK(options: OneConfig): void {\n if (!options.oneEngineUrl) {\n throw new Error('oneEngineUrl is required');\n }\n if (!options.oneClientId) {\n throw new Error('oneClientId is required');\n }\n config = options;\n}\n\nexport function getConfig(): OneConfig {\n if (!config) {\n throw new Error('ONE SDK not initialized. Call initOneSDK() first.');\n }\n return config;\n}\n\nexport function isInitialized(): boolean {\n return config !== null;\n}\n\nexport function getEngineUrl(): string {\n return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || 'http://localhost:4000/api';\n}\n\n// ===== Chain Data (Fetched from Engine) =====\n\n// Cache for chain data\nlet chainsCache: ChainConfig[] | null = null;\nlet chainsCacheTimestamp = 0;\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Fetch chains from ONE Engine API\n * Engine is the source of truth for 200+ EVM chains\n */\nexport async function fetchChains(options?: {\n category?: 'mainnet' | 'l2' | 'testnet' | 'gaming' | 'recommended';\n smartWallet?: boolean;\n limit?: number;\n}): Promise<ChainConfig[]> {\n const engineUrl = getEngineUrl();\n const params = new URLSearchParams();\n\n if (options?.category) params.set('category', options.category);\n if (options?.smartWallet) params.set('smartWallet', 'true');\n if (options?.limit) params.set('limit', options.limit.toString());\n\n const response = await fetch(`${engineUrl}/v1/chains?${params}`);\n const data = await response.json();\n\n if (!data.success) {\n throw new Error(data.error?.message || 'Failed to fetch chains');\n }\n\n // Transform Engine response to SDK ChainConfig format\n return data.data.chains.map((chain: any) => ({\n id: chain.id,\n name: chain.name,\n shortName: chain.shortName || chain.slug || chain.name.toLowerCase(),\n icon: getChainIcon(chain.id),\n nativeCurrency: chain.nativeCurrency,\n rpcUrls: Array.isArray(chain.rpc) ? chain.rpc : [chain.rpc],\n blockExplorerUrls: chain.blockExplorer ? [chain.blockExplorer] : [],\n testnet: chain.testnet,\n }));\n}\n\n/**\n * Get all supported chains (cached)\n */\nexport async function getChains(): Promise<ChainConfig[]> {\n const now = Date.now();\n if (chainsCache && (now - chainsCacheTimestamp) < CACHE_TTL) {\n return chainsCache;\n }\n\n chainsCache = await fetchChains({ limit: 200 });\n chainsCacheTimestamp = now;\n return chainsCache;\n}\n\n/**\n * Get chain by ID\n */\nexport async function getChainById(chainId: number): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n return chains.find(c => c.id === chainId);\n}\n\n/**\n * Get chain by name/shortName\n */\nexport async function getChainByName(name: string): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n const lowerName = name.toLowerCase();\n return chains.find(\n c => c.name.toLowerCase() === lowerName || c.shortName.toLowerCase() === lowerName\n );\n}\n\n/**\n * Get recommended chains for UI display\n */\nexport async function getRecommendedChains(): Promise<ChainConfig[]> {\n return fetchChains({ category: 'recommended', limit: 10 });\n}\n\n/**\n * Get chains with smart wallet support\n */\nexport async function getSmartWalletChains(): Promise<ChainConfig[]> {\n return fetchChains({ smartWallet: true, limit: 50 });\n}\n\n// ===== Default Chain Constants =====\n// These are commonly used chain IDs, but full data should be fetched from Engine\n\nexport const CHAIN_IDS = {\n ETHEREUM: 1,\n POLYGON: 137,\n BSC: 56,\n ARBITRUM: 42161,\n OPTIMISM: 10,\n BASE: 8453,\n AVALANCHE: 43114,\n ZKSYNC: 324,\n LINEA: 59144,\n SCROLL: 534352,\n BLAST: 81457,\n // Testnets\n SEPOLIA: 11155111,\n BASE_SEPOLIA: 84532,\n ARBITRUM_SEPOLIA: 421614,\n} as const;\n\nexport const DEFAULT_CHAIN_ID = CHAIN_IDS.BASE;\n\n// ===== Chain Icons (Simple emoji fallback) =====\nconst CHAIN_ICONS: Record<number, string> = {\n 1: '\\u229F', // Ethereum\n 137: '\\uD83D\\uDFE3', // Polygon\n 56: '\\uD83D\\uDFE1', // BSC\n 42161: '\\uD83D\\uDD35', // Arbitrum\n 10: '\\uD83D\\uDD34', // Optimism\n 8453: '\\uD83D\\uDD37', // Base\n 43114: '\\uD83D\\uDD3A', // Avalanche\n 324: '\\u26A1', // zkSync\n 59144: '\\uD83D\\uDD39', // Linea\n 534352: '\\uD83D\\uDCDC', // Scroll\n};\n\nfunction getChainIcon(chainId: number): string {\n return CHAIN_ICONS[chainId] || '\\uD83D\\uDD17';\n}\n\n// ===== Token Names Mapping =====\n// Common token symbols to human-readable names\nexport const TOKEN_NAMES: Record<string, string> = {\n ETH: 'Ethereum',\n BTC: 'Bitcoin',\n BNB: 'BNB',\n MATIC: 'Polygon',\n POL: 'Polygon',\n AVAX: 'Avalanche',\n USDT: 'Tether',\n USDC: 'USD Coin',\n DAI: 'Dai',\n WBTC: 'Wrapped Bitcoin',\n WETH: 'Wrapped Ether',\n ARB: 'Arbitrum',\n OP: 'Optimism',\n LINK: 'Chainlink',\n UNI: 'Uniswap',\n AAVE: 'Aave',\n CRV: 'Curve',\n MKR: 'Maker',\n SNX: 'Synthetix',\n COMP: 'Compound',\n SUSHI: 'SushiSwap',\n YFI: 'Yearn Finance',\n SOL: 'Solana',\n DOT: 'Polkadot',\n ATOM: 'Cosmos',\n NEAR: 'Near Protocol',\n};\n\n// ===== CoinGecko ID Mapping =====\n// For price lookups via CoinGecko API\nexport const COINGECKO_IDS: Record<string, string> = {\n ETH: 'ethereum',\n BTC: 'bitcoin',\n BNB: 'binancecoin',\n MATIC: 'matic-network',\n POL: 'matic-network',\n AVAX: 'avalanche-2',\n USDT: 'tether',\n USDC: 'usd-coin',\n DAI: 'dai',\n WBTC: 'wrapped-bitcoin',\n WETH: 'weth',\n ARB: 'arbitrum',\n OP: 'optimism',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n SOL: 'solana',\n};\n\n// ===== Backwards Compatibility =====\n// @deprecated - Use getChains() or fetch from Engine API\n// These static configs are kept for backwards compatibility only\n\nexport const CHAIN_CONFIGS: Record<string, ChainConfig> = {\n ethereum: {\n id: 1,\n name: 'Ethereum',\n shortName: 'ETH',\n icon: '\\u229F',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://ethereum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://etherscan.io'],\n testnet: false,\n },\n polygon: {\n id: 137,\n name: 'Polygon',\n shortName: 'MATIC',\n icon: '\\uD83D\\uDFE3',\n nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n rpcUrls: ['https://polygon.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://polygonscan.com'],\n testnet: false,\n },\n base: {\n id: 8453,\n name: 'Base',\n shortName: 'BASE',\n icon: '\\uD83D\\uDD37',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://base.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://basescan.org'],\n testnet: false,\n },\n arbitrum: {\n id: 42161,\n name: 'Arbitrum One',\n shortName: 'ARB',\n icon: '\\uD83D\\uDD35',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://arbitrum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://arbiscan.io'],\n testnet: false,\n },\n optimism: {\n id: 10,\n name: 'Optimism',\n shortName: 'OP',\n icon: '\\uD83D\\uDD34',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://optimism.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n testnet: false,\n },\n};\n\n// @deprecated - Use getChains() to get all supported chains\nexport const SUPPORTED_CHAINS = Object.keys(CHAIN_CONFIGS);\n\n// @deprecated - Use getChainByName() instead\nexport function getChainConfig(chain: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[chain.toLowerCase()];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * ONE SDK Configuration\n *\n * Chain data is fetched from ONE Engine API - no duplicates needed here.\n * Engine is the single source of truth for 200+ EVM chains.\n */\n\nimport type { ChainConfig } from '../types';\n\n// ===== SDK Configuration =====\nexport interface OneConfig {\n // ONE Engine (required)\n oneEngineUrl: string;\n oneClientId: string;\n oneSecretKey?: string; // Only for backend usage\n\n // Optional: Direct Supabase access (for realtime subscriptions)\n supabaseUrl?: string;\n supabaseAnonKey?: string;\n\n // Deprecated: Use ONE Engine instead\n thirdwebClientId?: string;\n}\n\n// Default configuration values\nconst DEFAULT_ENGINE_URL = 'https://api.one23.io';\nconst DEFAULT_CLIENT_ID = 'one_pk_e8f647bfa643fdcfaa3a23f760488e49be09f929296eed4a6c399d437d907f60';\n\nlet config: OneConfig | null = null;\n\nexport function initOneSDK(options: Partial<OneConfig>): void {\n // Use defaults if not provided\n const engineUrl = options.oneEngineUrl || DEFAULT_ENGINE_URL;\n const clientId = options.oneClientId || DEFAULT_CLIENT_ID;\n\n config = {\n ...options,\n oneEngineUrl: engineUrl,\n oneClientId: clientId,\n } as OneConfig;\n}\n\nexport function getConfig(): OneConfig {\n if (!config) {\n throw new Error('ONE SDK not initialized. Call initOneSDK() first.');\n }\n return config;\n}\n\nexport function isInitialized(): boolean {\n return config !== null;\n}\n\nexport function getEngineUrl(): string {\n return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || DEFAULT_ENGINE_URL;\n}\n\n// ===== Chain Data (Fetched from Engine) =====\n\n// Cache for chain data\nlet chainsCache: ChainConfig[] | null = null;\nlet chainsCacheTimestamp = 0;\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Fetch chains from ONE Engine API\n * Engine is the source of truth for 200+ EVM chains\n */\nexport async function fetchChains(options?: {\n category?: 'mainnet' | 'l2' | 'testnet' | 'gaming' | 'recommended';\n smartWallet?: boolean;\n limit?: number;\n}): Promise<ChainConfig[]> {\n const engineUrl = getEngineUrl();\n const params = new URLSearchParams();\n\n if (options?.category) params.set('category', options.category);\n if (options?.smartWallet) params.set('smartWallet', 'true');\n if (options?.limit) params.set('limit', options.limit.toString());\n\n const response = await fetch(`${engineUrl}/v1/chains?${params}`);\n const data = await response.json();\n\n if (!data.success) {\n throw new Error(data.error?.message || 'Failed to fetch chains');\n }\n\n // Transform Engine response to SDK ChainConfig format\n return data.data.chains.map((chain: any) => ({\n id: chain.id,\n name: chain.name,\n shortName: chain.shortName || chain.slug || chain.name.toLowerCase(),\n icon: getChainIcon(chain.id),\n nativeCurrency: chain.nativeCurrency,\n rpcUrls: Array.isArray(chain.rpc) ? chain.rpc : [chain.rpc],\n blockExplorerUrls: chain.blockExplorer ? [chain.blockExplorer] : [],\n testnet: chain.testnet,\n }));\n}\n\n/**\n * Get all supported chains (cached)\n */\nexport async function getChains(): Promise<ChainConfig[]> {\n const now = Date.now();\n if (chainsCache && (now - chainsCacheTimestamp) < CACHE_TTL) {\n return chainsCache;\n }\n\n chainsCache = await fetchChains({ limit: 200 });\n chainsCacheTimestamp = now;\n return chainsCache;\n}\n\n/**\n * Get chain by ID\n */\nexport async function getChainById(chainId: number): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n return chains.find(c => c.id === chainId);\n}\n\n/**\n * Get chain by name/shortName\n */\nexport async function getChainByName(name: string): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n const lowerName = name.toLowerCase();\n return chains.find(\n c => c.name.toLowerCase() === lowerName || c.shortName.toLowerCase() === lowerName\n );\n}\n\n/**\n * Get recommended chains for UI display\n */\nexport async function getRecommendedChains(): Promise<ChainConfig[]> {\n return fetchChains({ category: 'recommended', limit: 10 });\n}\n\n/**\n * Get chains with smart wallet support\n */\nexport async function getSmartWalletChains(): Promise<ChainConfig[]> {\n return fetchChains({ smartWallet: true, limit: 50 });\n}\n\n// ===== Default Chain Constants =====\n// These are commonly used chain IDs, but full data should be fetched from Engine\n\nexport const CHAIN_IDS = {\n ETHEREUM: 1,\n POLYGON: 137,\n BSC: 56,\n ARBITRUM: 42161,\n OPTIMISM: 10,\n BASE: 8453,\n AVALANCHE: 43114,\n ZKSYNC: 324,\n LINEA: 59144,\n SCROLL: 534352,\n BLAST: 81457,\n // Testnets\n SEPOLIA: 11155111,\n BASE_SEPOLIA: 84532,\n ARBITRUM_SEPOLIA: 421614,\n} as const;\n\nexport const DEFAULT_CHAIN_ID = CHAIN_IDS.BASE;\n\n// ===== Chain Icons (Simple emoji fallback) =====\nconst CHAIN_ICONS: Record<number, string> = {\n 1: '\\u229F', // Ethereum\n 137: '\\uD83D\\uDFE3', // Polygon\n 56: '\\uD83D\\uDFE1', // BSC\n 42161: '\\uD83D\\uDD35', // Arbitrum\n 10: '\\uD83D\\uDD34', // Optimism\n 8453: '\\uD83D\\uDD37', // Base\n 43114: '\\uD83D\\uDD3A', // Avalanche\n 324: '\\u26A1', // zkSync\n 59144: '\\uD83D\\uDD39', // Linea\n 534352: '\\uD83D\\uDCDC', // Scroll\n};\n\nfunction getChainIcon(chainId: number): string {\n return CHAIN_ICONS[chainId] || '\\uD83D\\uDD17';\n}\n\n// ===== Token Names Mapping =====\n// Common token symbols to human-readable names\nexport const TOKEN_NAMES: Record<string, string> = {\n ETH: 'Ethereum',\n BTC: 'Bitcoin',\n BNB: 'BNB',\n MATIC: 'Polygon',\n POL: 'Polygon',\n AVAX: 'Avalanche',\n USDT: 'Tether',\n USDC: 'USD Coin',\n DAI: 'Dai',\n WBTC: 'Wrapped Bitcoin',\n WETH: 'Wrapped Ether',\n ARB: 'Arbitrum',\n OP: 'Optimism',\n LINK: 'Chainlink',\n UNI: 'Uniswap',\n AAVE: 'Aave',\n CRV: 'Curve',\n MKR: 'Maker',\n SNX: 'Synthetix',\n COMP: 'Compound',\n SUSHI: 'SushiSwap',\n YFI: 'Yearn Finance',\n SOL: 'Solana',\n DOT: 'Polkadot',\n ATOM: 'Cosmos',\n NEAR: 'Near Protocol',\n};\n\n// ===== CoinGecko ID Mapping =====\n// For price lookups via CoinGecko API\nexport const COINGECKO_IDS: Record<string, string> = {\n ETH: 'ethereum',\n BTC: 'bitcoin',\n BNB: 'binancecoin',\n MATIC: 'matic-network',\n POL: 'matic-network',\n AVAX: 'avalanche-2',\n USDT: 'tether',\n USDC: 'usd-coin',\n DAI: 'dai',\n WBTC: 'wrapped-bitcoin',\n WETH: 'weth',\n ARB: 'arbitrum',\n OP: 'optimism',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n SOL: 'solana',\n};\n\n// ===== Backwards Compatibility =====\n// @deprecated - Use getChains() or fetch from Engine API\n// These static configs are kept for backwards compatibility only\n\nexport const CHAIN_CONFIGS: Record<string, ChainConfig> = {\n ethereum: {\n id: 1,\n name: 'Ethereum',\n shortName: 'ETH',\n icon: '\\u229F',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://ethereum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://etherscan.io'],\n testnet: false,\n },\n polygon: {\n id: 137,\n name: 'Polygon',\n shortName: 'MATIC',\n icon: '\\uD83D\\uDFE3',\n nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n rpcUrls: ['https://polygon.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://polygonscan.com'],\n testnet: false,\n },\n base: {\n id: 8453,\n name: 'Base',\n shortName: 'BASE',\n icon: '\\uD83D\\uDD37',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://base.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://basescan.org'],\n testnet: false,\n },\n arbitrum: {\n id: 42161,\n name: 'Arbitrum One',\n shortName: 'ARB',\n icon: '\\uD83D\\uDD35',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://arbitrum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://arbiscan.io'],\n testnet: false,\n },\n optimism: {\n id: 10,\n name: 'Optimism',\n shortName: 'OP',\n icon: '\\uD83D\\uDD34',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://optimism.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n testnet: false,\n },\n};\n\n// @deprecated - Use getChains() to get all supported chains\nexport const SUPPORTED_CHAINS = Object.keys(CHAIN_CONFIGS);\n\n// @deprecated - Use getChainByName() instead\nexport function getChainConfig(chain: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[chain.toLowerCase()];\n}\n"]}
|