import { RouteRecord } from 'vue-router'; /** * Pagination Request */ export interface PaginationReq { /** Page to load, start from 1 */ Page?: number; /** Amount of records per page */ PerPage?: number; } /** * Pagination Response */ export interface PaginationRes { /** Loaded page, start from 1 */ Page?: number; /** Total amount of records */ Total?: number; /** Amount of records per page */ PerPage?: number; } export interface BaseEntityTypeProp { id: string; status: string; name: string; listFilterIDList?: string; listFilterStatusList?: string; } export type BaseStatusesType = 'enabled' | 'disabled' | 'deleted' | 'recycleBin'; export interface BaseEntityTypeType { entityTypeName: EntityNames; label: string; listLabel: string; prop: BaseEntityTypeProp; statuses?: { [key in BaseStatusesType]?: number; } & { [key in StatusesType]?: number; }; ignorePermissions?: boolean; hasPagination?: boolean; } export declare class BaseEntityService { readonly entityType: T; constructor(entityType: T); get hasPagination(): boolean; get isPermissionsIgnored(): boolean; get entityTypeName(): string; get entityTypeLabel(): string; get entityTypeLabelTranslations(): string; get entityTypeListLabelTranslations(): string; get entityTypeIDProp(): string; get entityTypeNameProp(): string; get entityTypeStatusProp(): string; get entityTypeListFilterIDListProp(): string | undefined; get entityTypeEnabledStatus(): number | undefined; get entityTypeDisabledStatus(): number | undefined; get entityTypeRecycleBinStatus(): number | undefined; get entityTypeDefaultListStatuses(): number[]; get entityTypeListFilterStatusListProp(): string; get entityTypeDeletedStatus(): number | undefined; getEntityTypeRoute(routes: Array): import("vue-router").RouteRecordNormalized | undefined; /** * Get Entity Status by Status Name * @param statusName */ getEntityTypeStatusByName(statusName: string): number | undefined; /** * Get Entity Statuses by Array Status Names * @param statusNames */ getEntityTypeStatusesByName(statusNames: Array): (number | undefined)[]; getEntityId>(data: Entity): number | undefined; getEntityName>(data: Entity): string | undefined; getEntityStatus>(data: Entity): number | undefined; isInStatus>(data: Entity, status: number | undefined): boolean; /** * Check if user can create entityTypes * * @returns {Boolean} */ canCreate(): boolean; canEdit(entityData: object): boolean; canDelete(entityData: object): boolean; } export interface BaseEntityServiceWithPaginationImplements extends BaseEntityService { info(id: number | string): Promise | undefined>; list(pagination: PaginationReq, filter?: Record): Promise<{ Data: Array>; Pagination: PaginationRes; }>; } export interface BaseEntityServiceWithoutPaginationImplements extends BaseEntityService { info(id: number | string): Promise | undefined>; list(filter?: Record): Promise>>; } export type BaseEntityServiceImplements = BaseEntityServiceWithPaginationImplements | BaseEntityServiceWithoutPaginationImplements; export type ExtractListData = T extends Promise<{ Data: infer D; Pagination: PaginationRes; }> ? D : T extends Promise ? R : never; export type ExtractInfoData = T extends Promise ? R : never; export type ListReturnType = ExtractListData>; export type InfoReturnType = ExtractInfoData>;