@megatao/sdk 1.1.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/.env.example +37 -0
- package/CHANGELOG.md +19 -0
- package/README.md +199 -0
- package/bin/alf +4 -0
- package/cli/README.md +198 -0
- package/cli/TEST_MANUAL.md +577 -0
- package/cli/commands/account.ts +545 -0
- package/cli/commands/funding.ts +481 -0
- package/cli/commands/liquidation.ts +523 -0
- package/cli/commands/market.ts +590 -0
- package/cli/commands/orders.ts +395 -0
- package/cli/commands/position.ts +1085 -0
- package/cli/commands/shared/positionUtils.ts +239 -0
- package/cli/commands/trading.ts +483 -0
- package/cli/commands/utils.ts +281 -0
- package/cli/commands/vault.ts +522 -0
- package/cli/index.ts +169 -0
- package/cli/interactive.ts +530 -0
- package/cli/utils/client.ts +457 -0
- package/cli/utils/config.ts +226 -0
- package/cli/utils/display.ts +258 -0
- package/cli/utils/index.ts +10 -0
- package/cli/utils/prompts.ts +364 -0
- package/config.example.json +23 -0
- package/dist/AlphaFuturesClient.d.ts +36 -0
- package/dist/AlphaFuturesClient.d.ts.map +1 -0
- package/dist/AlphaFuturesClient.js +116 -0
- package/dist/AlphaFuturesClient.js.map +1 -0
- package/dist/abi/Alpha.json +5987 -0
- package/dist/abi/abis.d.ts +319 -0
- package/dist/abi/abis.d.ts.map +1 -0
- package/dist/abi/abis.js +128 -0
- package/dist/abi/abis.js.map +1 -0
- package/dist/abi/index.d.ts +11 -0
- package/dist/abi/index.d.ts.map +1 -0
- package/dist/abi/index.js +15 -0
- package/dist/abi/index.js.map +1 -0
- package/dist/config/contracts.config.d.ts +70 -0
- package/dist/config/contracts.config.d.ts.map +1 -0
- package/dist/config/contracts.config.js +137 -0
- package/dist/config/contracts.config.js.map +1 -0
- package/dist/config/environments/alpha.config.d.ts +17 -0
- package/dist/config/environments/alpha.config.d.ts.map +1 -0
- package/dist/config/environments/alpha.config.js +140 -0
- package/dist/config/environments/alpha.config.js.map +1 -0
- package/dist/config/environments/beta.config.d.ts +16 -0
- package/dist/config/environments/beta.config.d.ts.map +1 -0
- package/dist/config/environments/beta.config.js +131 -0
- package/dist/config/environments/beta.config.js.map +1 -0
- package/dist/config/environments/dev.config.d.ts +13 -0
- package/dist/config/environments/dev.config.d.ts.map +1 -0
- package/dist/config/environments/dev.config.js +123 -0
- package/dist/config/environments/dev.config.js.map +1 -0
- package/dist/config/environments/index.d.ts +48 -0
- package/dist/config/environments/index.d.ts.map +1 -0
- package/dist/config/environments/index.js +81 -0
- package/dist/config/environments/index.js.map +1 -0
- package/dist/config/environments/localhost.config.d.ts +16 -0
- package/dist/config/environments/localhost.config.d.ts.map +1 -0
- package/dist/config/environments/localhost.config.js +152 -0
- package/dist/config/environments/localhost.config.js.map +1 -0
- package/dist/config/environments/prod.config.d.ts +20 -0
- package/dist/config/environments/prod.config.d.ts.map +1 -0
- package/dist/config/environments/prod.config.js +143 -0
- package/dist/config/environments/prod.config.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +41 -0
- package/dist/config/index.js.map +1 -0
- package/dist/constants/assets.d.ts +76 -0
- package/dist/constants/assets.d.ts.map +1 -0
- package/dist/constants/assets.js +277 -0
- package/dist/constants/assets.js.map +1 -0
- package/dist/constants/contracts.d.ts +41 -0
- package/dist/constants/contracts.d.ts.map +1 -0
- package/dist/constants/contracts.js +57 -0
- package/dist/constants/contracts.js.map +1 -0
- package/dist/constants/index.d.ts +36 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +75 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/networks.d.ts +32 -0
- package/dist/constants/networks.d.ts.map +1 -0
- package/dist/constants/networks.js +174 -0
- package/dist/constants/networks.js.map +1 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +21 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/viem/AlphaViem.d.ts +518 -0
- package/dist/contracts/viem/AlphaViem.d.ts.map +1 -0
- package/dist/contracts/viem/AlphaViem.js +1287 -0
- package/dist/contracts/viem/AlphaViem.js.map +1 -0
- package/dist/contracts/viem/PriceOracleViem.d.ts +71 -0
- package/dist/contracts/viem/PriceOracleViem.d.ts.map +1 -0
- package/dist/contracts/viem/PriceOracleViem.js +212 -0
- package/dist/contracts/viem/PriceOracleViem.js.map +1 -0
- package/dist/contracts/viem/index.d.ts +9 -0
- package/dist/contracts/viem/index.d.ts.map +1 -0
- package/dist/contracts/viem/index.js +17 -0
- package/dist/contracts/viem/index.js.map +1 -0
- package/dist/errors/index.d.ts +44 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +83 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/types/alpha.d.ts +299 -0
- package/dist/types/alpha.d.ts.map +1 -0
- package/dist/types/alpha.js +6 -0
- package/dist/types/alpha.js.map +1 -0
- package/dist/types/client.d.ts +24 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/client.js +13 -0
- package/dist/types/client.js.map +1 -0
- package/dist/types/contracts.d.ts +48 -0
- package/dist/types/contracts.d.ts.map +1 -0
- package/dist/types/contracts.js +6 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/funding.d.ts +27 -0
- package/dist/types/funding.d.ts.map +1 -0
- package/dist/types/funding.js +6 -0
- package/dist/types/funding.js.map +1 -0
- package/dist/types/index.d.ts +92 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +47 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/liquidation.d.ts +20 -0
- package/dist/types/liquidation.d.ts.map +1 -0
- package/dist/types/liquidation.js +6 -0
- package/dist/types/liquidation.js.map +1 -0
- package/dist/types/margin.d.ts +29 -0
- package/dist/types/margin.d.ts.map +1 -0
- package/dist/types/margin.js +6 -0
- package/dist/types/margin.js.map +1 -0
- package/dist/types/oracle.d.ts +21 -0
- package/dist/types/oracle.d.ts.map +1 -0
- package/dist/types/oracle.js +6 -0
- package/dist/types/oracle.js.map +1 -0
- package/dist/types/positions.d.ts +43 -0
- package/dist/types/positions.d.ts.map +1 -0
- package/dist/types/positions.js +13 -0
- package/dist/types/positions.js.map +1 -0
- package/dist/utils/calculations.d.ts +84 -0
- package/dist/utils/calculations.d.ts.map +1 -0
- package/dist/utils/calculations.js +155 -0
- package/dist/utils/calculations.js.map +1 -0
- package/dist/utils/errors.d.ts +24 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +129 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/events.d.ts +40 -0
- package/dist/utils/events.d.ts.map +1 -0
- package/dist/utils/events.js +73 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/format.d.ts +40 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +86 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +26 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/network.d.ts +52 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +192 -0
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/positionCalculations.d.ts +145 -0
- package/dist/utils/positionCalculations.d.ts.map +1 -0
- package/dist/utils/positionCalculations.js +278 -0
- package/dist/utils/positionCalculations.js.map +1 -0
- package/dist/utils/validation.d.ts +28 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +68 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/README.md +40 -0
- package/docs/api/API.md +831 -0
- package/docs/guides/GETTING_STARTED.md +316 -0
- package/docs/guides/TRADING_GUIDE.md +677 -0
- package/docs/integration/INTEGRATION_GUIDE.md +1679 -0
- package/docs/integration/VIEM_INTEGRATION.md +294 -0
- package/docs/reference/CLI_QUICK_REFERENCE.md +197 -0
- package/docs/reference/TROUBLESHOOTING.md +922 -0
- package/package.json +113 -0
- package/src/AlphaFuturesClient.ts +158 -0
- package/src/abi/.gitkeep +1 -0
- package/src/abi/Alpha.json +5987 -0
- package/src/abi/README.md +99 -0
- package/src/abi/abis.ts +131 -0
- package/src/abi/index.ts +13 -0
- package/src/config/contracts.config.ts +186 -0
- package/src/config/environments/alpha.config.ts +139 -0
- package/src/config/environments/beta.config.ts +130 -0
- package/src/config/environments/dev.config.ts +122 -0
- package/src/config/environments/index.ts +87 -0
- package/src/config/environments/localhost.config.ts +153 -0
- package/src/config/environments/prod.config.ts +142 -0
- package/src/config/index.ts +29 -0
- package/src/constants/assets.ts +299 -0
- package/src/constants/contracts.ts +64 -0
- package/src/constants/index.ts +69 -0
- package/src/constants/networks.ts +182 -0
- package/src/contracts/index.ts +5 -0
- package/src/contracts/viem/AlphaViem.ts +1615 -0
- package/src/contracts/viem/PriceOracleViem.ts +272 -0
- package/src/contracts/viem/index.ts +11 -0
- package/src/errors/index.ts +87 -0
- package/src/index.ts +59 -0
- package/src/types/VIEM_TYPES_README.md +70 -0
- package/src/types/alpha.ts +358 -0
- package/src/types/client.ts +27 -0
- package/src/types/contracts.ts +74 -0
- package/src/types/funding.ts +31 -0
- package/src/types/index.ts +108 -0
- package/src/types/liquidation.ts +23 -0
- package/src/types/margin.ts +34 -0
- package/src/types/oracle.ts +24 -0
- package/src/types/positions.ts +48 -0
- package/src/utils/calculations.ts +175 -0
- package/src/utils/errors.ts +147 -0
- package/src/utils/events.ts +98 -0
- package/src/utils/format.ts +84 -0
- package/src/utils/index.ts +10 -0
- package/src/utils/network.ts +212 -0
- package/src/utils/positionCalculations.ts +317 -0
- package/src/utils/validation.ts +76 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Development Environment Configuration
|
|
3
|
+
*
|
|
4
|
+
* Uses Mock TAO (WTAO) with 18 decimals
|
|
5
|
+
* 4 subnet markets: BitMind, Chutes, Affine, Ridges
|
|
6
|
+
* Initial vault: 3,103.45 TAO
|
|
7
|
+
*
|
|
8
|
+
* LAST SYNCED: 2025-11-05
|
|
9
|
+
* DEPLOYMENT: deployments/dev/deployment.json
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { NetworkConfig } from '../../types';
|
|
13
|
+
|
|
14
|
+
export const DEV_CONFIG: NetworkConfig = {
|
|
15
|
+
chainId: 964,
|
|
16
|
+
name: 'Alpha Futures - Development',
|
|
17
|
+
rpcUrl: 'https://bittensor-finney.api.onfinality.io/public',
|
|
18
|
+
blockExplorer: 'https://evm.taostats.io/',
|
|
19
|
+
contracts: {
|
|
20
|
+
alpha: '0x04C1E717BBD3A18353b1f2D426c0E3B96514794B',
|
|
21
|
+
priceOracle: '0x6541318525de2FBB108a35Ecd57b14E9A5418fCC',
|
|
22
|
+
collateralToken: '0xA4B080fd023249170e759dcA1C2Ae23792DD6b66', // Mock TAO (WTAO)
|
|
23
|
+
},
|
|
24
|
+
markets: [
|
|
25
|
+
{
|
|
26
|
+
id: 64,
|
|
27
|
+
name: 'Chutes',
|
|
28
|
+
marketAddress: '0x0000000000000000000000000000000000000040',
|
|
29
|
+
symbol: 'CHUTES',
|
|
30
|
+
displayName: 'Chutes (SN64)',
|
|
31
|
+
hasOraclePrice: false,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 51,
|
|
35
|
+
name: 'lium.io',
|
|
36
|
+
marketAddress: '0x0000000000000000000000000000000000000033',
|
|
37
|
+
symbol: 'LIUM',
|
|
38
|
+
displayName: 'lium.io (SN51)',
|
|
39
|
+
hasOraclePrice: false,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: 62,
|
|
43
|
+
name: 'Ridges',
|
|
44
|
+
marketAddress: '0x000000000000000000000000000000000000003e',
|
|
45
|
+
symbol: 'RIDGES',
|
|
46
|
+
displayName: 'Ridges (SN62)',
|
|
47
|
+
hasOraclePrice: false,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: 4,
|
|
51
|
+
name: 'Targon',
|
|
52
|
+
marketAddress: '0x0000000000000000000000000000000000000004',
|
|
53
|
+
symbol: 'TARGON',
|
|
54
|
+
displayName: 'Targon (SN4)',
|
|
55
|
+
hasOraclePrice: false,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 8,
|
|
59
|
+
name: 'Vanta',
|
|
60
|
+
marketAddress: '0x0000000000000000000000000000000000000008',
|
|
61
|
+
symbol: 'VANTA',
|
|
62
|
+
displayName: 'Vanta (SN8)',
|
|
63
|
+
hasOraclePrice: false,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: 120,
|
|
67
|
+
name: 'Affine',
|
|
68
|
+
marketAddress: '0x0000000000000000000000000000000000000078',
|
|
69
|
+
symbol: 'AFFINE',
|
|
70
|
+
displayName: 'Affine (SN120)',
|
|
71
|
+
hasOraclePrice: false,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: 3,
|
|
75
|
+
name: 'templar',
|
|
76
|
+
marketAddress: '0x0000000000000000000000000000000000000003',
|
|
77
|
+
symbol: 'TEMPLAR',
|
|
78
|
+
displayName: 'templar (SN3)',
|
|
79
|
+
hasOraclePrice: false,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: 44,
|
|
83
|
+
name: 'Score',
|
|
84
|
+
marketAddress: '0x000000000000000000000000000000000000002c',
|
|
85
|
+
symbol: 'SCORE',
|
|
86
|
+
displayName: 'Score (SN44)',
|
|
87
|
+
hasOraclePrice: false,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: 9,
|
|
91
|
+
name: 'iota',
|
|
92
|
+
marketAddress: '0x0000000000000000000000000000000000000009',
|
|
93
|
+
symbol: 'IOTA',
|
|
94
|
+
displayName: 'iota (SN9)',
|
|
95
|
+
hasOraclePrice: false,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: 56,
|
|
99
|
+
name: 'Gradients',
|
|
100
|
+
marketAddress: '0x0000000000000000000000000000000000000038',
|
|
101
|
+
symbol: 'GRADIENTS',
|
|
102
|
+
displayName: 'Gradients (SN56)',
|
|
103
|
+
hasOraclePrice: false,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 75,
|
|
107
|
+
name: 'Hippius',
|
|
108
|
+
marketAddress: '0x000000000000000000000000000000000000004b',
|
|
109
|
+
symbol: 'HIPPIUS',
|
|
110
|
+
displayName: 'Hippius (SN75)',
|
|
111
|
+
hasOraclePrice: false,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 34,
|
|
115
|
+
name: 'BitMind',
|
|
116
|
+
marketAddress: '0x0000000000000000000000000000000000000022',
|
|
117
|
+
symbol: 'BITMIND',
|
|
118
|
+
displayName: 'BitMind (SN34)',
|
|
119
|
+
hasOraclePrice: false,
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment configurations for Alpha Futures Protocol
|
|
3
|
+
*
|
|
4
|
+
* Provides environment-specific configurations for different deployment stages:
|
|
5
|
+
* - dev: Development environment with Mock TAO
|
|
6
|
+
* - alpha: Internal testing with Mock USDC
|
|
7
|
+
* - beta: Staging environment with Mock USDC
|
|
8
|
+
* - prod: Production environment with Real USDC
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { NetworkConfig } from '../../types';
|
|
12
|
+
import { DEV_CONFIG } from './dev.config';
|
|
13
|
+
import { ALPHA_CONFIG } from './alpha.config';
|
|
14
|
+
import { BETA_CONFIG } from './beta.config';
|
|
15
|
+
import { PROD_CONFIG } from './prod.config';
|
|
16
|
+
import { LOCALHOST_CONFIG } from './localhost.config';
|
|
17
|
+
|
|
18
|
+
export type Environment = 'localhost' | 'dev' | 'alpha' | 'beta' | 'prod';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Environment configurations mapped by environment name
|
|
22
|
+
*/
|
|
23
|
+
export const ENVIRONMENT_CONFIGS: Record<Environment, NetworkConfig> = {
|
|
24
|
+
localhost: LOCALHOST_CONFIG,
|
|
25
|
+
dev: DEV_CONFIG,
|
|
26
|
+
alpha: ALPHA_CONFIG,
|
|
27
|
+
beta: BETA_CONFIG,
|
|
28
|
+
prod: PROD_CONFIG,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Get configuration for a specific environment
|
|
33
|
+
* @param environment - The environment to get configuration for
|
|
34
|
+
* @returns Network configuration for the specified environment
|
|
35
|
+
* @throws Error if environment is invalid
|
|
36
|
+
*/
|
|
37
|
+
export function getEnvironmentConfig(environment: Environment): NetworkConfig {
|
|
38
|
+
const config = ENVIRONMENT_CONFIGS[environment];
|
|
39
|
+
if (!config) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`Invalid environment: ${environment}. Valid environments are: ${Object.keys(ENVIRONMENT_CONFIGS).join(', ')}`,
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return config;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Check if an environment name is valid
|
|
49
|
+
* @param environment - The environment name to validate
|
|
50
|
+
* @returns True if the environment is valid
|
|
51
|
+
*/
|
|
52
|
+
export function isValidEnvironment(environment: string): environment is Environment {
|
|
53
|
+
return environment in ENVIRONMENT_CONFIGS;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get all available environments
|
|
58
|
+
* @returns Array of all valid environment names
|
|
59
|
+
*/
|
|
60
|
+
export function getAvailableEnvironments(): Environment[] {
|
|
61
|
+
return Object.keys(ENVIRONMENT_CONFIGS) as Environment[];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Get environment name by chain ID and contract address
|
|
66
|
+
* Useful for determining which environment a user is connected to
|
|
67
|
+
* @param chainId - The chain ID to match
|
|
68
|
+
* @param alphaAddress - The alpha contract address to match
|
|
69
|
+
* @returns The environment name or undefined if not found
|
|
70
|
+
*/
|
|
71
|
+
export function getEnvironmentByAddress(
|
|
72
|
+
chainId: number,
|
|
73
|
+
alphaAddress: string,
|
|
74
|
+
): Environment | undefined {
|
|
75
|
+
const normalizedAddress = alphaAddress.toLowerCase();
|
|
76
|
+
|
|
77
|
+
for (const [env, config] of Object.entries(ENVIRONMENT_CONFIGS)) {
|
|
78
|
+
if (config.chainId === chainId && config.contracts.alpha?.toLowerCase() === normalizedAddress) {
|
|
79
|
+
return env as Environment;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Re-export environment configs for convenience
|
|
87
|
+
export { LOCALHOST_CONFIG, DEV_CONFIG, ALPHA_CONFIG, BETA_CONFIG, PROD_CONFIG };
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Localhost Environment Configuration
|
|
3
|
+
*
|
|
4
|
+
* Used for local Anvil development and E2E testing
|
|
5
|
+
* Reads contract addresses from environment variables set by .env.anvil
|
|
6
|
+
*
|
|
7
|
+
* Environment variables (from .env.anvil):
|
|
8
|
+
* ALPHA - Main protocol contract
|
|
9
|
+
* TAO_TOKEN - Collateral token
|
|
10
|
+
* PRICE_ORACLE - Price oracle contract
|
|
11
|
+
* ALPHA_BTC - BTC market address
|
|
12
|
+
* ALPHA_ETH - ETH market address
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { NetworkConfig } from '../../types';
|
|
16
|
+
import { Address } from 'viem';
|
|
17
|
+
|
|
18
|
+
// Helper to get address from env with fallback
|
|
19
|
+
const getEnvAddress = (key: string, fallback: string): Address => {
|
|
20
|
+
return (process.env[key] || fallback) as Address;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Create config as a getter so env vars are read at access time, not import time
|
|
24
|
+
export const LOCALHOST_CONFIG: NetworkConfig = {
|
|
25
|
+
chainId: 31337,
|
|
26
|
+
name: 'Alpha Futures - Localhost',
|
|
27
|
+
rpcUrl: process.env.RPC_URL || 'http://localhost:8545',
|
|
28
|
+
blockExplorer: 'http://localhost:8545',
|
|
29
|
+
get contracts() {
|
|
30
|
+
return {
|
|
31
|
+
alpha: getEnvAddress('ALPHA', '0x610178dA211FEF7D417bC0e6FeD39F05609AD788'),
|
|
32
|
+
priceOracle: getEnvAddress('PRICE_ORACLE', '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9'),
|
|
33
|
+
collateralToken: getEnvAddress('TAO_TOKEN', '0x5FbDB2315678afecb367f032d93F642f64180aa3'),
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
get markets() {
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
id: 64,
|
|
40
|
+
name: 'Chutes',
|
|
41
|
+
marketAddress: '0x0000000000000000000000000000000000000040' as Address,
|
|
42
|
+
symbol: 'CHUTES',
|
|
43
|
+
displayName: 'Chutes (SN64)',
|
|
44
|
+
hasOraclePrice: false,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 51,
|
|
48
|
+
name: 'lium.io',
|
|
49
|
+
marketAddress: '0x0000000000000000000000000000000000000033' as Address,
|
|
50
|
+
symbol: 'LIUM',
|
|
51
|
+
displayName: 'lium.io (SN51)',
|
|
52
|
+
hasOraclePrice: false,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: 62,
|
|
56
|
+
name: 'Ridges',
|
|
57
|
+
marketAddress: '0x000000000000000000000000000000000000003e' as Address,
|
|
58
|
+
symbol: 'RIDGES',
|
|
59
|
+
displayName: 'Ridges (SN62)',
|
|
60
|
+
hasOraclePrice: false,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 4,
|
|
64
|
+
name: 'Targon',
|
|
65
|
+
marketAddress: '0x0000000000000000000000000000000000000004' as Address,
|
|
66
|
+
symbol: 'TARGON',
|
|
67
|
+
displayName: 'Targon (SN4)',
|
|
68
|
+
hasOraclePrice: false,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: 8,
|
|
72
|
+
name: 'Vanta',
|
|
73
|
+
marketAddress: '0x0000000000000000000000000000000000000008' as Address,
|
|
74
|
+
symbol: 'VANTA',
|
|
75
|
+
displayName: 'Vanta (SN8)',
|
|
76
|
+
hasOraclePrice: false,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 120,
|
|
80
|
+
name: 'Affine',
|
|
81
|
+
marketAddress: '0x0000000000000000000000000000000000000078' as Address,
|
|
82
|
+
symbol: 'AFFINE',
|
|
83
|
+
displayName: 'Affine (SN120)',
|
|
84
|
+
hasOraclePrice: false,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 3,
|
|
88
|
+
name: 'templar',
|
|
89
|
+
marketAddress: '0x0000000000000000000000000000000000000003' as Address,
|
|
90
|
+
symbol: 'TEMPLAR',
|
|
91
|
+
displayName: 'templar (SN3)',
|
|
92
|
+
hasOraclePrice: false,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 44,
|
|
96
|
+
name: 'Score',
|
|
97
|
+
marketAddress: '0x000000000000000000000000000000000000002c' as Address,
|
|
98
|
+
symbol: 'SCORE',
|
|
99
|
+
displayName: 'Score (SN44)',
|
|
100
|
+
hasOraclePrice: false,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: 9,
|
|
104
|
+
name: 'iota',
|
|
105
|
+
marketAddress: '0x0000000000000000000000000000000000000009' as Address,
|
|
106
|
+
symbol: 'IOTA',
|
|
107
|
+
displayName: 'iota (SN9)',
|
|
108
|
+
hasOraclePrice: false,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 56,
|
|
112
|
+
name: 'Gradients',
|
|
113
|
+
marketAddress: '0x0000000000000000000000000000000000000038' as Address,
|
|
114
|
+
symbol: 'GRADIENTS',
|
|
115
|
+
displayName: 'Gradients (SN56)',
|
|
116
|
+
hasOraclePrice: false,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 75,
|
|
120
|
+
name: 'Hippius',
|
|
121
|
+
marketAddress: '0x000000000000000000000000000000000000004b' as Address,
|
|
122
|
+
symbol: 'HIPPIUS',
|
|
123
|
+
displayName: 'Hippius (SN75)',
|
|
124
|
+
hasOraclePrice: false,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
id: 34,
|
|
128
|
+
name: 'BitMind',
|
|
129
|
+
marketAddress: '0x0000000000000000000000000000000000000022' as Address,
|
|
130
|
+
symbol: 'BITMIND',
|
|
131
|
+
displayName: 'BitMind (SN34)',
|
|
132
|
+
hasOraclePrice: false,
|
|
133
|
+
},
|
|
134
|
+
// Legacy test markets (for localhost testing)
|
|
135
|
+
{
|
|
136
|
+
id: 1,
|
|
137
|
+
name: 'Alpha BTC',
|
|
138
|
+
marketAddress: getEnvAddress('ALPHA_BTC', '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512'),
|
|
139
|
+
symbol: 'BTC',
|
|
140
|
+
displayName: 'Alpha BTC',
|
|
141
|
+
hasOraclePrice: true,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: 2,
|
|
145
|
+
name: 'Alpha ETH',
|
|
146
|
+
marketAddress: getEnvAddress('ALPHA_ETH', '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0'),
|
|
147
|
+
symbol: 'ETH',
|
|
148
|
+
displayName: 'Alpha ETH',
|
|
149
|
+
hasOraclePrice: true,
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
},
|
|
153
|
+
};
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production Environment Configuration
|
|
3
|
+
*
|
|
4
|
+
* Uses Real USDC with 6 decimals
|
|
5
|
+
* 1 market: ALPHA_BTC
|
|
6
|
+
* No initial vault seeding
|
|
7
|
+
*
|
|
8
|
+
* LAST SYNCED: 2026-02-13
|
|
9
|
+
* DEPLOYMENT: deployments/prod/deployment.json
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This environment has not been deployed yet.
|
|
12
|
+
* Production deployment requires CONFIRM_PROD=true environment variable.
|
|
13
|
+
* Run `CONFIRM_PROD=true npm run deploy -- --env prod` to deploy contracts.
|
|
14
|
+
* Then run `npm run sync -- --env prod` to update these addresses.
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ WARNING: Production deployment uses real USDC. Handle with extreme care.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { NetworkConfig } from '../../types';
|
|
20
|
+
|
|
21
|
+
export const PROD_CONFIG: NetworkConfig = {
|
|
22
|
+
chainId: 964,
|
|
23
|
+
name: 'Alpha Futures - Production',
|
|
24
|
+
rpcUrl: 'https://bittensor-finney.api.onfinality.io/public',
|
|
25
|
+
blockExplorer: 'https://evm.taostats.io/',
|
|
26
|
+
contracts: {
|
|
27
|
+
alpha: '0xdA50070976Da21A0E7afaB1BB0c81CD51926AE64', // Placeholder - will be updated after deployment
|
|
28
|
+
priceOracle: '0x446A342221ed83b56fc17eA3e046dd19153beA85',
|
|
29
|
+
collateralToken: '0x0000000000000000000000000000000000000000', // Real USDC
|
|
30
|
+
},
|
|
31
|
+
collateralTokenInfo: {
|
|
32
|
+
symbol: 'TAO',
|
|
33
|
+
decimals: 18,
|
|
34
|
+
name: 'TAO',
|
|
35
|
+
},
|
|
36
|
+
markets: [
|
|
37
|
+
{
|
|
38
|
+
id: 64,
|
|
39
|
+
name: 'Chutes',
|
|
40
|
+
marketAddress: '0x0000000000000000000000000000000000000040',
|
|
41
|
+
symbol: 'CHUTES',
|
|
42
|
+
displayName: 'Chutes (SN64)',
|
|
43
|
+
hasOraclePrice: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 51,
|
|
47
|
+
name: 'lium.io',
|
|
48
|
+
marketAddress: '0x0000000000000000000000000000000000000033',
|
|
49
|
+
symbol: 'LIUM',
|
|
50
|
+
displayName: 'lium.io (SN51)',
|
|
51
|
+
hasOraclePrice: true,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 62,
|
|
55
|
+
name: 'Ridges',
|
|
56
|
+
marketAddress: '0x000000000000000000000000000000000000003e',
|
|
57
|
+
symbol: 'RIDGES',
|
|
58
|
+
displayName: 'Ridges (SN62)',
|
|
59
|
+
hasOraclePrice: true,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: 4,
|
|
63
|
+
name: 'Targon',
|
|
64
|
+
marketAddress: '0x0000000000000000000000000000000000000004',
|
|
65
|
+
symbol: 'TARGON',
|
|
66
|
+
displayName: 'Targon (SN4)',
|
|
67
|
+
hasOraclePrice: true,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: 8,
|
|
71
|
+
name: 'Vanta',
|
|
72
|
+
marketAddress: '0x0000000000000000000000000000000000000008',
|
|
73
|
+
symbol: 'VANTA',
|
|
74
|
+
displayName: 'Vanta (SN8)',
|
|
75
|
+
hasOraclePrice: true,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 120,
|
|
79
|
+
name: 'Affine',
|
|
80
|
+
marketAddress: '0x0000000000000000000000000000000000000078',
|
|
81
|
+
symbol: 'AFFINE',
|
|
82
|
+
displayName: 'Affine (SN120)',
|
|
83
|
+
hasOraclePrice: true,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: 3,
|
|
87
|
+
name: 'templar',
|
|
88
|
+
marketAddress: '0x0000000000000000000000000000000000000003',
|
|
89
|
+
symbol: 'TEMPLAR',
|
|
90
|
+
displayName: 'templar (SN3)',
|
|
91
|
+
hasOraclePrice: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 44,
|
|
95
|
+
name: 'Score',
|
|
96
|
+
marketAddress: '0x000000000000000000000000000000000000002c',
|
|
97
|
+
symbol: 'SCORE',
|
|
98
|
+
displayName: 'Score (SN44)',
|
|
99
|
+
hasOraclePrice: true,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 9,
|
|
103
|
+
name: 'iota',
|
|
104
|
+
marketAddress: '0x0000000000000000000000000000000000000009',
|
|
105
|
+
symbol: 'IOTA',
|
|
106
|
+
displayName: 'iota (SN9)',
|
|
107
|
+
hasOraclePrice: true,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: 56,
|
|
111
|
+
name: 'Gradients',
|
|
112
|
+
marketAddress: '0x0000000000000000000000000000000000000038',
|
|
113
|
+
symbol: 'GRADIENTS',
|
|
114
|
+
displayName: 'Gradients (SN56)',
|
|
115
|
+
hasOraclePrice: true,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: 75,
|
|
119
|
+
name: 'Hippius',
|
|
120
|
+
marketAddress: '0x000000000000000000000000000000000000004b',
|
|
121
|
+
symbol: 'HIPPIUS',
|
|
122
|
+
displayName: 'Hippius (SN75)',
|
|
123
|
+
hasOraclePrice: true,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: 34,
|
|
127
|
+
name: 'BitMind',
|
|
128
|
+
marketAddress: '0x0000000000000000000000000000000000000022',
|
|
129
|
+
symbol: 'BITMIND',
|
|
130
|
+
displayName: 'BitMind (SN34)',
|
|
131
|
+
hasOraclePrice: true,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: 65534,
|
|
135
|
+
name: 'MTSOS',
|
|
136
|
+
marketAddress: '0x000000000000000000000000000000000000FFFE',
|
|
137
|
+
symbol: 'MTSOS',
|
|
138
|
+
displayName: 'MegaTAO Sum-of-Subnets Index',
|
|
139
|
+
hasOraclePrice: true,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration module exports
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export * from './contracts.config';
|
|
6
|
+
|
|
7
|
+
// Re-export network utilities for convenience
|
|
8
|
+
export {
|
|
9
|
+
detectNetwork,
|
|
10
|
+
switchNetwork,
|
|
11
|
+
addNetwork,
|
|
12
|
+
createNetworkClient,
|
|
13
|
+
validateChainId,
|
|
14
|
+
getSupportedNetworks,
|
|
15
|
+
formatNetworkName,
|
|
16
|
+
NetworkInfo,
|
|
17
|
+
createCustomChain,
|
|
18
|
+
getChainById,
|
|
19
|
+
} from '../utils/network';
|
|
20
|
+
|
|
21
|
+
// Re-export network constants
|
|
22
|
+
export {
|
|
23
|
+
NETWORK_CONFIGS,
|
|
24
|
+
DEFAULT_NETWORK,
|
|
25
|
+
getCurrentNetwork,
|
|
26
|
+
getNetworkByChainId,
|
|
27
|
+
isValidNetwork,
|
|
28
|
+
getNetworkName,
|
|
29
|
+
} from '../constants/networks';
|