/**
 * Generated by orval v8.9.1 🍺
 * Do not edit manually.
 * Api
 * Model Directory & Booking Platform API
 * OpenAPI spec version: 0.1.0
 */
export interface UploadUrlRequest {
    /**
       * Original file name.
       * @minLength 1
       */
    name: string;
    /**
       * File size in bytes.
       * @minimum 1
       */
    size: number;
    /**
       * MIME type of the file (e.g. `image/jpeg`).
       * @minLength 1
       */
    contentType: string;
}
export interface UploadUrlResponse {
    /** Presigned GCS URL for PUT upload. */
    uploadURL: string;
    /** Normalized object path (e.g. `/objects/uploads/uuid`). Store this in your database. */
    objectPath: string;
    metadata?: UploadUrlRequest;
}
export interface ErrorEnvelope {
    error: string;
}
export interface HealthStatus {
    status: string;
}
export interface RegisterInput {
    email: string;
    password: string;
    name: string;
    phone?: string;
}
export interface LoginInput {
    email: string;
    password: string;
}
export type UserRole = typeof UserRole[keyof typeof UserRole];
export declare const UserRole: {
    readonly user: "user";
    readonly model: "model";
    readonly admin: "admin";
};
export interface User {
    id: number;
    email: string;
    name: string;
    /** @nullable */
    phone?: string | null;
    role: UserRole;
    isOnline: boolean;
    /** @nullable */
    avatarUrl?: string | null;
    /** @nullable */
    bio?: string | null;
    createdAt: string;
}
export interface AuthResponse {
    user: User;
    token: string;
}
export interface UserUpdate {
    name?: string;
    bio?: string;
    avatarUrl?: string;
}
export interface DashboardSummary {
    totalBookings: number;
    activeBookings: number;
    membershipLevel: string;
    profilesCount: number;
    locationsCount: number;
}
/**
 * @nullable
 */
