import { Connection } from "@payfunc/model-base" import { Authorization as ClientAuthorization } from "./Authorization" import { Dispute as ClientDispute } from "./Dispute" import { Functions as ClientFunctions } from "./Functions" import { Merchant as ClientMerchant } from "./Merchant" import { Settlement as ClientSettlement } from "./Settlement" export class Client { authorization = new ClientAuthorization(this.connection) merchant = new ClientMerchant(this.connection) settlement = new ClientSettlement(this.connection) functions = new ClientFunctions(this.connection) dispute = new ClientDispute(this.connection) private constructor(readonly connection: Connection) {} static open(url: string, token: string): Client static open(url: string | undefined, token: string | undefined): Client | undefined static open(url: string | undefined, token: string | undefined): Client | undefined { const connection = Connection.open(url, token) return connection && new Client(connection) } } export namespace Client { export type Authorization = ClientAuthorization export type Merchant = ClientMerchant export type Settlement = ClientSettlement export type Functions = ClientFunctions export type Dispute = ClientDispute }