import { GsbPermission, GsbUser } from './gsb-user.model';
import { GsbDocTemplate } from './gsb-doc-template.model';
import { GsbContact, GsbGroup, GsbRole } from './gsb-user.model';
import { GsbEntityDef } from './gsb-entity-def.model';
import { QueryDto } from '../types/query-dto';
import { GsbModule } from './gsb-module.model';
import { GsbRecurringJob } from './gsb-recurring-job.model';
import { GsbWorkflowInstance } from './gsb-workflow.model';
import { GsbDtoBase, Variation } from './gsb-dto-base.model';
import { GsbFile } from './gsb-file.model';
/**
 * Notification channel enum
 */
export declare enum NotificationChannel {
    StandardInterface = 1,
    Email = 2,
    SMS = 4,
    PushNotify = 8
}
/**
 * Notification type enum
 */
export declare enum NotificationType {
    Info = 0,
    Success = 1,
    Warning = 2,
    Error = 3
}
/**
 * Permission type enum
 */
export declare enum PermissionType {
    None = 0,
    View = 1,
    Edit = 2,
    Delete = 4,
    All = 7
}
/**
 * Represents a GSB Notification entity
 */
export declare class GsbNotification {
    _entDefName?: string;
    id?: string;
    name?: string;
    title?: string;
    message?: string;
    category?: string;
    priority?: number;
    eventType?: string;
    templateId?: string;
    description?: string;
    expiryDate?: Date;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    channel?: NotificationChannel;
    permissionType?: PermissionType;
    actions?: any[];
    data?: any;
    dataStr?: string;
    content?: string;
    type?: NotificationType;
    image?: GsbFile;
    entity_id?: string;
    entityDefinition_id?: string;
    clickAction?: any;
    variation?: Variation;
    constructor(obj?: Partial<GsbNotification>);
}
/**
 * Operation types for workflow functions
 */
export declare enum OperationType {
    SetProperties = 1,
    SendSms = 2,
    CallGSBAPI = 3,
    CallExternalAPI = 4,
    SendEmail = 5,
    SendEmailAdvanced = 6,
    RunScriptCode = 7,
    CommitChanges = 8,
    GetEntity = 9,
    SetEntity = 10,
    DeleteEntity = 11,
    CreatePDFDocument = 12,
    SendNotification = 13,
    SaveEntity = 14
}
/**
 * Operation enum for entity operations
 */
export declare enum Operation {
    Read = 4,
    Execute = 16,
    Create = 1,
    Delete = 32,
    List = 8,
    Update = 2,
    Associate = 64,
    Disassociate = 128
}
/**
 * Property value for setting entity properties
 */
export declare class EntPropertyValue {
    _entDefName?: string;
    name?: string;
    value?: any;
    constructor(obj?: Partial<EntPropertyValue>);
}
/**
 * Dynamic attachment for email operations
 */
export declare class GsbDynamicAttachment {
    _entDefName?: string;
    template?: string;
    fileName?: string;
    constructor(obj?: Partial<GsbDynamicAttachment>);
}
/**
 * Email message operation configuration
 */
export declare class GsbMailMessageOp {
    _entDefName?: string;
    toAddresses?: any[];
    ccAddresses?: any[];
    bccAddresses?: any[];
    subject?: string;
    distinct?: boolean;
    messageBody?: GsbDocTemplate;
    attachments?: GsbDocTemplate[];
    constructor(obj?: Partial<GsbMailMessageOp>);
}
/**
 * Notification operation recipients configuration
 */
export declare class GsbNotificationOpRecipients {
    _entDefName?: string;
    contacts?: GsbContact[];
    users?: GsbUser[];
    roles?: GsbRole[];
    groups?: GsbGroup[];
    excludeUsers?: GsbUser[];
    excludeSender?: boolean;
    constructor(obj?: Partial<GsbNotificationOpRecipients>);
}
/**
 * Advanced email message operation configuration
 */
export declare class GsbAdvancedMailMessageOp {
    _entDefName?: string;
    toAddresses?: string;
    ccAddresses?: string;
    attachments?: string;
    subject?: string;
    messageBody?: string;
    constructor(obj?: Partial<GsbAdvancedMailMessageOp>);
}
/**
 * Document generation operation configuration
 */
