import * as gracely from "gracely"; import * as isoly from "isoly"; import { Error } from "../../Error"; import { Fraudio } from "../../Fraudio"; import { Card } from "../../State/Card"; import { PreAuthorization } from "../../State/PreAuthorization"; import { Recurring } from "../Recurring"; export declare type Create = Fail | Success | Pending; interface Base { merchant: string; number: string; date: isoly.DateTime; type: "create"; status: "fail" | "success" | "pending"; processor?: Record; fraudio?: Fraudio; } interface Fail extends Base { status: "fail"; amount?: number; currency?: isoly.Currency; card?: Card; descriptor?: string; recurring?: Recurring; verification?: "verified" | "rejected" | "unavailable"; rule?: string[]; reason: Error.Code; declinedBy?: "issuer" | "intergiro"; error: gracely.Error; } interface Success extends Base { verification?: "verified" | "rejected" | "unavailable"; status: "success"; } interface Pending extends Base { status: "pending"; rule: string[]; reason: "verification required"; amount?: number; currency?: isoly.Currency; card?: Card; descriptor?: string; recurring?: Recurring; } export declare namespace Create { function isFail(value: any | Fail): value is Fail; function isSuccess(value: any | Success): value is Success; function isPending(value: any | Pending): value is Pending; function is(value: any | Create): value is Create; function create(state: (PreAuthorization & { processor?: Record; }) | { merchant: { id: string; }; authorization: { number: string; fraudio?: Fraudio; verification?: undefined; }; processor?: Record; }, input: gracely.Error | any): Create; } export {};