ox
Version:
Ethereum Standard Library
32 lines • 1.11 kB
JavaScript
import { InvalidAbiParameterError } from './errors.js';
import { isStructSignature, modifiers } from './runtime/signatures.js';
import { parseStructs } from './runtime/structs.js';
import { parseAbiParameter as parseAbiParameter_ } from './runtime/utils.js';
/**
* Parses human-readable ABI parameter into `AbiParameter`.
*
* @param param - Human-readable ABI parameter
* @returns Parsed `AbiParameter`.
*/
export function parseAbiParameter(param) {
let abiParameter;
if (typeof param === 'string')
abiParameter = parseAbiParameter_(param, {
modifiers,
});
else {
const structs = parseStructs(param);
const length = param.length;
for (let i = 0; i < length; i++) {
const signature = param[i];
if (isStructSignature(signature))
continue;
abiParameter = parseAbiParameter_(signature, { modifiers, structs });
break;
}
}
if (!abiParameter)
throw new InvalidAbiParameterError({ param });
return abiParameter;
}
//# sourceMappingURL=parseAbiParameter.js.map