import React from 'react';
export interface ModalBoxProps {
    isModalOpen?: boolean
    handleClose: () => void
    data?: any | null
    handleOk: () => void
}

export interface Filters {
    page: number
    pageSize: number
    pagination: boolean
    search: string
    sorter: {
        column: string
        order: string
    }
}
export interface DesignationData {
    error: string
    data: string
    name: string
    // Add other properties as needed
    meta: {
        current_page: number
        per_page: number
        total: number
    }
}
export interface Designation {
    key: React.Key
    name: string
    age: number
    address: string
    id: number
    label: string
}
export interface meta {
    current_page: number
    per_page: number
    total: number
}
export interface Feature {
    id: number
    name: string
    slug: string
}
export interface Permission {
    id: number
    role_id: number
    feature_id: number
    name: string
    slug: string
}
export interface DesignationsState {
    designations: Designation[]
    error: string | null
    status: 'loading' | 'succeeded' | 'failed'
    allDesignations: Designation[]
    features: Feature[]
    permissions: Permission[]
}

type ComplexValueType =
    | string
    | number
    | boolean
    | null
    | undefined
    | (() => void) // Function type with no parameters and no return value
    | ((...args: unknown[]) => unknown) // Function with unknown args and return type
    | symbol
    | Map<unknown, unknown> // Use unknown for Map key and value types
    | Set<unknown> // Use unknown for Set values
    | Date
    | object // Base object type
    | string[] // Array of strings
    | number[] // Array of numbers
    | boolean[] // Array of boolean
    | object[] // Array of objects
    | Array<{ [key: string]: ComplexValueType }> // Array of objects with ComplexValueType values
    | Promise<string | number | boolean | object | null | undefined>; // Promise with possible types

export interface DataType {
    [key: string]: ComplexValueType | null | undefined
}