interface ListMenu {
  id: string;
  icon: string;
  order: number;
  parentId?: string | null;
  path: string;
  sysDescription: string;
  sysName: string;
  children?: ListMenu[];
}

interface ChildConfig {
  sysName?: string;
  path: string;
  meta?: MenuMetadata;
}

interface ChildLevelTree {
  [key: string]: ChildConfig[];
}

interface DataPermissions {
  id: string;
  roleDescription: string;
  roleName: string;
  roles: DataRoles[];
}

interface MenuMetadata {
  Auth: boolean;
  Key: string;
  Role: string;
}
interface DataRoles {
  attrIsCreate: boolean;
  attrIsDelete: boolean;
  attrIsGet: boolean;
  attrIsList: boolean;
  attrIsUpdate: boolean;
  attrOwnership: string;
  attrPrivilege: string;
  authSysId: string;
  parentNode: string;
}

export type { ListMenu, ChildLevelTree, ChildConfig, DataPermissions };
