declare enum CLASSIFICATION_LEVEL { UNCLASSIFIED = 0, RESTRICTED = 1, CONFIDENTIAL = 2, SECRET = 3, TOP_SECRET = 4 } export interface IDeclassificationConstruct { created?: Date | string | number; date?: Date | string | number | null; exemptions?: string[]; } export interface IDisseminationConstruct { dsen?: boolean; fouo?: boolean; imcon?: boolean; noforn?: boolean; orcon?: boolean; propin?: boolean; relido?: boolean; rsen?: boolean; rel?: string[]; eyes?: string[]; } export interface IFgiConstruct { owner: string; level?: CLASSIFICATION_LEVEL; } export declare type ICollectionIndex = number; export interface ICollection { add(element: T): ICollectionIndex; has(element: T): boolean; get(index: ICollectionIndex): T | null; rem(index: ICollectionIndex): boolean; find(element: T): ICollectionIndex; count(): ICollectionIndex; forEach(callback: (element: T, index: ICollectionIndex, terminator: () => void) => void): void; } export declare type IReasonConstruct = string; export interface ISourceConstruct { name?: null | string; authors?: string[]; } export interface IClassificationConstructor { level?: CLASSIFICATION_LEVEL; codewords?: string[]; fgi?: IFgiConstruct[]; nonic?: string[]; dissemination?: IDisseminationConstruct; declassification?: IDeclassificationConstruct; reasons?: IReasonConstruct[]; sources?: ISourceConstruct[]; } export interface IClassification { toString(): string; toJSON(): IClassificationConstructor; serialize(): string; combine(...classification: IClassification[]): void; clone(): IClassification; setClassificationLevel(level: CLASSIFICATION_LEVEL): IClassification; getClassificationLevel(): CLASSIFICATION_LEVEL; getCodewords(): string[]; addCodeword(...codeword: string[]): IClassification; hasCodeword(codeword: string): boolean; remCodeword(codeword: string): boolean; clearCodewords(): void; getFgi(): IFgiConstruct[]; addFgi(...fgi: IFgiConstruct[]): IClassification; hasFgi(fgi: IFgiConstruct): boolean; remFgi(fgi: IFgiConstruct): boolean; getNonIC(): string[]; addNonIC(nonIc: string): IClassification; hasNonIC(nonIc: string): boolean; remNonIC(nonIc: string): boolean; setRelido(relido: boolean): IClassification; isRelido(): boolean; setRsen(rsen: boolean): IClassification; isRsen(): boolean; setFouo(fouo: boolean): IClassification; isFouo(): boolean; setOrcon(orcon: boolean): IClassification; isOrcon(): boolean; setNoforn(noforn: boolean): IClassification; isNoforn(): boolean; setPropin(propin: boolean): IClassification; isPropin(): boolean; setDsen(dsen: boolean): IClassification; isDsen(): boolean; setImcon(imcon: boolean): IClassification; isImcon(): boolean; getRel(): string[]; addRel(...nations: string[]): IClassification; hasRel(nation: string): boolean; remRel(nation: string): boolean; getEyes(): string[]; addEyes(...nations: string[]): IClassification; hasEyes(nation: string): boolean; remEyes(nation: string): boolean; getClassificationDate(): Date; setClassificationDate(date: Date | string | number): void; getDeclassificationDate(): Date | null; setDeclassificationDate(date: Date | string | number | null): void; getDeclassificationRawDate(): Date | null; getDeclassificationExemption(): string | null; getDeclassificationExemptions(): string[]; addDeclassificationExemption(...exemptions: string[]): void; getSources(): ISourceConstruct[]; addSource(...source: ISourceConstruct[]): void; getSource(index: number): ISourceConstruct | null; hasSource(source: ISourceConstruct): boolean; remSource(source: ISourceConstruct): boolean; getAuthor(iSource: number, iAuthor: number): string | null; getReasons(): IReasonConstruct[]; addReason(...reasons: IReasonConstruct[]): void; getReason(index: number): IReasonConstruct | null; hasReason(reason: IReasonConstruct): boolean; remReason(reason: IReasonConstruct): boolean; } export interface IDeclassificationOffset { deprecated?: boolean; years?: number; } export declare class Classification implements IClassification { static levels: typeof CLASSIFICATION_LEVEL; static deserialize(json: string): Classification; static addDeclassificationRule(name: string, offset: IDeclassificationOffset): void; static addTetragraph(name: string, trigraphs: string[]): void; private readonly mLevel; private readonly mCodewords; private readonly mDissemination; private readonly mFgi; private readonly mNonIC; private readonly mDeclassification; private readonly mSources; private readonly mReasons; constructor({ level, codewords, fgi, nonic, dissemination, declassification, sources, reasons }?: IClassificationConstructor); toString(): string; toJSON(): IClassificationConstructor; serialize(): string; combine(...classifications: Classification[]): void; clone(): Classification; setClassificationLevel(level: CLASSIFICATION_LEVEL): Classification; getClassificationLevel(): CLASSIFICATION_LEVEL; getCodewords(): string[]; addCodeword(...codewords: string[]): Classification; hasCodeword(codeword: string): boolean; remCodeword(codeword: string): boolean; clearCodewords(): void; getFgi(): IFgiConstruct[]; addFgi(...fgis: IFgiConstruct[]): Classification; hasFgi(fgi: IFgiConstruct): boolean; remFgi(fgi: IFgiConstruct): boolean; getNonIC(): string[]; addNonIC(...nonIcs: string[]): Classification; hasNonIC(nonIc: string): boolean; remNonIC(nonIc: string): boolean; setRsen(rsen: boolean): Classification; isRsen(): boolean; setRelido(relido: boolean): Classification; isRelido(): boolean; setFouo(fouo: boolean): Classification; isFouo(): boolean; setOrcon(orcon: boolean): Classification; isOrcon(): boolean; setNoforn(noforn: boolean): Classification; isNoforn(): boolean; setPropin(propin: boolean): Classification; isPropin(): boolean; setDsen(dsen: boolean): Classification; isDsen(): boolean; setImcon(imcon: boolean): Classification; isImcon(): boolean; getRel(): string[]; addRel(...nations: string[]): Classification; hasRel(nation: string): boolean; remRel(nation: string): boolean; getEyes(): string[]; addEyes(...nations: string[]): Classification; hasEyes(nation: string): boolean; remEyes(nation: string): boolean; getClassificationDate(): Date; setClassificationDate(date: string | Date | number): void; setDeclassificationDate(date: Date | string | number | null): void; getDeclassificationDate(): Date | null; getDeclassificationRawDate(): Date | null; getDeclassificationExemption(): string | null; getDeclassificationExemptions(): string[]; addDeclassificationExemption(...exemptions: string[]): void; getSources(): ISourceConstruct[]; addSource(...sources: ISourceConstruct[]): void; getSource(index: number): ISourceConstruct | null; hasSource(source: ISourceConstruct): boolean; remSource(source: ISourceConstruct): boolean; getAuthor(iSource: number, iAuthor: number): string | null; getReasons(): string[]; addReason(...reasons: string[]): void; getReason(index: number): string | null; hasReason(reason: string): boolean; remReason(reason: string): boolean; } export interface IClassificationCollectionJson { classifications: IClassificationConstructor[]; } export declare type IClassificationCollectionConstruct = IClassification[]; export interface IClassificationCollection extends ICollection { toJSON(): IClassificationCollectionJson; reduce(): IClassification; find(classification: IClassification | IClassificationConstructor): number; } export declare class ClassificationCollection implements IClassificationCollection { static deserialize(serialized: string): ClassificationCollection; private readonly mClassifications; constructor(classifications?: IClassificationCollectionConstruct); toJSON(): IClassificationCollectionJson; count(): number; add(classification: IClassification): number; get(index: number): IClassification | null; find(classification: IClassification | IClassificationConstructor): number; has(classification: IClassification): boolean; rem(index: number): boolean; forEach(callback: (c: IClassification, i: number, t: () => void) => void): void; reduce(): Classification; } export {};