@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
package/package.json
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@megatao/sdk",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "TypeScript SDK for MegaTAO perpetual futures protocol",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"dev": "tsc --watch",
|
|
10
|
+
"clean": "rm -rf dist",
|
|
11
|
+
"test": "jest",
|
|
12
|
+
"test:unit": "jest test/unit",
|
|
13
|
+
"test:integration": "jest test/integration",
|
|
14
|
+
"test:integration:anvil": "jest test/integration/anvil-trading.test.ts",
|
|
15
|
+
"test:e2e": "jest test/e2e",
|
|
16
|
+
"test:cli": "jest test/cli",
|
|
17
|
+
"test:watch": "jest --watch",
|
|
18
|
+
"test:coverage": "jest --coverage",
|
|
19
|
+
"test:ci": "jest --coverage --ci --reporters=default --reporters=jest-junit",
|
|
20
|
+
"anvil:start": "../script/e2e/anvil-manager.sh start",
|
|
21
|
+
"anvil:stop": "../script/e2e/anvil-manager.sh stop",
|
|
22
|
+
"anvil:restart": "../script/e2e/anvil-manager.sh restart",
|
|
23
|
+
"anvil:status": "../script/e2e/anvil-manager.sh status",
|
|
24
|
+
"anvil:logs": "../script/e2e/anvil-manager.sh logs",
|
|
25
|
+
"deploy:anvil": "../script/e2e/deploy.sh",
|
|
26
|
+
"lint": "eslint src --ext .ts",
|
|
27
|
+
"format": "prettier --write \"src/**/*.ts\" \"examples/**/*.ts\" \"cli/**/*.ts\"",
|
|
28
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
29
|
+
"cli": "tsx cli/index.ts",
|
|
30
|
+
"cli:dev": "tsx watch cli/index.ts",
|
|
31
|
+
"cli:interactive": "tsx cli/interactive.ts",
|
|
32
|
+
"postinstall": "node -e \"console.log('\\n✨ MegaTAO SDK installed successfully!\\n\\nRun \\'npx alf --help\\' to get started.\\n')\"",
|
|
33
|
+
"generate:abis": "ts-node scripts/generate-abis.ts",
|
|
34
|
+
"generate": "npm run generate:abis",
|
|
35
|
+
"sync-abi": "ts-node scripts/sync-abi.ts",
|
|
36
|
+
"sync": "ts-node scripts/sync-deployment.ts",
|
|
37
|
+
"typecheck": "tsc --noEmit",
|
|
38
|
+
"deploy:anvil": "./scripts/deploy-monolith-anvil.sh",
|
|
39
|
+
"test:deployment": "./scripts/test-deployment.sh",
|
|
40
|
+
"deploy:test": "npm run deploy:anvil && npm run test:deployment"
|
|
41
|
+
},
|
|
42
|
+
"keywords": [
|
|
43
|
+
"megatao",
|
|
44
|
+
"perpetual-futures",
|
|
45
|
+
"defi",
|
|
46
|
+
"bittensor",
|
|
47
|
+
"typescript",
|
|
48
|
+
"sdk"
|
|
49
|
+
],
|
|
50
|
+
"author": "MegaTAO Team",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@types/node": "^20.10.5",
|
|
54
|
+
"abitype": "^1.0.0",
|
|
55
|
+
"chalk": "^5.3.0",
|
|
56
|
+
"cli-table3": "^0.6.3",
|
|
57
|
+
"commander": "^11.1.0",
|
|
58
|
+
"conf": "^12.0.0",
|
|
59
|
+
"dotenv": "^16.3.1",
|
|
60
|
+
"figlet": "^1.7.0",
|
|
61
|
+
"inquirer": "^9.2.12",
|
|
62
|
+
"ora": "^7.0.1",
|
|
63
|
+
"tsx": "^4.20.5",
|
|
64
|
+
"viem": "^2.38.6"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"viem": "^2.0.0"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/figlet": "^1.5.8",
|
|
71
|
+
"@types/inquirer": "^9.0.7",
|
|
72
|
+
"@types/jest": "^29.5.11",
|
|
73
|
+
"@typescript-eslint/eslint-plugin": "^6.15.0",
|
|
74
|
+
"@typescript-eslint/parser": "^6.15.0",
|
|
75
|
+
"eslint": "^8.56.0",
|
|
76
|
+
"eslint-config-prettier": "^9.1.0",
|
|
77
|
+
"jest": "^29.7.0",
|
|
78
|
+
"jest-junit": "^16.0.0",
|
|
79
|
+
"prettier": "^3.1.1",
|
|
80
|
+
"ts-jest": "^29.1.1",
|
|
81
|
+
"ts-node": "^10.9.2",
|
|
82
|
+
"typescript": "^5.3.3"
|
|
83
|
+
},
|
|
84
|
+
"bin": {
|
|
85
|
+
"alf": "./bin/alf"
|
|
86
|
+
},
|
|
87
|
+
"files": [
|
|
88
|
+
"dist",
|
|
89
|
+
"src",
|
|
90
|
+
"cli",
|
|
91
|
+
"bin",
|
|
92
|
+
"docs",
|
|
93
|
+
"README.md",
|
|
94
|
+
"CHANGELOG.md",
|
|
95
|
+
"config.example.json",
|
|
96
|
+
".env.example"
|
|
97
|
+
],
|
|
98
|
+
"engines": {
|
|
99
|
+
"node": ">=16.0.0"
|
|
100
|
+
},
|
|
101
|
+
"publishConfig": {
|
|
102
|
+
"access": "public"
|
|
103
|
+
},
|
|
104
|
+
"repository": {
|
|
105
|
+
"type": "git",
|
|
106
|
+
"url": "https://github.com/mega-tao/megatao-monorepo",
|
|
107
|
+
"directory": "sdk"
|
|
108
|
+
},
|
|
109
|
+
"homepage": "https://megatao.com",
|
|
110
|
+
"bugs": {
|
|
111
|
+
"url": "https://github.com/mega-tao/megatao-monorepo/issues"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alpha Futures Client
|
|
3
|
+
* Main client class that provides access to all protocol contracts
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { PriceOracleViem } from './contracts/viem/PriceOracleViem';
|
|
7
|
+
import { AlphaViem } from './contracts/viem/AlphaViem';
|
|
8
|
+
import { getEnvironmentConfig, type Environment } from './config/environments';
|
|
9
|
+
import {
|
|
10
|
+
createPublicClient,
|
|
11
|
+
createWalletClient,
|
|
12
|
+
http,
|
|
13
|
+
type PublicClient,
|
|
14
|
+
type WalletClient,
|
|
15
|
+
type Address,
|
|
16
|
+
} from 'viem';
|
|
17
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
18
|
+
|
|
19
|
+
export interface AlphaClientConfig {
|
|
20
|
+
rpcUrl?: string;
|
|
21
|
+
privateKey?: `0x${string}`;
|
|
22
|
+
walletClient?: WalletClient;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class AlphaFuturesClient {
|
|
26
|
+
private alphaContract: AlphaViem;
|
|
27
|
+
private oracleContract: PriceOracleViem;
|
|
28
|
+
private publicClient: PublicClient;
|
|
29
|
+
private walletClient?: WalletClient;
|
|
30
|
+
private environment?: Environment;
|
|
31
|
+
public readonly oracle: PriceOracleViem;
|
|
32
|
+
|
|
33
|
+
constructor(environment: Environment, config: AlphaClientConfig = {}) {
|
|
34
|
+
this.environment = environment;
|
|
35
|
+
const envConfig = getEnvironmentConfig(environment);
|
|
36
|
+
|
|
37
|
+
const rpcUrl = config.rpcUrl || envConfig.rpcUrl || 'http://localhost:8545';
|
|
38
|
+
// Multicall3 is deployed at the standard address on Bittensor EVM
|
|
39
|
+
const MULTICALL3_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11';
|
|
40
|
+
|
|
41
|
+
// Only configure multicall3 for non-localhost environments
|
|
42
|
+
// Anvil/localhost doesn't have multicall3 deployed by default
|
|
43
|
+
const isLocalhost = environment === 'localhost';
|
|
44
|
+
const chain = {
|
|
45
|
+
id: envConfig.chainId,
|
|
46
|
+
name: envConfig.name,
|
|
47
|
+
network: envConfig.name.toLowerCase().replace(/\s+/g, '-'),
|
|
48
|
+
nativeCurrency: { name: 'TAO', symbol: 'TAO', decimals: 18 },
|
|
49
|
+
rpcUrls: {
|
|
50
|
+
default: { http: [rpcUrl] },
|
|
51
|
+
public: { http: [rpcUrl] },
|
|
52
|
+
},
|
|
53
|
+
...(isLocalhost
|
|
54
|
+
? {}
|
|
55
|
+
: {
|
|
56
|
+
contracts: {
|
|
57
|
+
multicall3: {
|
|
58
|
+
address: MULTICALL3_ADDRESS as Address,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}),
|
|
62
|
+
} as any;
|
|
63
|
+
|
|
64
|
+
// Create public client with caching disabled for fresh blockchain data
|
|
65
|
+
// Multicall enabled only for non-localhost: batches eth_call requests into single multicall3 call
|
|
66
|
+
// This improves performance and guarantees all reads are from the same block
|
|
67
|
+
this.publicClient = createPublicClient({
|
|
68
|
+
chain,
|
|
69
|
+
transport: http(rpcUrl, {
|
|
70
|
+
// Disable Next.js/Vercel fetch caching - critical for fresh blockchain data
|
|
71
|
+
fetchOptions: { cache: 'no-store' },
|
|
72
|
+
}),
|
|
73
|
+
cacheTime: 0, // Disable viem's internal caching
|
|
74
|
+
...(isLocalhost
|
|
75
|
+
? {}
|
|
76
|
+
: {
|
|
77
|
+
batch: {
|
|
78
|
+
multicall: {
|
|
79
|
+
wait: 10, // Batch requests within 10ms window
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
}),
|
|
83
|
+
}) as PublicClient;
|
|
84
|
+
|
|
85
|
+
// Use provided wallet client or create one from private key
|
|
86
|
+
if (config.walletClient) {
|
|
87
|
+
this.walletClient = config.walletClient;
|
|
88
|
+
} else if (config.privateKey) {
|
|
89
|
+
const account = privateKeyToAccount(config.privateKey);
|
|
90
|
+
this.walletClient = createWalletClient({
|
|
91
|
+
account,
|
|
92
|
+
chain,
|
|
93
|
+
transport: http(rpcUrl, { fetchOptions: { cache: 'no-store' } }),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Initialize Alpha contract
|
|
98
|
+
this.alphaContract = new AlphaViem(
|
|
99
|
+
envConfig.contracts.alpha as Address,
|
|
100
|
+
this.publicClient,
|
|
101
|
+
this.walletClient,
|
|
102
|
+
envConfig.contracts.collateralToken as Address,
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
// Initialize Oracle contract
|
|
106
|
+
this.oracleContract = new PriceOracleViem(
|
|
107
|
+
envConfig.contracts.priceOracle as Address,
|
|
108
|
+
this.publicClient,
|
|
109
|
+
this.walletClient,
|
|
110
|
+
);
|
|
111
|
+
this.oracle = this.oracleContract;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
getAlpha(): AlphaViem {
|
|
115
|
+
return this.alphaContract;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
getPublicClient(): PublicClient {
|
|
119
|
+
return this.publicClient;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
getWalletClient(): WalletClient | undefined {
|
|
123
|
+
return this.walletClient;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
getEnvironment(): Environment | undefined {
|
|
127
|
+
return this.environment;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
get isInitialized(): boolean {
|
|
131
|
+
return !!this.alphaContract;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
get isConnected(): boolean {
|
|
135
|
+
return !!this.walletClient;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async getSignerAddress(): Promise<Address | undefined> {
|
|
139
|
+
return this.walletClient?.account?.address;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Get the collateral token address (TAO/USDC) for the current environment
|
|
144
|
+
* @returns The collateral token contract address
|
|
145
|
+
*/
|
|
146
|
+
getCollateralTokenAddress(): Address | undefined {
|
|
147
|
+
if (!this.environment) return undefined;
|
|
148
|
+
const envConfig = getEnvironmentConfig(this.environment);
|
|
149
|
+
return envConfig.contracts.collateralToken;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
static forEnvironment(
|
|
153
|
+
environment: Environment,
|
|
154
|
+
config: AlphaClientConfig = {},
|
|
155
|
+
): AlphaFuturesClient {
|
|
156
|
+
return new AlphaFuturesClient(environment, config);
|
|
157
|
+
}
|
|
158
|
+
}
|
package/src/abi/.gitkeep
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# ABI files will be generated here by the generate-abis script
|