import type { AppointmentBookingQuestionsTaskDetail, CustomerCourseEnrollment, CustomerEventRegistration, CustomerMembership, CustomerOrder, CustomerPass, EventGuest, MagicLinkRequest, PortalCancelCourseEnrollmentRequest, PortalCancelCourseEnrollmentResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalCancelEventRegistrationRequest, PortalCancelEventRegistrationResult, PortalCancelMembershipAtPeriodEndResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCreditResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalDigitalProductsResponse, PortalEventTicket, PortalCourseBookingQuestionsResponse, PortalEventBookingQuestionsResponse, PortalMeResponse, PortalMeUpdateRequest, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalUpdateCourseBookingQuestionsRequest, PortalUpdateCourseBookingQuestionsResponse, PortalUpdateEventBookingQuestionsRequest, PortalUpdateEventBookingQuestionsResponse, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, UpdateEventGuestsRequest } from "@riverbankcms/blocks/api";
import type { APIEndpoint } from "./apiEndpointTypes";
import type { DeleteAccountRequest, DeleteAccountResponse } from "./accessAdmin";
import type { AiPlaygroundApplyRequest, AiPlaygroundApplyResponse } from "./aiPlayground";
import type { BillingCheckoutRequest, BillingCheckoutResponse, BillingStatusResponse, BillingSummaryResponse, SiteBillingCheckoutResponse, SiteBillingCostResponse } from "./billing";
import type { CreateSiteFontUploadUrlRequest, CreateSiteFontUploadUrlResponse, DeleteSiteFontFileRequest, DeleteSiteFontFileResponse, ExportBackupRequest, FontRecord, GetSiteFontResponse, ListPublicSiteFontsResponse, ListSiteFontsResponse, UpdateSiteFontRequest, UpdateSiteFontResponse, UploadSiteFontRequest, UploadSiteFontResponse } from "./siteAssets";
import type { AdminSiteCostResponse, AdminUpdateSiteCostRequest, AdminUpdateSiteCostResponse, CancelFlexibleBalanceBookingDueToNonPaymentRequest, CancelShopOrderItemRequest, CancelShopOrderItemResponse, CancelShopOrderRequest, CancelShopOrderResponse, CreateShopOrderPaymentLinkResponse, CreateOrderShipmentRequest, CreateOrderShipmentResponse, EditShopOrderAddressRequest, FlexibleBalanceAdminActionResponse, PortalAppointmentWithDetails, RefundShopOrderResponse, ReopenFlexibleBalanceBookingAfterNonPaymentCancellationRequest, SendShopOrderPaymentReminderResponse, SettleShopOrderPaymentRequest, SettleShopOrderPaymentResponse, ShopOrderDigitalFulfillmentRequest } from "./siteOperations";
/**
 * Commerce and portal endpoints cover billing/account actions, portal customer flows,
 * font/binary assets, and shop-order administration.
 */
