export declare enum TipoDispositivo {
    ARTIGO = "artigo",
    PARAGRAFO = "paragrafo",
    INCISO = "inciso",
    ALINEA = "alinea",
    ITEM = "item"
}
export declare enum TipoAgrupador {
    TITULO = "titulo",
    CAPITULO = "capitulo",
    SECAO = "secao",
    SUBSECAO = "subsecao"
}
export type TipoDispositivoOuAgrupador = TipoDispositivo | TipoAgrupador;
export default abstract class Dispositivo<TiposDerivaveis extends Dispositivo<any>> {
    readonly tipo: TipoDispositivoOuAgrupador;
    numero: string | null;
    descricao: string;
    private derivacoes?;
    get subitens(): Dispositivo<TiposDerivaveis>[];
    $parent?: Dispositivo<any>;
    constructor(tipo: TipoDispositivoOuAgrupador, numero: string | null, descricao: string, derivacoes?: string[] | undefined);
    /**
     * Adiciona um dispositivo a este.
     *
     * @param {TiposDerivaveis} dispositivo
     */
    adicionar(dispositivo: TiposDerivaveis): void;
    remover(dispositivo: TiposDerivaveis): void;
}
