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