import * as isoly from "isoly" import * as base from "@payfunc/model-base" import { Authorization } from "../../Authorization" export interface Base { number: string items: number | base.Item | base.Item[] response?: | { type: "method" | "challenge" | "pares" | "guard"; data: string } | { type: "method"; ThreeDSServerTransID: string; timeout: true } version?: "2.1.0" | "2.2.0" browser?: base.Browser currency: isoly.Currency recurring?: Authorization.Recurring contact?: base.Contact target?: string category?: "purchase" | "withdrawal" | "payout" } export namespace Base { export function is(value: Base | any): value is Base { return ( typeof value == "object" && value && typeof value.number == "string" && (typeof value.items == "number" || base.Item.is(value.items) || (Array.isArray(value.items) && value.items.every(base.Item.is))) && (value.response == undefined || (typeof value.response == "object" && value.response && typeof value.response.type == "string" && ["method", "challenge", "pares", "guard"].includes(value.response.type) && typeof value.response.data == "string") || (value.response.type == "method" && value.response.timeout == true && typeof value.response.ThreeDSServerTransID == "string")) && (value.version == undefined || ["2.1.0", "2.2.0"].includes(value.version)) && (value.browser == undefined || base.Browser.is(value.browser)) && isoly.Currency.is(value.currency) && (value.recurring == undefined || Authorization.Recurring.is(value.recurring)) && (value.contact == undefined || base.Contact.is(value.contact)) && (value.target == undefined || typeof value.target == "string") && (value.category == undefined || value.category == "purchase" || value.category == "withdrawal" || value.category == "payout") ) } }