import * as isoly from "isoly" export type Fee = { interchange: number network?: number intergiro: number total: number } export namespace Fee { export function is(value: any | Fee): value is Fee { return ( typeof value == "object" && "interchange" in value && typeof value.interchange == "number" && "network" in value && (value.network == undefined || typeof value.network == "number") && "intergiro" in value && typeof value.intergiro == "number" && typeof value.total == "number" ) } export function upgrade(value: number | { scheme: number; total: number } | Fee, currency: isoly.Currency): Fee { let result: Fee if (is(value)) result = value else if (typeof value == "number") result = { interchange: 0, intergiro: 0, total: value } else result = { interchange: value.scheme, intergiro: isoly.Currency.subtract(currency, value.total, value.scheme), total: value.total, } return result } }