import { ICommit } from './Commit.js';
import Entity, { Compare, IEntity, Priority } from './Entity.js';
import { IMessage } from './Message.js';
export declare enum SectionPosition {
    None = 0,
    Subsection = 1,
    Details = 2,
    Group = 3,
    Footer = 4,
    Body = 5,
    Header = 6
}
export declare enum SectionOrder {
    Default = 0,
    Max,
    Min
}
export interface ISection extends IEntity {
    readonly commits: ICommit[];
    readonly isDetails: boolean;
    readonly isEmpty: boolean;
    readonly isGroup: boolean;
    readonly isSubsection: boolean;
    readonly messages: IMessage[];
    order: number;
    position: SectionPosition;
    readonly sections: ISection[];
    readonly title: string;
    add(entity: ICommit | ISection | IMessage): void;
    assign(relations: Map<string, ISection>, type?: SectionPosition.Subsection): void;
    remove(entity: ICommit | ISection | IMessage): void;
}
export interface ISectionOptions {
    emoji?: string;
    name: string;
    order?: number;
    position?: SectionPosition;
}
export default class Section extends Entity implements ISection {
    #private;
    constructor({ name, position, order, emoji }: ISectionOptions);
    static compare(a: ISection, b: ISection): Compare;
    get title(): string;
    get sections(): ISection[];
    get commits(): ICommit[];
    get messages(): IMessage[];
    get priority(): Priority;
    get position(): SectionPosition;
    set position(position: SectionPosition);
    get order(): number;
    set order(order: number);
    get isSubsection(): boolean;
    get isDetails(): boolean;
    get isGroup(): boolean;
    get isEmpty(): boolean;
    add(entity: ICommit | ISection | IMessage): void;
    assign(relations: Map<string, ISection>, type?: SectionPosition.Subsection): void;
    remove(entity: ICommit | ISection | IMessage): void;
    private listOf;
}