export declare class GsbDocumentGenerateOp {
    _entDefName?: string;
    docTemplate?: GsbDocTemplate;
    propertyName?: string;
    urlParam?: string;
    htmlWfParam?: string;
    htmlEntityParam?: string;
    template?: string;
    byteArrParam?: string;
    fileNameProp?: string;
    usePuppeteer?: boolean;
    constructor(obj?: Partial<GsbDocumentGenerateOp>);
}
/**
 * Get entity operation options
 */
export declare class GsbGetEntityOptions {
    _entDefName?: string;
    query?: QueryDto;
    constructor(obj?: Partial<GsbGetEntityOptions>);
}
/**
 * Set entity operation options
 */
export declare class GsbSetEntityOptions {
    _entDefName?: string;
    setProps?: EntPropertyValue[];
    entityDef?: GsbEntityDef;
    constructor(obj?: Partial<GsbSetEntityOptions>);
}
/**
 * Notification data for notification operations
 */
export declare class NotificationDto extends GsbDtoBase {
    title?: string;
    message?: string;
    recipients?: GsbNotificationOpRecipients;
    priority?: number;
    category?: string;
    expiryDate?: Date;
    notification?: GsbNotification;
    mailMessage?: GsbMailMessageOp;
    transformScript?: string;
    entity?: any;
    tEntity?: any;
    allUsers?: GsbUser[];
    modelInstance?: GsbWorkflowInstance;
    users?: GsbUser[];
    roles?: GsbRole[];
    groups?: GsbGroup[];
}
/**
 * Represents a workflow operation
 */
export declare class GsbWfOperation {
    _entDefName?: string;
    id?: string;
    title?: string;
    operationType?: OperationType;
    scriptCode?: string;
    scriptCodeStr?: string;
    docTemplate?: GsbDocumentGenerateOp;
    getEntityOptions?: GsbGetEntityOptions;
    setEntityOptions?: GsbSetEntityOptions;
    notification?: NotificationDto;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbWfOperation>);
}
/**
 * Represents a GSB WF Function entity
 */
export declare class GsbWfFunction {
    _entDefName?: string;
    id?: string;
    name?: string;
    title?: string;
    code?: string;
    references?: GsbWfCodeLibrary[];
    imports?: GsbModule[];
    permissions?: GsbPermission[];
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    orderNumber?: number;
    wfLogs?: GsbWfLog[];
    createdBy?: GsbUser;
    activities?: GsbWfActivity[];
    module?: GsbModule;
    afterActivities?: GsbWfActivity[];
    lastUpdatedBy?: GsbUser;
    currentVersion?: string;
    bgTasks?: GsbRecurringJob[];
    standalone?: boolean;
    limits?: GsbUsageLimit[];
    operations?: string;
    operationsObj?: GsbWfOperation[];
    testInstance?: string;
    prevActivities?: GsbWfActivity[];
    module_id?: string;
    constructor(obj?: Partial<GsbWfFunction>);
}
/**
 * Represents a GSB WF Code Library
 */
export declare class GsbWfCodeLibrary {
    _entDefName?: string;
    id?: string;
    name?: string;
    code?: string;
    codeText?: string;
    references?: GsbWfCodeLibrary[];
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbWfCodeLibrary>);
}
/**
 * Represents a GSB WF Log
 */
export declare class GsbWfLog {
    _entDefName?: string;
    id?: string;
    name?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbWfLog>);
}
/**
 * Represents a GSB WF Activity
 */
export declare class GsbWfActivity {
    _entDefName?: string;
    id?: string;
    name?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbWfActivity>);
}
/**
 * Represents a GSB Usage Limit
 */
export declare class GsbUsageLimit {
    _entDefName?: string;
    id?: string;
    name?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbUsageLimit>);
}
/**
 * Helper function to check if a function is empty
 */
export declare function isGsbFunctionEmpty(func: GsbWfFunction): boolean;
/**
 * Helper functions for copying and serializing DTOs
 */
export declare function copySettingsFrom(target: GsbDtoBase, source: GsbDtoBase): void;
/**
 * Creates a serializable copy of a notification DTO
 */
export declare function copyNotificationSerializable(source: NotificationDto): NotificationDto;
