/// declare namespace Api { interface Pagination { rnum: number; info: { current: number; total: number; }; format: { limit: number; offset: number; }; } interface Paging { loadType: 'init' | 'loadMore'; pagination: Pagination; } interface ReqData { url: string; params?: any; alert?: boolean; } interface Response { data: { message: string; list: any[]; manager: any[]; }; status: number; } interface Fullfilled { response: Api.Response; reqData: Api.ReqData; } interface InfiFullfilled { response: Api.Response; reqData: Api.ReqData; paging: Api.Paging; } } export declare namespace M_Auto { type Data = { title: string; value: T & { rnum: number; }; selected: boolean; }; interface State { choice: { isAllCheck: number; include: Data[]; exclude: Data[]; }; data: Data[]; loading: boolean; searchText: string; pagination: Api.Pagination; } type Choice = { isAllCheck: number; include: Data[]; exclude: Data[]; }; type Patch = { choice: Choice; searchText: string; data: Data[]; }; type Config = { choice: Choice; onChange: (payload: Patch) => void; searchText: string; }; type Select = { data: Data[]; item: Data; check: number; }; type Check = { data: Data[]; item: Data; choice: Choice; check: number; }; interface Context { data: Data[]; config: Config; disabled: boolean; target: React.RefObject | null; allCheck?: boolean; focus: boolean; loading?: boolean; clickInside?: boolean; setFocus: (focus: boolean) => void; } type Actions = { type: 'choice'; value: Choice; } | { type: 'searchText'; value: string; } | { type: 'data'; value: Data[]; } | { type: 'patch'; value: Patch; } | { type: 'init'; value: { loadType: 'init' | 'loadMore'; searchText?: string; }; } | { type: 'paging'; value: { data: T[]; pagination: Api.Pagination; }; }; } export {};