import type { BookingDepositRefundPolicy } from './booking-flexible-balance';
export type BookingProtectedDepositPolicyState = 'not_applicable' | BookingDepositRefundPolicy;
export declare function normalizeBookingProtectedDepositPolicyState(value: string | null | undefined): BookingProtectedDepositPolicyState;
export type BookingRefundMode = 'refund_only' | 'refund_and_revoke';
export type BookingRequestedRefundMethod = 'original_payment' | 'site_credit';
export type BookingProtectedDepositOverrideMode = 'respect_policy' | 'allow_protected_deposit_override';
export type BookingRefundAmountRequest = Readonly<{
    kind: 'full_remaining';
}> | Readonly<{
    kind: 'partial_amount';
    amountCents: number;
}>;
export type BookingRefundCommand = Readonly<{
    kind: 'refund_only';
    amount: BookingRefundAmountRequest;
    requestedRefundMethod: BookingRequestedRefundMethod;
    protectedDepositOverride: BookingProtectedDepositOverrideMode;
}> | Readonly<{
    kind: 'refund_and_revoke';
    amount: Readonly<{
        kind: 'full_remaining';
    }>;
    requestedRefundMethod: BookingRequestedRefundMethod;
    protectedDepositOverride: BookingProtectedDepositOverrideMode;
}>;
export declare function shouldAllowProtectedDepositOverride(command: BookingRefundCommand): boolean;
export declare function createBookingRefundAmountRequest(amountCents: number | null | undefined): BookingRefundAmountRequest;
export declare function createOriginalPaymentRefundCommand(options: Readonly<{
    kind: BookingRefundMode;
    amount?: BookingRefundAmountRequest;
    protectedDepositOverride?: BookingProtectedDepositOverrideMode;
}>): BookingRefundCommand;
