import { SpaceType, PricingType } from '@prisma/client';
import { BookingsService } from './bookings.service';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
declare class CreateSpaceDto {
    complexId: string;
    name: string;
    type?: SpaceType;
    description?: string;
    capacity?: number;
    hourlyFee?: number;
    flatFee?: number;
    priceType?: PricingType;
    imageUrl?: string;
    openTime?: string;
    closeTime?: string;
    amenities?: string[];
    rules?: string;
    isBookable?: boolean;
}
declare class RequestBookingDto {
    spaceId: string;
    startAt: string;
    endAt: string;
    notes?: string;
}
export declare class BookingsController {
    private readonly service;
    constructor(service: BookingsService);
    createSpace(user: AuthenticatedUser, dto: CreateSpaceDto): Promise<{
        id: string;
        description: string | null;
        name: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        type: import(".prisma/client").$Enums.SpaceType;
        enabled: boolean;
        flatFee: import("@prisma/client/runtime/library").Decimal | null;
        hourlyFee: import("@prisma/client/runtime/library").Decimal;
        capacity: number | null;
        priceType: import(".prisma/client").$Enums.PricingType;
        imageUrl: string | null;
        openTime: string | null;
        closeTime: string | null;
        isBookable: boolean;
        amenities: string[];
        rules: string | null;
    }>;
    listSpaces(user: AuthenticatedUser, complexId?: string): import(".prisma/client").Prisma.PrismaPromise<{
        id: string;
        description: string | null;
        name: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        type: import(".prisma/client").$Enums.SpaceType;
        enabled: boolean;
        flatFee: import("@prisma/client/runtime/library").Decimal | null;
        hourlyFee: import("@prisma/client/runtime/library").Decimal;
        capacity: number | null;
        priceType: import(".prisma/client").$Enums.PricingType;
        imageUrl: string | null;
        openTime: string | null;
        closeTime: string | null;
        isBookable: boolean;
        amenities: string[];
        rules: string | null;
    }[]> | never[];
    request(user: AuthenticatedUser, dto: RequestBookingDto): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.BookingStatus;
        userId: string;
        notes: string | null;
        spaceId: string;
        startAt: Date;
        endAt: Date;
        totalFee: import("@prisma/client/runtime/library").Decimal;
    }>;
    list(user: AuthenticatedUser, spaceId?: string, mine?: string): Promise<({
        user: {
            id: string;
            email: string;
            firstName: string | null;
        };
        space: {
            id: string;
            name: string;
            type: import(".prisma/client").$Enums.SpaceType;
        };
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.BookingStatus;
        userId: string;
        notes: string | null;
        spaceId: string;
        startAt: Date;
        endAt: Date;
        totalFee: import("@prisma/client/runtime/library").Decimal;
    })[]>;
    confirm(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.BookingStatus;
        userId: string;
        notes: string | null;
        spaceId: string;
        startAt: Date;
        endAt: Date;
        totalFee: import("@prisma/client/runtime/library").Decimal;
    }>;
    cancel(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.BookingStatus;
        userId: string;
        notes: string | null;
        spaceId: string;
        startAt: Date;
        endAt: Date;
        totalFee: import("@prisma/client/runtime/library").Decimal;
    }>;
}
export {};
