import type { PaymentLinkAddressHandlingMode } from './PaymentLinkAddressHandlingMode';
import type { PaymentLinkProtectionMode } from './PaymentLinkProtectionMode';
import type { CreationEntityState } from './CreationEntityState';
import type { LineItem } from './LineItem';
import type { PaymentMethodConfiguration } from './PaymentMethodConfiguration';
/**
 *
 * @export
 * @interface PaymentLink
 */
export interface PaymentLink {
    /**
     *
     * @type {PaymentLinkAddressHandlingMode}
     * @memberof PaymentLink
     */
    shippingAddressHandlingMode?: PaymentLinkAddressHandlingMode;
    /**
     * The domains to which the user is allowed to be redirected after the payment is completed.
     * The following options can be configured:
     * Exact domain: enter a full domain, e.g. (https://example.com).
     * Wildcard domain: use to allow subdomains, e.g. (https://*.example.com).
     * All domains: use (ALL) to allow redirection to any domain (not recommended for security reasons).
     * No domains : use (NONE) to disallow any redirection.
     * Only one option per line is allowed. Invalid entries will be rejected.
     *
     * @type {Set<string>}
     * @memberof PaymentLink
     */
    readonly allowedRedirectionDomains?: Set<string>;
    /**
     * The date and time when the object is planned to be permanently removed. If the value is empty, the object will not be removed.
     * @type {Date}
     * @memberof PaymentLink
     */
    readonly plannedPurgeDate?: Date;
    /**
     * A client-generated nonce which uniquely identifies some action to be executed. Subsequent requests with the same external ID do not execute the action again, but return the original result.
     * @type {string}
     * @memberof PaymentLink
     */
    readonly externalId?: string;
    /**
     * The language for displaying the payment page. If not specified, it can be supplied via the 'language' request parameter.
     * @type {string}
     * @memberof PaymentLink
     */
    readonly language?: string;
    /**
     * The earliest date the payment link can be used to initiate a transaction. If no date is provided, the link will be available immediately.
     * @type {Date}
     * @memberof PaymentLink
     */
    readonly availableFrom?: Date;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof PaymentLink
     */
    readonly version?: number;
    /**
     * The public URL to share with customers for making payments.
     * @type {string}
     * @memberof PaymentLink
     */
    readonly url?: string;
    /**
     * The line items representing what is being sold. If not specified, they can be supplied via request parameters.
     * @type {Array<LineItem>}
     * @memberof PaymentLink
     */
    readonly lineItems?: Array<LineItem>;
    /**
     *
     * @type {PaymentLinkProtectionMode}
     * @memberof PaymentLink
     */
    protectionMode?: PaymentLinkProtectionMode;
    /**
     * The latest date the payment link can be used to initiate a transaction. If no date is provided, the link will remain available indefinitely.
     * @type {Date}
     * @memberof PaymentLink
     */
    readonly availableUntil?: Date;
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof PaymentLink
     */
    readonly linkedSpaceId?: number;
    /**
     * The name used to identify the payment link.
     * @type {string}
     * @memberof PaymentLink
     */
    readonly name?: string;
    /**
     * The three-letter currency code (ISO 4217). If not specified, it must be provided in the 'currency' request parameter.
     * @type {string}
     * @memberof PaymentLink
     */
    readonly currency?: string;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof PaymentLink
     */
    readonly id?: number;
    /**
     *
     * @type {CreationEntityState}
     * @memberof PaymentLink
     */
    state?: CreationEntityState;
    /**
     * The maximum number of transactions that can be initiated using the payment link.
     * @type {number}
     * @memberof PaymentLink
     */
    readonly maximalNumberOfTransactions?: number;
    /**
     * The payment method configurations that customers can use for making payments.
     * @type {Set<PaymentMethodConfiguration>}
     * @memberof PaymentLink
     */
    readonly allowedPaymentMethodConfigurations?: Set<PaymentMethodConfiguration>;
    /**
     * The payment link can be used within a specific space view, which may apply a customized design to the payment page.
     * @type {number}
     * @memberof PaymentLink
     */
    readonly appliedSpaceView?: number;
    /**
     *
     * @type {PaymentLinkAddressHandlingMode}
     * @memberof PaymentLink
     */
    billingAddressHandlingMode?: PaymentLinkAddressHandlingMode;
}
/**
 * Check if a given object implements the PaymentLink interface.
 */
export declare function instanceOfPaymentLink(value: object): value is PaymentLink;
export declare function PaymentLinkFromJSON(json: any): PaymentLink;
export declare function PaymentLinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaymentLink;
export declare function PaymentLinkToJSON(json: any): PaymentLink;
export declare function PaymentLinkToJSONTyped(value?: Omit<PaymentLink, 'allowedRedirectionDomains' | 'plannedPurgeDate' | 'externalId' | 'language' | 'availableFrom' | 'version' | 'url' | 'lineItems' | 'availableUntil' | 'linkedSpaceId' | 'name' | 'currency' | 'id' | 'maximalNumberOfTransactions' | 'allowedPaymentMethodConfigurations' | 'appliedSpaceView'> | null, ignoreDiscriminator?: boolean): any;
