import type { LineItemCreate } from './LineItemCreate';
import type { PaymentLinkAddressHandlingMode } from './PaymentLinkAddressHandlingMode';
import type { PaymentMethodConfiguration } from './PaymentMethodConfiguration';
/**
 *
 * @export
 * @interface AbstractPaymentLinkUpdate
 */
export interface AbstractPaymentLinkUpdate {
    /**
     * The line items representing what is being sold. If not specified, they can be supplied via request parameters.
     * @type {Array<LineItemCreate>}
     * @memberof AbstractPaymentLinkUpdate
     */
    lineItems?: Array<LineItemCreate>;
    /**
     * 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 AbstractPaymentLinkUpdate
     */
    availableUntil?: Date;
    /**
     *
     * @type {PaymentLinkAddressHandlingMode}
     * @memberof AbstractPaymentLinkUpdate
     */
    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 AbstractPaymentLinkUpdate
     */
    allowedRedirectionDomains?: Set<string>;
    /**
     * The name used to identify the payment link.
     * @type {string}
     * @memberof AbstractPaymentLinkUpdate
     */
    name?: string;
    /**
     * The three-letter currency code (ISO 4217). If not specified, it must be provided in the 'currency' request parameter.
     * @type {string}
     * @memberof AbstractPaymentLinkUpdate
     */
    currency?: string;
    /**
     * The language for displaying the payment page. If not specified, it can be supplied via the 'language' request parameter.
     * @type {string}
     * @memberof AbstractPaymentLinkUpdate
     */
    language?: string;
    /**
     * The maximum number of transactions that can be initiated using the payment link.
     * @type {number}
     * @memberof AbstractPaymentLinkUpdate
     */
    maximalNumberOfTransactions?: number;
    /**
     * 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 AbstractPaymentLinkUpdate
     */
    availableFrom?: Date;
    /**
     * The payment method configurations that customers can use for making payments.
     * @type {Set<PaymentMethodConfiguration>}
     * @memberof AbstractPaymentLinkUpdate
     */
    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 AbstractPaymentLinkUpdate
     */
    appliedSpaceView?: number;
    /**
     *
     * @type {PaymentLinkAddressHandlingMode}
     * @memberof AbstractPaymentLinkUpdate
     */
    billingAddressHandlingMode?: PaymentLinkAddressHandlingMode;
}
/**
 * Check if a given object implements the AbstractPaymentLinkUpdate interface.
 */
export declare function instanceOfAbstractPaymentLinkUpdate(value: object): value is AbstractPaymentLinkUpdate;
export declare function AbstractPaymentLinkUpdateFromJSON(json: any): AbstractPaymentLinkUpdate;
export declare function AbstractPaymentLinkUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AbstractPaymentLinkUpdate;
export declare function AbstractPaymentLinkUpdateToJSON(json: any): AbstractPaymentLinkUpdate;
export declare function AbstractPaymentLinkUpdateToJSONTyped(value?: AbstractPaymentLinkUpdate | null, ignoreDiscriminator?: boolean): any;