export type ProfileProStatus = typeof ProfileProStatus[keyof typeof ProfileProStatus] | null;
export declare const ProfileProStatus: {
    readonly professional: "professional";
    readonly non_professional: "non_professional";
};
export type ProfileApprovalStatus = typeof ProfileApprovalStatus[keyof typeof ProfileApprovalStatus];
export declare const ProfileApprovalStatus: {
    readonly pending: "pending";
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface Profile {
    id: number;
    profileId: string;
    /** @nullable */
    userId?: number | null;
    name: string;
    city: string;
    /** @nullable */
    photoUrl?: string | null;
    /** @nullable */
    bio?: string | null;
    /** @nullable */
    proStatus?: ProfileProStatus;
    /** @nullable */
    price1h?: number | null;
    /** @nullable */
    price2h?: number | null;
    /** @nullable */
    priceFullDay?: number | null;
    /** @nullable */
    priceNight?: number | null;
    /** @nullable */
    services?: string | null;
    /** @nullable */
    contactPlatform?: string | null;
    /** @nullable */
    whatsappNumber?: string | null;
    approvalStatus: ProfileApprovalStatus;
    isFeatured: boolean;
    isActive: boolean;
    tags?: string[];
    createdAt: string;
}
export type RegisterModelInputProStatus = typeof RegisterModelInputProStatus[keyof typeof RegisterModelInputProStatus];
export declare const RegisterModelInputProStatus: {
    readonly professional: "professional";
    readonly non_professional: "non_professional";
};
export interface RegisterModelInput {
    name: string;
    city: string;
    proStatus: RegisterModelInputProStatus;
    price1h: number;
    price2h: number;
    priceFullDay: number;
    priceNight?: number;
    services: string;
    photoUrl?: string;
    bio?: string;
    contactPlatform?: string;
    whatsappNumber: string;
}
export interface ProfileInput {
    name: string;
    city: string;
    photoUrl?: string;
    bio?: string;
    isFeatured?: boolean;
    tags?: string[];
}
export type ProfileUpdateProStatus = typeof ProfileUpdateProStatus[keyof typeof ProfileUpdateProStatus];
export declare const ProfileUpdateProStatus: {
    readonly professional: "professional";
    readonly non_professional: "non_professional";
};
export type ProfileUpdateApprovalStatus = typeof ProfileUpdateApprovalStatus[keyof typeof ProfileUpdateApprovalStatus];
export declare const ProfileUpdateApprovalStatus: {
    readonly pending: "pending";
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface ProfileUpdate {
    name?: string;
    city?: string;
    photoUrl?: string;
    bio?: string;
    proStatus?: ProfileUpdateProStatus;
    price1h?: number;
    price2h?: number;
    priceFullDay?: number;
    priceNight?: number;
    services?: string;
    contactPlatform?: string;
    whatsappNumber?: string;
    approvalStatus?: ProfileUpdateApprovalStatus;
    isFeatured?: boolean;
    isActive?: boolean;
    tags?: string[];
}
export type LocationType = typeof LocationType[keyof typeof LocationType];
export declare const LocationType: {
    readonly hotel: "hotel";
    readonly venue: "venue";
    readonly safehouse: "safehouse";
};
export interface Location {
    id: number;
    name: string;
    city: string;
    type: LocationType;
    rating: number;
    /** @nullable */
    photoUrl?: string | null;
    /** @nullable */
    description?: string | null;
    /** @nullable */
    address?: string | null;
    isFeatured: boolean;
    isActive: boolean;
    createdAt: string;
}
export type LocationInputType = typeof LocationInputType[keyof typeof LocationInputType];
export declare const LocationInputType: {
    readonly hotel: "hotel";
    readonly venue: "venue";
    readonly safehouse: "safehouse";
};
export interface LocationInput {
    name: string;
    city: string;
    type: LocationInputType;
    rating?: number;
    photoUrl?: string;
    description?: string;
    address?: string;
    isFeatured?: boolean;
}
export type LocationUpdateType = typeof LocationUpdateType[keyof typeof LocationUpdateType];
export declare const LocationUpdateType: {
    readonly hotel: "hotel";
    readonly venue: "venue";
    readonly safehouse: "safehouse";
};
export interface LocationUpdate {
    name?: string;
    city?: string;
    type?: LocationUpdateType;
    rating?: number;
    photoUrl?: string;
    description?: string;
    address?: string;
    isFeatured?: boolean;
    isActive?: boolean;
}
export interface Service {
    id: number;
    name: string;
    /** @nullable */
    description?: string | null;
    hourlyRate: number;
    isActive: boolean;
    createdAt: string;
}
/**
 * @nullable
 */
export type BookingDuration = typeof BookingDuration[keyof typeof BookingDuration] | null;
export declare const BookingDuration: {
    readonly '1h': "1h";
    readonly '2h': "2h";
    readonly full_day: "full_day";
    readonly night: "night";
};
/**
 * @nullable
 */
export type BookingLocationType = typeof BookingLocationType[keyof typeof BookingLocationType] | null;
export declare const BookingLocationType: {
    readonly in_studio: "in_studio";
    readonly customer_location: "customer_location";
};
export type BookingStatus = typeof BookingStatus[keyof typeof BookingStatus];
export declare const BookingStatus: {
    readonly pending: "pending";
    readonly accepted: "accepted";
    readonly paid: "paid";
    readonly proof_uploaded: "proof_uploaded";
    readonly completed: "completed";
    readonly rejected: "rejected";
    readonly cancelled: "cancelled";
    readonly refunded: "refunded";
};
export interface Booking {
    id: number;
    userId: number;
    /** @nullable */
    profileId?: number | null;
    /** @nullable */
    locationId?: number | null;
    /** @nullable */
    serviceId?: number | null;
    /** @nullable */
    profileName?: string | null;
    /** @nullable */
    locationName?: string | null;
    /** @nullable */
    serviceName?: string | null;
    /** @nullable */
    customerName?: string | null;
    /** @nullable */
    duration?: BookingDuration;
    /** @nullable */
    locationType?: BookingLocationType;
    /** @nullable */
    totalPrice?: number | null;
    status: BookingStatus;
    /** @nullable */
    notes?: string | null;
    /** @nullable */
    scheduledAt?: string | null;
    createdAt: string;
}
export type BookingInputDuration = typeof BookingInputDuration[keyof typeof BookingInputDuration];
export declare const BookingInputDuration: {
    readonly '1h': "1h";
    readonly '2h': "2h";
    readonly full_day: "full_day";
    readonly night: "night";
};
export type BookingInputLocationType = typeof BookingInputLocationType[keyof typeof BookingInputLocationType];
export declare const BookingInputLocationType: {
    readonly in_studio: "in_studio";
    readonly customer_location: "customer_location";
};
export interface BookingInput {
    profileId: number;
    locationId?: number;
    serviceId: number;
    duration: BookingInputDuration;
    locationType: BookingInputLocationType;
    notes?: string;
    scheduledAt: string;
}
export type BookingStatusInputStatus = typeof BookingStatusInputStatus[keyof typeof BookingStatusInputStatus];
export declare const BookingStatusInputStatus: {
    readonly pending: "pending";
    readonly accepted: "accepted";
    readonly paid: "paid";
    readonly proof_uploaded: "proof_uploaded";
    readonly completed: "completed";
    readonly rejected: "rejected";
    readonly cancelled: "cancelled";
    readonly refunded: "refunded";
};
export interface BookingStatusInput {
    status: BookingStatusInputStatus;
}
export interface ProofUploadInput {
    photoUrl: string;
}
export type ProofReviewInputStatus = typeof ProofReviewInputStatus[keyof typeof ProofReviewInputStatus];
export declare const ProofReviewInputStatus: {
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface ProofReviewInput {
    status: ProofReviewInputStatus;
    note?: string;
}
export type AdminOrderProofStatus = typeof AdminOrderProofStatus[keyof typeof AdminOrderProofStatus];
export declare const AdminOrderProofStatus: {
    readonly pending: "pending";
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface AdminOrderProof {
    id: number;
    bookingId: number;
    userId?: number;
    photoUrl: string;
    status: AdminOrderProofStatus;
    /** @nullable */
    note?: string | null;
    /** @nullable */
    reviewedAt?: string | null;
    createdAt: string;
    /** @nullable */
    bookingStatus?: string | null;
    /** @nullable */
    totalPrice?: number | null;
    /** @nullable */
    duration?: string | null;
    /** @nullable */
    profileName?: string | null;
    /** @nullable */
    customerName?: string | null;
}
export interface EscrowStats {
    held: number;
    balance: number;
}
export type WalletTransactionType = typeof WalletTransactionType[keyof typeof WalletTransactionType];
export declare const WalletTransactionType: {
    readonly deposit: "deposit";
    readonly order_payment: "order_payment";
    readonly earning: "earning";
    readonly commission: "commission";
    readonly withdrawal: "withdrawal";
    readonly refund: "refund";
    readonly escrow_in: "escrow_in";
    readonly escrow_out: "escrow_out";
};
export interface WalletTransaction {
    id: number;
    userId: number;
    type: WalletTransactionType;
    amount: number;
    balanceAfter: number;
    /** @nullable */
    bookingId?: number | null;
    /** @nullable */
    description?: string | null;
    createdAt: string;
}
export interface Wallet {
    balance: number;
    transactions: WalletTransaction[];
}
export type WalletDepositStatus = typeof WalletDepositStatus[keyof typeof WalletDepositStatus];
export declare const WalletDepositStatus: {
    readonly pending: "pending";
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface WalletDeposit {
    id: number;
    userId: number;
    amount: number;
    method: string;
    transactionId: string;
    status: WalletDepositStatus;
    /** @nullable */
    note?: string | null;
    /** @nullable */
    reviewedAt?: string | null;
    createdAt: string;
    userName?: string;
    userEmail?: string;
}
export type WithdrawalMethod = typeof WithdrawalMethod[keyof typeof WithdrawalMethod];
export declare const WithdrawalMethod: {
    readonly bkash: "bkash";
    readonly nagad: "nagad";
    readonly rocket: "rocket";
};
export type WithdrawalStatus = typeof WithdrawalStatus[keyof typeof WithdrawalStatus];
export declare const WithdrawalStatus: {
    readonly pending: "pending";
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface Withdrawal {
    id: number;
    userId: number;
    amount: number;
    method: WithdrawalMethod;
    accountNumber: string;
    status: WithdrawalStatus;
    /** @nullable */
    note?: string | null;
    /** @nullable */
    reviewedAt?: string | null;
    createdAt: string;
    userName?: string;
    userEmail?: string;
}
export interface AdminWallet {
    id: number;
    userId: number;
    balance: number;
    userName?: string;
    userEmail?: string;
    userRole?: string;
    createdAt?: string;
}
export interface CommissionStats {
    today: number;
    thisMonth: number;
    total: number;
}
export interface DepositInput {
    amount: number;
    method: string;
    transactionId: string;
}
export type WithdrawalInputMethod = typeof WithdrawalInputMethod[keyof typeof WithdrawalInputMethod];
export declare const WithdrawalInputMethod: {
    readonly bkash: "bkash";
    readonly nagad: "nagad";
    readonly rocket: "rocket";
};
export interface WithdrawalInput {
    amount: number;
    method: WithdrawalInputMethod;
    accountNumber: string;
}
export interface WalletCreditInput {
    amount: number;
    note?: string;
}
export type WalletReviewStatus = typeof WalletReviewStatus[keyof typeof WalletReviewStatus];
export declare const WalletReviewStatus: {
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface WalletReview {
    status: WalletReviewStatus;
    note?: string;
}
export interface Membership {
    id: number;
    userId: number;
    userName: string;
    userEmail: string;
    tier: string;
    /** @nullable */
    expiresAt?: string | null;
    createdAt: string;
}
export interface MembershipUpdate {
    tier: string;
    expiresAt?: string;
}
export interface MembershipPlan {
    id: number;
    key: string;
    name: string;
    price: number;
    durationDays: number;
    /** @nullable */
    description?: string | null;
    features: string[];
    sortOrder: number;
    isActive: boolean;
}
export interface MembershipPlanInput {
    key: string;
    name: string;
    price: number;
    durationDays?: number;
    description?: string;
    features?: string[];
    sortOrder?: number;
    isActive?: boolean;
}
export interface MembershipPlanUpdate {
    name?: string;
    price?: number;
    durationDays?: number;
    description?: string;
    features?: string[];
    sortOrder?: number;
    isActive?: boolean;
}
export interface PaymentMethod {
    id: number;
    method: string;
    label: string;
    receivingNumber: string;
    /** @nullable */
    instructions?: string | null;
    isActive: boolean;
    sortOrder: number;
}
export interface PaymentMethodUpdate {
    label?: string;
    receivingNumber?: string;
    instructions?: string;
    isActive?: boolean;
    sortOrder?: number;
}
export type MembershipPaymentStatus = typeof MembershipPaymentStatus[keyof typeof MembershipPaymentStatus];
export declare const MembershipPaymentStatus: {
    readonly pending: "pending";
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface MembershipPayment {
    id: number;
    userId: number;
    userName?: string;
    userEmail?: string;
    planId: number;
    planName?: string;
    method: string;
    transactionId: string;
    amount: number;
    paymentNumber: string;
    status: MembershipPaymentStatus;
    /** @nullable */
    note?: string | null;
    /** @nullable */
    reviewedAt?: string | null;
    createdAt: string;
}
export interface SubscribeInput {
    planId: number;
    method: string;
    transactionId: string;
}
export type MembershipPaymentReviewStatus = typeof MembershipPaymentReviewStatus[keyof typeof MembershipPaymentReviewStatus];
export declare const MembershipPaymentReviewStatus: {
    readonly approved: "approved";
    readonly rejected: "rejected";
};
export interface MembershipPaymentReview {
    status: MembershipPaymentReviewStatus;
    note?: string;
}
export interface NetworkMember {
    id: number;
    name: string;
    /** @nullable */
    avatarUrl?: string | null;
    isOnline: boolean;
    membershipTier: string;
    joinedAt: string;
}
export interface Asset {
    id: number;
    title: string;
    /** @nullable */
    description?: string | null;
    category: string;
    url: string;
    /** @nullable */
    iconName?: string | null;
}
export type RegisterModelAccountInputProStatus = typeof RegisterModelAccountInputProStatus[keyof typeof RegisterModelAccountInputProStatus];
export declare const RegisterModelAccountInputProStatus: {
    readonly professional: "professional";
    readonly non_professional: "non_professional";
};
export interface RegisterModelAccountInput {
    name: string;
    email: string;
    password: string;
    city: string;
    proStatus: RegisterModelAccountInputProStatus;
    price1h: number;
    price2h: number;
    priceFullDay: number;
    priceNight?: number;
    services: string;
    whatsappNumber: string;
    photoUrl?: string;
    bio?: string;
}
export interface ForgotPasswordInput {
    email: string;
}
export interface ResetPasswordInput {
    token: string;
    password: string;
}
export interface FavoriteInput {
    profileId: number;
}
export interface EarningsSummary {
    availableBalance: number;
    totalEarnings: number;
    completedBookings: number;
    recent: WalletTransaction[];
}
export type ModelProfileUpdateProStatus = typeof ModelProfileUpdateProStatus[keyof typeof ModelProfileUpdateProStatus];
export declare const ModelProfileUpdateProStatus: {
    readonly professional: "professional";
    readonly non_professional: "non_professional";
};
export interface ModelProfileUpdate {
    name?: string;
    city?: string;
    bio?: string;
    photoUrl?: string;
    proStatus?: ModelProfileUpdateProStatus;
    price1h?: number;
    price2h?: number;
    priceFullDay?: number;
    priceNight?: number;
    services?: string;
    whatsappNumber?: string;
}
export interface AddPhotoInput {
    url: string;
    sortOrder?: number;
}
export interface ProfilePhoto {
    id: number;
    profileId: number;
    url: string;
    sortOrder: number;
    createdAt: string;
}
export type ListProfilesParams = {
    search?: string;
    city?: string;
};
export type ListLocationsParams = {
    type?: ListLocationsType;
    city?: string;
};
export type ListLocationsType = typeof ListLocationsType[keyof typeof ListLocationsType];
export declare const ListLocationsType: {
    readonly hotel: "hotel";
    readonly venue: "venue";
    readonly safehouse: "safehouse";
};
//# sourceMappingURL=api.schemas.d.ts.map