import type { IPortalMeldApi } from './PortalMeldApi' import type { MeldCreateCustomerRequest, MeldCreateCustomerResponse, MeldCreateRetailWidgetRequest, MeldCreateRetailWidgetResponse, MeldDiscoveryParams, MeldGetBuyLimitsResponse, MeldGetCountriesResponse, MeldGetCryptoCurrenciesResponse, MeldGetDefaultsResponse, MeldGetFiatCurrenciesResponse, MeldGetKycLimitsResponse, MeldGetPaymentMethodsResponse, MeldGetRetailQuoteRequest, MeldGetRetailQuoteResponse, MeldGetRetailTransactionResponse, MeldGetSellLimitsResponse, MeldGetServiceProvidersResponse, MeldSearchCustomerResponse, MeldSearchRetailTransactionsParams, MeldSearchRetailTransactionsResponse, } from './types' export interface IMeld { createCustomer( request: MeldCreateCustomerRequest, ): Promise searchCustomer(): Promise getRetailQuote( request: MeldGetRetailQuoteRequest, ): Promise createRetailWidget( request: MeldCreateRetailWidgetRequest, ): Promise searchRetailTransactions( params?: MeldSearchRetailTransactionsParams, ): Promise getRetailTransaction(id: string): Promise getRetailTransactionBySession( sessionId: string, ): Promise getServiceProviders( params?: MeldDiscoveryParams, ): Promise getCountries(params?: MeldDiscoveryParams): Promise getFiatCurrencies( params?: MeldDiscoveryParams, ): Promise getCryptoCurrencies( params?: MeldDiscoveryParams, ): Promise getPaymentMethods( params?: MeldDiscoveryParams, ): Promise getDefaults(params?: MeldDiscoveryParams): Promise getBuyLimits(params?: MeldDiscoveryParams): Promise getSellLimits( params?: MeldDiscoveryParams, ): Promise getKycLimits(params?: MeldDiscoveryParams): Promise } export interface MeldOptions { api: IPortalMeldApi } export class Meld implements IMeld { private readonly api: IPortalMeldApi constructor(options: MeldOptions) { this.api = options.api } public async createCustomer( request: MeldCreateCustomerRequest, ): Promise { return this.api.createCustomer(request) } public async searchCustomer(): Promise { return this.api.searchCustomer() } public async getRetailQuote( request: MeldGetRetailQuoteRequest, ): Promise { return this.api.getRetailQuote(request) } public async createRetailWidget( request: MeldCreateRetailWidgetRequest, ): Promise { return this.api.createRetailWidget(request) } public async searchRetailTransactions( params?: MeldSearchRetailTransactionsParams, ): Promise { return this.api.searchRetailTransactions(params) } public async getRetailTransaction( id: string, ): Promise { return this.api.getRetailTransaction(id) } public async getRetailTransactionBySession( sessionId: string, ): Promise { return this.api.getRetailTransactionBySession(sessionId) } public async getServiceProviders( params?: MeldDiscoveryParams, ): Promise { return this.api.getServiceProviders(params) } public async getCountries( params?: MeldDiscoveryParams, ): Promise { return this.api.getCountries(params) } public async getFiatCurrencies( params?: MeldDiscoveryParams, ): Promise { return this.api.getFiatCurrencies(params) } public async getCryptoCurrencies( params?: MeldDiscoveryParams, ): Promise { return this.api.getCryptoCurrencies(params) } public async getPaymentMethods( params?: MeldDiscoveryParams, ): Promise { return this.api.getPaymentMethods(params) } public async getDefaults( params?: MeldDiscoveryParams, ): Promise { return this.api.getDefaults(params) } public async getBuyLimits( params?: MeldDiscoveryParams, ): Promise { return this.api.getBuyLimits(params) } public async getSellLimits( params?: MeldDiscoveryParams, ): Promise { return this.api.getSellLimits(params) } public async getKycLimits( params?: MeldDiscoveryParams, ): Promise { return this.api.getKycLimits(params) } } export default Meld