safehands-pharos 1.3.0 → 1.4.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 +64 -26
- package/README.md +333 -445
- package/dist/cli.d.ts +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +124 -98
- package/dist/cli.js.map +1 -1
- package/dist/demo.d.ts +1 -1
- package/dist/demo.js +171 -171
- package/dist/index.d.ts +2 -2
- package/dist/index.js +138 -85
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.js +65 -65
- package/dist/lib/auditLog.d.ts +9 -0
- package/dist/lib/auditLog.d.ts.map +1 -0
- package/dist/lib/auditLog.js +30 -0
- package/dist/lib/auditLog.js.map +1 -0
- package/dist/lib/constants.d.ts +291 -291
- package/dist/lib/constants.js +292 -292
- package/dist/lib/dodoApi.d.ts +78 -70
- package/dist/lib/dodoApi.d.ts.map +1 -1
- package/dist/lib/dodoApi.js +196 -178
- package/dist/lib/dodoApi.js.map +1 -1
- package/dist/lib/http.d.ts +14 -14
- package/dist/lib/http.js +118 -118
- package/dist/lib/pharosClient.d.ts +58 -58
- package/dist/lib/pharosClient.d.ts.map +1 -1
- package/dist/lib/pharosClient.js +63 -53
- package/dist/lib/pharosClient.js.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts +53 -53
- package/dist/lib/policy/actionPolicyEngine.js +212 -212
- package/dist/lib/riskEngine.d.ts +26 -26
- package/dist/lib/riskEngine.js +283 -283
- package/dist/lib/signer/index.d.ts +24 -24
- package/dist/lib/signer/index.d.ts.map +1 -1
- package/dist/lib/signer/index.js +88 -89
- package/dist/lib/signer/index.js.map +1 -1
- package/dist/lib/spendAccumulator.d.ts +10 -0
- package/dist/lib/spendAccumulator.d.ts.map +1 -0
- package/dist/lib/spendAccumulator.js +54 -0
- package/dist/lib/spendAccumulator.js.map +1 -0
- package/dist/lib/testDodoLive.d.ts +1 -1
- package/dist/lib/testDodoLive.js +104 -104
- package/dist/lib/testLiveSafehands.d.ts +1 -1
- package/dist/lib/testLiveSafehands.js +92 -92
- package/dist/lib/testRpc.d.ts +1 -1
- package/dist/lib/testRpc.js +29 -29
- package/dist/lib/testRpcLive.d.ts +1 -1
- package/dist/lib/testRpcLive.js +88 -88
- package/dist/lib/testTools.d.ts +1 -1
- package/dist/lib/testTools.js +397 -397
- package/dist/lib/testX402Live.d.ts +1 -1
- package/dist/lib/testX402Live.js +159 -159
- package/dist/lib/toolResponse.d.ts +25 -25
- package/dist/lib/toolResponse.js +53 -53
- package/dist/lib/wallet/index.d.ts +37 -18
- package/dist/lib/wallet/index.d.ts.map +1 -1
- package/dist/lib/wallet/index.js +128 -70
- package/dist/lib/wallet/index.js.map +1 -1
- package/dist/scripts/checkDeploy.d.ts +1 -1
- package/dist/scripts/checkDeploy.js +24 -24
- package/dist/scripts/deployRegistry.d.ts +1 -1
- package/dist/scripts/deployRegistry.js +100 -100
- package/dist/scripts/testRegistry.d.ts +1 -1
- package/dist/scripts/testRegistry.js +43 -43
- package/dist/tools/approveToken.d.ts +45 -46
- package/dist/tools/approveToken.d.ts.map +1 -1
- package/dist/tools/approveToken.js +85 -83
- package/dist/tools/approveToken.js.map +1 -1
- package/dist/tools/assessRisk.d.ts +79 -79
- package/dist/tools/assessRisk.d.ts.map +1 -1
- package/dist/tools/assessRisk.js +104 -93
- package/dist/tools/assessRisk.js.map +1 -1
- package/dist/tools/checkAllowance.d.ts +43 -36
- package/dist/tools/checkAllowance.d.ts.map +1 -1
- package/dist/tools/checkAllowance.js +56 -42
- package/dist/tools/checkAllowance.js.map +1 -1
- package/dist/tools/checkTokenSecurity.d.ts +46 -46
- package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
- package/dist/tools/checkTokenSecurity.js +95 -88
- package/dist/tools/checkTokenSecurity.js.map +1 -1
- package/dist/tools/createAgentWallet.d.ts +26 -26
- package/dist/tools/createAgentWallet.d.ts.map +1 -1
- package/dist/tools/createAgentWallet.js +58 -59
- package/dist/tools/createAgentWallet.js.map +1 -1
- package/dist/tools/estimateGas.d.ts +79 -79
- package/dist/tools/estimateGas.js +124 -124
- package/dist/tools/executeSwap.d.ts +61 -59
- package/dist/tools/executeSwap.d.ts.map +1 -1
- package/dist/tools/executeSwap.js +141 -129
- package/dist/tools/executeSwap.js.map +1 -1
- package/dist/tools/explainRisk.d.ts +29 -29
- package/dist/tools/explainRisk.js +32 -32
- package/dist/tools/getAgentWallet.d.ts +21 -21
- package/dist/tools/getAgentWallet.js +27 -27
- package/dist/tools/getAgentWalletBalance.d.ts +11 -11
- package/dist/tools/getAgentWalletBalance.js +70 -70
- package/dist/tools/getExecutionHistory.d.ts +49 -51
- package/dist/tools/getExecutionHistory.d.ts.map +1 -1
- package/dist/tools/getExecutionHistory.js +154 -93
- package/dist/tools/getExecutionHistory.js.map +1 -1
- package/dist/tools/getGasPrice.d.ts +43 -43
- package/dist/tools/getGasPrice.js +59 -59
- package/dist/tools/getPoolInfo.d.ts +75 -75
- package/dist/tools/getPoolInfo.js +137 -137
- package/dist/tools/getTokenPrice.d.ts +113 -113
- package/dist/tools/getTokenPrice.js +117 -117
- package/dist/tools/getTransactionStatus.d.ts +43 -57
- package/dist/tools/getTransactionStatus.d.ts.map +1 -1
- package/dist/tools/getTransactionStatus.js +59 -67
- package/dist/tools/getTransactionStatus.js.map +1 -1
- package/dist/tools/getWalletBalance.d.ts +68 -68
- package/dist/tools/getWalletBalance.js +87 -87
- package/dist/tools/publishRiskScore.d.ts +63 -63
- package/dist/tools/publishRiskScore.d.ts.map +1 -1
- package/dist/tools/publishRiskScore.js +88 -85
- package/dist/tools/publishRiskScore.js.map +1 -1
- package/dist/tools/queryRiskRegistry.d.ts +38 -48
- package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
- package/dist/tools/queryRiskRegistry.js +55 -60
- package/dist/tools/queryRiskRegistry.js.map +1 -1
- package/dist/tools/safehandsPreflightCheck.d.ts +77 -77
- package/dist/tools/safehandsPreflightCheck.js +47 -47
- package/dist/tools/safehandsRiskReport.d.ts +81 -81
- package/dist/tools/safehandsRiskReport.js +28 -28
- package/dist/tools/safehandsSafeExecute.d.ts +20 -20
- package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
- package/dist/tools/safehandsSafeExecute.js +81 -75
- package/dist/tools/safehandsSafeExecute.js.map +1 -1
- package/dist/tools/safehandsWalletHealth.d.ts +14 -14
- package/dist/tools/safehandsWalletHealth.js +103 -103
- package/dist/tools/safehandsX402Preflight.d.ts +26 -26
- package/dist/tools/safehandsX402Preflight.js +65 -65
- package/dist/tools/sendPayment.d.ts +57 -58
- package/dist/tools/sendPayment.d.ts.map +1 -1
- package/dist/tools/sendPayment.js +117 -108
- package/dist/tools/sendPayment.js.map +1 -1
- package/dist/tools/simulateTransaction.d.ts +60 -81
- package/dist/tools/simulateTransaction.d.ts.map +1 -1
- package/dist/tools/simulateTransaction.js +83 -88
- package/dist/tools/simulateTransaction.js.map +1 -1
- package/dist/tools/tokenRegistryStatus.d.ts +26 -26
- package/dist/tools/tokenRegistryStatus.js +96 -96
- package/dist/tools/x402PayAndFetch.d.ts +81 -81
- package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
- package/dist/tools/x402PayAndFetch.js +152 -149
- package/dist/tools/x402PayAndFetch.js.map +1 -1
- package/dist/x402Server.d.ts +1 -1
- package/dist/x402Server.js +252 -252
- package/examples/dashboard/index.html +337 -0
- package/package.json +83 -84
- package/.agents/skill/safehands/SKILL.md +0 -212
- package/.agents/skill/safehands/assets/networks.json +0 -24
- package/.agents/skill/safehands/assets/tokens.json +0 -66
- package/.agents/wallets.json +0 -20
- package/docs/reports/OFFICIAL_DOCS_ALIGNMENT_REPORT.md +0 -137
- package/docs/reports/final_audit_report.md +0 -307
- package/docs/reports/live_verification_report.md +0 -147
- package/docs/reports/pharos_skill_engine_alignment_report.md +0 -85
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
// ─── get_agent_wallet_balance ───────────────────────────────────────────
|
|
2
|
-
// Returns PHRS + token balances for a managed agent wallet.
|
|
3
|
-
// ────────────────────────────────────────────────────────────────────────
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { ok, fail, classifyExternalError } from "../lib/toolResponse.js";
|
|
6
|
-
import { walletStore } from "../lib/wallet/index.js";
|
|
7
|
-
import { publicClient } from "../lib/pharosClient.js";
|
|
8
|
-
import { TOKEN_REGISTRY } from "../lib/constants.js";
|
|
9
|
-
import { formatUnits } from "viem";
|
|
10
|
-
export const getAgentWalletBalanceSchema = z.object({
|
|
11
|
-
agentId: z.string().min(1).max(64).describe("Agent wallet identifier"),
|
|
12
|
-
});
|
|
13
|
-
const ERC20_ABI = [
|
|
14
|
-
{
|
|
15
|
-
name: "balanceOf",
|
|
16
|
-
type: "function",
|
|
17
|
-
stateMutability: "view",
|
|
18
|
-
inputs: [{ name: "account", type: "address" }],
|
|
19
|
-
outputs: [{ name: "", type: "uint256" }],
|
|
20
|
-
},
|
|
21
|
-
];
|
|
22
|
-
export async function handleGetAgentWalletBalance(params) {
|
|
23
|
-
const { agentId } = params;
|
|
24
|
-
const wallet = await walletStore.get(agentId);
|
|
25
|
-
if (!wallet) {
|
|
26
|
-
return fail("WALLET_NOT_FOUND", `No wallet found for agentId '${agentId}'. Use create_agent_wallet to create one.`, false, "wallet_store");
|
|
27
|
-
}
|
|
28
|
-
const address = wallet.address;
|
|
29
|
-
try {
|
|
30
|
-
const [phrsRaw, usdcRaw, usdtRaw] = await Promise.all([
|
|
31
|
-
publicClient.getBalance({ address }),
|
|
32
|
-
publicClient.readContract({
|
|
33
|
-
address: TOKEN_REGISTRY.USDC.address,
|
|
34
|
-
abi: ERC20_ABI,
|
|
35
|
-
functionName: "balanceOf",
|
|
36
|
-
args: [address],
|
|
37
|
-
}),
|
|
38
|
-
publicClient.readContract({
|
|
39
|
-
address: TOKEN_REGISTRY.USDT.address,
|
|
40
|
-
abi: ERC20_ABI,
|
|
41
|
-
functionName: "balanceOf",
|
|
42
|
-
args: [address],
|
|
43
|
-
}),
|
|
44
|
-
]);
|
|
45
|
-
const phrs = formatUnits(phrsRaw, 18);
|
|
46
|
-
const usdc = formatUnits(usdcRaw, 6);
|
|
47
|
-
const usdt = formatUnits(usdtRaw, 6);
|
|
48
|
-
const isFunded = parseFloat(phrs) > 0;
|
|
49
|
-
return ok({
|
|
50
|
-
agentId,
|
|
51
|
-
address,
|
|
52
|
-
environment: wallet.environment,
|
|
53
|
-
chainId: wallet.chainId,
|
|
54
|
-
isMainnet: false,
|
|
55
|
-
explorerUrl: `https://atlantic.pharosscan.xyz/address/${address}`,
|
|
56
|
-
balances: {
|
|
57
|
-
PHRS: { value: phrs, unit: "PHRS", decimals: 18 },
|
|
58
|
-
USDC: { value: usdc, unit: "USDC", decimals: 6 },
|
|
59
|
-
USDT: { value: usdt, unit: "USDT", decimals: 6 },
|
|
60
|
-
},
|
|
61
|
-
isFunded,
|
|
62
|
-
fundingInstructions: isFunded
|
|
63
|
-
? null
|
|
64
|
-
: `Wallet is unfunded. Get testnet PHRS from https://testnet.pharosnetwork.xyz/ — wallet address: ${address}`,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
return classifyExternalError("pharos_rpc", err);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
// ─── get_agent_wallet_balance ───────────────────────────────────────────
|
|
2
|
+
// Returns PHRS + token balances for a managed agent wallet.
|
|
3
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { ok, fail, classifyExternalError } from "../lib/toolResponse.js";
|
|
6
|
+
import { walletStore } from "../lib/wallet/index.js";
|
|
7
|
+
import { publicClient } from "../lib/pharosClient.js";
|
|
8
|
+
import { TOKEN_REGISTRY } from "../lib/constants.js";
|
|
9
|
+
import { formatUnits } from "viem";
|
|
10
|
+
export const getAgentWalletBalanceSchema = z.object({
|
|
11
|
+
agentId: z.string().min(1).max(64).describe("Agent wallet identifier"),
|
|
12
|
+
});
|
|
13
|
+
const ERC20_ABI = [
|
|
14
|
+
{
|
|
15
|
+
name: "balanceOf",
|
|
16
|
+
type: "function",
|
|
17
|
+
stateMutability: "view",
|
|
18
|
+
inputs: [{ name: "account", type: "address" }],
|
|
19
|
+
outputs: [{ name: "", type: "uint256" }],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export async function handleGetAgentWalletBalance(params) {
|
|
23
|
+
const { agentId } = params;
|
|
24
|
+
const wallet = await walletStore.get(agentId);
|
|
25
|
+
if (!wallet) {
|
|
26
|
+
return fail("WALLET_NOT_FOUND", `No wallet found for agentId '${agentId}'. Use create_agent_wallet to create one.`, false, "wallet_store");
|
|
27
|
+
}
|
|
28
|
+
const address = wallet.address;
|
|
29
|
+
try {
|
|
30
|
+
const [phrsRaw, usdcRaw, usdtRaw] = await Promise.all([
|
|
31
|
+
publicClient.getBalance({ address }),
|
|
32
|
+
publicClient.readContract({
|
|
33
|
+
address: TOKEN_REGISTRY.USDC.address,
|
|
34
|
+
abi: ERC20_ABI,
|
|
35
|
+
functionName: "balanceOf",
|
|
36
|
+
args: [address],
|
|
37
|
+
}),
|
|
38
|
+
publicClient.readContract({
|
|
39
|
+
address: TOKEN_REGISTRY.USDT.address,
|
|
40
|
+
abi: ERC20_ABI,
|
|
41
|
+
functionName: "balanceOf",
|
|
42
|
+
args: [address],
|
|
43
|
+
}),
|
|
44
|
+
]);
|
|
45
|
+
const phrs = formatUnits(phrsRaw, 18);
|
|
46
|
+
const usdc = formatUnits(usdcRaw, 6);
|
|
47
|
+
const usdt = formatUnits(usdtRaw, 6);
|
|
48
|
+
const isFunded = parseFloat(phrs) > 0;
|
|
49
|
+
return ok({
|
|
50
|
+
agentId,
|
|
51
|
+
address,
|
|
52
|
+
environment: wallet.environment,
|
|
53
|
+
chainId: wallet.chainId,
|
|
54
|
+
isMainnet: false,
|
|
55
|
+
explorerUrl: `https://atlantic.pharosscan.xyz/address/${address}`,
|
|
56
|
+
balances: {
|
|
57
|
+
PHRS: { value: phrs, unit: "PHRS", decimals: 18 },
|
|
58
|
+
USDC: { value: usdc, unit: "USDC", decimals: 6 },
|
|
59
|
+
USDT: { value: usdt, unit: "USDT", decimals: 6 },
|
|
60
|
+
},
|
|
61
|
+
isFunded,
|
|
62
|
+
fundingInstructions: isFunded
|
|
63
|
+
? null
|
|
64
|
+
: `Wallet is unfunded. Get testnet PHRS from https://testnet.pharosnetwork.xyz/ — wallet address: ${address}`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
return classifyExternalError("pharos_rpc", err);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
71
|
//# sourceMappingURL=getAgentWalletBalance.js.map
|
|
@@ -1,52 +1,50 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const getExecutionHistorySchema: z.ZodObject<{
|
|
3
|
-
walletAddress: z.ZodString;
|
|
4
|
-
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
5
|
-
filter: z.ZodDefault<z.ZodOptional<z.ZodEnum<["swap", "transfer", "all"]>>>;
|
|
6
|
-
}, "strip", z.ZodTypeAny, {
|
|
7
|
-
filter: "transfer" | "all" | "swap";
|
|
8
|
-
walletAddress: string;
|
|
9
|
-
limit: number;
|
|
10
|
-
}, {
|
|
11
|
-
walletAddress: string;
|
|
12
|
-
filter?: "transfer" | "all" | "swap" | undefined;
|
|
13
|
-
limit?: number | undefined;
|
|
14
|
-
}>;
|
|
15
|
-
export type GetExecutionHistoryInput = z.infer<typeof getExecutionHistorySchema>;
|
|
16
|
-
export declare const getExecutionHistoryTool: {
|
|
17
|
-
name: string;
|
|
18
|
-
description: string;
|
|
19
|
-
inputSchema: z.ZodObject<{
|
|
20
|
-
walletAddress: z.ZodString;
|
|
21
|
-
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
22
|
-
filter: z.ZodDefault<z.ZodOptional<z.ZodEnum<["swap", "transfer", "all"]>>>;
|
|
23
|
-
}, "strip", z.ZodTypeAny, {
|
|
24
|
-
filter: "transfer" | "all" | "swap";
|
|
25
|
-
walletAddress: string;
|
|
26
|
-
limit: number;
|
|
27
|
-
}, {
|
|
28
|
-
walletAddress: string;
|
|
29
|
-
filter?: "transfer" | "all" | "swap" | undefined;
|
|
30
|
-
limit?: number | undefined;
|
|
31
|
-
}>;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
error?: undefined;
|
|
51
|
-
}>;
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getExecutionHistorySchema: z.ZodObject<{
|
|
3
|
+
walletAddress: z.ZodString;
|
|
4
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
5
|
+
filter: z.ZodDefault<z.ZodOptional<z.ZodEnum<["swap", "transfer", "all"]>>>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
filter: "transfer" | "all" | "swap";
|
|
8
|
+
walletAddress: string;
|
|
9
|
+
limit: number;
|
|
10
|
+
}, {
|
|
11
|
+
walletAddress: string;
|
|
12
|
+
filter?: "transfer" | "all" | "swap" | undefined;
|
|
13
|
+
limit?: number | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
export type GetExecutionHistoryInput = z.infer<typeof getExecutionHistorySchema>;
|
|
16
|
+
export declare const getExecutionHistoryTool: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: z.ZodObject<{
|
|
20
|
+
walletAddress: z.ZodString;
|
|
21
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
22
|
+
filter: z.ZodDefault<z.ZodOptional<z.ZodEnum<["swap", "transfer", "all"]>>>;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
filter: "transfer" | "all" | "swap";
|
|
25
|
+
walletAddress: string;
|
|
26
|
+
limit: number;
|
|
27
|
+
}, {
|
|
28
|
+
walletAddress: string;
|
|
29
|
+
filter?: "transfer" | "all" | "swap" | undefined;
|
|
30
|
+
limit?: number | undefined;
|
|
31
|
+
}>;
|
|
32
|
+
};
|
|
33
|
+
interface HistoryEntry {
|
|
34
|
+
txHash: string;
|
|
35
|
+
explorerUrl: string;
|
|
36
|
+
type: "swap" | "transfer" | "other";
|
|
37
|
+
timestamp: string;
|
|
38
|
+
status: "success" | "failed" | "unknown";
|
|
39
|
+
value: string;
|
|
40
|
+
details: string;
|
|
41
|
+
blockNumber: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function handleGetExecutionHistory(input: GetExecutionHistoryInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
|
|
44
|
+
walletAddress: string;
|
|
45
|
+
totalFetched: number;
|
|
46
|
+
history: HistoryEntry[];
|
|
47
|
+
note: string;
|
|
48
|
+
}>>;
|
|
49
|
+
export {};
|
|
52
50
|
//# sourceMappingURL=getExecutionHistory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getExecutionHistory.d.ts","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getExecutionHistory.d.ts","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAgBjF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAKnC,CAAC;AAEF,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB;;;;;IA4I9E"}
|
|
@@ -1,94 +1,155 @@
|
|
|
1
|
-
// ─── Tool: get_execution_history ───────────────────────────────────────
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
1
|
+
// ─── Tool: get_execution_history ───────────────────────────────────────
|
|
2
|
+
// Uses eth_getLogs for ERC-20 Transfer events (fast, covers token swaps)
|
|
3
|
+
// and a parallelised block scan of the last 100 blocks for native PHRS transfers.
|
|
4
|
+
// Prior approach scanned 500 blocks sequentially — 500+ RPC calls, always timed out.
|
|
5
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { publicClient, getExplorerUrl } from "../lib/pharosClient.js";
|
|
8
|
+
import { DODO_ROUTE_PROXY_ADDRESS, USDC_ADDRESS, USDT_ADDRESS, WBTC_ADDRESS, WETH_ADDRESS, WPHRS_ADDRESS, CIRCLE_USDC_ADDRESS, } from "../lib/constants.js";
|
|
9
|
+
import { formatEther, parseAbiItem } from "viem";
|
|
10
|
+
import { ok, fail } from "../lib/toolResponse.js";
|
|
11
|
+
const TRANSFER_EVENT = parseAbiItem("event Transfer(address indexed from, address indexed to, uint256 value)");
|
|
12
|
+
export const getExecutionHistorySchema = z.object({
|
|
13
|
+
walletAddress: z.string(),
|
|
14
|
+
limit: z.number().optional().default(20),
|
|
15
|
+
filter: z.enum(["swap", "transfer", "all"]).optional().default("all"),
|
|
16
|
+
});
|
|
17
|
+
// All known token addresses to scan for Transfer events (mutable array for viem compatibility)
|
|
18
|
+
const KNOWN_TOKEN_ADDRESSES = [
|
|
19
|
+
USDC_ADDRESS,
|
|
20
|
+
USDT_ADDRESS,
|
|
21
|
+
WBTC_ADDRESS,
|
|
22
|
+
WETH_ADDRESS,
|
|
23
|
+
WPHRS_ADDRESS,
|
|
24
|
+
CIRCLE_USDC_ADDRESS,
|
|
25
|
+
];
|
|
26
|
+
const ERC20_LOG_RANGE = 10000n; // blocks to scan for ERC-20 events
|
|
27
|
+
const NATIVE_SCAN_RANGE = 100n; // blocks for native PHRS scan
|
|
28
|
+
const NATIVE_BATCH_SIZE = 10; // parallel block fetches per batch
|
|
29
|
+
export const getExecutionHistoryTool = {
|
|
30
|
+
name: "get_execution_history",
|
|
31
|
+
description: "Pull on-chain transaction history for a wallet. Uses eth_getLogs for ERC-20 transfers and parallel block scan for native PHRS. Filters by swap, transfer, or all.",
|
|
32
|
+
inputSchema: getExecutionHistorySchema,
|
|
33
|
+
};
|
|
34
|
+
export async function handleGetExecutionHistory(input) {
|
|
35
|
+
const seen = new Set();
|
|
36
|
+
const history = [];
|
|
37
|
+
try {
|
|
38
|
+
const blockNumber = await publicClient.getBlockNumber();
|
|
39
|
+
const erc20FromBlock = blockNumber > ERC20_LOG_RANGE ? blockNumber - ERC20_LOG_RANGE : 0n;
|
|
40
|
+
const nativeFromBlock = blockNumber > NATIVE_SCAN_RANGE ? blockNumber - NATIVE_SCAN_RANGE : 0n;
|
|
41
|
+
const walletAddr = input.walletAddress;
|
|
42
|
+
// ── ERC-20 Transfer logs ─────────────────────────────────────────────
|
|
43
|
+
// Two queries: wallet as sender (from) and wallet as receiver (to)
|
|
44
|
+
const empty = [];
|
|
45
|
+
const [sentLogs, receivedLogs] = await Promise.all([
|
|
46
|
+
publicClient.getLogs({
|
|
47
|
+
fromBlock: erc20FromBlock,
|
|
48
|
+
toBlock: blockNumber,
|
|
49
|
+
address: KNOWN_TOKEN_ADDRESSES,
|
|
50
|
+
event: TRANSFER_EVENT,
|
|
51
|
+
args: { from: walletAddr },
|
|
52
|
+
strict: true,
|
|
53
|
+
}).catch(() => empty),
|
|
54
|
+
publicClient.getLogs({
|
|
55
|
+
fromBlock: erc20FromBlock,
|
|
56
|
+
toBlock: blockNumber,
|
|
57
|
+
address: KNOWN_TOKEN_ADDRESSES,
|
|
58
|
+
event: TRANSFER_EVENT,
|
|
59
|
+
args: { to: walletAddr },
|
|
60
|
+
strict: true,
|
|
61
|
+
}).catch(() => empty),
|
|
62
|
+
]);
|
|
63
|
+
const allLogs = [...sentLogs, ...receivedLogs];
|
|
64
|
+
// Resolve block timestamps in bulk for unique block numbers in logs
|
|
65
|
+
const uniqueBlocks = [...new Set(allLogs.map((l) => l.blockNumber))];
|
|
66
|
+
const blockTimestampMap = new Map();
|
|
67
|
+
for (let i = 0; i < uniqueBlocks.length; i += NATIVE_BATCH_SIZE) {
|
|
68
|
+
const batch = uniqueBlocks.slice(i, i + NATIVE_BATCH_SIZE);
|
|
69
|
+
const blocks = await Promise.all(batch.map((bn) => publicClient.getBlock({ blockNumber: bn }).catch(() => null)));
|
|
70
|
+
for (const block of blocks) {
|
|
71
|
+
if (block) {
|
|
72
|
+
blockTimestampMap.set(block.number, new Date(Number(block.timestamp) * 1000).toISOString());
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const log of allLogs) {
|
|
77
|
+
if (history.length >= input.limit)
|
|
78
|
+
break;
|
|
79
|
+
if (!log.transactionHash || seen.has(log.transactionHash))
|
|
80
|
+
continue;
|
|
81
|
+
const isDodoSwap = log.address.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase()
|
|
82
|
+
|| sentLogs.some((l) => l.transactionHash === log.transactionHash && l.address.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase())
|
|
83
|
+
|| receivedLogs.some((l) => l.transactionHash === log.transactionHash && l.address.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase());
|
|
84
|
+
const txType = isDodoSwap ? "swap" : "transfer";
|
|
85
|
+
if (input.filter !== "all" && txType !== input.filter)
|
|
86
|
+
continue;
|
|
87
|
+
seen.add(log.transactionHash);
|
|
88
|
+
history.push({
|
|
89
|
+
txHash: log.transactionHash,
|
|
90
|
+
explorerUrl: getExplorerUrl(log.transactionHash),
|
|
91
|
+
type: txType,
|
|
92
|
+
timestamp: blockTimestampMap.get(log.blockNumber) ?? "unknown",
|
|
93
|
+
status: "unknown", // receipt not fetched per-log to avoid N+1
|
|
94
|
+
value: "0",
|
|
95
|
+
details: `ERC-20 Transfer on block ${log.blockNumber.toString()}`,
|
|
96
|
+
blockNumber: log.blockNumber.toString(),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
// ── Native PHRS transfers — parallel block scan (last 100 blocks) ───
|
|
100
|
+
if (input.filter !== "swap" && history.length < input.limit) {
|
|
101
|
+
const blockNums = [];
|
|
102
|
+
for (let b = blockNumber; b > nativeFromBlock; b--) {
|
|
103
|
+
blockNums.push(b);
|
|
104
|
+
}
|
|
105
|
+
for (let i = 0; i < blockNums.length && history.length < input.limit; i += NATIVE_BATCH_SIZE) {
|
|
106
|
+
const batch = blockNums.slice(i, i + NATIVE_BATCH_SIZE);
|
|
107
|
+
const blocks = await Promise.all(batch.map((bn) => publicClient.getBlock({ blockNumber: bn, includeTransactions: true }).catch(() => null)));
|
|
108
|
+
for (const block of blocks) {
|
|
109
|
+
if (!block)
|
|
110
|
+
continue;
|
|
111
|
+
const ts = new Date(Number(block.timestamp) * 1000).toISOString();
|
|
112
|
+
for (const tx of block.transactions) {
|
|
113
|
+
if (history.length >= input.limit)
|
|
114
|
+
break;
|
|
115
|
+
if (typeof tx === "string")
|
|
116
|
+
continue;
|
|
117
|
+
if (tx.value === 0n)
|
|
118
|
+
continue; // no native transfer
|
|
119
|
+
const isFrom = tx.from.toLowerCase() === input.walletAddress.toLowerCase();
|
|
120
|
+
const isTo = tx.to?.toLowerCase() === input.walletAddress.toLowerCase();
|
|
121
|
+
if (!isFrom && !isTo)
|
|
122
|
+
continue;
|
|
123
|
+
if (seen.has(tx.hash))
|
|
124
|
+
continue;
|
|
125
|
+
seen.add(tx.hash);
|
|
126
|
+
history.push({
|
|
127
|
+
txHash: tx.hash,
|
|
128
|
+
explorerUrl: getExplorerUrl(tx.hash),
|
|
129
|
+
type: "transfer",
|
|
130
|
+
timestamp: ts,
|
|
131
|
+
status: "unknown",
|
|
132
|
+
value: formatEther(tx.value),
|
|
133
|
+
details: isFrom
|
|
134
|
+
? `Sent ${formatEther(tx.value)} PHRS to ${tx.to}`
|
|
135
|
+
: `Received ${formatEther(tx.value)} PHRS from ${tx.from}`,
|
|
136
|
+
blockNumber: block.number.toString(),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Sort descending by block number
|
|
143
|
+
history.sort((a, b) => Number(BigInt(b.blockNumber) - BigInt(a.blockNumber)));
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
return fail("HISTORY_FETCH_FAILED", `Failed to fetch history: ${err.message}`, true, "get_execution_history");
|
|
147
|
+
}
|
|
148
|
+
return ok({
|
|
149
|
+
walletAddress: input.walletAddress,
|
|
150
|
+
totalFetched: history.length,
|
|
151
|
+
history,
|
|
152
|
+
note: "ERC-20 history covers last 10,000 blocks via eth_getLogs. Native PHRS transfers cover last 100 blocks via parallel block scan.",
|
|
153
|
+
});
|
|
154
|
+
}
|
|
94
155
|
//# sourceMappingURL=getExecutionHistory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getExecutionHistory.js","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"getExecutionHistory.js","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yEAAyE;AACzE,kFAAkF;AAClF,qFAAqF;AACrF,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAY,MAAM,MAAM,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,cAAc,GAAG,YAAY,CACjC,yEAAyE,CAC1E,CAAC;AAIF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtE,CAAC,CAAC;AAIH,+FAA+F;AAC/F,MAAM,qBAAqB,GAAoB;IAC7C,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,mBAAmB;CACpB,CAAC;AAEF,MAAM,eAAe,GAAG,MAAO,CAAC,CAAG,mCAAmC;AACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAI,8BAA8B;AACjE,MAAM,iBAAiB,GAAG,EAAE,CAAC,CAAM,mCAAmC;AAEtE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,mKAAmK;IACrK,WAAW,EAAE,yBAAyB;CACvC,CAAC;AAaF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,KAA+B;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,eAAe,GAAG,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,aAA8B,CAAC;QAExD,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAmC,MAAM,OAAO,CAAC,GAAG,CAAC;YACjF,YAAY,CAAC,OAAO,CAAC;gBACnB,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,qBAAqB;gBAC9B,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,YAAY,CAAC,OAAO,CAAC;gBACnB,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,qBAAqB;gBAC9B,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;gBACxB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;SACtB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC;QAE/C,oEAAoE;QACpE,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACf,YAAY,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAC7D,CACF,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,EAAE,CAAC;oBACV,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK;gBAAE,MAAM;YACzC,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC;gBAAE,SAAS;YAEpE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,wBAAwB,CAAC,WAAW,EAAE;mBAClF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,wBAAwB,CAAC,WAAW,EAAE,CAAC;mBACrI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,wBAAwB,CAAC,WAAW,EAAE,CAAC,CAAC;YAE/I,MAAM,MAAM,GAAwB,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YACrE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,SAAS;YAEhE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,GAAG,CAAC,eAAe;gBAC3B,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC;gBAChD,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS;gBAC9D,MAAM,EAAE,SAAS,EAAE,2CAA2C;gBAC9D,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,4BAA4B,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE;gBACjE,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;QAED,uEAAuE;QACvE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAC7F,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACf,YAAY,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACxF,CACF,CAAC;gBAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK;wBAAE,SAAS;oBACrB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAElE,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;wBACpC,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK;4BAAE,MAAM;wBACzC,IAAI,OAAO,EAAE,KAAK,QAAQ;4BAAE,SAAS;wBACrC,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE;4BAAE,SAAS,CAAC,qBAAqB;wBAEpD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;wBAC3E,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;wBACxE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;4BAAE,SAAS;wBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;4BAAE,SAAS;wBAEhC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC;4BACX,MAAM,EAAE,EAAE,CAAC,IAAI;4BACf,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC;4BACpC,IAAI,EAAE,UAAU;4BAChB,SAAS,EAAE,EAAE;4BACb,MAAM,EAAE,SAAS;4BACjB,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;4BAC5B,OAAO,EAAE,MAAM;gCACb,CAAC,CAAC,QAAQ,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;gCAClD,CAAC,CAAC,YAAY,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE;4BAC5D,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;yBACrC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CACT,sBAAsB,EACtB,4BAA6B,GAAa,CAAC,OAAO,EAAE,EACpD,IAAI,EACJ,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;QACR,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,OAAO;QACP,IAAI,EAAE,gIAAgI;KACvI,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const getGasPriceSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
3
|
-
export type GetGasPriceInput = z.input<typeof getGasPriceSchema>;
|
|
4
|
-
export declare const getGasPriceTool: {
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
8
|
-
};
|
|
9
|
-
export declare function handleGetGasPrice(_raw: GetGasPriceInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
|
|
10
|
-
gasPrice: {
|
|
11
|
-
value: string;
|
|
12
|
-
unit: string;
|
|
13
|
-
};
|
|
14
|
-
gasPriceWei: string;
|
|
15
|
-
trend: "low" | "high" | "normal";
|
|
16
|
-
recommendation: string;
|
|
17
|
-
estimates: {
|
|
18
|
-
nativeTransfer: {
|
|
19
|
-
gas: {
|
|
20
|
-
value: string;
|
|
21
|
-
unit: string;
|
|
22
|
-
};
|
|
23
|
-
costPHRS: {
|
|
24
|
-
value: string;
|
|
25
|
-
unit: string;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
tokenSwap: {
|
|
29
|
-
gas: {
|
|
30
|
-
value: string;
|
|
31
|
-
unit: string;
|
|
32
|
-
};
|
|
33
|
-
costPHRS: {
|
|
34
|
-
value: string;
|
|
35
|
-
unit: string;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
chainId: number;
|
|
40
|
-
environment: string;
|
|
41
|
-
isMainnet: boolean;
|
|
42
|
-
source: string;
|
|
43
|
-
}>>;
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getGasPriceSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
3
|
+
export type GetGasPriceInput = z.input<typeof getGasPriceSchema>;
|
|
4
|
+
export declare const getGasPriceTool: {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
8
|
+
};
|
|
9
|
+
export declare function handleGetGasPrice(_raw: GetGasPriceInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
|
|
10
|
+
gasPrice: {
|
|
11
|
+
value: string;
|
|
12
|
+
unit: string;
|
|
13
|
+
};
|
|
14
|
+
gasPriceWei: string;
|
|
15
|
+
trend: "low" | "high" | "normal";
|
|
16
|
+
recommendation: string;
|
|
17
|
+
estimates: {
|
|
18
|
+
nativeTransfer: {
|
|
19
|
+
gas: {
|
|
20
|
+
value: string;
|
|
21
|
+
unit: string;
|
|
22
|
+
};
|
|
23
|
+
costPHRS: {
|
|
24
|
+
value: string;
|
|
25
|
+
unit: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
tokenSwap: {
|
|
29
|
+
gas: {
|
|
30
|
+
value: string;
|
|
31
|
+
unit: string;
|
|
32
|
+
};
|
|
33
|
+
costPHRS: {
|
|
34
|
+
value: string;
|
|
35
|
+
unit: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
chainId: number;
|
|
40
|
+
environment: string;
|
|
41
|
+
isMainnet: boolean;
|
|
42
|
+
source: string;
|
|
43
|
+
}>>;
|
|
44
44
|
//# sourceMappingURL=getGasPrice.d.ts.map
|