import { PaginationDTO, PaginationService } from '@hed-hog/api-pagination';
import { PrismaService } from '@hed-hog/api-prisma';
import { CreateDashboardComponentDTO, UpdateDashboardComponentDTO } from './dto';
type DashboardComponentUserPagination = PaginationDTO & {
    librarySlug?: string;
    exclude?: string;
};
export declare class DashboardComponentService {
    private readonly prismaService;
    private readonly paginationService;
    constructor(prismaService: PrismaService, paginationService: PaginationService);
    getAllComponents(paginationParams: PaginationDTO): Promise<{
        total: any;
        lastPage: number;
        page: number;
        pageSize: number;
        prev: number;
        next: number;
        data: any[];
    }>;
    getAllComponentsByUserRole(paginationParams: DashboardComponentUserPagination, userId: number): Promise<{
        modules: string[];
        total: any;
        lastPage: number;
        page: number;
        pageSize: number;
        prev: number;
        next: number;
        data: any[];
    }>;
    getComponent(id: number, locale: string, userId?: number): Promise<{
        dashboard_component_locale: ({
            locale: {
                code: string;
                name: string;
                id: number;
                region: string;
                enabled: boolean;
                created_at: Date;
                updated_at: Date;
            };
        } & {
            name: string;
            id: number;
            description: string;
            created_at: Date;
            updated_at: Date;
            locale_id: number;
            dashboard_component_id: number;
        })[];
    } & {
        id: number;
        height: number;
        width: number;
        created_at: Date;
        updated_at: Date;
        slug: string;
        library_slug: string;
        min_width: number;
        max_width: number | null;
        min_height: number;
        max_height: number | null;
        is_resizable: boolean;
    }>;
    createComponent(data: CreateDashboardComponentDTO, locale: string): Promise<{
        dashboard_component_locale: ({
            locale: {
                code: string;
                name: string;
                id: number;
                region: string;
                enabled: boolean;
                created_at: Date;
                updated_at: Date;
            };
        } & {
            name: string;
            id: number;
            description: string;
            created_at: Date;
            updated_at: Date;
            locale_id: number;
            dashboard_component_id: number;
        })[];
    } & {
        id: number;
        height: number;
        width: number;
        created_at: Date;
        updated_at: Date;
        slug: string;
        library_slug: string;
        min_width: number;
        max_width: number | null;
        min_height: number;
        max_height: number | null;
        is_resizable: boolean;
    }>;
    updateComponent(id: number, data: UpdateDashboardComponentDTO, locale: string): Promise<{
        dashboard_component_locale: ({
            locale: {
                code: string;
                name: string;
                id: number;
                region: string;
                enabled: boolean;
                created_at: Date;
                updated_at: Date;
            };
        } & {
            name: string;
            id: number;
            description: string;
            created_at: Date;
            updated_at: Date;
            locale_id: number;
            dashboard_component_id: number;
        })[];
    } & {
        id: number;
        height: number;
        width: number;
        created_at: Date;
        updated_at: Date;
        slug: string;
        library_slug: string;
        min_width: number;
        max_width: number | null;
        min_height: number;
        max_height: number | null;
        is_resizable: boolean;
    }>;
    deleteComponent(id: number, locale: string): Promise<{
        id: number;
        height: number;
        width: number;
        created_at: Date;
        updated_at: Date;
        slug: string;
        library_slug: string;
        min_width: number;
        max_width: number | null;
        min_height: number;
        max_height: number | null;
        is_resizable: boolean;
    }>;
    private normalizeComponentIdentity;
    private buildWidgetAssetSlug;
    private resolvePreviewDirectory;
    savePreview(id: number, file: MulterFile, locale: string): Promise<{
        success: boolean;
        componentId: number;
        slug: string;
        library_slug: string;
        fileName: string;
        relativeUrl: string;
    }>;
}
export {};
//# sourceMappingURL=dashboard-component.service.d.ts.map