declare namespace Api {
  /**
   * namespace Dict
   *
   * backend api module: "dict"
   */
  namespace Dict {
    type DictStatus = 0 | 1;

    interface PageParams {
      pageNo: number;
      pageSize: number;
    }

    interface PageResult<T = any> {
      total: number;
      list: T[];
    }

    /** dict type */
    interface DictType {
      /** dict type id */
      id: number;
      /** dict name */
      name: string;
      /** dict type code */
      type: string;
      /** status: 0 enabled, 1 disabled */
      status: DictStatus;
      /** remark */
      remark?: string | null;
      /** create time */
      createTime: number;
    }

    /** dict type search params */
    type DictTypeSearchParams = CommonType.RecordNullable<Pick<DictType, 'name' | 'type' | 'status'>> & PageParams;

    /** dict type save params */
    type SaveDictTypeParams = Pick<DictType, 'name' | 'type' | 'status'> & {
      remark?: string | null;
    };

    /** dict data */
    interface DictData {
      /** dict data id */
      id: number;
      /** dict label */
      label: string;
      /** dict value */
      value: string;
      /** dict type code */
      dictType: string;
      /** display order */
      sort: number;
      /** status: 0 enabled, 1 disabled */
      status: DictStatus;
      /** 颜色（hex，#xxxxxx）；nullable，无值时前端按默认渲染 */
      colorType?: string | null;
      /** 精确颜色（hex，#xxxxxx）；存在时优先于 colorType，用于 colorType 落到语义色无法区分的场景 */
      cssClass?: string | null;
      /** remark */
      remark?: string | null;
      /** create time */
      createTime: number;
    }

    /** frontend runtime dict item */
    interface FrontendDictData {
      /** dict label */
      label: string;
      /** dict value */
      value: string;
      /** display order */
      sort: number;
      /** dict type code */
      dictType?: string;
      /** status: 0 enabled, 1 disabled */
      status?: DictStatus;
      /** 颜色（hex，#xxxxxx）；nullable，无值时前端按默认渲染 */
      colorType?: string | null;
      /** 精确颜色（hex，#xxxxxx）；存在时优先于 colorType */
      cssClass?: string | null;
      /** 备注，可用于下拉中文释义展示 */
      remark?: string | null;
    }

    /** frontend runtime dict cache map */
    type FrontendDictCache = Record<string, FrontendDictData[]>;

    /** dict data search params */
    type DictDataSearchParams = CommonType.RecordNullable<Pick<DictData, 'label' | 'dictType' | 'status'>> & PageParams;

    /** dict data save params */
    type SaveDictDataParams = Pick<DictData, 'label' | 'value' | 'dictType' | 'sort' | 'status' | 'colorType'> & {
      remark?: string | null;
    };
  }
}
