declare namespace API {
    interface Result<T = any> {
        success?: boolean;
        data?: T;
        errorCode?: number;
        errorMessage?: string;
        showType?: ErrorShowType;
        traceId?: string;
        host?: string;
    }

    type SvrResultList<T = any> = Result<{
        total: number;
        list: T[];
    }>;

    interface ResultList<T = any> extends Result<T[]> {
        total: number;
    }

    interface AntdPageParams {
        current?: number;
        pageSize?: number;
        keyword?: string;
        [key: string]: any;
    }

    type ReqList<T> = T & AntdPageParams;

    interface SortBy {
        column: string;
        asc: boolean;
    }

    type SvrReqList<T> = T & {
        page: number;
        pageSize: number;
        sortBy?: string | SortBy | SortBy[];
    };

    interface ReqDelete<T extends number | string = number> {
        ids: T[];
    }

    type Empty = Record<string, never>;
}
