@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.
Files changed (228) hide show
  1. package/.env.example +37 -0
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +199 -0
  4. package/bin/alf +4 -0
  5. package/cli/README.md +198 -0
  6. package/cli/TEST_MANUAL.md +577 -0
  7. package/cli/commands/account.ts +545 -0
  8. package/cli/commands/funding.ts +481 -0
  9. package/cli/commands/liquidation.ts +523 -0
  10. package/cli/commands/market.ts +590 -0
  11. package/cli/commands/orders.ts +395 -0
  12. package/cli/commands/position.ts +1085 -0
  13. package/cli/commands/shared/positionUtils.ts +239 -0
  14. package/cli/commands/trading.ts +483 -0
  15. package/cli/commands/utils.ts +281 -0
  16. package/cli/commands/vault.ts +522 -0
  17. package/cli/index.ts +169 -0
  18. package/cli/interactive.ts +530 -0
  19. package/cli/utils/client.ts +457 -0
  20. package/cli/utils/config.ts +226 -0
  21. package/cli/utils/display.ts +258 -0
  22. package/cli/utils/index.ts +10 -0
  23. package/cli/utils/prompts.ts +364 -0
  24. package/config.example.json +23 -0
  25. package/dist/AlphaFuturesClient.d.ts +36 -0
  26. package/dist/AlphaFuturesClient.d.ts.map +1 -0
  27. package/dist/AlphaFuturesClient.js +116 -0
  28. package/dist/AlphaFuturesClient.js.map +1 -0
  29. package/dist/abi/Alpha.json +5987 -0
  30. package/dist/abi/abis.d.ts +319 -0
  31. package/dist/abi/abis.d.ts.map +1 -0
  32. package/dist/abi/abis.js +128 -0
  33. package/dist/abi/abis.js.map +1 -0
  34. package/dist/abi/index.d.ts +11 -0
  35. package/dist/abi/index.d.ts.map +1 -0
  36. package/dist/abi/index.js +15 -0
  37. package/dist/abi/index.js.map +1 -0
  38. package/dist/config/contracts.config.d.ts +70 -0
  39. package/dist/config/contracts.config.d.ts.map +1 -0
  40. package/dist/config/contracts.config.js +137 -0
  41. package/dist/config/contracts.config.js.map +1 -0
  42. package/dist/config/environments/alpha.config.d.ts +17 -0
  43. package/dist/config/environments/alpha.config.d.ts.map +1 -0
  44. package/dist/config/environments/alpha.config.js +140 -0
  45. package/dist/config/environments/alpha.config.js.map +1 -0
  46. package/dist/config/environments/beta.config.d.ts +16 -0
  47. package/dist/config/environments/beta.config.d.ts.map +1 -0
  48. package/dist/config/environments/beta.config.js +131 -0
  49. package/dist/config/environments/beta.config.js.map +1 -0
  50. package/dist/config/environments/dev.config.d.ts +13 -0
  51. package/dist/config/environments/dev.config.d.ts.map +1 -0
  52. package/dist/config/environments/dev.config.js +123 -0
  53. package/dist/config/environments/dev.config.js.map +1 -0
  54. package/dist/config/environments/index.d.ts +48 -0
  55. package/dist/config/environments/index.d.ts.map +1 -0
  56. package/dist/config/environments/index.js +81 -0
  57. package/dist/config/environments/index.js.map +1 -0
  58. package/dist/config/environments/localhost.config.d.ts +16 -0
  59. package/dist/config/environments/localhost.config.d.ts.map +1 -0
  60. package/dist/config/environments/localhost.config.js +152 -0
  61. package/dist/config/environments/localhost.config.js.map +1 -0
  62. package/dist/config/environments/prod.config.d.ts +20 -0
  63. package/dist/config/environments/prod.config.d.ts.map +1 -0
  64. package/dist/config/environments/prod.config.js +143 -0
  65. package/dist/config/environments/prod.config.js.map +1 -0
  66. package/dist/config/index.d.ts +7 -0
  67. package/dist/config/index.d.ts.map +1 -0
  68. package/dist/config/index.js +41 -0
  69. package/dist/config/index.js.map +1 -0
  70. package/dist/constants/assets.d.ts +76 -0
  71. package/dist/constants/assets.d.ts.map +1 -0
  72. package/dist/constants/assets.js +277 -0
  73. package/dist/constants/assets.js.map +1 -0
  74. package/dist/constants/contracts.d.ts +41 -0
  75. package/dist/constants/contracts.d.ts.map +1 -0
  76. package/dist/constants/contracts.js +57 -0
  77. package/dist/constants/contracts.js.map +1 -0
  78. package/dist/constants/index.d.ts +36 -0
  79. package/dist/constants/index.d.ts.map +1 -0
  80. package/dist/constants/index.js +75 -0
  81. package/dist/constants/index.js.map +1 -0
  82. package/dist/constants/networks.d.ts +32 -0
  83. package/dist/constants/networks.d.ts.map +1 -0
  84. package/dist/constants/networks.js +174 -0
  85. package/dist/constants/networks.js.map +1 -0
  86. package/dist/contracts/index.d.ts +5 -0
  87. package/dist/contracts/index.d.ts.map +1 -0
  88. package/dist/contracts/index.js +21 -0
  89. package/dist/contracts/index.js.map +1 -0
  90. package/dist/contracts/viem/AlphaViem.d.ts +518 -0
  91. package/dist/contracts/viem/AlphaViem.d.ts.map +1 -0
  92. package/dist/contracts/viem/AlphaViem.js +1287 -0
  93. package/dist/contracts/viem/AlphaViem.js.map +1 -0
  94. package/dist/contracts/viem/PriceOracleViem.d.ts +71 -0
  95. package/dist/contracts/viem/PriceOracleViem.d.ts.map +1 -0
  96. package/dist/contracts/viem/PriceOracleViem.js +212 -0
  97. package/dist/contracts/viem/PriceOracleViem.js.map +1 -0
  98. package/dist/contracts/viem/index.d.ts +9 -0
  99. package/dist/contracts/viem/index.d.ts.map +1 -0
  100. package/dist/contracts/viem/index.js +17 -0
  101. package/dist/contracts/viem/index.js.map +1 -0
  102. package/dist/errors/index.d.ts +44 -0
  103. package/dist/errors/index.d.ts.map +1 -0
  104. package/dist/errors/index.js +83 -0
  105. package/dist/errors/index.js.map +1 -0
  106. package/dist/index.d.ts +19 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +60 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/types/alpha.d.ts +299 -0
  111. package/dist/types/alpha.d.ts.map +1 -0
  112. package/dist/types/alpha.js +6 -0
  113. package/dist/types/alpha.js.map +1 -0
  114. package/dist/types/client.d.ts +24 -0
  115. package/dist/types/client.d.ts.map +1 -0
  116. package/dist/types/client.js +13 -0
  117. package/dist/types/client.js.map +1 -0
  118. package/dist/types/contracts.d.ts +48 -0
  119. package/dist/types/contracts.d.ts.map +1 -0
  120. package/dist/types/contracts.js +6 -0
  121. package/dist/types/contracts.js.map +1 -0
  122. package/dist/types/funding.d.ts +27 -0
  123. package/dist/types/funding.d.ts.map +1 -0
  124. package/dist/types/funding.js +6 -0
  125. package/dist/types/funding.js.map +1 -0
  126. package/dist/types/index.d.ts +92 -0
  127. package/dist/types/index.d.ts.map +1 -0
  128. package/dist/types/index.js +47 -0
  129. package/dist/types/index.js.map +1 -0
  130. package/dist/types/liquidation.d.ts +20 -0
  131. package/dist/types/liquidation.d.ts.map +1 -0
  132. package/dist/types/liquidation.js +6 -0
  133. package/dist/types/liquidation.js.map +1 -0
  134. package/dist/types/margin.d.ts +29 -0
  135. package/dist/types/margin.d.ts.map +1 -0
  136. package/dist/types/margin.js +6 -0
  137. package/dist/types/margin.js.map +1 -0
  138. package/dist/types/oracle.d.ts +21 -0
  139. package/dist/types/oracle.d.ts.map +1 -0
  140. package/dist/types/oracle.js +6 -0
  141. package/dist/types/oracle.js.map +1 -0
  142. package/dist/types/positions.d.ts +43 -0
  143. package/dist/types/positions.d.ts.map +1 -0
  144. package/dist/types/positions.js +13 -0
  145. package/dist/types/positions.js.map +1 -0
  146. package/dist/utils/calculations.d.ts +84 -0
  147. package/dist/utils/calculations.d.ts.map +1 -0
  148. package/dist/utils/calculations.js +155 -0
  149. package/dist/utils/calculations.js.map +1 -0
  150. package/dist/utils/errors.d.ts +24 -0
  151. package/dist/utils/errors.d.ts.map +1 -0
  152. package/dist/utils/errors.js +129 -0
  153. package/dist/utils/errors.js.map +1 -0
  154. package/dist/utils/events.d.ts +40 -0
  155. package/dist/utils/events.d.ts.map +1 -0
  156. package/dist/utils/events.js +73 -0
  157. package/dist/utils/events.js.map +1 -0
  158. package/dist/utils/format.d.ts +40 -0
  159. package/dist/utils/format.d.ts.map +1 -0
  160. package/dist/utils/format.js +86 -0
  161. package/dist/utils/format.js.map +1 -0
  162. package/dist/utils/index.d.ts +10 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +26 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/network.d.ts +52 -0
  167. package/dist/utils/network.d.ts.map +1 -0
  168. package/dist/utils/network.js +192 -0
  169. package/dist/utils/network.js.map +1 -0
  170. package/dist/utils/positionCalculations.d.ts +145 -0
  171. package/dist/utils/positionCalculations.d.ts.map +1 -0
  172. package/dist/utils/positionCalculations.js +278 -0
  173. package/dist/utils/positionCalculations.js.map +1 -0
  174. package/dist/utils/validation.d.ts +28 -0
  175. package/dist/utils/validation.d.ts.map +1 -0
  176. package/dist/utils/validation.js +68 -0
  177. package/dist/utils/validation.js.map +1 -0
  178. package/docs/README.md +40 -0
  179. package/docs/api/API.md +831 -0
  180. package/docs/guides/GETTING_STARTED.md +316 -0
  181. package/docs/guides/TRADING_GUIDE.md +677 -0
  182. package/docs/integration/INTEGRATION_GUIDE.md +1679 -0
  183. package/docs/integration/VIEM_INTEGRATION.md +294 -0
  184. package/docs/reference/CLI_QUICK_REFERENCE.md +197 -0
  185. package/docs/reference/TROUBLESHOOTING.md +922 -0
  186. package/package.json +113 -0
  187. package/src/AlphaFuturesClient.ts +158 -0
  188. package/src/abi/.gitkeep +1 -0
  189. package/src/abi/Alpha.json +5987 -0
  190. package/src/abi/README.md +99 -0
  191. package/src/abi/abis.ts +131 -0
  192. package/src/abi/index.ts +13 -0
  193. package/src/config/contracts.config.ts +186 -0
  194. package/src/config/environments/alpha.config.ts +139 -0
  195. package/src/config/environments/beta.config.ts +130 -0
  196. package/src/config/environments/dev.config.ts +122 -0
  197. package/src/config/environments/index.ts +87 -0
  198. package/src/config/environments/localhost.config.ts +153 -0
  199. package/src/config/environments/prod.config.ts +142 -0
  200. package/src/config/index.ts +29 -0
  201. package/src/constants/assets.ts +299 -0
  202. package/src/constants/contracts.ts +64 -0
  203. package/src/constants/index.ts +69 -0
  204. package/src/constants/networks.ts +182 -0
  205. package/src/contracts/index.ts +5 -0
  206. package/src/contracts/viem/AlphaViem.ts +1615 -0
  207. package/src/contracts/viem/PriceOracleViem.ts +272 -0
  208. package/src/contracts/viem/index.ts +11 -0
  209. package/src/errors/index.ts +87 -0
  210. package/src/index.ts +59 -0
  211. package/src/types/VIEM_TYPES_README.md +70 -0
  212. package/src/types/alpha.ts +358 -0
  213. package/src/types/client.ts +27 -0
  214. package/src/types/contracts.ts +74 -0
  215. package/src/types/funding.ts +31 -0
  216. package/src/types/index.ts +108 -0
  217. package/src/types/liquidation.ts +23 -0
  218. package/src/types/margin.ts +34 -0
  219. package/src/types/oracle.ts +24 -0
  220. package/src/types/positions.ts +48 -0
  221. package/src/utils/calculations.ts +175 -0
  222. package/src/utils/errors.ts +147 -0
  223. package/src/utils/events.ts +98 -0
  224. package/src/utils/format.ts +84 -0
  225. package/src/utils/index.ts +10 -0
  226. package/src/utils/network.ts +212 -0
  227. package/src/utils/positionCalculations.ts +317 -0
  228. 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';