@xuxinlai2002/pns-js
Version:
A NPM package in Typescript for .Play Name Service
31 lines • 1.26 kB
JavaScript
import { AbiErrorInputsNotFoundError, AbiErrorNotFoundError, } from '../../errors/abi.js';
import { concatHex } from '../data/concat.js';
import { getFunctionSelector, } from '../hash/getFunctionSelector.js';
import { encodeAbiParameters, } from './encodeAbiParameters.js';
import { formatAbiItem } from './formatAbiItem.js';
import { getAbiItem, } from './getAbiItem.js';
const docsPath = '/docs/contract/encodeErrorResult';
export function encodeErrorResult({ abi, errorName, args }) {
let abiItem = abi[0];
if (errorName) {
abiItem = getAbiItem({
abi,
args,
name: errorName,
});
if (!abiItem)
throw new AbiErrorNotFoundError(errorName, { docsPath });
}
if (abiItem.type !== 'error')
throw new AbiErrorNotFoundError(undefined, { docsPath });
const definition = formatAbiItem(abiItem);
const signature = getFunctionSelector(definition);
let data = '0x';
if (args && args.length > 0) {
if (!abiItem.inputs)
throw new AbiErrorInputsNotFoundError(abiItem.name, { docsPath });
data = encodeAbiParameters(abiItem.inputs, args);
}
return concatHex([signature, data]);
}
//# sourceMappingURL=encodeErrorResult.js.map