import type { Calle } from './types';
import type { CalleInexistenteException, CalleInexistenteAEsaAlturaException, CalleSinAlturasException, CruceInexistenteException, ErrorResponse, TipoExcepcion } from './types/exceptions';
/**
 * Clase base para todas las excepciones del normalizador
 */
declare abstract class BaseExceptionClass implements Error {
    readonly name: string;
    readonly id: TipoExcepcion;
    readonly message: string;
    constructor(id: TipoExcepcion, message: string);
    abstract getError(): ErrorResponse;
    toString(): string;
}
/**
 * Excepción lanzada cuando una calle no existe
 */
export declare class ErrorCalleInexistente extends BaseExceptionClass implements CalleInexistenteException {
    private readonly nombreCalle;
    constructor(nombreCalle: string);
    getNombreCalle(): string;
    getError(): ErrorResponse;
}
/**
 * Excepción lanzada cuando hay un error al cargar el callejero
 */
export declare class ErrorEnCargaDelCallejero extends BaseExceptionClass {
    constructor();
    getError(): ErrorResponse;
}
/**
 * Excepción lanzada cuando una calle no existe a una altura específica
 */
export declare class ErrorCalleInexistenteAEsaAltura extends BaseExceptionClass implements CalleInexistenteAEsaAlturaException {
    private readonly calle;
    private readonly matchings;
    private readonly altura;
    constructor(calle: string, matchings: Calle[], altura: number);
    getCalle(): string;
    getMatchings(): Calle[];
    getAltura(): number;
    getError(): ErrorResponse;
}
/**
 * Excepción lanzada cuando una calle no tiene alturas
 */
export declare class ErrorCalleSinAlturas extends BaseExceptionClass implements CalleSinAlturasException {
    private readonly nombreCalle;
    constructor(nombreCalle: string);
    getNombreCalle(): string;
    getError(): ErrorResponse;
}
/**
 * Excepción lanzada cuando un cruce de calles no existe
 */
export declare class ErrorCruceInexistente extends BaseExceptionClass implements CruceInexistenteException {
    private readonly calle1;
    private readonly matchingsCalle1;
    private readonly calle2;
    private readonly matchingsCalle2;
    constructor(calle1: string, matchingsCalle1: Calle[], calle2: string, matchingsCalle2: Calle[]);
    getCalle1(): string;
    getCalle2(): string;
    getMatchingsCalle1(): Calle[];
    getMatchingsCalle2(): Calle[];
    getError(): ErrorResponse;
}
export {};
