ox
Version:
Ethereum Standard Library
82 lines • 2.2 kB
JavaScript
import * as formatAbiParameter from './internal/human-readable/formatAbiParameter.js';
import * as parseAbiParameter from './internal/human-readable/parseAbiParameter.js';
export { InvalidAbiParameterError, InvalidAbiTypeParameterError, InvalidFunctionModifierError, InvalidModifierError, InvalidParameterError, SolidityProtectedKeywordError, } from './internal/human-readable/errors.js';
export { InvalidParenthesisError } from './internal/human-readable/errors.js';
/**
* Formats an {@link ox#AbiParameter.AbiParameter} into a **Human Readable ABI Parameter**.
*
* @example
* ```ts twoslash
* import { AbiParameter } from 'ox'
*
* const formatted = AbiParameter.format({
* name: 'spender',
* type: 'address'
* })
*
* formatted
* // ^?
* ```
*
* @param parameter - The ABI Parameter to format.
* @returns The formatted ABI Parameter.
*/
export function format(parameter) {
return formatAbiParameter.formatAbiParameter(parameter);
}
/**
* Parses an arbitrary **JSON ABI Parameter** or **Human Readable ABI Parameter** into a typed {@link ox#AbiParameter.AbiParameter}.
*
* @example
* ### JSON Parameters
*
* ```ts twoslash
* import { AbiParameter } from 'ox'
*
* const parameter = AbiParameter.from({
* name: 'spender',
* type: 'address'
* })
*
* parameter
* //^?
* ```
*
* @example
* ### Human Readable Parameters
*
* ```ts twoslash
* import { AbiParameter } from 'ox'
*
* const parameter = AbiParameter.from('address spender')
*
* parameter
* //^?
* ```
*
* @example
* It is possible to specify `struct`s along with your definition:
*
* ```ts twoslash
* import { AbiParameter } from 'ox'
*
* const parameter = AbiParameter.from([
* 'struct Foo { address spender; uint256 amount; }',
* 'Foo foo'
* ])
*
* parameter
* //^?
* ```
*
* @param parameter - The ABI Parameter to parse.
* @returns The typed ABI Parameter.
*/
export function from(parameter) {
if (Array.isArray(parameter))
return parseAbiParameter.parseAbiParameter(parameter);
if (typeof parameter === 'string')
return parseAbiParameter.parseAbiParameter(parameter);
return parameter;
}
//# sourceMappingURL=AbiParameter.js.map