import type { ZodType } from 'zod';
/**
 * Convenience alias for z.ZodType — used inside the Gemini adapter.
 * Defined here (types layer) per project ESLint rules.
 * Renamed from `ZodField` to `GeminiZodField` to avoid future barrel collision
 * with other host adapters (e.g. Codex) or unrelated Zod aliases.
 */
export type GeminiZodField = ZodType;
/**
 * Marker used to detect a Gemini CLI workspace at a project root.
 * A workspace is detected when .gemini/ directory exists OR GEMINI_* env vars are present.
 */
export interface GeminiWorkspaceMarker {
    /** Whether a Gemini workspace was detected */
    detected: boolean;
    /** Path to the .gemini/ config directory, if it exists */
    configDir?: string;
    /** GEMINI_* environment variable keys found, if any */
    envVars: string[];
    /** Gemini CLI version if detectable from config */
    version?: string;
}
/**
 * Represents the translation of a single Planu/Zod tool schema into Gemini's
 * function-calling declaration format and back.
 */
export interface GeminiToolTranslation {
    /** Internal Planu tool name (snake_case) */
    planToolName: string;
    /** Gemini function declaration name (same, snake_case) */
    geminiFunctionName: string;
    /** Gemini-compatible JSON Schema for parameters */
    geminiParameterSchema: GeminiFunctionParameters;
    /** Whether the translation was lossless (no Zod features dropped) */
    lossless: boolean;
    /** Warnings about features that could not be translated */
    warnings: string[];
}
/**
 * Gemini function-calling parameter schema (subset of JSON Schema used by Gemini API).
 */
export interface GeminiFunctionParameters {
    type: 'object';
    properties: Record<string, GeminiSchemaProperty>;
    required?: string[];
    description?: string;
}
/**
 * A single property inside a Gemini function parameter schema.
 */
export interface GeminiSchemaProperty {
    type: string;
    description?: string;
    enum?: string[];
    items?: GeminiSchemaProperty;
    properties?: Record<string, GeminiSchemaProperty>;
    required?: string[];
}
/**
 * Represents multimodal input that Gemini CLI provides natively.
 * Used to trigger the automatic spec-from-image pipeline.
 */
export interface GeminiMultimodalInput {
    /** Whether an image attachment is present in the current turn */
    hasImage: boolean;
    /** Whether a PDF attachment is present */
    hasPdf: boolean;
    /** MIME types of all attachments */
    attachmentMimeTypes: string[];
    /** Whether Figma export tokens were detected in the attachments */
    hasFigmaTokens: boolean;
    /** Raw attachment references as provided by Gemini's content parts */
    attachmentRefs: GeminiAttachmentRef[];
}
/**
 * A reference to a single attachment in Gemini's multimodal content.
 */
export interface GeminiAttachmentRef {
    /** MIME type of the attachment */
    mimeType: string;
    /** Data URI or file path if available */
    dataUri?: string;
    /** File name hint if available */
    fileName?: string;
}
/**
 * Result of scaffolding the .gemini/ config directory for a project.
 */
export interface GeminiConfigScaffold {
    /** Whether any files were written (false if all existed already — idempotent) */
    modified: boolean;
    /** Files that were created */
    filesCreated: string[];
    /** Files that were skipped because they already existed */
    filesSkipped: string[];
    /** Whether .claude/ agent files were (correctly) NOT created */
    claudeFilesOmitted: boolean;
}
/**
 * Result of running the multimodal spec creation pipeline.
 * Defined here (types layer) to satisfy the no-interface-alongside-function rule.
 */
export interface MultimodalSpecFlowResult {
    /** Whether the multimodal pipeline was triggered (image or PDF present) */
    triggered: boolean;
    /** Whether inject_component_context was called */
    componentContextInjected: boolean;
    /** Whether figma-tokens extraction was attempted */
    figmaTokensExtracted: boolean;
    /** Human-readable summary of what was done */
    summary: string;
    /** Any warnings produced during the pipeline */
    warnings: string[];
}
/**
 * Graceful-fallback warning logged once per session when a Planu surface
 * has no Gemini equivalent (e.g. Agent Teams, plan mode, subagents).
 */
export interface GeminiFallbackWarning {
    /** The Planu surface that has no Gemini equivalent */
    surface: 'agent-teams' | 'plan-mode' | 'subagents' | 'worktrees';
    /** Human-readable description of what was substituted */
    fallbackDescription: string;
    /** Whether the warning has already been logged this session */
    alreadyLogged: boolean;
}
/**
 * Result of activating the Gemini adapter on the MCP server.
 */
export interface GeminiAdapterActivationResult {
    /** Whether the adapter was activated */
    activated: boolean;
    /** Number of tools registered with Gemini-compatible schemas */
    toolsRegistered: number;
    /** Any warnings emitted during activation */
    warnings: string[];
}
//# sourceMappingURL=gemini.d.ts.map