import { NonSanitizedArray } from '../../lib/array';
import { Mode, Delay, MocksFormat } from '../configuration';
import { IResponse } from '../server/response/model';
import { IFetchedRequest } from '../server/request/model';
import { IMock, MockSpec, MockingOptions, PayloadWithOrigin, Payload, RemotePayload } from './model';
import { ChecksumArgs } from './checksum/model';
import { HarKeyManager } from '../../lib/har/harFile';
export declare class Mock implements IMock {
    private readonly _spec;
    private _localPath;
    private _delay;
    private _skipLog;
    private _mode;
    private _mocksFolder;
    private _mocksHarFile;
    private _mocksHarKeyManager;
    private _harMimeTypesParseJson;
    private _mockHarKey;
    private _mocksFormat;
    private _saveChecksumContent;
    private _saveDetailedTimings;
    private _saveInputRequestData;
    private _saveInputRequestBody;
    private _saveForwardedRequestData;
    private _saveForwardedRequestBody;
    private _remoteURL;
    sourcePayload: PayloadWithOrigin | undefined;
    private __localPayload;
    private get _localPayload();
    private set _localPayload(value);
    private _fetchedPayload;
    private _processed;
    constructor(_spec: MockSpec);
    get options(): MockingOptions;
    get request(): IFetchedRequest;
    get response(): IResponse;
    private _setUserProperty;
    get mode(): Mode;
    setMode(value: Mode | null): void;
    get mocksFormat(): MocksFormat;
    setMocksFormat(value: MocksFormat | null): void;
    get saveChecksumContent(): boolean;
    setSaveChecksumContent(value: boolean | null): void;
    get saveDetailedTimings(): boolean;
    setSaveDetailedTimings(value: boolean | null): void;
    get saveInputRequestData(): boolean;
    setSaveInputRequestData(value: boolean | null): void;
    get saveInputRequestBody(): boolean;
    setSaveInputRequestBody(value: boolean | null): void;
    get saveForwardedRequestData(): boolean;
    setSaveForwardedRequestData(value: boolean | null): void;
    get saveForwardedRequestBody(): boolean;
    setSaveForwardedRequestBody(value: boolean | null): void;
    get remoteURL(): string | null;
    setRemoteURL(value: string | null): void;
    get mocksFolder(): string;
    setMocksFolder(value: NonSanitizedArray<string> | null): void;
    get mocksHarFile(): string;
    setMocksHarFile(value: NonSanitizedArray<string> | null): void;
    get defaultMockHarKey(): string | undefined;
    get mockHarKey(): string | undefined;
    setMockHarKey(value: NonSanitizedArray<string> | null): void;
    get mocksHarKeyManager(): HarKeyManager;
    setMocksHarKeyManager(value: HarKeyManager | null): void;
    get delay(): number;
    setDelay(value: Delay | null): void;
    get skipLog(): boolean;
    setSkipLog(value: boolean): void;
    get harMimeTypesParseJson(): string[];
    setHarMimeTypesParseJson(value: string[]): void;
    setLocalPath(value: NonSanitizedArray<string>): void;
    get localPath(): string;
    get defaultLocalPath(): string;
    get mockFolderFullPath(): string;
    hasLocalMock(): Promise<boolean>;
    hasNoLocalMock(): Promise<boolean>;
    hasLocalFiles(): Promise<boolean>;
    hasNoLocalFiles(): Promise<boolean>;
    checksumContent: string | null;
    checksum(spec: ChecksumArgs): Promise<string>;
    private logInfo;
    private logSeparator;
    readLocalPayloadAndFillResponse(): Promise<boolean>;
    sendResponse(): Promise<void>;
    getPayloadAndFillResponse(): Promise<void>;
    process(): Promise<void>;
    private _getBodyFileName;
    private _folderFmtCreateFileHandler;
    private get _folderFmtDataFile();
    private get _folderFmtInputRequestFile();
    private get _folderFmtForwardedRequestFile();
    private get _folderFmtChecksumFile();
    private get _harFmtFile();
    private get _harFmtRequest();
    private get _harFmtPostData();
    persistPayload(payload: PayloadWithOrigin): Promise<void>;
    private _folderFmtPersistPayload;
    private _harFmtPersistPayload;
    private _createPayloadFromResponse;
    createPayload(payload: Payload): PayloadWithOrigin<'user'>;
    readLocalPayload(): Promise<PayloadWithOrigin<'local' | 'user'> | undefined>;
    fetchPayload(): Promise<RemotePayload>;
    private _getLocalPayload;
    downloadPayload(): Promise<RemotePayload>;
    private _folderFmtPersistForwardedPayload;
    readOrDownloadPayload(): Promise<PayloadWithOrigin<'local' | 'user'> | RemotePayload>;
    readOrFetchPayload(): Promise<PayloadWithOrigin<'local' | 'user'> | RemotePayload>;
    setPayload(payload: PayloadWithOrigin<'local' | 'user'>): void;
    private _sendRequestToOriginalServer;
    fillResponseFromPayload(payload: PayloadWithOrigin): void;
}
