import { JsonApiServer } from '../json_api'
/**
* Facilitates interaction with the FeeCalculator server.
*
* @class
*/
export class FeeCalculatorServer extends JsonApiServer {
/**
* Create a new FeeCalculator server instance.
*
* @constructor
* @param {ShelfNetwork} sdk Parent SDK instance.
* @param {string} serverUrl FeeCalculator URL.
* @param {Object} opts
* @param {boolean} [opts.allowHttp] Allow connecting to http servers, default: `false`. This must be set to false in production deployments!
* @param {Object} [opts.proxy] Proxy configuration. Look [axios docs](https://github.com/axios/axios#request-config) for more info
* @param {Object} [opts.httpBasicAuth] HTTP basic auth credentials. Look [axios docs](https://github.com/axios/axios#request-config) for more info.
* @param {Object} [opts.customHeaders] Custom headers for request.
* @param {boolean} [opts.withCredentials] Indicates whether or not cross-site Access-Control requests should be made using credentials.
*/
constructor (sdk, serverUrl, opts = {}) {
opts.alias = 'fees'
super(sdk, serverUrl, opts)
}
/**
* Get fee amount.
*
* @param {object} query Request options.
* @param {Number} query.price Lot price.
* @param {Number} query.lotType Lot type.
* @param {string} query.currency Currency.
*/
async calculate (query) {
return this._makeCallBuilder()
.appendUrlSegment(``)
.get(query)
}
/**
* Get multiple fees.
*
* @param {object[]} pairs Array of pairs for convertation.
* @param {Number} pairs.price Lot price.
* @param {Number} pairs.lotType Lot type.
* @param {string} pairs.currency Currency.
* @param {Number} pairs.lotId Lot ID. Will be returned in response just for frontend mapping purposes.
*/
calculateBulk (pairs) {
return this._makeCallBuilder()
.appendUrlSegment(``)
.post({
data: pairs.map(pair => ({
attributes: {
price: pair.price,
lotType: pair.lotType,
currency: pair.currency,
lotId: pair.lotId
}
}))
})
}
}