import type { PaymentContractState } from './PaymentContractState';
import type { FailureReason } from './FailureReason';
import type { PaymentContractType } from './PaymentContractType';
/**
 *
 * @export
 * @interface PaymentContract
 */
export interface PaymentContract {
    /**
     *
     * @type {PaymentContractType}
     * @memberof PaymentContract
     */
    contractType?: PaymentContractType;
    /**
     * The ID of the user the contract was terminated by.
     * @type {number}
     * @memberof PaymentContract
     */
    readonly terminatedBy?: number;
    /**
     * 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 PaymentContract
     */
    readonly externalId?: string;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof PaymentContract
     */
    readonly createdOn?: Date;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof PaymentContract
     */
    readonly version?: number;
    /**
     * The date and time when the contract was terminated.
     * @type {Date}
     * @memberof PaymentContract
     */
    readonly terminatedOn?: Date;
    /**
     * The date and time when the contract was activated.
     * @type {Date}
     * @memberof PaymentContract
     */
    readonly activatedOn?: Date;
    /**
     * The date and time when the termination process of the contract was started.
     * @type {Date}
     * @memberof PaymentContract
     */
    readonly startTerminatingOn?: Date;
    /**
     * The ID of the user the contract was created by.
     * @type {number}
     * @memberof PaymentContract
     */
    readonly createdBy?: number;
    /**
     * The identifier of the contract.
     * @type {string}
     * @memberof PaymentContract
     */
    readonly contractIdentifier?: string;
    /**
     * The date and time when the contract was rejected.
     * @type {Date}
     * @memberof PaymentContract
     */
    readonly rejectedOn?: Date;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof PaymentContract
     */
    readonly id?: number;
    /**
     *
     * @type {PaymentContractState}
     * @memberof PaymentContract
     */
    state?: PaymentContractState;
    /**
     *
     * @type {FailureReason}
     * @memberof PaymentContract
     */
    rejectionReason?: FailureReason;
    /**
     * This account that the contract belongs to.
     * @type {number}
     * @memberof PaymentContract
     */
    readonly account?: number;
}
/**
 * Check if a given object implements the PaymentContract interface.
 */
export declare function instanceOfPaymentContract(value: object): value is PaymentContract;
export declare function PaymentContractFromJSON(json: any): PaymentContract;
export declare function PaymentContractFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaymentContract;
export declare function PaymentContractToJSON(json: any): PaymentContract;
export declare function PaymentContractToJSONTyped(value?: Omit<PaymentContract, 'terminatedBy' | 'externalId' | 'createdOn' | 'version' | 'terminatedOn' | 'activatedOn' | 'startTerminatingOn' | 'createdBy' | 'contractIdentifier' | 'rejectedOn' | 'id' | 'account'> | null, ignoreDiscriminator?: boolean): any;
