import { Effect, Schema } from "effect";
import { ToolId } 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.String;
}>;
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;
export interface ElicitationContext {
    readonly toolId: ToolId;
    readonly args: unknown;
    readonly request: ElicitationRequest;
}
/**
 * A function the host provides to handle elicitation.
 * The SDK calls this when a tool suspends to ask for user input.
 * The host renders UI / prompts the user / does OAuth / etc.
 */
export type ElicitationHandler = (ctx: ElicitationContext) => Effect.Effect<ElicitationResponse>;
declare const ElicitationDeclinedError_base: Schema.Class<ElicitationDeclinedError, Schema.TaggedStruct<"ElicitationDeclinedError", {
    readonly toolId: Schema.brand<Schema.String, "ToolId">;
    readonly action: Schema.Literals<readonly ["decline", "cancel"]>;
}>, import("effect/Cause").YieldableError>;
export declare class ElicitationDeclinedError extends ElicitationDeclinedError_base {
}
export {};
//# sourceMappingURL=elicitation.d.ts.map