import { Regions, IndicativoSubSimpleKey, SubjuntivoSubSimpleKey, ImperativoSubKey, ImpersonalSubKey, IndicativoSubCompKey, IndicativoSubKey, SubjuntivoSubCompKey, SubjuntivoSubKey } from './types';
declare type DefectiveType = 'imorfo' | 'eimorfo' | 'imper' | 'tercio' | 'terciop' | 'mmorfo' | 'bimorfop' | 'bimorfog' | 'trimorfo' | 'omorfo' | 'ogmorfo' | 'osmorfo';
declare type AttributeValues = DefectiveType | boolean | string;
declare type AttributeKeys = 'PR' | 'PS' | 'D' | 'M' | 'V';
declare type IndicativoSubjuntivoModeKey = 'Indicativo' | 'Subjuntivo';
export declare type DesinenceTable = {
    Impersonal: {
        [subkey in ImpersonalSubKey]: string;
    };
    Indicativo: {
        [subkey in IndicativoSubSimpleKey]: string[];
    };
    Subjuntivo: {
        [subkey in SubjuntivoSubSimpleKey]: string[];
    };
};
export declare type ResultTable = {
    Impersonal: {
        [subkey in ImpersonalSubKey]: string;
    };
    Indicativo: {
        [subkey in IndicativoSubKey]: string[];
    };
    Subjuntivo: {
        [subkey in SubjuntivoSubKey]: string[];
    };
    Imperativo: {
        [subkey in ImperativoSubKey]: string[];
    };
};
export declare type ModelAttributes = {
    [attributekey in AttributeKeys]?: AttributeValues;
};
export declare type ModelWithAttributes = {
    [modelname: string]: ModelAttributes;
};
export declare type Model = string | ModelWithAttributes;
export declare type VerbModelData = Model[] | Model;
export declare type VerbModelTemplates = {
    [verbname: string]: VerbModelData;
};
export declare const INDICATIVO_SIMPLE_KEYS: IndicativoSubSimpleKey[];
export declare const SUBJUNTIVO_SIMPLE_KEYS: SubjuntivoSubSimpleKey[];
export declare const INDICATIVO_COMP_KEYS: IndicativoSubCompKey[];
export declare const SUBJUNTIVO_COMP_KEYS: SubjuntivoSubCompKey[];
export declare abstract class BaseModel {
    protected verb: string;
    protected stem: string;
    protected reflexive: boolean;
    protected region: Regions;
    protected desinences: DesinenceTable;
    protected table: ResultTable;
    protected participioCompuesto: string;
    protected version: string;
    protected attributes: ModelAttributes;
    private reflexPronouns;
    private auxHaber;
    private defectiveAttributes;
    protected constructor(verb: string, region: Regions, attributes: ModelAttributes);
    private initAuxiliaryHaber;
    getConjugation(): ResultTable;
    private setInfinitivo;
    protected setGerundio(root?: string): void;
    protected setParticipio(): void;
    protected setTable(mode: IndicativoSubjuntivoModeKey, key: IndicativoSubSimpleKey | SubjuntivoSubSimpleKey, roots?: string[]): void;
    protected setIndicativoPresente(): void;
    protected setIndicativoPreteritoImperfecto(): void;
    protected setIndicativoPreteritoIndefinido(): void;
    protected setIndicativoFuturoImperfecto(): void;
    protected setIndicativoCondicionalSimple(): void;
    protected setSubjuntivoPresente(): void;
    protected setSubjuntivoPreteritoImperfectoRa(): void;
    protected setSubjuntivoPreteritoImperfectoSe(): void;
    protected setSubjuntivoFuturoImperfecto(): void;
    private setCompuestos;
    protected setImperativoAfirmativo(): void;
    protected setImperativoAfirmativoMono(regex: RegExp, subP: string, subNP: string): void;
    protected setImperativoNegativo(): void;
    private applyDefectiveAttributes;
    protected setIndicativoPresentePattern125(dot: string, star: string): void;
    protected setSubjuntivoPresentePattern0125(dot: string, star?: string): void;
    protected setIndicativoPreteritoIndefinidoPattern0(dot: string): void;
    protected setIndicativoPreteritoIndefinidoPattern25(dot: string): void;
}
export {};
//# sourceMappingURL=basemodel.d.ts.map