import { DesignTemplateScope, UserRole } from '@prisma/client';
import { PrismaService } from '../../database/prisma.service';
import { CreateTemplateDto } from './dto/create-template.dto';
import { UpdateTemplateDto } from './dto/update-template.dto';
import { UploadsService } from '../uploads/uploads.service';
type RequestUser = {
    id: string;
    role: UserRole;
    shopId: string | null;
};
export declare class TemplatesService {
    private readonly prisma;
    private readonly uploads;
    constructor(prisma: PrismaService, uploads: UploadsService);
    private assertCanAccessShop;
    list(user: RequestUser, scope?: DesignTemplateScope, shopIdQuery?: string): Promise<{
        id: string;
        name: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        design: import("@prisma/client/runtime/library").JsonValue;
        scope: import("@prisma/client").$Enums.DesignTemplateScope;
    }[]>;
    create(user: RequestUser, dto: CreateTemplateDto): Promise<{
        id: string;
        name: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        design: import("@prisma/client/runtime/library").JsonValue;
        scope: import("@prisma/client").$Enums.DesignTemplateScope;
    }>;
    update(user: RequestUser, id: string, dto: UpdateTemplateDto): Promise<{
        id: string;
        name: string;
        shopId: string;
        createdAt: Date;
        updatedAt: Date;
        design: import("@prisma/client/runtime/library").JsonValue;
        scope: import("@prisma/client").$Enums.DesignTemplateScope;
    }>;
    remove(user: RequestUser, id: string): Promise<{
        ok: boolean;
    }>;
}
export {};
