import { type Address } from "viem"; import type { LucidlyClient } from "./client.js"; /** * Reference natural-language router for single-prompt vault operations. * * The safety property: any strategy action is GUARDED by client.strategy.hasLeaf(...) BEFORE * a transaction is built. The agent physically cannot execute anything outside the vault's * pre-approved Merkle leaf set — so "run a strategy from one prompt" is acceptable. * * The intent parser here is intentionally simple (keyword/regex). In production you'd swap in * an LLM router that emits the same structured intent; the guard stays exactly as-is. */ export type AgentIntent = { kind: "deploy"; name: string; symbol: string; baseAsset: string; } | { kind: "deploy-v2"; name: string; symbol: string; baseAsset: string; } | { kind: "supply"; protocol: "AaveV3"; asset: string; amount: string; } | { kind: "withdraw"; protocol: "AaveV3"; asset: string; amount: string; } | { kind: "redeem-queue"; asset: string; } | { kind: "view"; } | { kind: "list-vaults"; } | { kind: "list-deposits"; vault: Address; } | { kind: "list-rates"; vault: Address; } | { kind: "review-queue"; } | { kind: "unknown"; }; export interface AgentResult { action: string; ok: boolean; message: string; txHash?: string; data?: unknown; } export declare function parsePrompt(text: string, knownSymbols: string[]): AgentIntent; export declare class LucidlyAgent { private readonly client; constructor(client: LucidlyClient); handle(prompt: string, opts?: { vault?: Address; }): Promise; }