import { ContainedSimpleField } from './contained-simple-field';
import { ContainedField } from './contained-field';
import { INumericKeyed } from '../../collections/collection';
import { ContainedSetType } from '../contained-set-type';
export interface IContainedSet {
    readonly groups: Map<string, IContainedSet>;
    readonly components: Map<string, IContainedSet>;
    readonly simple: Map<string, ContainedSimpleField>;
    readonly fields: ContainedField[];
    readonly containedTag: INumericKeyed<boolean>;
    readonly flattenedTag: number[];
    readonly containedLength: INumericKeyed<boolean>;
    readonly localTag: INumericKeyed<ContainedSimpleField>;
    readonly localRequired: INumericKeyed<ContainedSimpleField>;
    readonly tagToSimple: INumericKeyed<ContainedSimpleField>;
    readonly tagToField: INumericKeyed<ContainedField>;
    readonly localNameToField: Map<string, ContainedField>;
    readonly nameToLocalAttribute: Map<string, ContainedSimpleField>;
    readonly localAttribute: ContainedSimpleField[];
    readonly type: ContainedSetType;
    readonly name: string;
    readonly category: string | null;
    readonly abbreviation: string | null;
    readonly description: string | null;
    firstSimple: (ContainedSimpleField | null);
    containsRaw: boolean;
    toString: () => string;
    getPrefix: () => string;
    getFieldName: (tag: number) => string;
    getSet: (path: string) => IContainedSet | null;
    keys: () => number[];
}
