import { IBaseHoliday } from '../holidays';
import { Cycle } from '../types';
import { Category } from '../types';
import { IDataExtractor } from './data-extractor';
import { IFactoryResult } from './factory-result';
export interface IBaseFactory<T extends IBaseHoliday<U>, U> {
    create(location: string, obj: any): IFactoryResult<T>;
}
export declare abstract class BaseFactory<T extends IBaseHoliday<U>, U> implements IBaseFactory<IBaseHoliday<U>, U> {
    private errors;
    private location;
    protected dataExtractor: IDataExtractor;
    private cycle;
    private category;
    private validFrom;
    private validTo;
    constructor();
    protected abstract extractKey(obj: any): U;
    protected abstract extractData(obj: any): void;
    protected abstract createHoliday(key: U, category: Category, cycle: Cycle, validFrom: number, validTo: number): T;
    create(location: string, obj: any): IFactoryResult<T>;
    protected addError(key: string, ...args: Array<any>): void;
    private extractBaseHolidayData;
}
//# sourceMappingURL=base-factory.d.ts.map