/**
 * Módulo Core - Tipos y utilidades comunes
 *
 * Este módulo proporciona tipos y utilidades comunes utilizados en toda la biblioteca.
 */
/**
 * Clase base para errores de la biblioteca
 */
export declare class NodeFactError extends Error {
    constructor(message: string);
}
/**
 * Opciones para la firma digital
 */
export interface SignOptions {
    keyFile?: string;
    certFile?: string;
    pemFile?: string;
    password?: string;
    algorithm?: string;
    location?: string;
    uri?: string;
    transforms?: string[];
}
/**
 * Tipos de documentos electrónicos
 */
export declare enum TipoDocumento {
    FACTURA = "01",
    BOLETA = "03",
    NOTA_CREDITO = "07",
    NOTA_DEBITO = "08",
    GUIA_REMISION = "09",
    COMPROBANTE_RETENCION = "20",
    COMPROBANTE_PERCEPCION = "40",
    RESUMEN_DIARIO = "RC",
    COMUNICACION_BAJA = "RA"
}
/**
 * Tipos de moneda
 */
export declare enum TipoMoneda {
    PEN = "PEN",
    USD = "USD",
    EUR = "EUR"
}
/**
 * Tipos de IGV
 */
export declare enum TipoIGV {
    GRAVADO_OPERACION_ONEROSA = "10",
    GRAVADO_RETIRO_POR_PREMIO = "11",
    GRAVADO_RETIRO_POR_DONACION = "12",
    GRAVADO_RETIRO = "13",
    GRAVADO_RETIRO_POR_PUBLICIDAD = "14",
    GRAVADO_BONIFICACIONES = "15",
    GRAVADO_RETIRO_POR_ENTREGA_A_TRABAJADORES = "16",
    GRAVADO_IVAP = "17",
    EXONERADO_OPERACION_ONEROSA = "20",
    EXONERADO_TRANSFERENCIA_GRATUITA = "21",
    INAFECTO_OPERACION_ONEROSA = "30",
    INAFECTO_RETIRO_POR_BONIFICACION = "31",
    INAFECTO_RETIRO = "32",
    INAFECTO_RETIRO_POR_MUESTRAS_MEDICAS = "33",
    INAFECTO_RETIRO_POR_CONVENIO_COLECTIVO = "34",
    INAFECTO_RETIRO_POR_PREMIO = "35",
    INAFECTO_RETIRO_POR_PUBLICIDAD = "36",
    EXPORTACION = "40"
}
/**
 * Datos del emisor
 */
export interface Emisor {
    ruc: string;
    razonSocial: string;
    nombreComercial?: string;
    direccion: {
        ubigeo?: string;
        departamento?: string;
        provincia?: string;
        distrito?: string;
        direccion: string;
    };
    codigoEstablecimiento?: string;
}
/**
 * Datos del receptor
 */
export interface Receptor {
    tipoDocumento: string;
    numeroDocumento: string;
    razonSocial: string;
    direccion?: {
        ubigeo?: string;
        departamento?: string;
        provincia?: string;
        distrito?: string;
        direccion: string;
    };
}
/**
 * Datos de un ítem
 */
export interface Item {
    codigo: string;
    descripcion: string;
    unidadMedida: string;
    cantidad: number;
    valorUnitario: number;
    precioUnitario: number;
    tipoIGV: TipoIGV;
    igv: number;
    porcentajeIGV: number;
    subtotal: number;
    total: number;
}
/**
 * Datos de impuestos
 */
export interface Impuestos {
    igv: number;
    isc?: number;
    icbper?: number;
    total: number;
}
/**
 * Formatea un número como string con 2 decimales
 * @param value Número a formatear
 * @returns Número formateado como string con 2 decimales
 */
export declare function formatAmount(value: number): string;
/**
 * Formatea una fecha como string en formato YYYY-MM-DD
 * @param date Fecha a formatear
 * @returns Fecha formateada como string en formato YYYY-MM-DD
 */
export declare function formatDate(date: Date): string;
