import * as gracely from "gracely"; import * as isoly from "isoly"; import { Error } from "../../Error"; import { Refund as AuthorizationRefund } from "../../Refund"; export declare type Refund = Fail | Success; interface Base { merchant: string; number: string; date: isoly.DateTime; type: "refund"; amount: number; currency: isoly.Currency; processor?: Record; } interface Fail extends Base { status: "fail"; reason: Error.Code; declinedBy?: "issuer" | "intergiro"; error: gracely.Error; } interface Success extends Base { status: "success"; reference: string; } export declare namespace Refund { function isBase(value: any | Base): value is Base; function isFail(value: any | Fail): value is Fail; function isSuccess(value: any | Success): value is Success; function is(value: any | Refund): value is Refund; function create(merchant: string, authorization: { number: string; currency: isoly.Currency; processor?: Record; }, amount: number, input: gracely.Error | AuthorizationRefund): Refund; } export {};