import type { ExpressCheckoutWalletType } from './ExpressCheckoutWalletType';
import type { Address } from './Address';
import type { ExpressCheckoutSessionState } from './ExpressCheckoutSessionState';
import type { LineItem } from './LineItem';
import type { ExpressCheckoutShippingOption } from './ExpressCheckoutShippingOption';
/**
 *
 * @export
 * @interface ExpressCheckoutSession
 */
export interface ExpressCheckoutSession {
    /**
     *
     * @type {Array<LineItem>}
     * @memberof ExpressCheckoutSession
     */
    readonly lineItems?: Array<LineItem>;
    /**
     * The URL to fetch the shipping options from.
     * @type {string}
     * @memberof ExpressCheckoutSession
     */
    readonly merchantShippingCallbackUrl?: string;
    /**
     * The spaceId linked to the entity.
     * @type {number}
     * @memberof ExpressCheckoutSession
     */
    readonly linkedSpaceId?: number;
    /**
     *
     * @type {{ [key: string]: string; }}
     * @memberof ExpressCheckoutSession
     */
    readonly metaData?: {
        [key: string]: string;
    };
    /**
     *
     * @type {ExpressCheckoutWalletType}
     * @memberof ExpressCheckoutSession
     */
    walletType?: ExpressCheckoutWalletType;
    /**
     *
     * @type {Address}
     * @memberof ExpressCheckoutSession
     */
    shippingAddress?: Address;
    /**
     * The currency of the session.
     * @type {string}
     * @memberof ExpressCheckoutSession
     */
    readonly currency?: string;
    /**
     *
     * @type {Address}
     * @memberof ExpressCheckoutSession
     */
    billingAddress?: Address;
    /**
     * Id of the entity.
     * @type {number}
     * @memberof ExpressCheckoutSession
     */
    readonly id?: number;
    /**
     *
     * @type {ExpressCheckoutSessionState}
     * @memberof ExpressCheckoutSession
     */
    state?: ExpressCheckoutSessionState;
    /**
     *
     * @type {Array<ExpressCheckoutShippingOption>}
     * @memberof ExpressCheckoutSession
     */
    readonly shippingOptions?: Array<ExpressCheckoutShippingOption>;
}
/**
 * Check if a given object implements the ExpressCheckoutSession interface.
 */
export declare function instanceOfExpressCheckoutSession(value: object): value is ExpressCheckoutSession;
export declare function ExpressCheckoutSessionFromJSON(json: any): ExpressCheckoutSession;
export declare function ExpressCheckoutSessionFromJSONTyped(json: any, ignoreDiscriminator: boolean): ExpressCheckoutSession;
export declare function ExpressCheckoutSessionToJSON(json: any): ExpressCheckoutSession;
export declare function ExpressCheckoutSessionToJSONTyped(value?: Omit<ExpressCheckoutSession, 'lineItems' | 'merchantShippingCallbackUrl' | 'linkedSpaceId' | 'metaData' | 'currency' | 'id' | 'shippingOptions'> | null, ignoreDiscriminator?: boolean): any;
