import { ResultType } from "./reader";
import { MessageHeader, Segment } from "./edifact";
import { Separators } from "./edi/separators";
export declare class Group {
    name: string;
    parent: Message | Group;
    data: (Group | Segment)[];
    constructor(name: string, parent: Message | Group);
    addSegment(segment: Segment): void;
    addGroup(group: Group): void;
    groupCount(): number;
    containsGroup(groupName: string): boolean;
    groupByName(groupName: string): Group | undefined;
}
export declare class Message {
    messageHeader: MessageHeader;
    header: (Group | Segment)[];
    detail: (Group | Segment)[];
    summary: (Group | Segment)[];
    constructor(data: ResultType);
    addSegment(segment: Segment, sectionName: string): void;
    addGroup(group: Group, sectionName: string): void;
    private section;
    groupCount(sectionName?: string): number;
    containsGroup(groupName: string, sectionName?: string): boolean;
    groupByName(groupName: string, sectionName?: string): Group | undefined;
}
export declare class SyntaxIdentifier {
    syntaxIdentifer: string;
    version: string;
    serviceCodeListDirectoryVersionNumber: string | undefined;
    charEncoding: string | undefined;
    constructor(components: string[]);
}
declare abstract class Participant {
    id: string;
    codeQualifier: string | undefined;
    internalId: string | undefined;
    internalSubId: string | undefined;
    constructor(components: string[]);
}
export declare class Sender extends Participant {
    constructor(compnenets: string[]);
}
export declare class Receiver extends Participant {
    constructor(components: string[]);
}
export declare class RecipientsRef {
    password: string;
    passwordQualifier: string | undefined;
    constructor(components: string[]);
}
export declare class Edifact {
    syntaxIdentifier: SyntaxIdentifier;
    sender: Sender;
    receiver: Receiver;
    date: string;
    time: string;
    interchangeNumber: string;
    recipientsRef: RecipientsRef | undefined;
    applicationRef: string | undefined;
    processingPriorityCode: string | undefined;
    ackRequest: number | undefined;
    agreementId: string | undefined;
    testIndicator: number;
    messages: Message[];
    constructor(elements: string[][]);
    addMessage(message: Message): void;
}
export declare class InterchangeBuilder {
    interchange: Edifact;
    private stack;
    private curSection;
    constructor(parsingResult: ResultType[], separators: Separators, basePath: string);
    private reset;
    private accept;
    private getMessageStructureDefForMessage;
    private readFileAsMessageStructure;
}
export {};
//# sourceMappingURL=interchangeBuilder.d.ts.map