interface DateTimeComponents {
    [key: string]: number;
}
/**
 * Clase con utilidades de fecha y hora.
 * Código basado en la librería: https://github.com/knowledgecode/date-and-time, pero
 * adaptado para que funcione en typescript
 */
export default class DateUtils {
    private parsers;
    constructor();
    /**
     * Transforma una fecha pasada con un formato determinado a otro formato
     * @param dateString | Fecha
     * @param arg1 | formato de la fecha
     * @param arg2 | formato a convertir
     * @param utc | salida en UTC
     * @return fecha formateada
     */
    transform(dateString: string, arg1: string, arg2: string, utc?: boolean): string;
    /**
     * formatea una fecha a string, segun el formato pasado
     * @param dateObj | Fecha
     * @param formatter | Formato
     * @param utc | Salida como UTC
     */
    format(dateObj: Date, formatter: string, utc?: boolean): string;
    /**
     * Transforma una fecha string a objeto fecha
     * @param dateString Fecha
     * @param arg formato de la fecha
     * @param utc Salida en UTC
     * @returns Objeto fecha
     */
    parse(dateString: string, arg: string, utc?: boolean): Date;
    /**
     * Añade o resta días a una fecha
     * @param dateObj | Objeto fecha
     * @param months | Numero de segundos
     * @param utc | Calculo como UTC
     * @returns
     */
    addMonths(dateObj: Date, months: number, utc?: boolean): Date;
    /**
     * Añade o resta días a una fecha
     * @param dateObj | Objeto fecha
     * @param days | Numero de segundos
     * @param utc | Calculo como UTC
     * @returns
     */
    addDays(dateObj: Date, days: number, utc?: boolean): Date;
    /**
     * Añade o resta horas a una fecha
     * @param dateObj | Objeto fecha
     * @param hours | Numero de segundos
     * @param utc | Calculo como UTC
     * @returns
     */
    addHours(dateObj: Date, hours: number, utc?: boolean): Date;
    /**
     * Añade o resta minutos a una fecha
     * @param dateObj | Objeto fecha
     * @param minutes | Numero de segundos
     * @param utc | Calculo como UTC
     * @returns
     */
    addMinutes(dateObj: Date, minutes: number, utc?: boolean): Date;
    /**
     * Añade o resta segundos a una fecha
     * @param dateObj | Objeto fecha
     * @param seconds | Numero de segundos
     * @param utc | Calculo como UTC
     * @returns
     */
    addSeconds(dateObj: Date, seconds: number, utc?: boolean): Date;
    /**
     * Añade o resta milisegundos a una fecha
     * @param dateObj | Objeto fecha
     * @param milliseconds | Numero de milisegundos
     * @param utc | Calculo como UTC
     * @returns
     */
    addMilliseconds(dateObj: Date, milliseconds: number, utc?: boolean): Date;
    /**
     * Extrae las partes del formato
     * @param formatString | formato
     * @returns Array con el formato separado en un array
     */
    protected compile(formatString: string): string[];
    /**
     * Realiza el pre-parse de la fecha en base al formato pasado
     * @param dateString | Fecha
     * @param arg | Formato de la fecha
     * @returns Estructura con los datos de la fecha pasada
     */
    protected preparse(dateString: string, arg: string): DateTimeComponents;
    /**
     * Devuelve si el año es bisiesto
     * @param y | Año
     * @returns Booleano si es bisiesto
     */
    protected isLeapYear: (y: number) => boolean;
    /**
     * Devuelve si la fecha en componentes es valida
     * @param dt | Fecha en componentes
     * @returns booleano si la fecha es valida
     */
    protected isValid: (dt: DateTimeComponents) => boolean;
}
export {};
