export interface ZdeskService {
    token?: string;
    connectionId: string;
    businessId?: string;
}
export interface ApiPaginationRequest {
    page?: number;
    limit?: number;
    order?: PaginationOrder;
    order_by?: string;
    search?: string;
}
export declare const ROW_PER_PAGE_OPTIONS: number[];
export declare const PAGINATION_PAGE_LIMIT = 20;
export declare const PAGINATION_PAGE_LIMIT_OPTIONS: number[];
export declare enum PaginationOrder {
    ASC = "ASC",
    DESC = "DESC"
}
export interface OptionValue {
    label: string;
    value: string;
}
export interface BusinessFile {
    id: string;
    name: string;
    type: string;
    url: string;
}
export interface ApiPaginationResponse<T, C = any> {
    data: T[];
    meta: {
        page: number;
        limit: number;
        count: number;
        page_count: number;
        has_next_page: boolean;
        has_previous_page: boolean;
    };
    custom_field?: C;
}
export interface User {
    id: string;
    username: string;
    email: string | null;
    first_name: string | null;
    last_name: string | null;
    phone: string | null;
    last_login_at?: string | null;
    google_account_id: string | null;
    avatar_url: string | null;
    business_users?: BusinessUser[];
    require_reset_password?: boolean;
    status: UserStatus;
    online_status: keyof typeof UserOnlineStatus | null;
    last_online_at: string | null;
    is_zwiz_admin?: boolean;
    user_settings: UserSetting | null;
    password?: string | null;
    created_at?: string;
    updated_at?: string;
}
export declare enum UserStatus {
    active = 0,
    inactive = 1,
    suspended = 2
}
export declare enum UserOnlineStatus {
    online = 0,
    offline = 1,
    away = 2,
    busy = 3
}
export interface BusinessUser {
    id: string;
    user_id: string;
    user: User;
    business_role_id: string | null;
    business_role: BusinessRole | null;
    business_group_users: BusinessGroupUser[] | null;
    business_id: string;
    business: BusinessConfig;
    business_user_working_status_logs: BusinessUserWithWorkingStatus[] | null;
    created_at: string;
    updated_at: string | null;
    display_name: string | null;
    status: BusinessUserStatus | null;
    avatar_url: string | null;
    integration_json?: BusinessUserIntegrationJson | null;
    config_json?: BusinessUserConfigJson | null;
}
export interface BusinessRole {
    id: string;
    name: string;
    description: string;
    business_id: string;
    created_at: string;
    updated_at: string | null;
    business_role_permissions: BusinessRolePermission[];
}
export interface BusinessRolePermission {
    business_role_id: string;
    created_at: string;
    id: string;
    updated_at: string;
    user_permission_id: string;
    user_permission: IUserPermission;
}
export interface IUserPermission {
    action: PERMISSION_ACTION;
    created_at: string;
    created_by: string;
    description: string;
    id: string;
    resource: string;
    updated_at: string;
}
export declare enum PERMISSION_ACTION {
    MANAGE = "manage",
    CREATE = "create",
    UPDATE = "update",
    DELETE = "delete",
    READ = "read"
}
export interface BusinessGroup {
    id: string;
    name: string;
    created_at: string;
    updated_at: string | null;
    created_by: string | null;
    updated_by: string | null;
    business_id: string;
    business_group_users: BusinessGroupUser[];
}
export interface BusinessGroupUser {
    id: string;
    user_id: string;
    business_group_id: string;
    business_user_id: string;
    created_at: string;
    updated_at: string | null;
    business_user: BusinessUser;
    business_group: BusinessGroup;
}
export interface BusinessConfig {
    id: string;
    name: string;
    is_active: boolean;
    created_at: string;
    updated_at: string | null;
    created_by: string;
    updated_by: string | null;
    avatar_url: string | null;
    business_users: BusinessUser[];
    expired_at: string;
    secret_key?: string;
    business_integrations: BusinessIntegration[];
}
export declare enum BusinessIntegrationType {
    NOTIFICATION_CENTER = "notification-center",
    PAM = "pam",
    WARROOM = "warroom",
    CONNECTX = "connect-x",
    ZERVA = "zerva",
    ZRMZ = "zrmz",
    ZIGNAL = "zignal",
    EGG_DIGITAL = "egg-digital"
}
export declare enum BusinessIntegrationStatus {
    INACTIVE = "inactive",
    ACTIVE = "active"
}
export interface BusinessIntegration {
    id: string;
    business_id: string;
    name: string;
    config_json?: IBusinessIntegrationConfigJson | IBusinessIntegrationConfigJsonEggDigital | IBusinessIntegrationConfigJsonZignal | null;
    type: BusinessIntegrationType;
    status: BusinessIntegrationStatus;
}
export interface IBusinessIntegrationConfigJson {
    id?: string;
    access_token?: string;
    webhook_options?: IBusinessIntegrationConfigJsonWebhookOptions | null;
}
export interface IBusinessIntegrationConfigJsonWebhookOptions {
    business_info?: boolean;
    chatlog?: boolean;
    customer?: boolean;
    customer_tag?: boolean;
    broadcast_report?: boolean;
    event_tracking_report?: boolean;
}
export interface IBusinessIntegrationConfigJsonEggDigital {
    scope_id?: string | undefined;
    scope_type?: keyof typeof ScopeType | undefined;
}
declare enum ScopeType {
    ACCOUNT = "ACCOUNT",
    COMPANY = "COMPANY",
    BRANCH = "BRANCH"
}
export interface IBusinessIntegrationConfigJsonZignal {
    id: string;
    picture_url: string;
    name: string;
    other_business_type: string | null;
    channel_business_type: {
        id: number;
        name: string;
    } | null;
    channel_member_role: {
        id: number;
        name: string;
    } | null;
    channel_profile_connect: unknown[];
    email_validation_status: {
        id: number;
        status_description: string;
    } | null;
    number_of_members_available: number;
    is_enterprise_connected: boolean;
    is_created_business: boolean;
}
export interface BusinessUserWithWorkingStatus {
    id: string;
    business_id: string;
    business_user_id: string;
    business_user_working_status_id: string;
    start_at: string;
    start_by: string;
    end_at: string | null;
    end_by: string | null;
    is_active: boolean;
    business_user: BusinessUser;
    business_user_working_status: IBusinessUserWorkingStatus | null;
}
export interface IBusinessUserWorkingStatus {
    business_id?: string;
    color: string;
    created_at?: string;
    created_by?: string;
    description?: string;
    id?: string;
    is_ticket_assignable: boolean;
    name: string;
    order_index: number;
    type?: WORKING_STATUS_SETTING;
    updated_at?: string | null;
    updated_by?: string | null;
}
export declare enum WORKING_STATUS_SETTING {
    WORKING = "working",
    BREAK = "break",
    LEAVE = "leave"
}
export declare enum BusinessUserStatus {
    ACTIVE = "active",
    INACTIVE = "inactive"
}
export interface BusinessUserIntegrationJson {
    notification_center?: OptionValue;
    zignal?: {
        email: string | null;
        first_name: string | null;
        last_name: string | null;
        picture_url: string | null;
        username: string;
        member_id: string;
    };
}
export interface BusinessUserConfigJson {
    ticket_config?: {
        workload_limit: number;
    };
}
export interface UserSettingDisplay {
    theme: string;
    font_size: string;
    color_primary?: string;
}
export interface UserSetting {
    language?: string;
    timezone?: string;
    date_format?: string;
    id: string;
    time_format?: string;
    display?: UserSettingDisplay;
    created_at?: string;
    updated_at?: string;
}
export interface ICustomerTagConfig {
    business_id: string;
    create_by: string;
    created_at: string;
    id: string;
    tag: string;
}
export declare enum CUSTOM_FIELD_CONFIG_TYPE {
    TEXT = "text",
    NUMBER = "number",
    DATE = "date",
    PHONE = "phone",
    EMAIL = "email",
    ADDRESS = "address",
    DROPDOWN = "dropdown",
    CHECKBOX = "checkbox",
    RADIO = "radio",
    MULTISELECT = "multiselect",
    FILE = "file",
    URL = "url"
}
export interface ICustomFieldConfig {
    id: string;
    key: string;
    name: string;
    description?: string | null;
    default_value?: any;
    type: CUSTOM_FIELD_CONFIG_TYPE;
    options?: OptionValue[];
    is_default: boolean;
    is_pinned: boolean;
    is_required: boolean;
    is_show: boolean;
    order_index: number;
    created_at?: string;
    created_by?: string;
    updated_at?: string;
    updated_by: string;
    business_id: string;
}
export type TCustomFieldValue = string | number | OptionValue | OptionValue[] | BusinessFile[];
export interface ITicketCustomValue {
    business_id: string;
    created_at?: string;
    created_by?: string;
    updated_at?: string;
    updated_by: string;
    custom_field_config: ICustomFieldConfig;
    custom_field_config_id: string;
    id: string;
    ticket_id: string;
    value: {
        value: TCustomFieldValue;
    };
}
export interface ICustomFields {
    key: string;
    value: {
        value: string;
    };
}
export interface ICustomerCustomFieldByCustomer extends ICustomFieldConfig {
    customer_custom_fields: ICustomerCustomFieldItemByCustomer[];
}
export interface ICustomerCustomFieldItemByCustomer {
    id: string;
    value: {
        value: string;
    };
    custom_field_config_id: string;
    customer_id: string;
    created_at?: string;
    created_by?: string;
    updated_at?: string;
    updated_by?: string | null;
}
export interface GetTicketRequest extends ApiPaginationRequest {
    business_id: string;
    channel_id?: string;
    ticket_status?: TICKET_STATUS_SETTING;
    status?: string;
    channel_type?: CHANNEL;
    subject?: string;
    priority?: TICKET_PRIORITY;
    business_group_id?: string;
    sub_group_id?: string;
    business_user_id?: string;
    state?: CUSTOMER_STATE;
    ids?: string[];
    status_ids?: string[];
    customer_id?: string;
}
export interface GetTicketResponse extends ApiPaginationResponse<ITicket> {
}
export declare enum TICKET_STATUS_SETTING {
    OPEN = "open",
    IN_PROGRESS = "in_progress",
    CANCELED = "canceled",
    CLOSED = "closed"
}
export declare enum CHANNEL {
    All = "all",
    FACEBOOK = "facebook",
    LINE = "line",
    INSTAGRAM = "instagram",
    TIKTOK = "tiktok",
    WEBCHAT = "webchat",
    WHATSAPP = "whatsapp",
    SHOPEE = "shopee",
    LAZADA = "lazada",
    WEBHOOK = "webhook"
}
export declare enum TICKET_PRIORITY {
    HIGH = "high",
    MEDIUM = "medium",
    LOW = "low"
}
export declare enum CUSTOMER_STATE {
    BOT = "bot",
    ADMIN = "admin"
}
export interface ITicket {
    id: number;
    business_id: string;
    channel_id: string;
    customer_id: string;
    channel_type: CHANNEL;
    subject: string;
    description: string;
    priority: TICKET_PRIORITY;
    business_group: BusinessGroup;
    business_group_id: string | null;
    sub_group_id: string | null;
    business_user_id: string | null;
    due_date: string | null;
    line_reply_token: string | null;
    tags: ITicketTag[];
    note: string;
    comment: string;
    mood: string | null;
    wrap_up: any[];
    wrap_up_route: any[];
    customer_reply_at: string;
    customer_reply_message: string;
    customer_new_message_count: number;
    business_user_reply_at: string | null;
    business_user_reply: string | null;
    business_user_reply_message: string | null;
    is_business_user_read: boolean;
    business_users_read: any[];
    business_user_read_at: string | null;
    created_at: string;
    updated_at: string;
    closed_at: string | null;
    status_id: string;
    business: BusinessConfig;
    channel: IChannel;
    customer: ICustomer;
    state: TICKET_STATE;
    status: ITicketStatusSetting;
    business_user: BusinessUser;
    ticket_followings: ITicketFollowing[];
    ticket_business_user_sla: ITicketSla;
    ticket_reads: ITicketRead[];
    queue_status: TICKET_STATUS_SETTING;
    line_mark_as_read_token: string;
    queue_completed_at: string | null;
    queue_failed_at: string | null;
    customer_need_admin_at: string | null;
    chatbot_id: string | null;
    ticket_custom_fields: ITicketCustomField[];
}
export interface ITicketTag {
    id: string;
    ticket_id: string;
    business_id: string;
    channel_id: string;
    tag: string;
    tag_id: string;
    created_at: string;
    create_by: string;
}
export interface IChannelConnectionJSON {
    profile?: {
        userId: string;
        basicId: string;
        chatMode: string;
        displayName: string;
        markAsReadMode: string;
    };
    channel_id?: string;
    channel_secret?: string;
    channel_access_token?: string;
    page_id?: string;
    page_name?: string;
    access_token?: string;
}
export interface IChannel {
    id: string;
    business_id: string;
    type: CHANNEL;
    name: string;
    chatbot_id: string;
    chatbot?: IChatBot;
    logo_url: string;
    connection_json?: IChannelConnectionJSON | null;
    config_json: null;
    created_at: string | null;
    created_by: string | null;
    updated_at: string | null;
    updated_by: string | null;
    profile_json?: {
        userId: string;
        basicId: string;
        chatMode: string;
        pictureUrl: string;
        displayName: string;
        markAsReadMode: string;
        username: string;
        instagram_account_id: string;
        name?: string;
        page_id: string;
        page_name: string;
    };
    event_tracking_liff_id: string | null;
    channel_forward_webhooks: ChannelForwardWebhook[];
}
export interface IChatBot {
    id: string;
    business_id: string;
    name: string;
    is_active: boolean;
    is_active_by_channel: boolean;
    active_channels: {
        line: boolean;
        tiktok: boolean;
        webchat: boolean;
        facebook: boolean;
        whatsapp: boolean;
        instagram: boolean;
    };
    times_to_use_bot: {
        Friday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
        Monday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
        Sunday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
        Tuesday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
        Saturday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
        Thursday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
        Wednesday: {
            open_at: string | null;
            close_at: string | null;
            is_active: boolean;
        };
    };
    maintenance_messages: {
        token: string | null;
        is_active: boolean;
    };
    create_by: string;
    created_at: string;
    update_by: string | null;
    updated_at: string | null;
}
export interface ChannelForwardWebhook {
    id?: string;
    channel_id: string;
    endpoint_url: string;
    created_at?: string;
    is_active?: boolean;
    enable_webhook?: boolean;
    enable_chatlog?: boolean;
    enable_ticket?: boolean;
    enable_customer?: boolean;
    enable_customer_tag?: boolean;
    enable_customer_custom_field?: boolean;
    enable_broadcast_log?: boolean;
    enable_event_tracking_log?: boolean;
}
export interface ICustomer {
    id: string;
    business_id: string;
    channel_id: string;
    social_id: string;
    channel: IChannel;
    channel_type: CHANNEL;
    picture_url: string;
    session_token: string;
    context: string;
    state: CUSTOMER_STATE;
    status: string;
    is_end_conversation: boolean;
    notify_time: string | null;
    inbox_url: string | null;
    is_blocked: boolean;
    is_blocked_by_user: boolean;
    last_online_at: string;
    created_at: string;
    updated_at: string;
    current_ticket_id: string;
    line_bot_group_id: string | null;
    display_name: string;
    social_name: string;
    customer_custom_fields: ICustomerCustomFieldValue[];
    customer_tags: ICustomerTag[];
    customer_read_message_at: string | null;
    customer_comments: ICustomerComment[];
}
export interface ICustomerCustomFieldValue {
    id: string;
    value?: {
        value: TCustomFieldValue;
    } | null;
    custom_field_config_id: string;
    customer_id: string;
    created_at: string;
    created_by: string | null;
    updated_at: string | null;
    updated_by: string | null;
    custom_field_config: ICustomFieldConfig;
}
export interface ICustomerTag {
    id: string;
    business_id: string;
    channel_id: string;
    customer_id: string;
    tag: string;
    tag_id: string;
    counts: number;
    create_by: string;
    created_at: string;
    updated_at: string;
}
export interface ICustomerComment {
    id: string;
    business_id: string;
    customer_id: string;
    business_user_id: string;
    messages: ICustomerCommentMessage;
    created_at: string;
    updated_at: string | null;
    customer_reply_comments: ICustomerCommentReply[];
}
export interface ICustomerCommentReply {
    id: string;
    business_id: string;
    customer_comment_id: string;
    business_user_id: string;
    messages: ICustomerCommentMessage;
    created_at: string;
    updated_at: string | null;
}
export interface ICustomerCommentMessage {
    type: MESSAGE_TYPE;
    text?: string;
    url?: string;
}
export interface ICustomerCommentLog {
    action: string;
    action_by: string;
    action_type: string;
    business_id: string;
    created_at: string;
    customer_comment_id: string;
    customer_id: string;
    customer_reply_comment_id: string;
    id: string;
}
export declare enum MESSAGE_TYPE {
    TEXT = "text",
    IMAGE = "image",
    FILE = "file",
    VIDEO = "video",
    AUDIO = "audio",
    SURVEY = "survey",
    GENERIC = "generic",
    BUTTON = "button",
    FLEX = "flex",
    BASIC_IMAGE_MAP = "basicimagemap",
    IMAGE_MAP = "imagemap",
    STICKER = "sticker",
    FAILED = "failed",
    NOREPLY = "noreply",
    META_PAY = "meta_pay",
    SHARE_POST = "share_post",
    RESPONSE_POST = "responsepost",
    SAVE_USER_EVENT = "save_user_event",
    LINE_BLOCKED = "line_blocked",
    LINE_UNBLOCKED = "line_unblocked",
    IDLE = "idlemessages",
    TIMEOUT = "timeoutmessages",
    NTN_TEMPLATE = "ntn_template",
    WELCOME_MESSAGE = "welcome_message",
    COMMENT = "comment",
    FACEBOOK_MESSAGE_ADS = "facebook_message_ads",
    LINE_ADD_FRIEND = "line_add_friend",
    LOCATION = "location"
}
export declare enum TICKET_STATE {
    ADMIN = "admin",
    BOT = "bot"
}
export interface ITicketStatusSetting {
    id: string;
    business_id: string;
    status: string;
    ticket_status: TICKET_STATUS_SETTING;
    created_at: string;
    created_by: string;
    updated_at: string;
    updated_by: string;
    color: string;
    is_default: boolean;
    order_index: number;
    is_hidden: boolean;
}
export interface ITicketFollowing {
    business_user: BusinessUser;
    business_user_id: string;
    created_at: string;
    id: string;
    ticket_id: string;
    updated_at: string;
}
export interface ITicketSla {
    id: string;
    ticket_id: string;
    business_id: string;
    channel_id: string;
    business_user_id: string;
    business_group_id: string | null;
    sub_group_id: string | null;
    assigned_at: string;
    pick_up_at: string;
    first_reply_message_at: string;
    reply_message_at: string;
    closed_at: string | null;
    business_max_tta: number;
    business_user_max_tta: string | null;
    created_at: string;
    updated_at: string;
}
export interface ITicketRead {
    id: string;
    ticket_id: number;
    business_user_id: string;
    created_at: string;
}
export interface ITicketCustomField extends ICustomFieldConfig {
    ticket_custom_fields: {
        id: string;
        value: string;
        custom_field_config_id: string;
    }[];
    value: {
        value: string;
    };
}
export interface ITicketStatusSettingForm {
    id?: string;
    status: string;
    ticket_status: TICKET_STATUS_SETTING;
    order_index: number;
    color: string;
    is_hidden?: boolean;
}
export interface ITicketComment {
    business_id: string;
    business_user_id: string;
    created_at: string;
    id: string;
    messages: ITicketCommentMessage;
    reply_comments: ITicketCommentReply[];
    ticket_id: string;
    updated_at: string | null;
}
export interface ITicketCommentReply {
    id: string;
    business_id: string;
    ticket_comment_id: string;
    business_user_id: string;
    messages: ITicketCommentMessage;
    created_at: string;
    updated_at: string | null;
}
export interface ITicketCommentMessage {
    type: MESSAGE_TYPE;
    text?: string;
    url?: string;
}
export interface ITicketCommentLog {
    action: string;
    action_by: string;
    action_type: string;
    business_id: string;
    created_at: string;
    id: string;
    ticket_comment_id: string;
    ticket_id: number;
    ticket_reply_comment_id: string | null;
}
export interface ITicketActivity {
    id: string;
    ticket_id: string;
    action_type: string;
    action_details: string;
    action_payloads: {};
    action_by: string;
    created_at: string;
}
export {};
