import { MTableQueries, MRequestMiddelware } from "../../common-types/common";
import { ICoreWorkflowConfig, ICoreWorkflowApproverRules } from "../../schema";
import { controllerResponse } from "../../utilities";
type IWorkflowConfigErrorLogger = {
    [key in keyof MWorkflowConfig]: string;
};
type IWorkflowConfigGetByIdErrorLogger = {
    [key in keyof MWorkflowConfigGetByIdPayload]: string;
};
type IWorkflowConfigInsertUpdateErrorLogger = {
    [key in keyof MWorkflowConfigInsertUpdatePayload]: string;
};
type IWorkflowStepInsertUpdateErrorLogger = {
    [key in keyof MWorkflowStepInsertUpdatePayload]: string;
};
type IWorkflowStepDeleteErrorLogger = {
    [key in keyof MWorkflowStepDeletePayload]: string;
};
type IWorkflowApproverRuleInsertUpdateErrorLogger = {
    [key in keyof MWorkflowApproverRuleInsertUpdatePayload]: string;
};
type IWorkflowApproverRuleDeleteErrorLogger = {
    [key in keyof MWorkflowApproverRuleDeletePayload]: string;
};
declare class MWorkflowConfig extends MTableQueries {
    wfcfg_id?: string;
    wfcfg_workflow_id_wfrg?: string;
    query?: string;
    constructor(init: MWorkflowConfig);
    Validate?(): Partial<IWorkflowConfigErrorLogger>;
}
declare class MWorkflowConfigGetByIdPayload implements MRequestMiddelware {
    wfcfg_id?: string;
    wfcfg_workflow_id_wfrg?: string;
    _id?: string;
    constructor(init: MWorkflowConfigGetByIdPayload);
    Validate?(): Partial<IWorkflowConfigGetByIdErrorLogger>;
}
declare class MWorkflowConfigInsertUpdatePayload implements ICoreWorkflowConfig, MRequestMiddelware {
    _id?: string;
    wfcfg_workflow_id_wfrg?: string;
    wfcfg_approval_type_id_sygms?: string;
    wfcfg_approval_logic?: 'sequential' | 'parallel' | 'mixed';
    wfcfg_use_fallback?: boolean;
    wfcfg_fallback_user_id_auth?: string;
    wfcfg_fallback_designation_id?: string;
    wfcfg_fallback_department_id?: string;
    wfcfg_fallback_role_id?: string;
    wfcfg_step_number?: number;
    wfcfg_step_name?: string;
    wfcfg_allow_edit?: boolean;
    wfcfg_allow_reject?: boolean;
    wfcfg_allow_request_changes?: boolean;
    wfcfg_timeout_hours?: number;
    wfcfg_escalation_step?: number;
    wfcfg_notify_all_approvers?: boolean;
    wfcfg_valid_from_date?: Date;
    wfcfg_valid_to_date?: Date;
    wfcfg_status_on_approval?: string;
    wfcfg_status_on_reject?: string;
    wfcfg_field_permissions?: Record<string, any>;
    wfcfg_integration_webhook?: string;
    wfcfg_isactive?: boolean;
    constructor(init: Partial<ICoreWorkflowConfig> & {
        _id?: string;
    });
    Validate?(): Partial<IWorkflowConfigInsertUpdateErrorLogger>;
}
declare class MWorkflowStepInsertUpdatePayload implements MRequestMiddelware {
    wfstp_id?: string;
    wfstp_workflow_config_id_wfcfg?: string;
    wfstp_step_name?: string;
    wfstp_step_order?: number;
    wfstp_approval_type_id_sygms?: string;
    wfstp_is_required?: boolean;
    wfstp_time_limit_hours?: number;
    wfstp_allow_edit?: boolean;
    wfstp_allow_reject?: boolean;
    wfstp_allow_return?: boolean;
    wfstp_conditional_routing?: string;
    wfstp_status_on_approval?: string;
    wfstp_status_on_reject?: string;
    wfstp_field_permissions?: Record<string, any>;
    wfstp_valid_from_date?: Date;
    wfstp_valid_to_date?: Date;
    _id?: string;
    constructor(init: MWorkflowStepInsertUpdatePayload);
    Validate?(): Partial<IWorkflowStepInsertUpdateErrorLogger>;
}
declare class MWorkflowStepDeletePayload implements MRequestMiddelware {
    wfstp_id?: string;
    _id?: string;
    constructor(init: MWorkflowStepDeletePayload);
    Validate?(): Partial<IWorkflowStepDeleteErrorLogger>;
}
declare class MWorkflowApproverRuleInsertUpdatePayload implements ICoreWorkflowApproverRules, MRequestMiddelware {
    _id?: string;
    wfar_workflow_step_id_wfstp?: string;
    wfar_approval_group_id?: string;
    wfar_group_approval_type_id_sygms?: string;
    wfar_rule_type_id_sygms?: string;
    wfar_rule_value?: string;
    wfar_rule_operator_id_sygms?: string;
    wfar_combined_filters?: Record<string, any>[];
    wfar_priority?: number;
    wfar_condition?: string;
    wfar_is_optional?: boolean;
    wfar_min_approvals?: number;
    wfar_valid_from_date?: Date;
    wfar_valid_to_date?: Date;
    wfar_isactive?: boolean;
    constructor(init: Partial<ICoreWorkflowApproverRules> & {
        _id?: string;
    });
    Validate?(): Partial<IWorkflowApproverRuleInsertUpdateErrorLogger>;
}
declare class MWorkflowApproverRuleDeletePayload implements MRequestMiddelware {
    wfar_id?: string;
    _id?: string;
    constructor(init: MWorkflowApproverRuleDeletePayload);
    Validate?(): Partial<IWorkflowApproverRuleDeleteErrorLogger>;
}
declare class MWorkflowApproverRuleGetPayload implements MRequestMiddelware {
    wfar_workflow_config_id_wfcfg?: string;
    wfar_workflow_step_id_wfstp?: string;
    constructor(init: MWorkflowApproverRuleGetPayload);
    Validate?(): any;
}
interface workflowConfigControllerResponse extends controllerResponse {
    data?: any[] | any | null;
    total?: number;
    totalDocument?: number;
}
interface workflowConfigByIdControllerResponse extends controllerResponse {
    data?: any | null;
}
interface workflowConfigInsertUpdateControllerResponse extends controllerResponse {
    data?: any | null;
}
export { MWorkflowConfig, MWorkflowConfigGetByIdPayload, MWorkflowConfigInsertUpdatePayload, MWorkflowStepInsertUpdatePayload, MWorkflowStepDeletePayload, MWorkflowApproverRuleInsertUpdatePayload, MWorkflowApproverRuleDeletePayload, MWorkflowApproverRuleGetPayload, workflowConfigControllerResponse, workflowConfigByIdControllerResponse, workflowConfigInsertUpdateControllerResponse };
