import { Agent } from '../agent';
export interface ChicagoTestSuite {
    suiteName: string;
    testCases: ChicagoTestCase[];
    mockObjects: MockObject[];
    testDoubles: TestDouble[];
    interactions: InteractionVerification[];
    coverage: {
        behavioral: number;
        interaction: number;
        state: number;
    };
}
export interface ChicagoTestCase {
    name: string;
    description: string;
    setup: string;
    execution: string;
    verification: string;
    mockingStrategy: 'strict' | 'loose' | 'behavior';
    dependencies: string[];
}
export interface MockObject {
    name: string;
    type: string;
    methods: MockMethod[];
    properties: MockProperty[];
    behavior: string;
}
export interface MockMethod {
    name: string;
    parameters: string[];
    returnType: string;
    behavior: string;
    verifications: string[];
}
export interface MockProperty {
    name: string;
    type: string;
    defaultValue: any;
    behavior: string;
}
export interface TestDouble {
    name: string;
    type: 'mock' | 'stub' | 'spy' | 'fake' | 'dummy';
    purpose: string;
    implementation: string;
}
export interface InteractionVerification {
    description: string;
    target: string;
    method: string;
    parameters: any[];
    expectedCalls: number;
    order?: number;
}
export declare class ChicagoTester extends Agent {
    getPromptTemplate(): string;
    executeTask(): Promise<any>;
    identifyDependencies(sourceCode: string): Promise<string[]>;
    generateMockObjects(dependencies: string[], sourceCode: string): Promise<MockObject[]>;
    createTestDoubles(dependencies: string[]): Promise<TestDouble[]>;
    generateInteractionVerifications(methods: string[], dependencies: string[]): Promise<InteractionVerification[]>;
    analyzeInteractionPatterns(sourceCode: string): Promise<string[]>;
    private readSourceFiles;
    private generateChicagoTestSuite;
    private extractMethodsForDependency;
    private extractPropertiesForDependency;
    private generateMockImplementation;
    private generateSpyImplementation;
    private inferMethodCall;
    private extractMethods;
    private parseTestCases;
    private generateTestCode;
    private generateTestFilePath;
}
//# sourceMappingURL=chicago-tester.d.ts.map