export type CommercePortalAPIEndpoints = {
    aiPlaygroundApply: APIEndpoint<AiPlaygroundApplyRequest, {
        siteId: string;
    }, AiPlaygroundApplyResponse>;
    billingStatus: APIEndpoint<never, never, BillingStatusResponse>;
    billingSummary: APIEndpoint<never, never, BillingSummaryResponse>;
    billingCheckout: APIEndpoint<BillingCheckoutRequest, never, BillingCheckoutResponse>;
    siteBillingCost: APIEndpoint<never, {
        siteId: string;
    }, SiteBillingCostResponse>;
    siteBillingCheckout: APIEndpoint<never, {
        siteId: string;
    }, SiteBillingCheckoutResponse>;
    deleteAccount: APIEndpoint<DeleteAccountRequest, never, DeleteAccountResponse>;
    listFonts: APIEndpoint<never, never, FontRecord[]>;
    listPublicSiteFonts: APIEndpoint<never, {
        siteId: string;
    }, ListPublicSiteFontsResponse>;
    listSiteFonts: APIEndpoint<never, {
        siteId: string;
    }, ListSiteFontsResponse>;
    createSiteFontUploadUrl: APIEndpoint<CreateSiteFontUploadUrlRequest, {
        siteId: string;
    }, CreateSiteFontUploadUrlResponse>;
    uploadSiteFont: APIEndpoint<UploadSiteFontRequest, {
        siteId: string;
    }, UploadSiteFontResponse>;
    getSiteFont: APIEndpoint<never, {
        siteId: string;
        fontId: string;
    }, GetSiteFontResponse>;
    updateSiteFont: APIEndpoint<UpdateSiteFontRequest, {
        siteId: string;
        fontId: string;
    }, UpdateSiteFontResponse>;
    deleteSiteFont: APIEndpoint<never, {
        siteId: string;
        fontId: string;
    }, {
        success: boolean;
    }>;
    deleteSiteFontFile: APIEndpoint<DeleteSiteFontFileRequest, {
        siteId: string;
        fontId: string;
    }, DeleteSiteFontFileResponse>;
    exportSiteBackup: APIEndpoint<ExportBackupRequest, {
        siteId: string;
    }, Blob>;
    adminSiteCost: APIEndpoint<never, {
        siteId: string;
    }, AdminSiteCostResponse>;
    adminUpdateSiteCost: APIEndpoint<AdminUpdateSiteCostRequest, {
        siteId: string;
    }, AdminUpdateSiteCostResponse>;
    portalGetProfile: APIEndpoint<never, never, PortalMeResponse>;
    portalUpdateProfile: APIEndpoint<PortalMeUpdateRequest, never, PortalMeResponse>;
    portalGetCredit: APIEndpoint<never, never, PortalCreditResponse>;
    portalGetOrders: APIEndpoint<never, never, {
        orders: CustomerOrder[];
    }>;
    portalCreateOrderCheckout: APIEndpoint<PortalOrderCheckoutRequest, {
        orderId: string;
    }, PortalOrderCheckoutResponse>;
    portalGetDigitalProducts: APIEndpoint<never, never, PortalDigitalProductsResponse>;
    portalGetDigitalProduct: APIEndpoint<never, {
        entitlementId: string;
    }, PortalDigitalProductAccessResponse>;
    portalResendDigitalProduct: APIEndpoint<never, {
        entitlementId: string;
    }, {
        success: true;
    }>;
    portalGetDigitalProductDownloadUrl: APIEndpoint<never, {
        entitlementId: string;
        assetId: string;
    }, PortalDigitalProductDownloadUrlResponse>;
    portalGetPasses: APIEndpoint<never, {
        activeOnly?: string;
    }, {
        passes: CustomerPass[];
    }>;
    portalGetMemberships: APIEndpoint<never, {
        includeInactive?: string;
    }, {
        memberships: CustomerMembership[];
    }>;
    portalGetEvents: APIEndpoint<never, {
        upcoming?: string;
        status?: "confirmed" | "waitlist" | "cancelled";
        limit?: string;
        offset?: string;
    }, {
        registrations: CustomerEventRegistration[];
    }>;
    portalGetAppointments: APIEndpoint<never, {
        upcoming?: string;
        status?: string;
        limit?: string;
        offset?: string;
    }, {
        appointments: PortalAppointmentWithDetails[];
    }>;
    portalGetAppointmentBookingQuestions: APIEndpoint<never, {
        appointmentId: string;
    }, {
        task: AppointmentBookingQuestionsTaskDetail;
    }>;
    portalUpdateAppointmentBookingQuestions: APIEndpoint<{
        answers: Record<string, unknown>;
    }, {
        appointmentId: string;
    }, {
        task: AppointmentBookingQuestionsTaskDetail;
    }>;
    portalCreateAppointmentBookingQuestionsUploadUrl: APIEndpoint<{
        fieldId: string;
        filename: string;
        bytes: number;
    }, {
        appointmentId: string;
    }, {
        uploadId: string;
        signedUrl: string;
    }>;
    portalFinalizeAppointmentBookingQuestionsUpload: APIEndpoint<{
        fieldId: string;
        uploadId: string;
    }, {
        appointmentId: string;
    }, {
        answer: {
            kind: "document_upload";
            fileName: string;
            mimeType: string;
            bytes: number;
            uploadId?: string;
        };
    }>;
    portalGetEventBookingQuestions: APIEndpoint<never, {
        registrationId: string;
    }, PortalEventBookingQuestionsResponse>;
    portalUpdateEventBookingQuestions: APIEndpoint<PortalUpdateEventBookingQuestionsRequest, {
        registrationId: string;
    }, PortalUpdateEventBookingQuestionsResponse>;
    portalCreateEventBookingQuestionsUploadUrl: APIEndpoint<{
        fieldId: string;
        filename: string;
        bytes: number;
    }, {
        registrationId: string;
    }, {
        uploadId: string;
        signedUrl: string;
    }>;
    portalFinalizeEventBookingQuestionsUpload: APIEndpoint<{
        fieldId: string;
        uploadId: string;
    }, {
        registrationId: string;
    }, {
        answer: {
            kind: "document_upload";
            fileName: string;
            mimeType: string;
            bytes: number;
            uploadId?: string;
        };
    }>;
    portalCancelAppointment: APIEndpoint<PortalCancelAppointmentRequest, {
        appointmentId: string;
    }, {
        result: PortalCancelAppointmentResult;
    }>;
    portalRescheduleAppointment: APIEndpoint<PortalRescheduleAppointmentRequest, {
        appointmentId: string;
    }, PortalRescheduleAppointmentResponse>;
    portalGetCourses: APIEndpoint<never, {
        upcoming?: string;
        status?: string;
        limit?: string;
        offset?: string;
    }, {
        enrollments: CustomerCourseEnrollment[];
    }>;
    portalGetCourseBookingQuestions: APIEndpoint<never, {
        enrollmentId: string;
    }, PortalCourseBookingQuestionsResponse>;
    portalUpdateCourseBookingQuestions: APIEndpoint<PortalUpdateCourseBookingQuestionsRequest, {
        enrollmentId: string;
    }, PortalUpdateCourseBookingQuestionsResponse>;
    portalCreateCourseBookingQuestionsUploadUrl: APIEndpoint<{
        fieldId: string;
        filename: string;
        bytes: number;
    }, {
        enrollmentId: string;
    }, {
        uploadId: string;
        signedUrl: string;
    }>;
    portalFinalizeCourseBookingQuestionsUpload: APIEndpoint<{
        fieldId: string;
        uploadId: string;
    }, {
        enrollmentId: string;
    }, {
        answer: {
            kind: "document_upload";
            fileName: string;
            mimeType: string;
            bytes: number;
            uploadId?: string;
        };
    }>;
    portalCancelCourseEnrollment: APIEndpoint<PortalCancelCourseEnrollmentRequest, {
        enrollmentId: string;
    }, {
        result: PortalCancelCourseEnrollmentResult;
    }>;
    portalCancelEventRegistration: APIEndpoint<PortalCancelEventRegistrationRequest, {
        registrationId: string;
    }, {
        result: PortalCancelEventRegistrationResult;
    }>;
    portalGetEventGuests: APIEndpoint<never, {
        registrationId: string;
    }, {
        guests: EventGuest[];
    }>;
    portalUpdateEventGuests: APIEndpoint<UpdateEventGuestsRequest, {
        registrationId: string;
    }, {
        guests: EventGuest[];
    }>;
    portalTransferEventRegistration: APIEndpoint<PortalTransferEventRegistrationRequest, {
        registrationId: string;
    }, {
        result: PortalTransferEventRegistrationResult;
    }>;
    portalCancelMembershipAtPeriodEnd: APIEndpoint<never, {
        customerMembershipId: string;
    }, {
        result: PortalCancelMembershipAtPeriodEndResult;
    }>;
    portalSendMagicLink: APIEndpoint<MagicLinkRequest, never, {
        message: string;
    }>;
    previewExchangeCode: APIEndpoint<{
        previewCode: string;
        callbackOrigin?: string;
    }, never, {
        accessToken: string;
        refreshToken: string | null;
        siteId: string;
        expiresAt: string;
    }>;
    portalExchangeCode: APIEndpoint<{
        portalCode: string;
        callbackOrigin?: string;
    }, never, {
        sessionToken: string;
        siteId: string;
        customerId: string;
        expiresAt: string;
    }>;
    portalLogout: APIEndpoint<never, never, {
        message: string;
    }>;
    portalGetEventTicket: APIEndpoint<never, {
        registrationId: string;
    }, {
        ticket: PortalEventTicket;
    }>;
    refundShopOrder: APIEndpoint<{
        reason?: string | null;
    }, {
        siteId: string;
        orderId: string;
    }, RefundShopOrderResponse>;
    createOrderShipment: APIEndpoint<CreateOrderShipmentRequest, {
        siteId: string;
        orderId: string;
    }, CreateOrderShipmentResponse>;
    cancelShopOrder: APIEndpoint<CancelShopOrderRequest, {
        siteId: string;
        orderId: string;
    }, CancelShopOrderResponse>;
    cancelShopOrderItem: APIEndpoint<CancelShopOrderItemRequest, {
        siteId: string;
        orderId: string;
        orderItemId: string;
    }, CancelShopOrderItemResponse>;
    cancelFlexibleBalanceBookingDueToNonPayment: APIEndpoint<CancelFlexibleBalanceBookingDueToNonPaymentRequest, {
        siteId: string;
        orderId: string;
        orderItemId: string;
    }, FlexibleBalanceAdminActionResponse>;
    reopenFlexibleBalanceBookingAfterNonPaymentCancellation: APIEndpoint<ReopenFlexibleBalanceBookingAfterNonPaymentCancellationRequest, {
        siteId: string;
        orderId: string;
        orderItemId: string;
    }, FlexibleBalanceAdminActionResponse>;
    settleShopOrderPayment: APIEndpoint<SettleShopOrderPaymentRequest, {
        siteId: string;
        orderId: string;
    }, SettleShopOrderPaymentResponse>;
    createShopOrderPaymentLink: APIEndpoint<never, {
        siteId: string;
        orderId: string;
    }, CreateShopOrderPaymentLinkResponse>;
    sendShopOrderPaymentReminder: APIEndpoint<never, {
        siteId: string;
        orderId: string;
    }, SendShopOrderPaymentReminderResponse>;
    archiveShopOrderHistory: APIEndpoint<never, {
        siteId: string;
        orderId: string;
    }, {
        status: "synced" | "already_archived";
    }>;
    editShopOrderAddress: APIEndpoint<EditShopOrderAddressRequest, {
        siteId: string;
        orderId: string;
    }, void>;
    addShopOrderNote: APIEndpoint<{
        noteText: string;
    }, {
        siteId: string;
        orderId: string;
    }, void>;
    shopOrderDigitalFulfillment: APIEndpoint<ShopOrderDigitalFulfillmentRequest, {
        siteId: string;
        orderId: string;
    }, void>;
};
