myria-core-sdk
Version:
Latest version SDK
88 lines • 6.94 kB
JavaScript
import BN from 'bn.js';
export var OUTCOMES;
(function (OUTCOMES) {
OUTCOMES[OUTCOMES["INITIAL"] = 0] = "INITIAL";
OUTCOMES[OUTCOMES["RESOLVED"] = 1] = "RESOLVED";
OUTCOMES[OUTCOMES["REJECTED"] = 2] = "REJECTED";
})(OUTCOMES || (OUTCOMES = {}));
export async function sendGaslessTransaction(contractCall) {
let hashOutcome = OUTCOMES.INITIAL;
/* eslint-disable @typescript-eslint/no-floating-promises */
const transactionHash = await new Promise((resolve, reject) => {
contractCall.on('error', (error) => {
// has not reached a transactionHash or error yet
if (hashOutcome === OUTCOMES.INITIAL) {
hashOutcome = OUTCOMES.REJECTED;
reject(error);
contractCall.off();
}
});
contractCall.on('transactionHash', (txHash) => {
// has not reached a transactionHash or error yet
if (hashOutcome === OUTCOMES.INITIAL) {
hashOutcome = OUTCOMES.RESOLVED;
resolve(txHash);
contractCall.off();
}
});
});
/* eslint-disable @typescript-eslint/no-floating-promises */
return normalizeResponse({ transactionHash });
}
export function hexToBytes(hex) {
if (typeof hex !== 'string') {
throw new TypeError('hexToBytes: expected string, got ' + typeof hex);
}
if (hex.length % 2)
throw new Error('hexToBytes: received invalid unpadded hex');
const array = new Uint8Array(hex.length / 2);
for (let i = 0; i < array.length; i++) {
const j = i * 2;
const hexByte = hex.slice(j, j + 2);
const byte = Number.parseInt(hexByte, 16);
if (Number.isNaN(byte))
throw new Error('Invalid byte sequence');
array[i] = byte;
}
return array;
}
export function stripHexPrefix(hex) {
const HEX_RE = /^[0-9a-fA-F]+$/;
const hexNoPrefix = hex.replace(/^0x/, '');
if (!hexNoPrefix.match(HEX_RE)) {
throw new Error('stripHexPrefix: Input is not a hex string');
}
return hexNoPrefix;
}
export function normalizeResponse(txResult) {
const txHash = txResult.transactionHash;
if (txHash === false)
return;
if (txHash) {
const { transactionHash: internalHash, nonce: internalNonce, message: internalMessage } = txHash;
if (internalHash) {
txResult.transactionHash = internalHash;
}
if (internalNonce) {
txResult.nonce = internalNonce;
}
if (internalMessage) {
txResult.message = internalMessage;
}
}
return txResult;
}
export function normalizeHex32(hex) {
const paddedHex = stripHexPrefix(hex).toLowerCase().padStart(64, '0');
if (paddedHex.length !== 64) {
throw new Error('normalizeHex32: Input does not fit in 32 bytes');
}
return paddedHex;
}
export function bnTohex32(bn) {
return normalizeHex32(bn.toString(16));
}
export function hexToBn(hex) {
return new BN(stripHexPrefix(hex), 16);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBTXZCLE1BQU0sQ0FBTixJQUFZLFFBSVg7QUFKRCxXQUFZLFFBQVE7SUFDbEIsNkNBQVcsQ0FBQTtJQUNYLCtDQUFZLENBQUE7SUFDWiwrQ0FBWSxDQUFBO0FBQ2QsQ0FBQyxFQUpXLFFBQVEsS0FBUixRQUFRLFFBSW5CO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxZQUFrQztJQUM3RSxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBRW5DLDREQUE0RDtJQUM1RCxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksT0FBTyxDQUN2QyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNsQixZQUFZLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBUSxFQUFFO1lBQzlDLGlEQUFpRDtZQUNqRCxJQUFJLFdBQVcsS0FBSyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNwQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNiLFlBQW9CLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILFlBQVksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFjLEVBQVEsRUFBRTtZQUMxRCxpREFBaUQ7WUFDakQsSUFBSSxXQUFXLEtBQUssUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDcEMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDZixZQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQzdCO1FB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