@echoclaw/echo-0g 1.0.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/README.md +1175 -0
- package/dist/0g-compute/account.d.ts +36 -0
- package/dist/0g-compute/account.d.ts.map +1 -0
- package/dist/0g-compute/account.js +85 -0
- package/dist/0g-compute/account.js.map +1 -0
- package/dist/0g-compute/bridge.d.ts +16 -0
- package/dist/0g-compute/bridge.d.ts.map +1 -0
- package/dist/0g-compute/bridge.js +40 -0
- package/dist/0g-compute/bridge.js.map +1 -0
- package/dist/0g-compute/broker-factory.d.ts +19 -0
- package/dist/0g-compute/broker-factory.d.ts.map +1 -0
- package/dist/0g-compute/broker-factory.js +65 -0
- package/dist/0g-compute/broker-factory.js.map +1 -0
- package/dist/0g-compute/constants.d.ts +10 -0
- package/dist/0g-compute/constants.d.ts.map +1 -0
- package/dist/0g-compute/constants.js +12 -0
- package/dist/0g-compute/constants.js.map +1 -0
- package/dist/0g-compute/monitor.d.ts +43 -0
- package/dist/0g-compute/monitor.d.ts.map +1 -0
- package/dist/0g-compute/monitor.js +302 -0
- package/dist/0g-compute/monitor.js.map +1 -0
- package/dist/0g-compute/pricing.d.ts +43 -0
- package/dist/0g-compute/pricing.d.ts.map +1 -0
- package/dist/0g-compute/pricing.js +53 -0
- package/dist/0g-compute/pricing.js.map +1 -0
- package/dist/0g-compute/sdk-bridge.cjs +17 -0
- package/dist/0g-compute/sdk-bridge.cjs.map +1 -0
- package/dist/0g-compute/sdk-bridge.d.cts +9 -0
- package/dist/0g-compute/sdk-bridge.d.cts.map +1 -0
- package/dist/0g-compute/smoke-test.d.ts +11 -0
- package/dist/0g-compute/smoke-test.d.ts.map +1 -0
- package/dist/0g-compute/smoke-test.js +172 -0
- package/dist/0g-compute/smoke-test.js.map +1 -0
- package/dist/bot/daemon.d.ts +34 -0
- package/dist/bot/daemon.d.ts.map +1 -0
- package/dist/bot/daemon.js +386 -0
- package/dist/bot/daemon.js.map +1 -0
- package/dist/bot/executor.d.ts +14238 -0
- package/dist/bot/executor.d.ts.map +1 -0
- package/dist/bot/executor.js +183 -0
- package/dist/bot/executor.js.map +1 -0
- package/dist/bot/nonce-queue.d.ts +20 -0
- package/dist/bot/nonce-queue.d.ts.map +1 -0
- package/dist/bot/nonce-queue.js +41 -0
- package/dist/bot/nonce-queue.js.map +1 -0
- package/dist/bot/notify.d.ts +15 -0
- package/dist/bot/notify.d.ts.map +1 -0
- package/dist/bot/notify.js +98 -0
- package/dist/bot/notify.js.map +1 -0
- package/dist/bot/orders.d.ts +30 -0
- package/dist/bot/orders.d.ts.map +1 -0
- package/dist/bot/orders.js +172 -0
- package/dist/bot/orders.js.map +1 -0
- package/dist/bot/state.d.ts +14 -0
- package/dist/bot/state.d.ts.map +1 -0
- package/dist/bot/state.js +109 -0
- package/dist/bot/state.js.map +1 -0
- package/dist/bot/stream.d.ts +28 -0
- package/dist/bot/stream.d.ts.map +1 -0
- package/dist/bot/stream.js +96 -0
- package/dist/bot/stream.js.map +1 -0
- package/dist/bot/triggers.d.ts +17 -0
- package/dist/bot/triggers.d.ts.map +1 -0
- package/dist/bot/triggers.js +95 -0
- package/dist/bot/triggers.js.map +1 -0
- package/dist/bot/types.d.ts +199 -0
- package/dist/bot/types.d.ts.map +1 -0
- package/dist/bot/types.js +12 -0
- package/dist/bot/types.js.map +1 -0
- package/dist/chainscan/client.d.ts +28 -0
- package/dist/chainscan/client.d.ts.map +1 -0
- package/dist/chainscan/client.js +361 -0
- package/dist/chainscan/client.js.map +1 -0
- package/dist/chainscan/constants.d.ts +15 -0
- package/dist/chainscan/constants.d.ts.map +1 -0
- package/dist/chainscan/constants.js +15 -0
- package/dist/chainscan/constants.js.map +1 -0
- package/dist/chainscan/types.d.ts +148 -0
- package/dist/chainscan/types.d.ts.map +1 -0
- package/dist/chainscan/types.js +2 -0
- package/dist/chainscan/types.js.map +1 -0
- package/dist/chainscan/validation.d.ts +35 -0
- package/dist/chainscan/validation.d.ts.map +1 -0
- package/dist/chainscan/validation.js +97 -0
- package/dist/chainscan/validation.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +328 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/0g-compute.d.ts +21 -0
- package/dist/commands/0g-compute.d.ts.map +1 -0
- package/dist/commands/0g-compute.js +850 -0
- package/dist/commands/0g-compute.js.map +1 -0
- package/dist/commands/chainscan.d.ts +17 -0
- package/dist/commands/chainscan.d.ts.map +1 -0
- package/dist/commands/chainscan.js +605 -0
- package/dist/commands/chainscan.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +251 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/echobook.d.ts +17 -0
- package/dist/commands/echobook.d.ts.map +1 -0
- package/dist/commands/echobook.js +905 -0
- package/dist/commands/echobook.js.map +1 -0
- package/dist/commands/jaine-subgraph.d.ts +3 -0
- package/dist/commands/jaine-subgraph.d.ts.map +1 -0
- package/dist/commands/jaine-subgraph.js +565 -0
- package/dist/commands/jaine-subgraph.js.map +1 -0
- package/dist/commands/jaine.d.ts +3 -0
- package/dist/commands/jaine.d.ts.map +1 -0
- package/dist/commands/jaine.js +1415 -0
- package/dist/commands/jaine.js.map +1 -0
- package/dist/commands/marketmaker.d.ts +6 -0
- package/dist/commands/marketmaker.d.ts.map +1 -0
- package/dist/commands/marketmaker.js +451 -0
- package/dist/commands/marketmaker.js.map +1 -0
- package/dist/commands/send.d.ts +3 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +229 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +263 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/slop-app.d.ts +9 -0
- package/dist/commands/slop-app.d.ts.map +1 -0
- package/dist/commands/slop-app.js +708 -0
- package/dist/commands/slop-app.js.map +1 -0
- package/dist/commands/slop-stream.d.ts +9 -0
- package/dist/commands/slop-stream.d.ts.map +1 -0
- package/dist/commands/slop-stream.js +99 -0
- package/dist/commands/slop-stream.js.map +1 -0
- package/dist/commands/slop.d.ts +3 -0
- package/dist/commands/slop.d.ts.map +1 -0
- package/dist/commands/slop.js +1053 -0
- package/dist/commands/slop.js.map +1 -0
- package/dist/commands/wallet.d.ts +13 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +748 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/config/paths.d.ts +13 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +33 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/store.d.ts +48 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +113 -0
- package/dist/config/store.js.map +1 -0
- package/dist/constants/chain.d.ts +57 -0
- package/dist/constants/chain.d.ts.map +1 -0
- package/dist/constants/chain.js +51 -0
- package/dist/constants/chain.js.map +1 -0
- package/dist/echobook/api.d.ts +38 -0
- package/dist/echobook/api.d.ts.map +1 -0
- package/dist/echobook/api.js +86 -0
- package/dist/echobook/api.js.map +1 -0
- package/dist/echobook/auth.d.ts +31 -0
- package/dist/echobook/auth.d.ts.map +1 -0
- package/dist/echobook/auth.js +93 -0
- package/dist/echobook/auth.js.map +1 -0
- package/dist/echobook/comments.d.ts +26 -0
- package/dist/echobook/comments.d.ts.map +1 -0
- package/dist/echobook/comments.js +20 -0
- package/dist/echobook/comments.js.map +1 -0
- package/dist/echobook/follows.d.ts +19 -0
- package/dist/echobook/follows.d.ts.map +1 -0
- package/dist/echobook/follows.js +21 -0
- package/dist/echobook/follows.js.map +1 -0
- package/dist/echobook/jwtCache.d.ts +15 -0
- package/dist/echobook/jwtCache.d.ts.map +1 -0
- package/dist/echobook/jwtCache.js +63 -0
- package/dist/echobook/jwtCache.js.map +1 -0
- package/dist/echobook/notifications.d.ts +30 -0
- package/dist/echobook/notifications.d.ts.map +1 -0
- package/dist/echobook/notifications.js +26 -0
- package/dist/echobook/notifications.js.map +1 -0
- package/dist/echobook/points.d.ts +35 -0
- package/dist/echobook/points.d.ts.map +1 -0
- package/dist/echobook/points.js +20 -0
- package/dist/echobook/points.js.map +1 -0
- package/dist/echobook/posts.d.ts +46 -0
- package/dist/echobook/posts.d.ts.map +1 -0
- package/dist/echobook/posts.js +43 -0
- package/dist/echobook/posts.js.map +1 -0
- package/dist/echobook/profile.d.ts +29 -0
- package/dist/echobook/profile.d.ts.map +1 -0
- package/dist/echobook/profile.js +14 -0
- package/dist/echobook/profile.js.map +1 -0
- package/dist/echobook/submolts.d.ts +22 -0
- package/dist/echobook/submolts.d.ts.map +1 -0
- package/dist/echobook/submolts.js +24 -0
- package/dist/echobook/submolts.js.map +1 -0
- package/dist/echobook/tradeProof.d.ts +21 -0
- package/dist/echobook/tradeProof.d.ts.map +1 -0
- package/dist/echobook/tradeProof.js +14 -0
- package/dist/echobook/tradeProof.js.map +1 -0
- package/dist/echobook/votes.d.ts +17 -0
- package/dist/echobook/votes.d.ts.map +1 -0
- package/dist/echobook/votes.js +20 -0
- package/dist/echobook/votes.js.map +1 -0
- package/dist/errors.d.ts +125 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +147 -0
- package/dist/errors.js.map +1 -0
- package/dist/intents/store.d.ts +22 -0
- package/dist/intents/store.d.ts.map +1 -0
- package/dist/intents/store.js +76 -0
- package/dist/intents/store.js.map +1 -0
- package/dist/intents/types.d.ts +21 -0
- package/dist/intents/types.d.ts.map +1 -0
- package/dist/intents/types.js +2 -0
- package/dist/intents/types.js.map +1 -0
- package/dist/jaine/abi/erc20.d.ts +90 -0
- package/dist/jaine/abi/erc20.d.ts.map +1 -0
- package/dist/jaine/abi/erc20.js +65 -0
- package/dist/jaine/abi/erc20.js.map +1 -0
- package/dist/jaine/abi/factory.d.ts +38 -0
- package/dist/jaine/abi/factory.d.ts.map +1 -0
- package/dist/jaine/abi/factory.js +26 -0
- package/dist/jaine/abi/factory.js.map +1 -0
- package/dist/jaine/abi/index.d.ts +11 -0
- package/dist/jaine/abi/index.d.ts.map +1 -0
- package/dist/jaine/abi/index.js +11 -0
- package/dist/jaine/abi/index.js.map +1 -0
- package/dist/jaine/abi/nftManager.d.ts +282 -0
- package/dist/jaine/abi/nftManager.d.ts.map +1 -0
- package/dist/jaine/abi/nftManager.js +182 -0
- package/dist/jaine/abi/nftManager.js.map +1 -0
- package/dist/jaine/abi/pool.d.ts +77 -0
- package/dist/jaine/abi/pool.d.ts.map +1 -0
- package/dist/jaine/abi/pool.js +56 -0
- package/dist/jaine/abi/pool.js.map +1 -0
- package/dist/jaine/abi/quoter.d.ts +84 -0
- package/dist/jaine/abi/quoter.d.ts.map +1 -0
- package/dist/jaine/abi/quoter.js +53 -0
- package/dist/jaine/abi/quoter.js.map +1 -0
- package/dist/jaine/abi/router.d.ts +135 -0
- package/dist/jaine/abi/router.d.ts.map +1 -0
- package/dist/jaine/abi/router.js +88 -0
- package/dist/jaine/abi/router.js.map +1 -0
- package/dist/jaine/abi/w0g.d.ts +41 -0
- package/dist/jaine/abi/w0g.d.ts.map +1 -0
- package/dist/jaine/abi/w0g.js +34 -0
- package/dist/jaine/abi/w0g.js.map +1 -0
- package/dist/jaine/allowance.d.ts +48 -0
- package/dist/jaine/allowance.d.ts.map +1 -0
- package/dist/jaine/allowance.js +192 -0
- package/dist/jaine/allowance.js.map +1 -0
- package/dist/jaine/coreTokens.d.ts +32 -0
- package/dist/jaine/coreTokens.d.ts.map +1 -0
- package/dist/jaine/coreTokens.js +91 -0
- package/dist/jaine/coreTokens.js.map +1 -0
- package/dist/jaine/pathEncoding.d.ts +39 -0
- package/dist/jaine/pathEncoding.d.ts.map +1 -0
- package/dist/jaine/pathEncoding.js +98 -0
- package/dist/jaine/pathEncoding.js.map +1 -0
- package/dist/jaine/paths.d.ts +11 -0
- package/dist/jaine/paths.d.ts.map +1 -0
- package/dist/jaine/paths.js +20 -0
- package/dist/jaine/paths.js.map +1 -0
- package/dist/jaine/poolCache.d.ts +47 -0
- package/dist/jaine/poolCache.d.ts.map +1 -0
- package/dist/jaine/poolCache.js +195 -0
- package/dist/jaine/poolCache.js.map +1 -0
- package/dist/jaine/routing.d.ts +41 -0
- package/dist/jaine/routing.d.ts.map +1 -0
- package/dist/jaine/routing.js +247 -0
- package/dist/jaine/routing.js.map +1 -0
- package/dist/jaine/subgraph/client.d.ts +26 -0
- package/dist/jaine/subgraph/client.d.ts.map +1 -0
- package/dist/jaine/subgraph/client.js +201 -0
- package/dist/jaine/subgraph/client.js.map +1 -0
- package/dist/jaine/subgraph/constants.d.ts +9 -0
- package/dist/jaine/subgraph/constants.d.ts.map +1 -0
- package/dist/jaine/subgraph/constants.js +9 -0
- package/dist/jaine/subgraph/constants.js.map +1 -0
- package/dist/jaine/subgraph/queries.d.ts +21 -0
- package/dist/jaine/subgraph/queries.d.ts.map +1 -0
- package/dist/jaine/subgraph/queries.js +304 -0
- package/dist/jaine/subgraph/queries.js.map +1 -0
- package/dist/jaine/subgraph/types.d.ts +209 -0
- package/dist/jaine/subgraph/types.d.ts.map +1 -0
- package/dist/jaine/subgraph/types.js +7 -0
- package/dist/jaine/subgraph/types.js.map +1 -0
- package/dist/jaine/userTokens.d.ts +27 -0
- package/dist/jaine/userTokens.d.ts.map +1 -0
- package/dist/jaine/userTokens.js +89 -0
- package/dist/jaine/userTokens.js.map +1 -0
- package/dist/openclaw/config.d.ts +43 -0
- package/dist/openclaw/config.d.ts.map +1 -0
- package/dist/openclaw/config.js +231 -0
- package/dist/openclaw/config.js.map +1 -0
- package/dist/openclaw/hooks-client.d.ts +24 -0
- package/dist/openclaw/hooks-client.d.ts.map +1 -0
- package/dist/openclaw/hooks-client.js +119 -0
- package/dist/openclaw/hooks-client.js.map +1 -0
- package/dist/slop/abi/factory.d.ts +128 -0
- package/dist/slop/abi/factory.d.ts.map +1 -0
- package/dist/slop/abi/factory.js +70 -0
- package/dist/slop/abi/factory.js.map +1 -0
- package/dist/slop/abi/feeCollector.d.ts +95 -0
- package/dist/slop/abi/feeCollector.d.ts.map +1 -0
- package/dist/slop/abi/feeCollector.js +71 -0
- package/dist/slop/abi/feeCollector.js.map +1 -0
- package/dist/slop/abi/index.d.ts +5 -0
- package/dist/slop/abi/index.d.ts.map +1 -0
- package/dist/slop/abi/index.js +5 -0
- package/dist/slop/abi/index.js.map +1 -0
- package/dist/slop/abi/registry.d.ts +135 -0
- package/dist/slop/abi/registry.d.ts.map +1 -0
- package/dist/slop/abi/registry.js +90 -0
- package/dist/slop/abi/registry.js.map +1 -0
- package/dist/slop/abi/token.d.ts +320 -0
- package/dist/slop/abi/token.d.ts.map +1 -0
- package/dist/slop/abi/token.js +251 -0
- package/dist/slop/abi/token.js.map +1 -0
- package/dist/slop/auth.d.ts +19 -0
- package/dist/slop/auth.d.ts.map +1 -0
- package/dist/slop/auth.js +92 -0
- package/dist/slop/auth.js.map +1 -0
- package/dist/slop/jwtCache.d.ts +27 -0
- package/dist/slop/jwtCache.d.ts.map +1 -0
- package/dist/slop/jwtCache.js +91 -0
- package/dist/slop/jwtCache.js.map +1 -0
- package/dist/slop/quote.d.ts +80 -0
- package/dist/slop/quote.d.ts.map +1 -0
- package/dist/slop/quote.js +174 -0
- package/dist/slop/quote.js.map +1 -0
- package/dist/utils/canonicalJson.d.ts +8 -0
- package/dist/utils/canonicalJson.d.ts.map +1 -0
- package/dist/utils/canonicalJson.js +20 -0
- package/dist/utils/canonicalJson.js.map +1 -0
- package/dist/utils/env.d.ts +11 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +20 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/http.d.ts +19 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +61 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +21 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output.d.ts +29 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +51 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/rateLimit.d.ts +22 -0
- package/dist/utils/rateLimit.d.ts.map +1 -0
- package/dist/utils/rateLimit.js +58 -0
- package/dist/utils/rateLimit.js.map +1 -0
- package/dist/utils/respond.d.ts +19 -0
- package/dist/utils/respond.d.ts.map +1 -0
- package/dist/utils/respond.js +25 -0
- package/dist/utils/respond.js.map +1 -0
- package/dist/utils/ui.d.ts +38 -0
- package/dist/utils/ui.d.ts.map +1 -0
- package/dist/utils/ui.js +126 -0
- package/dist/utils/ui.js.map +1 -0
- package/dist/wallet/client.d.ts +4 -0
- package/dist/wallet/client.d.ts.map +1 -0
- package/dist/wallet/client.js +53 -0
- package/dist/wallet/client.js.map +1 -0
- package/dist/wallet/keystore.d.ts +22 -0
- package/dist/wallet/keystore.d.ts.map +1 -0
- package/dist/wallet/keystore.js +111 -0
- package/dist/wallet/keystore.js.map +1 -0
- package/package.json +63 -0
- package/skills/echo/SKILL.md +1121 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for normalizing 0G SDK account structs.
|
|
3
|
+
*
|
|
4
|
+
* The SDK's `AccountStructOutput` exposes both indexed (tuple) and named
|
|
5
|
+
* properties. We normalise to a simple object with OG-denominated values
|
|
6
|
+
* so the rest of the codebase doesn't have to know about either format.
|
|
7
|
+
*/
|
|
8
|
+
export interface NormalizedSubAccount {
|
|
9
|
+
totalOg: number;
|
|
10
|
+
pendingRefundOg: number;
|
|
11
|
+
lockedOg: number;
|
|
12
|
+
rawBalance: string;
|
|
13
|
+
rawPendingRefund: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Normalise an SDK `AccountStructOutput` (or similar tuple/object) into
|
|
17
|
+
* a simple `NormalizedSubAccount`.
|
|
18
|
+
*
|
|
19
|
+
* Supports:
|
|
20
|
+
* - Named properties: `account.balance`, `account.pendingRefund`
|
|
21
|
+
* - Indexed tuple: `account[3]` (balance), `account[4]` (pendingRefund)
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeSubAccount(account: unknown): NormalizedSubAccount;
|
|
24
|
+
/**
|
|
25
|
+
* Normalise a tuple from `getLedgerWithDetail().infers`.
|
|
26
|
+
* Each entry is `[providerAddress, balance, pendingRefund]`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function normalizeInferTuple(tuple: [string, bigint, bigint]): {
|
|
29
|
+
provider: string;
|
|
30
|
+
} & NormalizedSubAccount;
|
|
31
|
+
/**
|
|
32
|
+
* Convert a `NormalizedSubAccount` to a plain object safe for JSON
|
|
33
|
+
* serialization (bigint strings already handled by normalise helpers).
|
|
34
|
+
*/
|
|
35
|
+
export declare function serializeSubAccount(sa: NormalizedSubAccount): Record<string, unknown>;
|
|
36
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/0g-compute/account.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAkC1E;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9B;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,CAe7C;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,oBAAoB,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for normalizing 0G SDK account structs.
|
|
3
|
+
*
|
|
4
|
+
* The SDK's `AccountStructOutput` exposes both indexed (tuple) and named
|
|
5
|
+
* properties. We normalise to a simple object with OG-denominated values
|
|
6
|
+
* so the rest of the codebase doesn't have to know about either format.
|
|
7
|
+
*/
|
|
8
|
+
import { formatUnits } from "ethers";
|
|
9
|
+
// ── normalizeSubAccount ──────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Normalise an SDK `AccountStructOutput` (or similar tuple/object) into
|
|
12
|
+
* a simple `NormalizedSubAccount`.
|
|
13
|
+
*
|
|
14
|
+
* Supports:
|
|
15
|
+
* - Named properties: `account.balance`, `account.pendingRefund`
|
|
16
|
+
* - Indexed tuple: `account[3]` (balance), `account[4]` (pendingRefund)
|
|
17
|
+
*/
|
|
18
|
+
export function normalizeSubAccount(account) {
|
|
19
|
+
let balance;
|
|
20
|
+
let pendingRefund;
|
|
21
|
+
const acc = account;
|
|
22
|
+
// Named properties first (preferred)
|
|
23
|
+
if (typeof acc.balance === "bigint") {
|
|
24
|
+
balance = acc.balance;
|
|
25
|
+
}
|
|
26
|
+
else if (typeof acc[3] === "bigint") {
|
|
27
|
+
balance = acc[3];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
balance = 0n;
|
|
31
|
+
}
|
|
32
|
+
if (typeof acc.pendingRefund === "bigint") {
|
|
33
|
+
pendingRefund = acc.pendingRefund;
|
|
34
|
+
}
|
|
35
|
+
else if (typeof acc[4] === "bigint") {
|
|
36
|
+
pendingRefund = acc[4];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
pendingRefund = 0n;
|
|
40
|
+
}
|
|
41
|
+
const totalOg = parseFloat(formatUnits(balance, 18));
|
|
42
|
+
const pendingRefundOg = parseFloat(formatUnits(pendingRefund, 18));
|
|
43
|
+
const lockedOg = totalOg - pendingRefundOg;
|
|
44
|
+
return {
|
|
45
|
+
totalOg,
|
|
46
|
+
pendingRefundOg,
|
|
47
|
+
lockedOg,
|
|
48
|
+
rawBalance: balance.toString(),
|
|
49
|
+
rawPendingRefund: pendingRefund.toString(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// ── normalizeInferTuple ──────────────────────────────────────────────
|
|
53
|
+
/**
|
|
54
|
+
* Normalise a tuple from `getLedgerWithDetail().infers`.
|
|
55
|
+
* Each entry is `[providerAddress, balance, pendingRefund]`.
|
|
56
|
+
*/
|
|
57
|
+
export function normalizeInferTuple(tuple) {
|
|
58
|
+
const [provider, balance, pendingRefund] = tuple;
|
|
59
|
+
const totalOg = parseFloat(formatUnits(balance, 18));
|
|
60
|
+
const pendingRefundOg = parseFloat(formatUnits(pendingRefund, 18));
|
|
61
|
+
const lockedOg = totalOg - pendingRefundOg;
|
|
62
|
+
return {
|
|
63
|
+
provider,
|
|
64
|
+
totalOg,
|
|
65
|
+
pendingRefundOg,
|
|
66
|
+
lockedOg,
|
|
67
|
+
rawBalance: balance.toString(),
|
|
68
|
+
rawPendingRefund: pendingRefund.toString(),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// ── serializeSubAccount ──────────────────────────────────────────────
|
|
72
|
+
/**
|
|
73
|
+
* Convert a `NormalizedSubAccount` to a plain object safe for JSON
|
|
74
|
+
* serialization (bigint strings already handled by normalise helpers).
|
|
75
|
+
*/
|
|
76
|
+
export function serializeSubAccount(sa) {
|
|
77
|
+
return {
|
|
78
|
+
totalOg: sa.totalOg,
|
|
79
|
+
pendingRefundOg: sa.pendingRefundOg,
|
|
80
|
+
lockedOg: sa.lockedOg,
|
|
81
|
+
rawBalance: sa.rawBalance,
|
|
82
|
+
rawPendingRefund: sa.rawPendingRefund,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/0g-compute/account.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAYrC,wEAAwE;AAExE;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,IAAI,OAAe,CAAC;IACpB,IAAI,aAAqB,CAAC;IAE1B,MAAM,GAAG,GAAG,OAAkC,CAAC;IAE/C,qCAAqC;IACrC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC1C,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACpC,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;IAE3C,OAAO;QACL,OAAO;QACP,eAAe;QACf,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC9B,gBAAgB,EAAE,aAAa,CAAC,QAAQ,EAAE;KAC3C,CAAC;AACJ,CAAC;AAED,wEAAwE;AAExE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC;IAEjD,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;IAE3C,OAAO;QACL,QAAQ;QACR,OAAO;QACP,eAAe;QACf,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC9B,gBAAgB,EAAE,aAAa,CAAC,QAAQ,EAAE;KAC3C,CAAC;AACJ,CAAC;AAED,wEAAwE;AAExE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAwB;IAExB,OAAO;QACL,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;KACtC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge utilities for 0G SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* - withSuppressedConsole: suppresses SDK console.log pollution
|
|
5
|
+
* (SDK logs "Detected network: ..." on init)
|
|
6
|
+
*
|
|
7
|
+
* Ethers ↔ SDK interop lives in sdk-bridge.cts (CJS module) to avoid
|
|
8
|
+
* ESM/CJS #private type mismatch. See sdk-bridge.cts for details.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Suppress console.log/warn/error during async SDK calls.
|
|
12
|
+
* - Headless (--json): swallows console output completely (stdout must be clean JSON)
|
|
13
|
+
* - TTY: redirects to logger.debug (log/warn) or logger.warn (error)
|
|
14
|
+
*/
|
|
15
|
+
export declare function withSuppressedConsole<T>(fn: () => Promise<T>): Promise<T>;
|
|
16
|
+
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/0g-compute/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAqB/E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge utilities for 0G SDK integration.
|
|
3
|
+
*
|
|
4
|
+
* - withSuppressedConsole: suppresses SDK console.log pollution
|
|
5
|
+
* (SDK logs "Detected network: ..." on init)
|
|
6
|
+
*
|
|
7
|
+
* Ethers ↔ SDK interop lives in sdk-bridge.cts (CJS module) to avoid
|
|
8
|
+
* ESM/CJS #private type mismatch. See sdk-bridge.cts for details.
|
|
9
|
+
*/
|
|
10
|
+
import { isHeadless } from "../utils/output.js";
|
|
11
|
+
import logger from "../utils/logger.js";
|
|
12
|
+
/**
|
|
13
|
+
* Suppress console.log/warn/error during async SDK calls.
|
|
14
|
+
* - Headless (--json): swallows console output completely (stdout must be clean JSON)
|
|
15
|
+
* - TTY: redirects to logger.debug (log/warn) or logger.warn (error)
|
|
16
|
+
*/
|
|
17
|
+
export async function withSuppressedConsole(fn) {
|
|
18
|
+
const origLog = console.log;
|
|
19
|
+
const origWarn = console.warn;
|
|
20
|
+
const origError = console.error;
|
|
21
|
+
try {
|
|
22
|
+
if (isHeadless()) {
|
|
23
|
+
console.log = () => { };
|
|
24
|
+
console.warn = () => { };
|
|
25
|
+
console.error = () => { };
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log = (...args) => logger.debug(`[0G SDK] ${args.join(" ")}`);
|
|
29
|
+
console.warn = (...args) => logger.debug(`[0G SDK warn] ${args.join(" ")}`);
|
|
30
|
+
console.error = (...args) => logger.warn(`[0G SDK error] ${args.join(" ")}`);
|
|
31
|
+
}
|
|
32
|
+
return await fn();
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
console.log = origLog;
|
|
36
|
+
console.warn = origWarn;
|
|
37
|
+
console.error = origError;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/0g-compute/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAI,EAAoB;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,CAAC;QACH,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC;QACtB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;QACxB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cached 0G Compute broker factory.
|
|
3
|
+
*
|
|
4
|
+
* NOTE: The SDK does not export a read-only broker constructor.
|
|
5
|
+
* All operations (including listService) go through the authenticated broker.
|
|
6
|
+
* The `providers` command uses the full broker but only performs contract reads.
|
|
7
|
+
*/
|
|
8
|
+
import type { ZGComputeNetworkBroker } from "@0glabs/0g-serving-broker";
|
|
9
|
+
import type { Hex } from "viem";
|
|
10
|
+
/**
|
|
11
|
+
* Get or create an authenticated 0G Compute Network broker.
|
|
12
|
+
* Cached per-process — the broker is reused for all commands in a single CLI invocation.
|
|
13
|
+
*
|
|
14
|
+
* If privateKey is not provided, reads from the Echo keystore.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getAuthenticatedBroker(privateKey?: Hex): Promise<ZGComputeNetworkBroker>;
|
|
17
|
+
/** Test-only: reset cached broker. */
|
|
18
|
+
export declare function _resetBrokerCache(): void;
|
|
19
|
+
//# sourceMappingURL=broker-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-factory.d.ts","sourceRoot":"","sources":["../../src/0g-compute/broker-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAWhC;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA+C9F;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cached 0G Compute broker factory.
|
|
3
|
+
*
|
|
4
|
+
* NOTE: The SDK does not export a read-only broker constructor.
|
|
5
|
+
* All operations (including listService) go through the authenticated broker.
|
|
6
|
+
* The `providers` command uses the full broker but only performs contract reads.
|
|
7
|
+
*/
|
|
8
|
+
import { createBrokerFromKey } from "./sdk-bridge.cjs";
|
|
9
|
+
import { withSuppressedConsole } from "./bridge.js";
|
|
10
|
+
import { requireWalletAndKeystore } from "../bot/executor.js";
|
|
11
|
+
import { loadConfig } from "../config/store.js";
|
|
12
|
+
import { EchoError, ErrorCodes } from "../errors.js";
|
|
13
|
+
import { CHAIN } from "../constants/chain.js";
|
|
14
|
+
import logger from "../utils/logger.js";
|
|
15
|
+
let cachedBroker = null;
|
|
16
|
+
/**
|
|
17
|
+
* Get or create an authenticated 0G Compute Network broker.
|
|
18
|
+
* Cached per-process — the broker is reused for all commands in a single CLI invocation.
|
|
19
|
+
*
|
|
20
|
+
* If privateKey is not provided, reads from the Echo keystore.
|
|
21
|
+
*/
|
|
22
|
+
export async function getAuthenticatedBroker(privateKey) {
|
|
23
|
+
if (cachedBroker)
|
|
24
|
+
return cachedBroker;
|
|
25
|
+
const key = privateKey ?? requireWalletAndKeystore().privateKey;
|
|
26
|
+
const cfg = loadConfig();
|
|
27
|
+
try {
|
|
28
|
+
const broker = await withSuppressedConsole(() => createBrokerFromKey(key, cfg.chain.rpcUrl));
|
|
29
|
+
// Verify RPC responds with the expected chainId before caching
|
|
30
|
+
try {
|
|
31
|
+
const controller = new AbortController();
|
|
32
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
33
|
+
const res = await fetch(cfg.chain.rpcUrl, {
|
|
34
|
+
method: "POST",
|
|
35
|
+
headers: { "Content-Type": "application/json" },
|
|
36
|
+
body: JSON.stringify({ jsonrpc: "2.0", method: "eth_chainId", params: [], id: 1 }),
|
|
37
|
+
signal: controller.signal,
|
|
38
|
+
});
|
|
39
|
+
clearTimeout(timeout);
|
|
40
|
+
const json = (await res.json());
|
|
41
|
+
const remoteChainId = json.result ? parseInt(json.result, 16) : undefined;
|
|
42
|
+
if (remoteChainId !== undefined && remoteChainId !== CHAIN.chainId) {
|
|
43
|
+
throw new EchoError(ErrorCodes.CHAIN_MISMATCH, `RPC chainId mismatch: expected ${CHAIN.chainId} (${CHAIN.name}), got ${remoteChainId}`, `Check chain.rpcUrl in your config — it must point to ${CHAIN.name} (chainId ${CHAIN.chainId}).`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err instanceof EchoError)
|
|
48
|
+
throw err;
|
|
49
|
+
logger.warn(`[0G Compute] Could not verify RPC chainId: ${err instanceof Error ? err.message : String(err)}`);
|
|
50
|
+
}
|
|
51
|
+
cachedBroker = broker;
|
|
52
|
+
logger.debug("[0G Compute] Broker initialized");
|
|
53
|
+
return broker;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (err instanceof EchoError)
|
|
57
|
+
throw err;
|
|
58
|
+
throw new EchoError(ErrorCodes.ZG_BROKER_INIT_FAILED, `Failed to initialize 0G Compute broker: ${err instanceof Error ? err.message : String(err)}`, "Check your network connection and wallet configuration.");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Test-only: reset cached broker. */
|
|
62
|
+
export function _resetBrokerCache() {
|
|
63
|
+
cachedBroker = null;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=broker-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-factory.js","sourceRoot":"","sources":["../../src/0g-compute/broker-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path constants for the 0G Compute module.
|
|
3
|
+
* Follows the same pattern as BOT_DIR in config/paths.ts.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ZG_COMPUTE_DIR: string;
|
|
6
|
+
export declare const ZG_MONITOR_PID_FILE: string;
|
|
7
|
+
export declare const ZG_MONITOR_SHUTDOWN_FILE: string;
|
|
8
|
+
export declare const ZG_MONITOR_STATE_FILE: string;
|
|
9
|
+
export declare const ZG_MONITOR_LOG_FILE: string;
|
|
10
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/0g-compute/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,cAAc,QAAiC,CAAC;AAC7D,eAAO,MAAM,mBAAmB,QAAsC,CAAC;AACvE,eAAO,MAAM,wBAAwB,QAA2C,CAAC;AACjF,eAAO,MAAM,qBAAqB,QAA6C,CAAC;AAChF,eAAO,MAAM,mBAAmB,QAAsC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path constants for the 0G Compute module.
|
|
3
|
+
* Follows the same pattern as BOT_DIR in config/paths.ts.
|
|
4
|
+
*/
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { CONFIG_DIR } from "../config/paths.js";
|
|
7
|
+
export const ZG_COMPUTE_DIR = join(CONFIG_DIR, "0g-compute");
|
|
8
|
+
export const ZG_MONITOR_PID_FILE = join(ZG_COMPUTE_DIR, "monitor.pid");
|
|
9
|
+
export const ZG_MONITOR_SHUTDOWN_FILE = join(ZG_COMPUTE_DIR, "monitor.shutdown");
|
|
10
|
+
export const ZG_MONITOR_STATE_FILE = join(ZG_COMPUTE_DIR, "monitor-state.json");
|
|
11
|
+
export const ZG_MONITOR_LOG_FILE = join(ZG_COMPUTE_DIR, "monitor.log");
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/0g-compute/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BalanceMonitor — daemon that polls 0G Compute sub-account balances
|
|
3
|
+
* and sends webhook alerts when they drop below a threshold.
|
|
4
|
+
*
|
|
5
|
+
* Supports two modes:
|
|
6
|
+
* - `fixed`: user-supplied static threshold
|
|
7
|
+
* - `recommended`: dynamic threshold derived from provider pricing
|
|
8
|
+
*
|
|
9
|
+
* Follows the same lifecycle pattern as BotDaemon (pidfile, shutdown file, signals).
|
|
10
|
+
*/
|
|
11
|
+
import type { Address } from "viem";
|
|
12
|
+
export type MonitorMode = "fixed" | "recommended";
|
|
13
|
+
export interface BalanceMonitorOptions {
|
|
14
|
+
providers: Address[];
|
|
15
|
+
mode: MonitorMode;
|
|
16
|
+
threshold?: number;
|
|
17
|
+
buffer?: number;
|
|
18
|
+
alertRatio?: number;
|
|
19
|
+
intervalSec: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class BalanceMonitor {
|
|
22
|
+
private readonly providers;
|
|
23
|
+
private readonly mode;
|
|
24
|
+
private readonly threshold;
|
|
25
|
+
private readonly buffer;
|
|
26
|
+
private readonly alertRatio;
|
|
27
|
+
private readonly intervalSec;
|
|
28
|
+
private shuttingDown;
|
|
29
|
+
private shutdownWatcher;
|
|
30
|
+
private pollTimer;
|
|
31
|
+
private state;
|
|
32
|
+
constructor(opts: BalanceMonitorOptions);
|
|
33
|
+
start(): Promise<void>;
|
|
34
|
+
private schedulePoll;
|
|
35
|
+
private poll;
|
|
36
|
+
private handleLowBalance;
|
|
37
|
+
private sendWebhook;
|
|
38
|
+
private checkAndWritePid;
|
|
39
|
+
private cleanupShutdownFile;
|
|
40
|
+
private saveState;
|
|
41
|
+
stop(): void;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/0g-compute/monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA4CpC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,KAAK,CAAe;gBAEhB,IAAI,EAAE,qBAAqB;IAoBjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC5B,OAAO,CAAC,YAAY;YASN,IAAI;YAuFJ,gBAAgB;YAuChB,WAAW;IA6DzB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,SAAS;IAWjB,IAAI,IAAI,IAAI;CA0Bb"}
|