import { Page } from 'playwright';
export interface BrowserConfig {
    headless?: boolean;
    timeout?: number;
    viewport?: {
        width: number;
        height: number;
    };
    downloadPath?: string;
}
export interface ClassificationSocietyCredentials {
    username: string;
    password: string;
    email?: string;
    emailPassword?: string;
}
export declare class BrowserAutomation {
    private browserConfig;
    private browser;
    private context;
    private page;
    protected downloadPath: string;
    constructor(browserConfig?: BrowserConfig);
    private ensureDownloadDirectory;
    initialize(): Promise<void>;
    cleanup(): Promise<void>;
    getPage(): Page;
    waitForDownload(timeout?: number): Promise<string>;
    solveCaptchaWithOpenAI(captchaImageSelector: string): Promise<string>;
    handlePopup(action: () => Promise<void>): Promise<Page>;
    waitForNetworkIdle(timeout?: number): Promise<void>;
    takeScreenshot(filename?: string): Promise<string>;
}
export declare class CCSAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
export declare class NKAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
export declare class KRAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
export declare class DNVAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
export declare class LRAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
export declare class BVAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
export declare class ABSAutomation extends BrowserAutomation {
    downloadSurveyStatus(vesselName: string, credentials: ClassificationSocietyCredentials): Promise<string>;
}
