@reservoir0x/relay-sdk
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
51 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPrice = void 0;
const axios_js_1 = require("../utils/axios.js");
const prepareCallTransaction_js_1 = require("../utils/prepareCallTransaction.js");
const index_js_1 = require("../utils/index.js");
const client_js_1 = require("../client.js");
const address_js_1 = require("../constants/address.js");
async function getPrice(parameters) {
const { destinationChainId, destinationCurrency, originChainId, originCurrency, tradeType, amount = '0', user, recipient, options, txs } = parameters;
const client = (0, client_js_1.getClient)();
if (!client.baseApiUrl || !client.baseApiUrl.length) {
throw new ReferenceError('RelayClient missing api url configuration');
}
let preparedTransactions;
if (txs && txs.length > 0) {
preparedTransactions = txs.map((tx) => {
if ((0, index_js_1.isSimulateContractRequest)(tx)) {
return (0, prepareCallTransaction_js_1.default)(tx);
}
return tx;
});
}
const originChain = client.chains.find((chain) => chain.id === originChainId);
const deadAddress = (0, address_js_1.getDeadAddress)(originChain?.vmType, originChain?.id);
const query = {
user: user ?? deadAddress,
destinationCurrency,
destinationChainId,
originCurrency,
originChainId,
amount,
recipient: recipient ? recipient : user ?? deadAddress,
tradeType,
referrer: client.source || undefined,
txs: preparedTransactions,
...options
};
const request = {
url: `${client.baseApiUrl}/price`,
method: 'post',
data: query
};
const res = await axios_js_1.axios.request(request);
if (res.status !== 200) {
throw new index_js_1.APIError(res?.data?.message, res.status, res.data);
}
return { ...res.data, request };
}
exports.getPrice = getPrice;
//# sourceMappingURL=getPrice.js.map