export interface AgentConfig {
    id: string;
    name: string;
    icon: string;
    avatar?: string;
    prompt: string;
    provider?: 'claude-code' | 'anthropic' | 'openai';
    model?: string;
}
export interface PipelineStep {
    id: string;
    agent: string;
    label: string;
    deliverFrom?: string;
}
export interface ScheduleConfig {
    enabled: boolean;
    cron: string;
    timezone?: string;
    mode: 'autonomous';
    prompt: string;
    timeout_minutes?: number;
    retry_on_failure?: number;
}
export interface VisualTemplatesConfig {
    enabled: boolean;
    format?: string;
    count?: number;
}
export interface SpendControlConfig {
    /** Maximum estimated USD cost for a single run. Enforcement depends on mode. */
    maxCostPerRun?: number;
    /**
     * - graceful: warn and continue when limit is hit (default)
     * - strict: halt the run immediately when limit is exceeded
     */
    mode?: 'graceful' | 'strict';
}
export interface SquadConfig {
    squad: {
        code: string;
        setor?: string;
        grupo?: string;
        sessao?: string;
        /** @deprecated Use setor/grupo/sessao instead. Kept for backwards compatibility. */
        group?: string;
        name: string;
        description: string;
        icon: string;
        agents: AgentConfig[];
        skills: string[];
        pipeline: {
            steps: PipelineStep[];
        };
        schedule?: ScheduleConfig;
        chain?: string[];
        webhooks?: {
            secret?: string;
        };
        spendControl?: SpendControlConfig;
        visualTemplates?: VisualTemplatesConfig;
        mcps?: string[];
    };
}
export declare function loadSquad(squadDir: string): SquadConfig;
export declare function findSquadDir(squadsDir: string, code: string): string | null;
