@kadi.build/deploy-ability 0.0.1
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/README.md +523 -0
- package/dist/constants.d.ts +82 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +82 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/certificate-error.d.ts +95 -0
- package/dist/errors/certificate-error.d.ts.map +1 -0
- package/dist/errors/certificate-error.js +111 -0
- package/dist/errors/certificate-error.js.map +1 -0
- package/dist/errors/deployment-error.d.ts +122 -0
- package/dist/errors/deployment-error.d.ts.map +1 -0
- package/dist/errors/deployment-error.js +185 -0
- package/dist/errors/deployment-error.js.map +1 -0
- package/dist/errors/index.d.ts +13 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +18 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/profile-error.d.ts +106 -0
- package/dist/errors/profile-error.d.ts.map +1 -0
- package/dist/errors/profile-error.js +127 -0
- package/dist/errors/profile-error.js.map +1 -0
- package/dist/errors/provider-error.d.ts +104 -0
- package/dist/errors/provider-error.d.ts.map +1 -0
- package/dist/errors/provider-error.js +120 -0
- package/dist/errors/provider-error.js.map +1 -0
- package/dist/errors/wallet-error.d.ts +131 -0
- package/dist/errors/wallet-error.d.ts.map +1 -0
- package/dist/errors/wallet-error.js +154 -0
- package/dist/errors/wallet-error.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/targets/akash/bid-selectors.d.ts +251 -0
- package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
- package/dist/targets/akash/bid-selectors.js +322 -0
- package/dist/targets/akash/bid-selectors.js.map +1 -0
- package/dist/targets/akash/bid-types.d.ts +297 -0
- package/dist/targets/akash/bid-types.d.ts.map +1 -0
- package/dist/targets/akash/bid-types.js +89 -0
- package/dist/targets/akash/bid-types.js.map +1 -0
- package/dist/targets/akash/blockchain-client.d.ts +577 -0
- package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
- package/dist/targets/akash/blockchain-client.js +803 -0
- package/dist/targets/akash/blockchain-client.js.map +1 -0
- package/dist/targets/akash/certificate-manager.d.ts +228 -0
- package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
- package/dist/targets/akash/certificate-manager.js +395 -0
- package/dist/targets/akash/certificate-manager.js.map +1 -0
- package/dist/targets/akash/constants.d.ts +231 -0
- package/dist/targets/akash/constants.d.ts.map +1 -0
- package/dist/targets/akash/constants.js +225 -0
- package/dist/targets/akash/constants.js.map +1 -0
- package/dist/targets/akash/deployer.d.ts +136 -0
- package/dist/targets/akash/deployer.d.ts.map +1 -0
- package/dist/targets/akash/deployer.js +599 -0
- package/dist/targets/akash/deployer.js.map +1 -0
- package/dist/targets/akash/environment.d.ts +241 -0
- package/dist/targets/akash/environment.d.ts.map +1 -0
- package/dist/targets/akash/environment.js +245 -0
- package/dist/targets/akash/environment.js.map +1 -0
- package/dist/targets/akash/index.d.ts +1113 -0
- package/dist/targets/akash/index.d.ts.map +1 -0
- package/dist/targets/akash/index.js +909 -0
- package/dist/targets/akash/index.js.map +1 -0
- package/dist/targets/akash/lease-monitor.d.ts +51 -0
- package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
- package/dist/targets/akash/lease-monitor.js +110 -0
- package/dist/targets/akash/lease-monitor.js.map +1 -0
- package/dist/targets/akash/logs.d.ts +71 -0
- package/dist/targets/akash/logs.d.ts.map +1 -0
- package/dist/targets/akash/logs.js +311 -0
- package/dist/targets/akash/logs.js.map +1 -0
- package/dist/targets/akash/logs.types.d.ts +102 -0
- package/dist/targets/akash/logs.types.d.ts.map +1 -0
- package/dist/targets/akash/logs.types.js +9 -0
- package/dist/targets/akash/logs.types.js.map +1 -0
- package/dist/targets/akash/pricing.d.ts +247 -0
- package/dist/targets/akash/pricing.d.ts.map +1 -0
- package/dist/targets/akash/pricing.js +246 -0
- package/dist/targets/akash/pricing.js.map +1 -0
- package/dist/targets/akash/provider-client.d.ts +114 -0
- package/dist/targets/akash/provider-client.d.ts.map +1 -0
- package/dist/targets/akash/provider-client.js +318 -0
- package/dist/targets/akash/provider-client.js.map +1 -0
- package/dist/targets/akash/provider-metadata.d.ts +228 -0
- package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
- package/dist/targets/akash/provider-metadata.js +14 -0
- package/dist/targets/akash/provider-metadata.js.map +1 -0
- package/dist/targets/akash/provider-service.d.ts +133 -0
- package/dist/targets/akash/provider-service.d.ts.map +1 -0
- package/dist/targets/akash/provider-service.js +391 -0
- package/dist/targets/akash/provider-service.js.map +1 -0
- package/dist/targets/akash/query-client.d.ts +125 -0
- package/dist/targets/akash/query-client.d.ts.map +1 -0
- package/dist/targets/akash/query-client.js +332 -0
- package/dist/targets/akash/query-client.js.map +1 -0
- package/dist/targets/akash/sdl-generator.d.ts +31 -0
- package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
- package/dist/targets/akash/sdl-generator.js +279 -0
- package/dist/targets/akash/sdl-generator.js.map +1 -0
- package/dist/targets/akash/types.d.ts +285 -0
- package/dist/targets/akash/types.d.ts.map +1 -0
- package/dist/targets/akash/types.js +54 -0
- package/dist/targets/akash/types.js.map +1 -0
- package/dist/targets/akash/wallet-manager.d.ts +526 -0
- package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
- package/dist/targets/akash/wallet-manager.js +953 -0
- package/dist/targets/akash/wallet-manager.js.map +1 -0
- package/dist/targets/local/compose-generator.d.ts +244 -0
- package/dist/targets/local/compose-generator.d.ts.map +1 -0
- package/dist/targets/local/compose-generator.js +324 -0
- package/dist/targets/local/compose-generator.js.map +1 -0
- package/dist/targets/local/deployer.d.ts +82 -0
- package/dist/targets/local/deployer.d.ts.map +1 -0
- package/dist/targets/local/deployer.js +367 -0
- package/dist/targets/local/deployer.js.map +1 -0
- package/dist/targets/local/engine-manager.d.ts +155 -0
- package/dist/targets/local/engine-manager.d.ts.map +1 -0
- package/dist/targets/local/engine-manager.js +250 -0
- package/dist/targets/local/engine-manager.js.map +1 -0
- package/dist/targets/local/index.d.ts +40 -0
- package/dist/targets/local/index.d.ts.map +1 -0
- package/dist/targets/local/index.js +43 -0
- package/dist/targets/local/index.js.map +1 -0
- package/dist/targets/local/network-manager.d.ts +160 -0
- package/dist/targets/local/network-manager.d.ts.map +1 -0
- package/dist/targets/local/network-manager.js +337 -0
- package/dist/targets/local/network-manager.js.map +1 -0
- package/dist/targets/local/types.d.ts +327 -0
- package/dist/targets/local/types.d.ts.map +1 -0
- package/dist/targets/local/types.js +9 -0
- package/dist/targets/local/types.js.map +1 -0
- package/dist/types/common.d.ts +585 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +13 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +329 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +10 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/profiles.d.ts +329 -0
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/profiles.js +27 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/results.d.ts +443 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +64 -0
- package/dist/types/results.js.map +1 -0
- package/dist/types/validators.d.ts +118 -0
- package/dist/types/validators.d.ts.map +1 -0
- package/dist/types/validators.js +198 -0
- package/dist/types/validators.js.map +1 -0
- package/dist/utils/command-runner.d.ts +128 -0
- package/dist/utils/command-runner.d.ts.map +1 -0
- package/dist/utils/command-runner.js +210 -0
- package/dist/utils/command-runner.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 +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +68 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +93 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/profile-loader.d.ts +76 -0
- package/dist/utils/profile-loader.d.ts.map +1 -0
- package/dist/utils/profile-loader.js +194 -0
- package/dist/utils/profile-loader.js.map +1 -0
- package/dist/utils/registry/index.d.ts +27 -0
- package/dist/utils/registry/index.d.ts.map +1 -0
- package/dist/utils/registry/index.js +29 -0
- package/dist/utils/registry/index.js.map +1 -0
- package/dist/utils/registry/manager.d.ts +319 -0
- package/dist/utils/registry/manager.d.ts.map +1 -0
- package/dist/utils/registry/manager.js +671 -0
- package/dist/utils/registry/manager.js.map +1 -0
- package/dist/utils/registry/setup.d.ts +135 -0
- package/dist/utils/registry/setup.d.ts.map +1 -0
- package/dist/utils/registry/setup.js +207 -0
- package/dist/utils/registry/setup.js.map +1 -0
- package/dist/utils/registry/transformer.d.ts +92 -0
- package/dist/utils/registry/transformer.d.ts.map +1 -0
- package/dist/utils/registry/transformer.js +131 -0
- package/dist/utils/registry/transformer.js.map +1 -0
- package/dist/utils/registry/types.d.ts +241 -0
- package/dist/utils/registry/types.d.ts.map +1 -0
- package/dist/utils/registry/types.js +10 -0
- package/dist/utils/registry/types.js.map +1 -0
- package/docs/EXAMPLES.md +293 -0
- package/docs/PLACEMENT.md +433 -0
- package/docs/STORAGE.md +318 -0
- package/docs/building-provider-reliability-tracker.md +2581 -0
- package/package.json +109 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Akash Network Environment Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Provides pure, readonly configuration for Akash Network deployments.
|
|
5
|
+
* NO file I/O, NO user prompts, NO environment variable loading.
|
|
6
|
+
*
|
|
7
|
+
* @module targets/akash/environment
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Akash network identifier
|
|
11
|
+
*
|
|
12
|
+
* - mainnet: Production network (real AKT tokens)
|
|
13
|
+
* - testnet: Testing network (free test tokens)
|
|
14
|
+
*/
|
|
15
|
+
export type AkashNetwork = 'mainnet' | 'testnet';
|
|
16
|
+
/**
|
|
17
|
+
* Network configuration for Akash blockchain
|
|
18
|
+
*
|
|
19
|
+
* Contains all data needed to connect to an Akash network:
|
|
20
|
+
* - RPC endpoint for blockchain queries and transactions
|
|
21
|
+
* - Chain ID for transaction signing
|
|
22
|
+
*
|
|
23
|
+
* @property rpc - RPC endpoint URL
|
|
24
|
+
* @property chainId - Blockchain chain identifier
|
|
25
|
+
*/
|
|
26
|
+
export interface NetworkConfiguration {
|
|
27
|
+
/** RPC endpoint URL (e.g., "https://rpc.akashnet.net:443") */
|
|
28
|
+
readonly rpc: string;
|
|
29
|
+
/** Chain ID (e.g., "akashnet-2" for mainnet) */
|
|
30
|
+
readonly chainId: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Mainnet RPC endpoints for Akash Network
|
|
34
|
+
*
|
|
35
|
+
* Multiple endpoints provide redundancy and load distribution.
|
|
36
|
+
* Clients can implement fallback logic if primary endpoint fails.
|
|
37
|
+
*
|
|
38
|
+
* Priority order (first is default):
|
|
39
|
+
* 1. Official Akash RPC (rpc.akashnet.net)
|
|
40
|
+
* 2. Forbole validator RPC
|
|
41
|
+
* 3. Ecostake validator RPC
|
|
42
|
+
* 4. Polkachu validator RPC
|
|
43
|
+
* 5. Community RPC (c29r3)
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Use primary endpoint
|
|
48
|
+
* const rpc = MAINNET_RPC_ENDPOINTS[0];
|
|
49
|
+
*
|
|
50
|
+
* // Implement fallback
|
|
51
|
+
* for (const endpoint of MAINNET_RPC_ENDPOINTS) {
|
|
52
|
+
* try {
|
|
53
|
+
* const client = await StargateClient.connect(endpoint);
|
|
54
|
+
* break; // Success
|
|
55
|
+
* } catch {
|
|
56
|
+
* continue; // Try next endpoint
|
|
57
|
+
* }
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const MAINNET_RPC_ENDPOINTS: readonly string[];
|
|
62
|
+
/**
|
|
63
|
+
* Testnet RPC endpoints for Akash Network
|
|
64
|
+
*
|
|
65
|
+
* Testnet is used for:
|
|
66
|
+
* - Development and testing
|
|
67
|
+
* - Learning without risking real tokens
|
|
68
|
+
* - Integration testing before mainnet deployment
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const rpc = TESTNET_RPC_ENDPOINTS[0];
|
|
73
|
+
* const client = await StargateClient.connect(rpc);
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare const TESTNET_RPC_ENDPOINTS: readonly string[];
|
|
77
|
+
/**
|
|
78
|
+
* Akash network configuration mapping
|
|
79
|
+
*
|
|
80
|
+
* Immutable configuration for all supported Akash networks.
|
|
81
|
+
* Used throughout the deployment process for:
|
|
82
|
+
* - Blockchain queries and transactions
|
|
83
|
+
* - Network-specific certificate validation
|
|
84
|
+
* - Provider communication and bid evaluation
|
|
85
|
+
*
|
|
86
|
+
* Why as const?
|
|
87
|
+
* - Ensures configuration cannot be accidentally modified
|
|
88
|
+
* - Enables TypeScript to infer exact string literal types
|
|
89
|
+
* - Catches typos at compile time (e.g., 'mainet' vs 'mainnet')
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* // Get network config
|
|
94
|
+
* const network = AKASH_NETWORKS.mainnet;
|
|
95
|
+
* console.log('RPC:', network.rpc);
|
|
96
|
+
* console.log('Chain:', network.chainId);
|
|
97
|
+
*
|
|
98
|
+
* // Type-safe network selection
|
|
99
|
+
* function getConfig(net: AkashNetwork) {
|
|
100
|
+
* return AKASH_NETWORKS[net]; // Compile-time checked
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare const AKASH_NETWORKS: {
|
|
105
|
+
/**
|
|
106
|
+
* Mainnet configuration
|
|
107
|
+
* - Real AKT tokens
|
|
108
|
+
* - Production deployments
|
|
109
|
+
* - Chain ID: akashnet-2
|
|
110
|
+
*/
|
|
111
|
+
readonly mainnet: {
|
|
112
|
+
readonly rpc: string;
|
|
113
|
+
readonly chainId: "akashnet-2";
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Testnet configuration
|
|
117
|
+
* - Free test tokens from faucet
|
|
118
|
+
* - Testing and development
|
|
119
|
+
* - Chain ID: sandbox-01
|
|
120
|
+
*/
|
|
121
|
+
readonly testnet: {
|
|
122
|
+
readonly rpc: string;
|
|
123
|
+
readonly chainId: "sandbox-01";
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Blacklisted provider addresses
|
|
128
|
+
*
|
|
129
|
+
* Providers in this set have shown unreliable behavior and should be
|
|
130
|
+
* excluded from bid selection. Issues include:
|
|
131
|
+
* - Failed deployments
|
|
132
|
+
* - Unresponsive provider APIs
|
|
133
|
+
* - Frequent downtime
|
|
134
|
+
* - Poor performance
|
|
135
|
+
*
|
|
136
|
+
* This list is periodically updated based on community reports and
|
|
137
|
+
* monitoring data.
|
|
138
|
+
*
|
|
139
|
+
* Implementation Note:
|
|
140
|
+
* Using Set for O(1) lookup performance during bid filtering.
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* // Filter out blacklisted providers
|
|
145
|
+
* const validBids = allBids.filter(bid =>
|
|
146
|
+
* !BLACKLISTED_PROVIDERS.has(bid.provider)
|
|
147
|
+
* );
|
|
148
|
+
*
|
|
149
|
+
* // Check if specific provider is blacklisted
|
|
150
|
+
* if (BLACKLISTED_PROVIDERS.has(providerAddress)) {
|
|
151
|
+
* console.log('Skipping blacklisted provider');
|
|
152
|
+
* }
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare const BLACKLISTED_PROVIDERS: ReadonlySet<string>;
|
|
156
|
+
/**
|
|
157
|
+
* Get network configuration for specified Akash network
|
|
158
|
+
*
|
|
159
|
+
* Pure function that returns network configuration.
|
|
160
|
+
* No side effects, no I/O, just data lookup.
|
|
161
|
+
*
|
|
162
|
+
* @param network - Network identifier ('mainnet' or 'testnet')
|
|
163
|
+
* @returns Network configuration
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* const config = getNetworkConfig('mainnet');
|
|
168
|
+
* console.log('Connecting to:', config.rpc);
|
|
169
|
+
* console.log('Chain ID:', config.chainId);
|
|
170
|
+
*
|
|
171
|
+
* // Use in deployment
|
|
172
|
+
* const client = await StargateClient.connect(config.rpc);
|
|
173
|
+
* const wallet = await getOfflineSigner(config.chainId);
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare function getNetworkConfig(network: AkashNetwork): NetworkConfiguration;
|
|
177
|
+
/**
|
|
178
|
+
* Get all available RPC endpoints for a network
|
|
179
|
+
*
|
|
180
|
+
* Returns array of RPC endpoints for failover/load balancing.
|
|
181
|
+
* Caller can implement retry logic across multiple endpoints.
|
|
182
|
+
*
|
|
183
|
+
* @param network - Network identifier
|
|
184
|
+
* @returns Array of RPC endpoint URLs
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* // Try each endpoint until one connects
|
|
189
|
+
* const endpoints = getAllRpcEndpoints('mainnet');
|
|
190
|
+
* for (const rpc of endpoints) {
|
|
191
|
+
* try {
|
|
192
|
+
* const client = await StargateClient.connect(rpc);
|
|
193
|
+
* console.log('Connected to:', rpc);
|
|
194
|
+
* break;
|
|
195
|
+
* } catch (error) {
|
|
196
|
+
* console.log('Failed to connect to:', rpc);
|
|
197
|
+
* continue; // Try next
|
|
198
|
+
* }
|
|
199
|
+
* }
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
export declare function getAllRpcEndpoints(network: AkashNetwork): readonly string[];
|
|
203
|
+
/**
|
|
204
|
+
* Check if a provider is blacklisted
|
|
205
|
+
*
|
|
206
|
+
* Helper function for bid filtering logic.
|
|
207
|
+
*
|
|
208
|
+
* @param providerAddress - Provider's Akash address
|
|
209
|
+
* @returns True if provider should be avoided
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```typescript
|
|
213
|
+
* // Filter bids
|
|
214
|
+
* const validBids = bids.filter(bid =>
|
|
215
|
+
* !isProviderBlacklisted(bid.bidId.provider)
|
|
216
|
+
* );
|
|
217
|
+
*
|
|
218
|
+
* // Log warning
|
|
219
|
+
* if (isProviderBlacklisted(provider)) {
|
|
220
|
+
* logger.warn(`Skipping blacklisted provider: ${provider}`);
|
|
221
|
+
* }
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
export declare function isProviderBlacklisted(providerAddress: string): boolean;
|
|
225
|
+
/**
|
|
226
|
+
* Type guard: Check if string is valid AkashNetwork
|
|
227
|
+
*
|
|
228
|
+
* @param value - Value to check
|
|
229
|
+
* @returns True if value is 'mainnet' or 'testnet'
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* const userInput = 'mainnet';
|
|
234
|
+
* if (isAkashNetwork(userInput)) {
|
|
235
|
+
* // TypeScript knows userInput is 'mainnet' | 'testnet'
|
|
236
|
+
* const config = getNetworkConfig(userInput);
|
|
237
|
+
* }
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
export declare function isAkashNetwork(value: string): value is AkashNetwork;
|
|
241
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/targets/akash/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAMzC,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAEzC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,cAAc;IACzB;;;;;OAKG;;;;;IAMH;;;;;OAKG;;;;;CAKK,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAMpD,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,oBAAoB,CAE5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAO3E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Akash Network Environment Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Provides pure, readonly configuration for Akash Network deployments.
|
|
5
|
+
* NO file I/O, NO user prompts, NO environment variable loading.
|
|
6
|
+
*
|
|
7
|
+
* @module targets/akash/environment
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Mainnet RPC endpoints for Akash Network
|
|
11
|
+
*
|
|
12
|
+
* Multiple endpoints provide redundancy and load distribution.
|
|
13
|
+
* Clients can implement fallback logic if primary endpoint fails.
|
|
14
|
+
*
|
|
15
|
+
* Priority order (first is default):
|
|
16
|
+
* 1. Official Akash RPC (rpc.akashnet.net)
|
|
17
|
+
* 2. Forbole validator RPC
|
|
18
|
+
* 3. Ecostake validator RPC
|
|
19
|
+
* 4. Polkachu validator RPC
|
|
20
|
+
* 5. Community RPC (c29r3)
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Use primary endpoint
|
|
25
|
+
* const rpc = MAINNET_RPC_ENDPOINTS[0];
|
|
26
|
+
*
|
|
27
|
+
* // Implement fallback
|
|
28
|
+
* for (const endpoint of MAINNET_RPC_ENDPOINTS) {
|
|
29
|
+
* try {
|
|
30
|
+
* const client = await StargateClient.connect(endpoint);
|
|
31
|
+
* break; // Success
|
|
32
|
+
* } catch {
|
|
33
|
+
* continue; // Try next endpoint
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export const MAINNET_RPC_ENDPOINTS = [
|
|
39
|
+
'https://rpc.akashnet.net:443',
|
|
40
|
+
'https://rpc.akash.forbole.com:443',
|
|
41
|
+
'https://rpc-akash.ecostake.com:443',
|
|
42
|
+
'https://akash-rpc.polkachu.com:443',
|
|
43
|
+
'https://akash.c29r3.xyz:443/rpc'
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Testnet RPC endpoints for Akash Network
|
|
47
|
+
*
|
|
48
|
+
* Testnet is used for:
|
|
49
|
+
* - Development and testing
|
|
50
|
+
* - Learning without risking real tokens
|
|
51
|
+
* - Integration testing before mainnet deployment
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const rpc = TESTNET_RPC_ENDPOINTS[0];
|
|
56
|
+
* const client = await StargateClient.connect(rpc);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export const TESTNET_RPC_ENDPOINTS = [
|
|
60
|
+
'https://rpc.sandbox-01.aksh.pw:443'
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Akash network configuration mapping
|
|
64
|
+
*
|
|
65
|
+
* Immutable configuration for all supported Akash networks.
|
|
66
|
+
* Used throughout the deployment process for:
|
|
67
|
+
* - Blockchain queries and transactions
|
|
68
|
+
* - Network-specific certificate validation
|
|
69
|
+
* - Provider communication and bid evaluation
|
|
70
|
+
*
|
|
71
|
+
* Why as const?
|
|
72
|
+
* - Ensures configuration cannot be accidentally modified
|
|
73
|
+
* - Enables TypeScript to infer exact string literal types
|
|
74
|
+
* - Catches typos at compile time (e.g., 'mainet' vs 'mainnet')
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* // Get network config
|
|
79
|
+
* const network = AKASH_NETWORKS.mainnet;
|
|
80
|
+
* console.log('RPC:', network.rpc);
|
|
81
|
+
* console.log('Chain:', network.chainId);
|
|
82
|
+
*
|
|
83
|
+
* // Type-safe network selection
|
|
84
|
+
* function getConfig(net: AkashNetwork) {
|
|
85
|
+
* return AKASH_NETWORKS[net]; // Compile-time checked
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export const AKASH_NETWORKS = {
|
|
90
|
+
/**
|
|
91
|
+
* Mainnet configuration
|
|
92
|
+
* - Real AKT tokens
|
|
93
|
+
* - Production deployments
|
|
94
|
+
* - Chain ID: akashnet-2
|
|
95
|
+
*/
|
|
96
|
+
mainnet: {
|
|
97
|
+
rpc: MAINNET_RPC_ENDPOINTS[0],
|
|
98
|
+
chainId: 'akashnet-2'
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* Testnet configuration
|
|
102
|
+
* - Free test tokens from faucet
|
|
103
|
+
* - Testing and development
|
|
104
|
+
* - Chain ID: sandbox-01
|
|
105
|
+
*/
|
|
106
|
+
testnet: {
|
|
107
|
+
rpc: TESTNET_RPC_ENDPOINTS[0],
|
|
108
|
+
chainId: 'sandbox-01'
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Blacklisted provider addresses
|
|
113
|
+
*
|
|
114
|
+
* Providers in this set have shown unreliable behavior and should be
|
|
115
|
+
* excluded from bid selection. Issues include:
|
|
116
|
+
* - Failed deployments
|
|
117
|
+
* - Unresponsive provider APIs
|
|
118
|
+
* - Frequent downtime
|
|
119
|
+
* - Poor performance
|
|
120
|
+
*
|
|
121
|
+
* This list is periodically updated based on community reports and
|
|
122
|
+
* monitoring data.
|
|
123
|
+
*
|
|
124
|
+
* Implementation Note:
|
|
125
|
+
* Using Set for O(1) lookup performance during bid filtering.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* // Filter out blacklisted providers
|
|
130
|
+
* const validBids = allBids.filter(bid =>
|
|
131
|
+
* !BLACKLISTED_PROVIDERS.has(bid.provider)
|
|
132
|
+
* );
|
|
133
|
+
*
|
|
134
|
+
* // Check if specific provider is blacklisted
|
|
135
|
+
* if (BLACKLISTED_PROVIDERS.has(providerAddress)) {
|
|
136
|
+
* console.log('Skipping blacklisted provider');
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export const BLACKLISTED_PROVIDERS = new Set([
|
|
141
|
+
// Provider addresses with known issues
|
|
142
|
+
'akash1p5ptazlyc2zpt6jfwa7uupvf97t7wn3ys4kpdg',
|
|
143
|
+
'akash1p3n6cwgfd5v98nwm8zfjfg99adxz26jx0nehcg',
|
|
144
|
+
'akash1zlsep362zz46qlwzttm06t8lv9qtg8gtaya97u',
|
|
145
|
+
'akash1qk9dg3kr3jx6q5l2uf7g7mm8st2mr8ylfakepy'
|
|
146
|
+
]);
|
|
147
|
+
/**
|
|
148
|
+
* Get network configuration for specified Akash network
|
|
149
|
+
*
|
|
150
|
+
* Pure function that returns network configuration.
|
|
151
|
+
* No side effects, no I/O, just data lookup.
|
|
152
|
+
*
|
|
153
|
+
* @param network - Network identifier ('mainnet' or 'testnet')
|
|
154
|
+
* @returns Network configuration
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* const config = getNetworkConfig('mainnet');
|
|
159
|
+
* console.log('Connecting to:', config.rpc);
|
|
160
|
+
* console.log('Chain ID:', config.chainId);
|
|
161
|
+
*
|
|
162
|
+
* // Use in deployment
|
|
163
|
+
* const client = await StargateClient.connect(config.rpc);
|
|
164
|
+
* const wallet = await getOfflineSigner(config.chainId);
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export function getNetworkConfig(network) {
|
|
168
|
+
return AKASH_NETWORKS[network];
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get all available RPC endpoints for a network
|
|
172
|
+
*
|
|
173
|
+
* Returns array of RPC endpoints for failover/load balancing.
|
|
174
|
+
* Caller can implement retry logic across multiple endpoints.
|
|
175
|
+
*
|
|
176
|
+
* @param network - Network identifier
|
|
177
|
+
* @returns Array of RPC endpoint URLs
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* // Try each endpoint until one connects
|
|
182
|
+
* const endpoints = getAllRpcEndpoints('mainnet');
|
|
183
|
+
* for (const rpc of endpoints) {
|
|
184
|
+
* try {
|
|
185
|
+
* const client = await StargateClient.connect(rpc);
|
|
186
|
+
* console.log('Connected to:', rpc);
|
|
187
|
+
* break;
|
|
188
|
+
* } catch (error) {
|
|
189
|
+
* console.log('Failed to connect to:', rpc);
|
|
190
|
+
* continue; // Try next
|
|
191
|
+
* }
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export function getAllRpcEndpoints(network) {
|
|
196
|
+
switch (network) {
|
|
197
|
+
case 'mainnet':
|
|
198
|
+
return MAINNET_RPC_ENDPOINTS;
|
|
199
|
+
case 'testnet':
|
|
200
|
+
return TESTNET_RPC_ENDPOINTS;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if a provider is blacklisted
|
|
205
|
+
*
|
|
206
|
+
* Helper function for bid filtering logic.
|
|
207
|
+
*
|
|
208
|
+
* @param providerAddress - Provider's Akash address
|
|
209
|
+
* @returns True if provider should be avoided
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```typescript
|
|
213
|
+
* // Filter bids
|
|
214
|
+
* const validBids = bids.filter(bid =>
|
|
215
|
+
* !isProviderBlacklisted(bid.bidId.provider)
|
|
216
|
+
* );
|
|
217
|
+
*
|
|
218
|
+
* // Log warning
|
|
219
|
+
* if (isProviderBlacklisted(provider)) {
|
|
220
|
+
* logger.warn(`Skipping blacklisted provider: ${provider}`);
|
|
221
|
+
* }
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
export function isProviderBlacklisted(providerAddress) {
|
|
225
|
+
return BLACKLISTED_PROVIDERS.has(providerAddress);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Type guard: Check if string is valid AkashNetwork
|
|
229
|
+
*
|
|
230
|
+
* @param value - Value to check
|
|
231
|
+
* @returns True if value is 'mainnet' or 'testnet'
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* const userInput = 'mainnet';
|
|
236
|
+
* if (isAkashNetwork(userInput)) {
|
|
237
|
+
* // TypeScript knows userInput is 'mainnet' | 'testnet'
|
|
238
|
+
* const config = getNetworkConfig(userInput);
|
|
239
|
+
* }
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
export function isAkashNetwork(value) {
|
|
243
|
+
return value === 'mainnet' || value === 'testnet';
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/targets/akash/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,8BAA8B;IAC9B,mCAAmC;IACnC,oCAAoC;IACpC,oCAAoC;IACpC,iCAAiC;CACzB,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,oCAAoC;CAC5B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;;;;;OAKG;IACH,OAAO,EAAE;QACP,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAE;QAC9B,OAAO,EAAE,YAAY;KACtB;IAED;;;;;OAKG;IACH,OAAO,EAAE;QACP,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAE;QAC9B,OAAO,EAAE,YAAY;KACtB;CACO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,uCAAuC;IACvC,8CAA8C;IAC9C,8CAA8C;IAC9C,8CAA8C;IAC9C,8CAA8C;CAC/C,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAqB;IACtD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,qBAAqB,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,qBAAqB,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CAAC,eAAuB;IAC3D,OAAO,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC;AACpD,CAAC"}
|