import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma } from '@prisma/client';
export interface CreateSkuInput {
    modelId: string;
    code?: string;
    name: string;
    variant?: string;
    defaultPrice?: number;
    defaultCost?: number;
    description?: string;
    enabled?: boolean;
    metadata?: Record<string, any>;
}
export type UpdateSkuInput = Partial<Omit<CreateSkuInput, 'code'>>;
export declare class RobotSkuService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    list(query?: {
        modelId?: string;
        search?: string;
        enabledOnly?: boolean;
    }): Promise<({
        _count: {
            robotUnits: number;
        };
        model: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: Prisma.JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            imageUrl: string | null;
            brand: string | null;
        };
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        createdById: string;
        enabled: boolean;
        currencyCode: string | null;
        modelId: string;
        variant: string | null;
        defaultPrice: Prisma.Decimal | null;
        defaultCost: Prisma.Decimal | null;
    })[]>;
    findOne(id: string): Promise<{
        model: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: Prisma.JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            imageUrl: string | null;
            brand: string | null;
        };
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        createdById: string;
        enabled: boolean;
        currencyCode: string | null;
        modelId: string;
        variant: string | null;
        defaultPrice: Prisma.Decimal | null;
        defaultCost: Prisma.Decimal | null;
    }>;
    findByCodesIn(codes: string[]): Promise<Map<string, Awaited<ReturnType<typeof this.prisma.robotSku.findFirst>>>>;
    create(input: CreateSkuInput, userId: string, organizationId: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        createdById: string;
        enabled: boolean;
        currencyCode: string | null;
        modelId: string;
        variant: string | null;
        defaultPrice: Prisma.Decimal | null;
        defaultCost: Prisma.Decimal | null;
    }>;
    update(id: string, input: UpdateSkuInput): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        organizationId: string;
        createdById: string;
        enabled: boolean;
        currencyCode: string | null;
        modelId: string;
        variant: string | null;
        defaultPrice: Prisma.Decimal | null;
        defaultCost: Prisma.Decimal | null;
    }>;
    delete(id: string): Promise<{
        success: boolean;
    }>;
}
