import { TccClarcDate, TccDataType, TccPrimitiveValue } from '../../../odata/models/shared.model';
import { TccSingleton } from '../../../core/models/tcc-singleton.model';
import { LocaleService } from '../../../core/services/tcc-locale/tcc-locale.service';
export declare namespace TccPlaceholder {
    export enum GeneralUser {
        /**
         * Aktueller Benutzername
         */
        User = "User"
    }
    enum GeneralId {
        /**
         * GUID
         */
        Id = "Id"
    }
    enum Date {
        /**
         * Heutiges Datum
         */
        Today = "Today",
        /**
         * Heutiges Datum + Uhrzeit
         */
        Now = "Now",
        /**
         * Zeitstempel in der Form yyyymmddhhnnsszzz
         */
        TimeStamp = "TimeStamp",
        /**
         * Zeigt das Datum in dem in der globalen Variable LongDateFormat angegebenen Format an.
         */
        dddddd = "dddddd",
        /**
         * Zeigt das Datum in dem in der globalen Variable ShortDateFormat angegebenen Format an.
         */
        ddddd = "ddddd",
        /**
         * Zeigt den ausgeschriebenen Wochentag (Sonntag-Samstag) in den in der globalen Variable LongDayNames festgelegten Strings an.
         */
        dddd = "dddd",
        /**
         * Zeigt den Wochentag als Abkürzung (Son-Sam) in den in der globalen Variable ShortDayNames festgelegten Strings an.
         */
        ddd = "ddd",
        /**
         * 	Zeigt den Tag als Zahl mit führender Null an (01-31).
         */
        dd = "dd",
        /**
         * Zeigt den Tag als Zahl ohne führende Null an (1-31).
         */
        d = "d",
        /**
         * Zeigt den ausgeschriebenen Monatsnamen (Januar-Dezember) in den in der globalen Variable LongMonthNames festgelegten Strings an.
         */
        mmmm = "mmmm",
        /**
         * Zeigt den Monatsnamen als Abkürzung (Jan-Dez) in den in der globalen Variable ShortMonthNames festgelegten Strings an.
         */
        mmm = "mmm",
        /**
         * Zeigt den Monat als Zahl mit führender Null an (01-12). Wenn auf den Bezeichner mm unmittelbar der Bezeichner h oder hh folgt, werden an Stelle des Monats die Minuten angezeigt.
         */
        mm = "mm",
        /**
         * Zeigt den Monat als Zahl ohne führende Null an (1-12). Wenn auf den Bezeichner m unmittelbar der Bezeichner h oder hh folgt, werden an Stelle des Monats die Minuten angezeigt.
         */
        m = "m",
        /**
         * Zeigt das Jahr als vierstellige Zahl an (0000-9999).
         */
        yyyy = "yyyy",
        /**
         * Zeigt das Jahr als zweistellige Zahl an (00-99).
         */
        yy = "yy",
        /**
         * Zeigt die Stunde mit führender Null an (00-23)
         */
        hh = "hh",
        /**
         * Zeigt die Minute mit führender Null an (00-59).
         */
        nn = "nn",
        /**
         * Zeigt die Sekunde mit führender Null an (00-59).
         */
        ss = "ss",
        /**
         * Zeigt die Millisekunde mit führender Null an (000-999).
         */
        zzz = "zzz"
    }
    export enum Scanprofile {
        /**
         * Profil Name (string)
         */
        ScanProfileName = "ScanProfileName",
        /**
         * Scanner Name (string)
         */
        ScanProfileDevice = "ScanProfileDevice",
        /**
         * ISIS, TWAIN, SIMULATION (string)
         */
        ScanProfileTechnology = "ScanProfileTechnology",
        /**
         * MONOCHROME, COLOR, GRAY (string)
         */
        ScanProfilePixelType = "ScanProfilePixelType",
        /**
         * True/False (boolean)
         */
        ScanProfileDuplex = "ScanProfileDuplex",
        /**
         *  0..100 (number)
         */
        ScanProfileCompression = "ScanProfileCompression",
        /**
         * Auflösung in DPI z.B. 300 (number)
         */
        ScanProfileResolution = "ScanProfileResolution"
    }
    export enum Office365 {
        /**
         * Betreff
         */
        Subject = "Subject",
        /**
         * Absender
         */
        From = "From",
        /**
         * Empfänger
         */
        To = "To",
        /**
         * Kopie-Empfänger
         */
        Cc = "Cc",
        /**
         * Antwortadresse
         */
        ReplyTo = "ReplyTo",
        /**
         * Erstellungsdatum
         */
        CreationDate = "CreationDate",
        /**
         * Empfangsdatum
         */
        ReceiptDate = "ReceiptDate",
        /**
         * Bodytext, Word-Text, etc.
         */
        Text = "Text",
        /**
         * Id des Office Elements
         */
        ObjectId = "ObjectId",
        /**
         * Priorität (EMail)
         */
        Priority = "Priority",
        /**
         * ApllicationName (Word Excel)
         */
        ApplicationName = "ApplicationName",
        /**
         * Author (Ersteller Word Excel)
         */
        Author = "Author",
        /**
         * Category (Word Excel)
         */
        Category = "Category",
        /**
         * Comments (Word Excel)
         */
        Comments = "Comments",
        /**
         * Company (Firma des Ersteller Word Excel)
         */
        Company = "Company",
        /**
         * Format (Word Excel)
         */
        Format = "Format",
        /**
         * Schlüsselwört (Word Excel)
         */
        Keywords = "Keywords",
        /**
         * letzter Bearbeiter (Word Excel)
         */
        LastAuthor = "LastAuthor",
        /**
         * Letztes Druckdatum (Word Excel)
         */
        LastPrintDate = "LastPrintDate",
        /**
         * letztes Speicherdatum (Word Excel)
         */
        LastSaveTime = "LastSaveTime",
        /**
         * Manager (Word Excel)
         */
        Manager = "Manager",
        /**
         * Nummer steigt bei jedem Speichern
         */
        RevisionNumber = "RevisionNumber",
        /**
         * Vorlage (Word Excel)
         */
        Template = "Template",
        /**
         * Titel  (Word Excel)
         */
        Title = "Title"
    }
    export enum PrintCapture {
        /**
         * PrintCapture Drucker
         */
        Printer = "Printer"
    }
    export enum FileCapture {
        /**
         * Windows Benutzer des Dateieigentümers (i.d.R. der Ersteller)
         */
        Owner = "Owner",
        /**
         * Dateigröße in Byte
         */
        Size = "Size",
        /**
         * Dateiname inkl. Extension
         */
        Name = "Name",
        /**
         * 	Dateipfad ohne Dateiname
         */
        Path = "Path",
        /**
         * 	Dateipfad in UNC Schreibweise \\Servername\Folder\...
         */
        UncPath = "UncPath",
        /**
         * 	Extension der Datei (z.B. .pdf)
         */
        Extension = "Extension",
        /**
         * 	Mimetype der Datei (z.B. application/pdf)
         */
        Mimetype = "Mimetype",
        /**
         * Schon bei Office
         */
        CreationDate = "CreationDate",
        ChangeDate = "ChangeDate",
        Age = "Age",
        Attributes = "Attributes"
    }
    type General = GeneralId | GeneralUser;
    const General: {
        User: GeneralUser.User;
        Id: GeneralId.Id;
    };
    export const AllPlaceholders: {
        ScanProfileName: Scanprofile.ScanProfileName;
        ScanProfileDevice: Scanprofile.ScanProfileDevice;
        ScanProfileTechnology: Scanprofile.ScanProfileTechnology;
        ScanProfilePixelType: Scanprofile.ScanProfilePixelType;
        ScanProfileDuplex: Scanprofile.ScanProfileDuplex;
        ScanProfileCompression: Scanprofile.ScanProfileCompression;
        ScanProfileResolution: Scanprofile.ScanProfileResolution;
        Printer: PrintCapture.Printer;
        Subject: Office365.Subject;
        From: Office365.From;
        To: Office365.To;
        Cc: Office365.Cc;
        ReplyTo: Office365.ReplyTo;
        CreationDate: Office365.CreationDate;
        ReceiptDate: Office365.ReceiptDate;
        Text: Office365.Text;
        ObjectId: Office365.ObjectId;
        Priority: Office365.Priority;
        ApplicationName: Office365.ApplicationName;
        Author: Office365.Author;
        Category: Office365.Category;
        Comments: Office365.Comments;
        Company: Office365.Company;
        Format: Office365.Format;
        Keywords: Office365.Keywords;
        LastAuthor: Office365.LastAuthor;
        LastPrintDate: Office365.LastPrintDate;
        LastSaveTime: Office365.LastSaveTime;
        Manager: Office365.Manager;
        RevisionNumber: Office365.RevisionNumber;
        Template: Office365.Template;
        Title: Office365.Title;
        Owner: FileCapture.Owner;
        Size: FileCapture.Size;
        Name: FileCapture.Name;
        Path: FileCapture.Path;
        UncPath: FileCapture.UncPath;
        Extension: FileCapture.Extension;
        Mimetype: FileCapture.Mimetype;
        ChangeDate: FileCapture.ChangeDate;
        Age: FileCapture.Age;
        Attributes: FileCapture.Attributes;
        Today: Date.Today;
        Now: Date.Now;
        TimeStamp: Date.TimeStamp;
        dddddd: Date.dddddd;
        ddddd: Date.ddddd;
        dddd: Date.dddd;
        ddd: Date.ddd;
        dd: Date.dd;
        d: Date.d;
        mmmm: Date.mmmm;
        mmm: Date.mmm;
        mm: Date.mm;
        m: Date.m;
        yyyy: Date.yyyy;
        yy: Date.yy;
        hh: Date.hh;
        nn: Date.nn;
        ss: Date.ss;
        zzz: Date.zzz;
        User: GeneralUser.User;
        Id: GeneralId.Id;
    };
    export type AllPlaceholders = General | Date | FileCapture | Office365 | PrintCapture | Scanprofile;
    export const AllNumberPlaceholders: {
        ScanProfileCompression: Scanprofile;
        ScanProfileResolution: Scanprofile;
        Size: FileCapture;
    };
    export const InnerTransform: {
        Today: Date.Today;
        Now: Date.Now;
        TimeStamp: Date.TimeStamp;
        dddddd: Date.dddddd;
        ddddd: Date.ddddd;
        dddd: Date.dddd;
        ddd: Date.ddd;
        dd: Date.dd;
        d: Date.d;
        mmmm: Date.mmmm;
        mmm: Date.mmm;
        mm: Date.mm;
        m: Date.m;
        yyyy: Date.yyyy;
        yy: Date.yy;
        hh: Date.hh;
        nn: Date.nn;
        ss: Date.ss;
        zzz: Date.zzz;
        Id: GeneralId.Id;
    };
    export type InnerTransform = GeneralId | Date;
    export const AllTransform: {
        ScanProfileName: Scanprofile.ScanProfileName;
        ScanProfileDevice: Scanprofile.ScanProfileDevice;
        ScanProfileTechnology: Scanprofile.ScanProfileTechnology;
        ScanProfilePixelType: Scanprofile.ScanProfilePixelType;
        ScanProfileDuplex: Scanprofile.ScanProfileDuplex;
        ScanProfileCompression: Scanprofile.ScanProfileCompression;
        ScanProfileResolution: Scanprofile.ScanProfileResolution;
        Printer: PrintCapture.Printer;
        Subject: Office365.Subject;
        From: Office365.From;
        To: Office365.To;
        Cc: Office365.Cc;
        ReplyTo: Office365.ReplyTo;
        CreationDate: Office365.CreationDate;
        ReceiptDate: Office365.ReceiptDate;
        Text: Office365.Text;
        ObjectId: Office365.ObjectId;
        Priority: Office365.Priority;
        ApplicationName: Office365.ApplicationName;
        Author: Office365.Author;
        Category: Office365.Category;
        Comments: Office365.Comments;
        Company: Office365.Company;
        Format: Office365.Format;
        Keywords: Office365.Keywords;
        LastAuthor: Office365.LastAuthor;
        LastPrintDate: Office365.LastPrintDate;
        LastSaveTime: Office365.LastSaveTime;
        Manager: Office365.Manager;
        RevisionNumber: Office365.RevisionNumber;
        Template: Office365.Template;
        Title: Office365.Title;
        Owner: FileCapture.Owner;
        Size: FileCapture.Size;
        Name: FileCapture.Name;
        Path: FileCapture.Path;
        UncPath: FileCapture.UncPath;
        Extension: FileCapture.Extension;
        Mimetype: FileCapture.Mimetype;
        ChangeDate: FileCapture.ChangeDate;
        Age: FileCapture.Age;
        Attributes: FileCapture.Attributes;
        User: GeneralUser.User;
    };
    export type AllTransform = GeneralUser | FileCapture | Office365 | PrintCapture | Scanprofile;
    export const DoubleBracesSettings: {
        start: string;
        end: string;
        regex: RegExp;
    };
    export const ColonSettings: {
        start: string;
        regex: RegExp;
    };
    export enum Type {
        doubleBraces = 0,
        colon = 1
    }
    export type transformFunction = (placeholderStr: AllTransform | string) => string;
    export {};
}
export declare class TccPlaceholderService implements TccSingleton {
    private localeService;
    private isPlaceholderStr;
    constructor(localeService: LocaleService);
    init(): void;
    reset(): void;
    private getReplacerId;
    private transformPlaceholderStr;
    private transformValue;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type): string;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_Binary): string;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_Integer): number;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_Unknown): string;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_Boolean): boolean;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_String): string;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_DateTime): TccClarcDate;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType.ccDT_Float): number;
    replacePlaceholders(source: TccPrimitiveValue, transform: TccPlaceholder.transformFunction, type: TccPlaceholder.Type, dataType: TccDataType): TccPrimitiveValue;
}
