import type { IPortalNoahApi } from './PortalNoahApi' import type { NoahGetPaymentMethodsResponse, NoahGetPayoutChannelFormResponse, NoahGetPayoutChannelsRequest, NoahGetPayoutChannelsResponse, NoahGetPayoutCountriesResponse, NoahGetPayoutQuoteRequest, NoahGetPayoutQuoteResponse, NoahInitiateKycRequest, NoahInitiateKycResponse, NoahInitiatePayinRequest, NoahInitiatePayinResponse, NoahInitiatePayoutRequest, NoahInitiatePayoutResponse, NoahSimulatePayinRequest, NoahSimulatePayinResponse, } from './types' export interface INoah { initiateKyc(data: NoahInitiateKycRequest): Promise initiatePayin( data: NoahInitiatePayinRequest, ): Promise simulatePayin( data: NoahSimulatePayinRequest, ): Promise getPayoutCountries(): Promise getPayoutChannels( data: NoahGetPayoutChannelsRequest, ): Promise getPayoutChannelForm( channelId: string, ): Promise getPayoutQuote( data: NoahGetPayoutQuoteRequest, ): Promise initiatePayout( data: NoahInitiatePayoutRequest, ): Promise getPaymentMethods(): Promise } export interface NoahOptions { api: IPortalNoahApi } export class Noah implements INoah { private readonly api: IPortalNoahApi constructor(options: NoahOptions) { this.api = options.api } public async initiateKyc( data: NoahInitiateKycRequest, ): Promise { return this.api.initiateKyc(data) } public async initiatePayin( data: NoahInitiatePayinRequest, ): Promise { return this.api.initiatePayin(data) } public async simulatePayin( data: NoahSimulatePayinRequest, ): Promise { return this.api.simulatePayin(data) } public async getPayoutCountries(): Promise { return this.api.getPayoutCountries() } public async getPayoutChannels( data: NoahGetPayoutChannelsRequest, ): Promise { return this.api.getPayoutChannels(data) } public async getPayoutChannelForm( channelId: string, ): Promise { return this.api.getPayoutChannelForm(channelId) } public async getPayoutQuote( data: NoahGetPayoutQuoteRequest, ): Promise { return this.api.getPayoutQuote(data) } public async initiatePayout( data: NoahInitiatePayoutRequest, ): Promise { return this.api.initiatePayout(data) } public async getPaymentMethods(): Promise { return this.api.getPaymentMethods() } } export default Noah