import type { Address } from './Address';
import type { PaymentConnectorConfiguration } from './PaymentConnectorConfiguration';
import type { PaymentInformationHash } from './PaymentInformationHash';
import type { TokenVersionState } from './TokenVersionState';
import type { Label } from './Label';
import type { PaymentMethod } from './PaymentMethod';
import type { Token } from './Token';
import type { PaymentMethodBrand } from './PaymentMethodBrand';
import type { ChargeAttemptEnvironment } from './ChargeAttemptEnvironment';
import type { TokenVersionRetryStrategy } from './TokenVersionRetryStrategy';
import type { TokenVersionType } from './TokenVersionType';
/**
 *
 * @export
 * @interface TokenVersion
 */
export interface TokenVersion {
    /**
     * The hashed payment information that the token version represents.
     * @type {Set<PaymentInformationHash>}
     * @memberof TokenVersion
     */
    readonly paymentInformationHashes?: Set<PaymentInformationHash>;
    /**
     * The language that is linked to the object.
     * @type {string}
     * @memberof TokenVersion
     */
    readonly language?: string;
    /**
     *
     * @type {TokenVersionType}
     * @memberof TokenVersion
     */
    type?: TokenVersionType;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof TokenVersion
     */
    readonly createdOn?: Date;
    /**
     * Retry interval when the strategy advises retrying later.
     * @type {string}
     * @memberof TokenVersion
     */
    readonly retryIn?: string;
    /**
     *
     * @type {PaymentConnectorConfiguration}
     * @memberof TokenVersion
     */
    paymentConnectorConfiguration?: PaymentConnectorConfiguration;
    /**
     * The date and time when the token version was marked obsolete.
     * @type {Date}
     * @memberof TokenVersion
     */
    readonly obsoletedOn?: Date;
    /**
     * The date and time when the token version is set to expire, after which it will be marked as obsolete.
     * @type {Date}
     * @memberof TokenVersion
     */
    readonly expiresOn?: Date;
    /**
     * The URL to the token's icon displayed to the customer.
     * @type {string}
     * @memberof TokenVersion
     */
    readonly iconUrl?: string;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof TokenVersion
     */
    readonly id?: number;
    /**
     *
     * @type {TokenVersionState}
     * @memberof TokenVersion
     */
    state?: TokenVersionState;
    /**
     * The token name as specified by the processor.
     * @type {string}
     * @memberof TokenVersion
     */
    readonly processorToken?: 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 TokenVersion
     */
    readonly plannedPurgeDate?: Date;
    /**
     *
     * @type {PaymentMethodBrand}
     * @memberof TokenVersion
     */
    paymentMethodBrand?: PaymentMethodBrand;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof TokenVersion
     */
    readonly version?: number;
    /**
     * The date and time when the system last attempted a retry for this token version.
     * @type {Date}
     * @memberof TokenVersion
     */
    readonly lastRetriedOn?: Date;
    /**
     * The labels providing additional information about the object.
     * @type {Set<Label>}
     * @memberof TokenVersion
     */
    readonly labels?: Set<Label>;
    /**
     *
     * @type {Token}
     * @memberof TokenVersion
     */
    token?: Token;
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof TokenVersion
     */
    readonly linkedSpaceId?: number;
    /**
     *
     * @type {ChargeAttemptEnvironment}
     * @memberof TokenVersion
     */
    environment?: ChargeAttemptEnvironment;
    /**
     * The date and time when the token version was activated.
     * @type {Date}
     * @memberof TokenVersion
     */
    readonly activatedOn?: Date;
    /**
     * The name used to identify the token.
     * @type {string}
     * @memberof TokenVersion
     */
    readonly name?: string;
    /**
     *
     * @type {PaymentMethod}
     * @memberof TokenVersion
     */
    paymentMethod?: PaymentMethod;
    /**
     *
     * @type {Address}
     * @memberof TokenVersion
     */
    shippingAddress?: Address;
    /**
     *
     * @type {Address}
     * @memberof TokenVersion
     */
    billingAddress?: Address;
    /**
     *
     * @type {TokenVersionRetryStrategy}
     * @memberof TokenVersion
     */
    retryStrategy?: TokenVersionRetryStrategy;
}
/**
 * Check if a given object implements the TokenVersion interface.
 */
export declare function instanceOfTokenVersion(value: object): value is TokenVersion;
export declare function TokenVersionFromJSON(json: any): TokenVersion;
export declare function TokenVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenVersion;
export declare function TokenVersionToJSON(json: any): TokenVersion;
export declare function TokenVersionToJSONTyped(value?: Omit<TokenVersion, 'paymentInformationHashes' | 'language' | 'createdOn' | 'retryIn' | 'obsoletedOn' | 'expiresOn' | 'iconUrl' | 'id' | 'processorToken' | 'plannedPurgeDate' | 'version' | 'lastRetriedOn' | 'labels' | 'linkedSpaceId' | 'activatedOn' | 'name'> | null, ignoreDiscriminator?: boolean): any;
