@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
85 lines • 3.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.statusToText = exports.extractDepositRequestId = exports.calculateExecutionTime = exports.calculateFillTime = exports.extractToChain = exports.extractFromChain = void 0;
const time_js_1 = require("./time.js");
const extractFromChain = (transaction, client) => {
const chainId = transaction?.data?.inTxs?.[0]?.chainId;
return client?.chains.find((chain) => chain.id === chainId);
};
exports.extractFromChain = extractFromChain;
const extractToChain = (transaction, client) => {
const chainId = transaction?.data?.outTxs?.[0]?.chainId;
return client?.chains.find((chain) => chain.id === chainId);
};
exports.extractToChain = extractToChain;
const calculateFillTime = (transaction) => {
let fillTime = '-';
let seconds = 0;
if (transaction?.status !== 'pending' &&
transaction?.status !== 'waiting' &&
transaction?.status !== 'delayed') {
const inTxTimestamps = transaction?.data?.inTxs?.map((tx) => tx.timestamp) ?? null;
const txStartTimestamp = inTxTimestamps ? Math.min(...inTxTimestamps) : null;
const outTxTimestamps = transaction?.data?.outTxs
?.filter((tx) => tx.timestamp)
?.map((tx) => tx.timestamp) ?? null;
const txEndTimestamp = outTxTimestamps && outTxTimestamps.length > 0
? Math.max(...outTxTimestamps)
: null;
if (txStartTimestamp && txEndTimestamp) {
seconds = txEndTimestamp - txStartTimestamp;
if (seconds > 60) {
fillTime = `${(0, time_js_1.relativeTime)(txEndTimestamp * 1000, txStartTimestamp * 1000, true)}`;
}
else {
fillTime = `${seconds}s`;
}
}
}
return { fillTime, seconds };
};
exports.calculateFillTime = calculateFillTime;
const calculateExecutionTime = (startTime, transaction) => {
let fillTime = '-';
let seconds = 0;
if (transaction?.status !== 'pending' &&
transaction?.status !== 'waiting' &&
transaction?.status !== 'delayed') {
const inTxTimestamps = transaction?.data?.inTxs?.map((tx) => tx.timestamp) ?? null;
const outTxTimestamps = transaction?.data?.outTxs
?.filter((tx) => tx.timestamp)
?.map((tx) => tx.timestamp) ?? null;
const txEndTimestamp = outTxTimestamps && outTxTimestamps.length > 0
? Math.max(...outTxTimestamps)
: null;
if (startTime && txEndTimestamp) {
seconds = txEndTimestamp - startTime;
if (seconds > 60) {
fillTime = `${(0, time_js_1.relativeTime)(txEndTimestamp * 1000, startTime * 1000, true)}`;
}
else {
fillTime = `${seconds}s`;
}
}
else if (!txEndTimestamp && inTxTimestamps && inTxTimestamps.length > 0) {
fillTime = '-';
seconds = 0;
}
}
return { fillTime, seconds };
};
exports.calculateExecutionTime = calculateExecutionTime;
const extractDepositRequestId = (steps) => {
if (!steps?.length)
return null;
return steps.find((step) => step.requestId)?.requestId || null;
};
exports.extractDepositRequestId = extractDepositRequestId;
exports.statusToText = {
pending: 'Pending',
failure: 'Failure',
received: 'Received',
success: 'Success',
fallback: 'Refunded'
};
//# sourceMappingURL=relayTransaction.js.map