import { Effect, Schema } from "effect";
import { ToolAddress } from "./ids";
/** Tool needs structured input from the user (render a form). */
export declare const FormElicitation: Schema.TaggedStruct<"FormElicitation", {
    readonly message: Schema.String;
    /** JSON Schema describing the fields to collect. */
    readonly requestedSchema: Schema.$Record<Schema.String, Schema.Unknown>;
}>;
export type FormElicitation = typeof FormElicitation.Type;
/** Tool needs the user to visit a URL (OAuth, approval page, etc.). */
export declare const UrlElicitation: Schema.TaggedStruct<"UrlElicitation", {
    readonly message: Schema.String;
    readonly url: Schema.String;
    /** Unique id so the host can correlate the callback. */
    readonly elicitationId: Schema.brand<Schema.String, "ElicitationId">;
}>;
export type UrlElicitation = typeof UrlElicitation.Type;
export type ElicitationRequest = FormElicitation | UrlElicitation;
export declare const ElicitationAction: Schema.Literals<readonly ["accept", "decline", "cancel"]>;
export type ElicitationAction = typeof ElicitationAction.Type;
export declare const ElicitationResponse: Schema.Struct<{
    readonly action: Schema.Literals<readonly ["accept", "decline", "cancel"]>;
    /** Present when `action` is "accept" — the data the user provided. */
    readonly content: Schema.optional<Schema.$Record<Schema.String, Schema.Unknown>>;
}>;
export type ElicitationResponse = typeof ElicitationResponse.Type;
/** Handler input — the tool address being invoked, its args, and the request. */
export interface ElicitationContext {
    readonly address: ToolAddress;
    readonly args: unknown;
    readonly request: ElicitationRequest;
}
/** Host-provided handler the SDK calls when a tool suspends for input. */
export type ElicitationHandler = (ctx: ElicitationContext) => Effect.Effect<ElicitationResponse>;
/** Executor-level elicitation policy: a handler, or `"accept-all"` to
 *  auto-accept every request (tests / non-interactive hosts). */
export type OnElicitation = ElicitationHandler | "accept-all";
/** Per-call options for `execute`. */
export interface InvokeOptions {
    /** Override the executor-level handler for this single call. */
    readonly onElicitation?: OnElicitation;
}
declare const ElicitationDeclinedError_base: Schema.Class<ElicitationDeclinedError, Schema.TaggedStruct<"ElicitationDeclinedError", {
    readonly address: Schema.brand<Schema.String, "ToolAddress">;
    readonly action: Schema.Literals<readonly ["decline", "cancel"]>;
}>, import("effect/Cause").YieldableError>;
/** A tool was declined or cancelled during elicitation. */
export declare class ElicitationDeclinedError extends ElicitationDeclinedError_base {
    get message(): string;
}
export {};
//# sourceMappingURL=elicitation.d.ts.map