interface HaciendaConfig {
    /** URL base del API de Hacienda */
    apiUrl: string;
    /** ID del cliente para autenticación */
    clientId: string;
    /** Ambiente (desarrollo o producción) */
    environment: 'desarrollo' | 'produccion';
}
interface SignatureOptions {
    /** Ruta al archivo del certificado .p12 o .pem */
    certPath: string;
    /** Contraseña del certificado */
    password: string;
    /** Tipo de certificado */
    certType: 'p12' | 'pem';
}
interface DocumentResponse {
    /** Clave del documento */
    clave: string;
    /** Fecha de recepción */
    fecha: string;
    /** Estado del documento */
    estado: 'aceptado' | 'rechazado' | 'procesando';
    /** Mensaje de respuesta */
    mensaje?: string;
}

declare function signXml(xml: string, options: SignatureOptions): Promise<string>;

declare class HaciendaAPI {
    private config;
    private token?;
    constructor(config: HaciendaConfig);
    getToken(username: string, password: string): Promise<string>;
    protected validateToken(token?: string): string;
    protected makeRequest<T>(method: 'get' | 'post', url: string, data?: any, token?: string): Promise<T>;
    sendDocument(documentXml: string, token?: string): Promise<DocumentResponse>;
    checkStatus(clave: string, token?: string): Promise<DocumentResponse>;
}

declare const validateXml: (xml: string) => boolean;

export { type DocumentResponse, HaciendaAPI, type HaciendaConfig, type SignatureOptions, signXml, validateXml };
