import type { AddressCreate } from './AddressCreate';
import type { CustomersPresence } from './CustomersPresence';
import type { LineItemCreate } from './LineItemCreate';
import type { TransactionEnvironmentSelectionStrategy } from './TransactionEnvironmentSelectionStrategy';
import type { TokenizationMode } from './TokenizationMode';
import type { TransactionCompletionBehavior } from './TransactionCompletionBehavior';
import type { Environment } from './Environment';
/**
 *
 * @export
 * @interface TransactionCreate
 */
export interface TransactionCreate {
    /**
     * The customer's email address.
     * @type {string}
     * @memberof TransactionCreate
     */
    customerEmailAddress?: string;
    /**
     * The name of the shipping method used to ship the products.
     * @type {string}
     * @memberof TransactionCreate
     */
    shippingMethod?: string;
    /**
     * The merchant's reference used to identify the invoice.
     * @type {string}
     * @memberof TransactionCreate
     */
    invoiceMerchantReference?: string;
    /**
     * The URL to redirect the customer back to after they successfully authenticated their payment.
     * @type {string}
     * @memberof TransactionCreate
     */
    successUrl?: string;
    /**
     * The customer's time zone, which affects how dates and times are formatted when communicating with the customer.
     * @type {string}
     * @memberof TransactionCreate
     */
    timeZone?: string;
    /**
     * The language that is linked to the object.
     * @type {string}
     * @memberof TransactionCreate
     */
    language?: string;
    /**
     *
     * @type {TokenizationMode}
     * @memberof TransactionCreate
     */
    tokenizationMode?: TokenizationMode;
    /**
     * The payment method brands that can be used to authorize the transaction.
     * @type {Array<number>}
     * @memberof TransactionCreate
     */
    allowedPaymentMethodBrands?: Array<number>;
    /**
     *
     * @type {TransactionCompletionBehavior}
     * @memberof TransactionCreate
     */
    completionBehavior?: TransactionCompletionBehavior;
    /**
     * The payment token that should be used to charge the customer.
     * @type {number}
     * @memberof TransactionCreate
     */
    token?: number;
    /**
     * The line items purchased by the customer.
     * @type {Array<LineItemCreate>}
     * @memberof TransactionCreate
     */
    lineItems: Array<LineItemCreate>;
    /**
     * Allow to store additional information about the object.
     * @type {{ [key: string]: string; }}
     * @memberof TransactionCreate
     */
    metaData?: {
        [key: string]: string;
    };
    /**
     * The unique identifier of the customer in the external system.
     * @type {string}
     * @memberof TransactionCreate
     */
    customerId?: string;
    /**
     *
     * @type {AddressCreate}
     * @memberof TransactionCreate
     */
    shippingAddress?: AddressCreate;
    /**
     * The three-letter code (ISO 4217 format) of the transaction's currency.
     * @type {string}
     * @memberof TransactionCreate
     */
    currency?: string;
    /**
     *
     * @type {AddressCreate}
     * @memberof TransactionCreate
     */
    billingAddress?: AddressCreate;
    /**
     * The merchant's reference used to identify the transaction.
     * @type {string}
     * @memberof TransactionCreate
     */
    merchantReference?: string;
    /**
     * The payment method configurations that can be used to authorize the transaction.
     * @type {Array<number>}
     * @memberof TransactionCreate
     */
    allowedPaymentMethodConfigurations?: Array<number>;
    /**
     * The URL to redirect the customer back to after they canceled or failed to authenticated their payment.
     * @type {string}
     * @memberof TransactionCreate
     */
    failedUrl?: string;
    /**
     * Whether the customer can make further payment attempts if the first one has failed. Default is true.
     * @type {boolean}
     * @memberof TransactionCreate
     */
    chargeRetryEnabled?: boolean;
    /**
     * Whether email sending is deactivated for the transaction. Default is false.
     * @type {boolean}
     * @memberof TransactionCreate
     */
    emailsDisabled?: boolean;
    /**
     *
     * @type {Environment}
     * @memberof TransactionCreate
     */
    environment?: Environment;
    /**
     *
     * @type {TransactionEnvironmentSelectionStrategy}
     * @memberof TransactionCreate
     */
    environmentSelectionStrategy?: TransactionEnvironmentSelectionStrategy;
    /**
     * Allows to link the transaction to the data collected from the customer's device.
     * @type {string}
     * @memberof TransactionCreate
     */
    deviceSessionIdentifier?: string;
    /**
     * Whether the transaction can be confirmed automatically or whether this must be done explicitly via the API. Default is true.
     * @type {boolean}
     * @memberof TransactionCreate
     */
    autoConfirmationEnabled?: boolean;
    /**
     * The ID of the space view this object is linked to.
     * @type {number}
     * @memberof TransactionCreate
     */
    spaceViewId?: number;
    /**
     *
     * @type {CustomersPresence}
     * @memberof TransactionCreate
     */
    customersPresence?: CustomersPresence;
}
/**
 * Check if a given object implements the TransactionCreate interface.
 */
export declare function instanceOfTransactionCreate(value: object): value is TransactionCreate;
export declare function TransactionCreateFromJSON(json: any): TransactionCreate;
export declare function TransactionCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): TransactionCreate;
export declare function TransactionCreateToJSON(json: any): TransactionCreate;
export declare function TransactionCreateToJSONTyped(value?: TransactionCreate | null, ignoreDiscriminator?: boolean): any;
