import { GsbUser } from './gsb-user.model';
import { GsbEnum } from './gsb-enum.model';
import { GsbPermission } from './gsb-user.model';
import { GsbWorkflowTrigger } from './gsb-workflow.model';
import { GsbModule } from './gsb-module.model';
/**
 * Represents a widget template for UI controls
 */
export declare class GsbWidgetTemplate {
    _entDefName?: string;
    id?: string;
    name?: string;
    title?: string;
    description?: string;
    type?: string;
    properties?: any;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbWidgetTemplate>);
}
/**
 * Represents a code generator for entity properties
 */
export declare class GsbCodeGenerator {
    _entDefName?: string;
    id?: string;
    name?: string;
    title?: string;
    description?: string;
    code?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbCodeGenerator>);
}
/**
 * Enum for reference types that matches backend values
 */
export declare enum RefType {
    NoRef = 0,
    OneToOne = 1,
    OneToMany = 2,
    ManyToOne = 3,
    ManyToMany = 4
}
/**
 * Enum for view modes
 */
export declare enum ViewMode {
    Disabled = 8,
    Editable = 1,
    ReadOnly = 2,
    Hidden = 4
}
/**
 * Enum for copy actions
 */
export declare enum CopyAction {
    Default = 0,
    Include = 1,
    Exclude = 2,
    Reference = 3
}
/**
 * Enum for screen types (bitwise)
 */
export declare enum ScreenType {
    PC = 1,
    Tablet = 2,
    Mobile = 4,
    All = 7
}
/**
 * Enum for activity logging levels that matches backend values
 */
export declare enum ActivityLogLevel {
    None = 0,
    Read = 1,
    Create = 2,
    Update = 4,
    Delete = 8,
    Execute = 16,
    List = 32
}
/**
 * Enum for data types that matches backend values
 */
export declare enum DataType {
    Unknown = 0,
    Guid = 1,
    Decimal = 2,
    Int = 3,
    Long = 4,
    StringUnicode = 5,
    Binary = 6,
    Bool = 7,
    Enum = 8,
    DateTime = 9,
    Reference = 10,
    Raw = 11,
    File = 12,
    StringASCII = 13,
    JSON = 14
}
/**
 * Represents a GSB Entity Definition
 */
export declare class GsbEntityDef {
    _entDefName?: string;
    id?: string;
    name?: string;
    title?: string;
    description?: string;
    dbTableName?: string;
    publicAccess?: boolean;
    activityLogLevel?: ActivityLogLevel;
    properties?: GsbProperty[];
    isActive?: boolean;
    isDeleted?: boolean;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    permissions?: GsbPermission[];
    workflowTriggers?: GsbWorkflowTrigger[];
    variationType?: number;
    undeleteable?: boolean;
    module_id?: string;
    module?: GsbModule;
    isSystem?: boolean;
    constructor(obj?: Partial<GsbEntityDef>);
}
/**
 * Represents a property of a GSB Entity Definition
 */
export declare class GsbProperty {
    _entDefName?: string;
    maxLength?: number;
    isVisible?: boolean;
    lastEditTime?: Date;
    isUnique?: boolean;
    defaultValue?: string;
    refEntDef_id?: string;
    multiControlComponent?: GsbWidgetTemplate;
    definition?: GsbPropertyDef;
    refCount?: number;
    isPartialPrimaryKey?: boolean;
    enum?: GsbEnum;
    cascadeReference?: boolean;
    isEncrypted?: boolean;
    name?: string;
    scale?: number;
    multiControlComponent_id?: string;
    refType?: RefType;
    refEntDef?: GsbEntityDef;
    clientValidationScript?: string;
    dataMemberName?: string;
    isMultiple?: boolean;
    groupName?: string;
    isIndexed?: boolean;
    isMultiLingual?: boolean;
    controlComponent_id?: string;
    refEntPropName?: string;
    fullTextIndex?: boolean;
    categoryDef_id?: string;
    formModes?: number;
    noDeploy?: boolean;
    id?: string;
    definition_id?: string;
    ownerEntDef_id?: string;
    isEditable?: boolean;
    isQuickEditable?: boolean;
    ownerEntDef?: GsbEntityDef;
    createdBy_id?: string;
    permissions?: GsbPermission[];
    codeGenerator?: GsbCodeGenerator;
    contains?: GsbProperty[];
    within?: GsbProperty;
    multiTableName?: string;
    categoryDef?: GsbEntityDef;
    lastUpdatedBy?: GsbUser;
    orderNumber?: number;
    enum_id?: string;
    description?: string;
    title?: string;
    serverValidationScript?: string;
    lastUpdateDate?: Date;
    createDate?: Date;
    codeGenerator_id?: string;
    isSystemOnly?: boolean;
    createdBy?: GsbUser;
    copyAction?: CopyAction;
    isRequired?: boolean;
    isSearchable?: boolean;
    isPublic?: boolean;
    controlComponent?: GsbWidgetTemplate;
    undeletable?: boolean;
    listScreens?: ScreenType;
    lastUpdatedBy_id?: string;
    defUiCtrlName?: string;
    within_id?: string;
    isPrimaryKey?: boolean;
    isDynamic?: boolean;
    availableColumn?: string;
    regex?: string;
    createFormMode?: ViewMode;
    viewFormMode?: ViewMode;
    updateFormMode?: ViewMode;
    type?: string;
    isDefault?: boolean;
    constructor(obj?: Partial<GsbProperty>);
}
/**
 * Represents a property definition in the GSB system
 */
export declare class GsbPropertyDef {
    _entDefName?: string;
    id?: string;
    dataType?: DataType;
    title?: string;
    name?: string;
    description?: string;
    maxLength?: number;
    scale?: number;
    regex?: string;
    usage?: number;
    createDate?: Date;
    lastUpdateDate?: Date;
    lastUpdatedBy?: {
        title: string;
        id: string;
    };
    defaultControlComponent?: {
        title: string;
        id: string;
    };
    defaultControlComponentMulti?: {
        title: string;
        id: string;
    };
    module?: {
        title: string;
        id: string;
    };
    createdBy?: {
        title: string;
        id: string;
    };
    constructor(obj?: Partial<GsbPropertyDef>);
}
