import { Prisma } from '@prisma/client';
import { PrismaService } from '../database/prisma.service';
import { MapsService } from '../maps/maps.service';
import { UpdateMyRestaurantDto } from './dto/update-my-restaurant.dto';
import { UpsertRestaurantDto } from './dto/upsert-restaurant.dto';
export declare class RestaurantsService {
    private readonly prisma;
    private readonly mapsService;
    constructor(prisma: PrismaService, mapsService: MapsService);
    list(): Prisma.PrismaPromise<({
        reviews: {
            rating: number;
        }[];
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: Prisma.Decimal;
            blockedBalance: Prisma.Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        _count: {
            orders: number;
        };
    } & {
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    })[]>;
    getByUserId(userId: string): Prisma.Prisma__RestaurantClient<{
        reviews: {
            rating: number;
        }[];
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: Prisma.Decimal;
            blockedBalance: Prisma.Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        _count: {
            products: number;
            orders: number;
            promotions: number;
        };
    } & {
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    }, never, import("@prisma/client/runtime/library").DefaultArgs>;
    create(data: UpsertRestaurantDto): Promise<{
        reviews: {
            rating: number;
        }[];
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: Prisma.Decimal;
            blockedBalance: Prisma.Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        _count: {
            orders: number;
        };
    } & {
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    }>;
    update(id: string, data: Partial<UpsertRestaurantDto>): Promise<{
        reviews: {
            rating: number;
        }[];
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: Prisma.Decimal;
            blockedBalance: Prisma.Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        _count: {
            orders: number;
        };
    } & {
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    }>;
    archive(id: string): Promise<{
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    }>;
    updateByUserId(userId: string, data: UpdateMyRestaurantDto): Promise<{
        reviews: {
            rating: number;
        }[];
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: Prisma.Decimal;
            blockedBalance: Prisma.Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        _count: {
            products: number;
            orders: number;
            promotions: number;
        };
    } & {
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    }>;
    assignUploadedDocument(userId: string, field: 'companyContractUrl' | 'businessLicenseUrl' | 'ownerDocumentUrl' | 'bankProofUrl' | 'logoUrl' | 'coverImageUrl', url: string): Promise<{
        reviews: {
            rating: number;
        }[];
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: Prisma.Decimal;
            blockedBalance: Prisma.Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            role: import("@prisma/client").$Enums.UserRole;
        };
        _count: {
            products: number;
            orders: number;
            promotions: number;
        };
    } & {
        number: string | null;
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        description: string | null;
        userId: string;
        slug: string;
        documentNumber: string;
        pixKey: string | null;
        street: string | null;
        complement: string | null;
        state: string | null;
        zipCode: string | null;
        commissionPercentage: Prisma.Decimal;
        serviceFeePercentage: Prisma.Decimal;
        baseDeliveryFee: Prisma.Decimal;
        pricePerKm: Prisma.Decimal;
        latitude: Prisma.Decimal | null;
        longitude: Prisma.Decimal | null;
        city: string | null;
        neighborhood: string | null;
        acceptsCashOnDelivery: boolean;
        isOpen: boolean;
        isPaused: boolean;
        companyContractUrl: string | null;
        businessLicenseUrl: string | null;
        ownerDocumentUrl: string | null;
        bankProofUrl: string | null;
        documentReviewNotes: string | null;
        documentsSubmittedAt: Date | null;
        approvedAt: Date | null;
        rejectedAt: Date | null;
        coverImageUrl: string | null;
        logoUrl: string | null;
    }>;
    private normalizeSlug;
    private resolveDocumentsSubmittedAt;
    private resolveRestaurantCoordinatesFromPayload;
    private handlePersistenceError;
}
