import { GsbEntityDef, GsbProperty } from './gsb-entity-def.model';
import { GsbFile } from './gsb-file.model';
import { GsbWfFunction, OperationType } from './gsb-function.model';
import { GsbModule } from './gsb-module.model';
import { SubscriptionType } from './gsb-subscription.model';
import { GsbWorkflow } from './gsb-workflow.model';
/**
 * Represents a GSB User entity
 */
export declare class GsbUser {
    _entDefName?: string;
    id?: string;
    name?: string;
    variation?: any;
    token?: string;
    picture?: GsbFile;
    picture_id?: string;
    surname?: string;
    email?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    title?: string;
    birthDate?: Date;
    constructor(obj?: Partial<GsbUser>);
}
/**
 * Represents a GSB Role entity
 */
export declare class GsbRole {
    _entDefName?: string;
    id?: string;
    name?: string;
    users?: GsbUser[];
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbRole>);
}
/**
 * Represents a contact in the system
 */
export declare class GsbContact {
    _entDefName?: string;
    id?: string;
    name?: string;
    email?: string;
    phone?: string;
    address?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbContact>);
}
/**
 * Represents a user group in the system
 */
export declare class GsbGroup {
    _entDefName?: string;
    id?: string;
    name?: string;
    description?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbGroup>);
}
/**
 * Represents a GSB Position entity
 */
export declare class GsbPosition {
    _entDefName?: string;
    id?: string;
    name?: string;
    departments?: string[];
    users?: string[] | GsbUser[];
    roles?: string[] | GsbRole[];
    defaultDepartment_id?: string;
    defaultDepartment?: GsbDepartment;
    tanent_id?: string;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbPosition>);
}
/**
 * Represents a GSB Department entity
 */
export declare class GsbDepartment {
    _entDefName?: string;
    id?: string;
    name?: string;
    positions?: string[] | GsbPosition[];
    defaultPosition?: GsbPosition;
    createDate?: Date;
    lastUpdateDate?: Date;
    createdBy_id?: string;
    lastUpdatedBy_id?: string;
    constructor(obj?: Partial<GsbDepartment>);
}
/**
 * Represents the type of permission
 */
export declare enum GsbPermissionType {
    Read = 1,
    Create = 2,
    Delete = 4,
    Edit = 8,
    Query = 16,
    Execute = 32
}
export declare class GsbPermission {
    _entDefName?: string;
    positions?: GsbPosition[];
    nestedOnly?: boolean;
    subscriptionType?: SubscriptionType;
    priority?: number;
    workflows?: GsbWorkflow[];
    disablePaging?: boolean;
    queryCountLimit?: number;
    functions?: GsbWfFunction[];
    modules?: GsbModule[];
    description?: string;
    entPropDefaults?: GsbEntityDef[];
    groups?: GsbGroup[];
    entityDefReads?: GsbEntityDef[];
    module_id?: string;
    createDate?: Date;
    queryStr?: string;
    trackVersion?: string;
    departments?: GsbDepartment[];
    id?: string;
    createdBy_id?: string;
    lastUpdatedBy?: GsbUser;
    permissionType?: OperationType;
    title?: string;
    limitReachBy?: string;
    lastUpdateDate?: Date;
    module?: GsbModule;
    users?: GsbUser[];
    entityDef?: GsbEntityDef[];
    name?: string;
    createdBy?: GsbUser;
    properties?: GsbProperty[];
    lastUpdatedBy_id?: string;
    roles?: GsbRole[];
    constructor(obj?: Partial<GsbPermission>);
}
/**
 * Represents a GSB Position Token
 */
export declare class GsbPosToken {
    _entDefName?: string;
    jwtToken?: string;
    positionName?: string;
    constructor(obj?: Partial<GsbPosToken>);
}
