import { type Command } from 'commander';
import { z } from 'zod';
import type { ApiProvider, Prompt, UnifiedConfig } from '../../types';
export declare const TargetPurposeDiscoveryStateSchema: z.ZodObject<{
    currentQuestionIndex: z.ZodNumber;
    answers: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    currentQuestionIndex: number;
    answers: string[];
}, {
    currentQuestionIndex: number;
    answers: string[];
}>;
export declare const TargetPurposeDiscoveryRequestSchema: z.ZodObject<{
    state: z.ZodObject<{
        currentQuestionIndex: z.ZodNumber;
        answers: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        currentQuestionIndex: number;
        answers: string[];
    }, {
        currentQuestionIndex: number;
        answers: string[];
    }>;
    task: z.ZodLiteral<"target-purpose-discovery">;
    version: z.ZodString;
    email: z.ZodNullable<z.ZodOptional<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    version: string;
    state: {
        currentQuestionIndex: number;
        answers: string[];
    };
    task: "target-purpose-discovery";
    email?: string | null | undefined;
}, {
    version: string;
    state: {
        currentQuestionIndex: number;
        answers: string[];
    };
    task: "target-purpose-discovery";
    email?: string | null | undefined;
}>;
export declare const DiscoveredPurposeSchema: z.ZodObject<{
    purpose: z.ZodNullable<z.ZodString>;
    limitations: z.ZodNullable<z.ZodString>;
    user: z.ZodNullable<z.ZodString>;
    tools: z.ZodNullable<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>;
}, "strip", z.ZodTypeAny, {
    purpose: string | null;
    user: string | null;
    tools: Record<string, any>[] | null;
    limitations: string | null;
}, {
    purpose: string | null;
    user: string | null;
    tools: Record<string, any>[] | null;
    limitations: string | null;
}>;
export declare const TargetPurposeDiscoveryResponseSchema: z.ZodObject<{
    done: z.ZodBoolean;
    question: z.ZodOptional<z.ZodString>;
    purpose: z.ZodOptional<z.ZodObject<{
        purpose: z.ZodNullable<z.ZodString>;
        limitations: z.ZodNullable<z.ZodString>;
        user: z.ZodNullable<z.ZodString>;
        tools: z.ZodNullable<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>;
    }, "strip", z.ZodTypeAny, {
        purpose: string | null;
        user: string | null;
        tools: Record<string, any>[] | null;
        limitations: string | null;
    }, {
        purpose: string | null;
        user: string | null;
        tools: Record<string, any>[] | null;
        limitations: string | null;
    }>>;
    state: z.ZodObject<{
        currentQuestionIndex: z.ZodNumber;
        answers: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        currentQuestionIndex: number;
        answers: string[];
    }, {
        currentQuestionIndex: number;
        answers: string[];
    }>;
}, "strip", z.ZodTypeAny, {
    done: boolean;
    state: {
        currentQuestionIndex: number;
        answers: string[];
    };
    purpose?: {
        purpose: string | null;
        user: string | null;
        tools: Record<string, any>[] | null;
        limitations: string | null;
    } | undefined;
    question?: string | undefined;
}, {
    done: boolean;
    state: {
        currentQuestionIndex: number;
        answers: string[];
    };
    purpose?: {
        purpose: string | null;
        user: string | null;
        tools: Record<string, any>[] | null;
        limitations: string | null;
    } | undefined;
    question?: string | undefined;
}>;
export type DiscoveredPurpose = z.infer<typeof DiscoveredPurposeSchema>;
export declare const ArgsSchema: z.ZodEffects<z.ZodObject<{
    config: z.ZodOptional<z.ZodString>;
    target: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    config?: string | undefined;
    target?: string | undefined;
}, {
    config?: string | undefined;
    target?: string | undefined;
}>, {
    config?: string | undefined;
    target?: string | undefined;
}, {
    config?: string | undefined;
    target?: string | undefined;
}>;
export declare const DEFAULT_TURN_COUNT = 5;
/**
 * Queries Cloud for the purpose-discovery logic, sends each logic to the target,
 * and summarizes the results.
 *
 * @param target - The target API provider.
 * @param maxTurns - The maximum number of turns to run the discovery process.
 * @returns The purpose of the target.
 */
export declare function doTargetPurposeDiscovery(target: ApiProvider, prompt?: Prompt): Promise<DiscoveredPurpose | undefined>;
export declare function mergePurposes(humanDefinedPurpose: string | undefined, discoveredPurpose: Record<string, any> | undefined): string;
/**
 * Registers the `discover` command with the CLI.
 */
export declare function discoverCommand(program: Command, defaultConfig: Partial<UnifiedConfig>, defaultConfigPath: string | undefined): void;
//# sourceMappingURL=discover.d.ts.map