import type { PaymentAppChargeAttemptTargetState } from './PaymentAppChargeAttemptTargetState';
/**
 * A request to update the state of a charge attempt. The charge attempt must be associated with a processor created by the invoking payment web app.
 * @export
 * @interface PaymentAppChargeAttemptUpdate
 */
export interface PaymentAppChargeAttemptUpdate {
    /**
     * A unique identifier for the charge attempt within the systems of the external service provider. This field is mandatory when the target state is set to 'SUCCESSFUL'.
     * @type {string}
     * @memberof PaymentAppChargeAttemptUpdate
     */
    reference?: string;
    /**
     *
     * @type {PaymentAppChargeAttemptTargetState}
     * @memberof PaymentAppChargeAttemptUpdate
     */
    targetState?: PaymentAppChargeAttemptTargetState;
    /**
     * The reason for the charge attempt's failure. This field is mandatory when the target state is set to 'FAILED'.
     * @type {number}
     * @memberof PaymentAppChargeAttemptUpdate
     */
    failureReason?: number;
    /**
     * A message explaining to the buyer why the payment failed. The message must be localized in the buyer's language, as specified in the payment page invocation URL.
     * @type {string}
     * @memberof PaymentAppChargeAttemptUpdate
     */
    endUserFailureMessage?: string;
}
/**
 * Check if a given object implements the PaymentAppChargeAttemptUpdate interface.
 */
export declare function instanceOfPaymentAppChargeAttemptUpdate(value: object): value is PaymentAppChargeAttemptUpdate;
export declare function PaymentAppChargeAttemptUpdateFromJSON(json: any): PaymentAppChargeAttemptUpdate;
export declare function PaymentAppChargeAttemptUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaymentAppChargeAttemptUpdate;
export declare function PaymentAppChargeAttemptUpdateToJSON(json: any): PaymentAppChargeAttemptUpdate;
export declare function PaymentAppChargeAttemptUpdateToJSONTyped(value?: PaymentAppChargeAttemptUpdate | null, ignoreDiscriminator?: boolean): any;
