Socket
Socket
Sign inDemoInstall

abitype

Package Overview
Dependencies
Maintainers
1
Versions
180
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

abitype - npm Package Compare versions

Comparing version 0.0.3 to 0.0.4

9

dist/abi.d.ts

@@ -9,3 +9,3 @@ import { MultiplesOf8To256, Range } from './types';

export declare type SolInt = `${'u' | ''}int${MultiplesOf8To256 | ''}`;
export declare type SolFixedArrayRange = Range<2, 10>[number];
export declare type SolFixedArrayRange = Range<1, 10>[number];
export declare type SolFixedArrayLookup = {

@@ -17,3 +17,3 @@ [Prop in SolFixedArrayRange as `${Prop}`]: Prop;

export declare type Address = `0x${string}`;
export declare type AbiInternalType = AbiType | `contract ${string}` | `struct ${string}`;
export declare type AbiInternalType = AbiType | `address ${string}` | `contract ${string}` | `enum ${string}` | `struct ${string}`;
export declare type AbiParameter = {

@@ -39,2 +39,7 @@ type: AbiType;

/**
* @deprecated Vyper used to provide gas estimates
* https://github.com/vyperlang/vyper/issues/2151
*/
gas?: number;
/**
* @deprecated use `payable` or `nonpayable` from {@link AbiStateMutability} instead

@@ -41,0 +46,0 @@ * https://github.com/ethereum/solidity/issues/992

export type { Abi, AbiError, AbiEvent, AbiFunction, AbiInternalType, AbiParameter, AbiParameterType, AbiStateMutability, AbiType, Address, SolAddress, SolArray, SolBool, SolBytes, SolFunction, SolInt, SolString, SolTuple, } from './abi';
export type { AbiParameterToPrimitiveType, AbiParametersToPrimitiveTypes, AbiTypeToPrimitiveType, ExtractAbiFunction, ExtractAbiFunctionNames, ExtractAbiFunctionParameters, ExtractAbiFunctions, IsAbi, } from './utils';
export type { AbiParameterToPrimitiveType, AbiParametersToPrimitiveTypes, AbiTypeToPrimitiveType, ExtractAbiEvent, ExtractAbiEvents, ExtractAbiEventNames, ExtractAbiEventParameters, ExtractAbiFunction, ExtractAbiFunctionNames, ExtractAbiFunctionParameters, ExtractAbiFunctions, IsAbi, } from './utils';

@@ -8,7 +8,4 @@ /**

* @example
*
* ```ts
* // Returns 3
* type Result = LengthOfString<'baz'>
* ```
* 3
*/

@@ -24,7 +21,4 @@ export declare type LengthOfString<TString extends string, _Res extends 1[] = []> = TString extends `${string}${infer Rest}` ? LengthOfString<Rest, [..._Res, 1]> : _Res['length'];

* @example
*
* ```ts
* // Returns { name: string }[]
* type Result = Equal<'tuple[]', { name: string }}>
* ```
* { name: string }[]
*/

@@ -40,7 +34,4 @@ export declare type MaybeArray<TString extends string, Value> = TString extends `${any}[]` ? Value[] : Value;

* @example
*
* ```ts
* // Returns [1, 2, 3]
* type Result = Range<1, 3>
*```
* [1, 2, 3]
*/

@@ -57,7 +48,4 @@ export declare type Range<Start extends number, Stop extends number, _Res extends number[] = [], _Padding extends 0[] = [], _Current extends number = [..._Padding, ..._Res]['length'] & number> = _Current extends Stop ? _Current extends Start ? [_Current] : _Res extends [] ? [] : [..._Res, _Current] : _Current extends Start ? Range<Start, Stop, [_Current], _Padding> : _Res extends [] ? Range<Start, Stop, [], [..._Padding, 0]> : Range<Start, Stop, [..._Res, _Current], _Padding>;

* @example
*
* ```ts
* // Returns foobaz
* type Result = Replace<'foobar', 'bar', 'baz'>
*```
* 'foobaz'
*/

@@ -73,7 +61,4 @@ export declare type Replace<TString extends string, From extends string, To extends string> = From extends '' ? TString : TString extends `${infer H}${From}${infer R}` ? `${H}${To}${R}` : TString;

* @example
*
* ```ts
* // Returns [string, string]
* type Result = Tuple<string, 2>
* ```
* [string, string]
*/

@@ -80,0 +65,0 @@ export declare type Tuple<T, N extends number> = N extends N ? number extends N ? T[] : _TupleOf<T, N, []> : never;

@@ -1,2 +0,2 @@

import { Abi, AbiParameter, AbiParameterType, AbiStateMutability, AbiType, Address, SolAddress, SolBool, SolBytes, SolFixedArrayLookup, SolFunction, SolInt, SolString, SolTuple } from './abi';
import { Abi, AbiParameter, AbiParameterType, AbiStateMutability, AbiType, Address, SolAddress, SolArray, SolBool, SolBytes, SolFixedArrayLookup, SolFunction, SolInt, SolString, SolTuple } from './abi';
import { MaybeArray, Tuple } from './types';

@@ -6,3 +6,3 @@ /**

*
* Note: Does not include tuple conversion. Use {@link AbiParameterToPrimitiveType} to also convert tuples.
* Note: Does not include full array or tuple conversion. Use {@link AbiParameterToPrimitiveType} to also convert arrays and tuples.
*

@@ -12,3 +12,3 @@ * @param TAbiType - {@link AbiType} to convert to TypeScript representation.

*/
export declare type AbiTypeToPrimitiveType<TAbiType extends AbiType> = TAbiType extends `${infer T}[]` ? AbiTypeToPrimitiveType<T extends AbiType ? T : any>[] : TAbiType extends SolAddress ? Address : TAbiType extends SolString ? string : TAbiType extends SolBool ? boolean : TAbiType extends SolFunction ? `${Address}${string}` : TAbiType extends SolBytes ? string | ArrayLike<number> : TAbiType extends SolInt ? bigint | number : TAbiType extends `${infer T}[${infer M}]` ? M extends keyof SolFixedArrayLookup ? Tuple<AbiTypeToPrimitiveType<T extends AbiType ? T : any>, SolFixedArrayLookup[M]> : AbiTypeToPrimitiveType<T extends AbiType ? T : any>[] : unknown;
export declare type AbiTypeToPrimitiveType<TAbiType extends AbiType> = TAbiType extends SolAddress ? Address : TAbiType extends SolString ? string : TAbiType extends SolBool ? boolean : TAbiType extends SolFunction ? `${Address}${string}` : TAbiType extends SolBytes ? string | ArrayLike<number> : TAbiType extends SolInt ? bigint | number : TAbiType extends SolTuple ? Record<string, unknown> : TAbiType extends SolArray ? unknown[] : unknown;
/**

@@ -21,5 +21,2 @@ * Converts {@link AbiParameter} to corresponding TypeScript primitive type.

* @example
*
* ```ts
* // Returns string
* type Result = AbiParameterToPrimitiveType<{

@@ -30,5 +27,13 @@ * internalType: 'string'

* }>
* ```
* string
*/
export declare type AbiParameterToPrimitiveType<TAbiParameter extends AbiParameter> = TAbiParameter['type'] extends `${SolTuple}${'' | '[]'}` ? MaybeArray<TAbiParameter['type'], {
export declare type AbiParameterToPrimitiveType<TAbiParameter extends AbiParameter> = TAbiParameter['type'] extends `${infer T}[${infer M}]` ? M extends keyof SolFixedArrayLookup ? Tuple<AbiParameterToPrimitiveType<{
[Property in keyof Omit<TAbiParameter, 'type'>]: TAbiParameter[Property];
} & {
type: T extends AbiType ? T : any;
}>, SolFixedArrayLookup[M]> : AbiParameterToPrimitiveType<{
[Property in keyof Omit<TAbiParameter, 'type'>]: TAbiParameter[Property];
} & {
type: T extends AbiType ? T : any;
}>[] : TAbiParameter['type'] extends `${SolTuple}${'' | '[]'}` ? MaybeArray<TAbiParameter['type'], {
[Component in (TAbiParameter & {

@@ -39,2 +44,11 @@ components: readonly AbiParameter[];

/**
* Converts array of {@link AbiParameter} to corresponding TypeScript primitive types.
*
* @param TAbiParameters - Array of {@link AbiParameter} to convert to TypeScript representations.
* @returns Array of TypeScript primitive types
*/
export declare type AbiParametersToPrimitiveTypes<TAbiParameters extends readonly AbiParameter[]> = {
[K in keyof TAbiParameters]: AbiParameterToPrimitiveType<TAbiParameters[K]>;
};
/**
* Checks if type is {@link Abi}

@@ -46,14 +60,13 @@ *

* @example
* type Result = IsAbi<typeof erc20Abi>
*
* ```ts
* // Returns true
* type Result = IsAbi<typeof erc20Abi>
* ```
* true
*/
export declare type IsAbi<TAbi> = TAbi extends Abi ? true : false;
/**
* Extracts all {@link AbiFunction}s from {@link Abi}
* Extracts all {@link AbiFunction} types from {@link Abi}
*
* @param TAbi - {@link Abi} to extract functions from.
* @returns Boolean for whether {@link TAbi} is {@link Abi}.
* @param TAbiStateMutibility - {@link AbiStateMutability} to filter by.
* @returns All {@link AbiFunction} types from {@link Abi}.
*/

@@ -68,10 +81,9 @@ export declare type ExtractAbiFunctions<TAbi extends Abi, TAbiStateMutibility extends AbiStateMutability = AbiStateMutability> = Extract<TAbi[number], {

* @param TAbi - {@link Abi} to extract function names from.
* @param TAbiStateMutibility - {@link AbiStateMutability} to filter by.
* @returns Union of function names
*
* @example
* type Result = ExtractAbiFunctionNames<typeof erc20Abi>
*
* ```ts
* // Returns 'tokenURI' | 'symbol' | 'totalSupply' | ...
* type Result = ExtractAbiFunctionNames<typeof erc20Abi>
* ```
* 'balanceOf' | 'decimals' | 'name' | 'symbol' | 'totalSupply'
*/

@@ -87,8 +99,19 @@ export declare type ExtractAbiFunctionNames<TAbi extends Abi, TAbiStateMutibility extends AbiStateMutability = AbiStateMutability> = ExtractAbiFunctions<TAbi, TAbiStateMutibility>['name'];

* @example
* type Result = ExtractAbiFunction<typeof erc20Abi, 'tokenURI'>
*
* ```ts
* // Returns
* // { type: 'function', name: 'tokenURI', stateMutability: 'pure', inputs: [...], outputs: [...] }
* type Result = ExtractAbiFunction<typeof erc20Abi, 'tokenURI'>
* ```
* {
* type: 'function',
* name: 'tokenURI',
* stateMutability: 'pure',
* inputs: [{
* internalType: 'uint256',
* name: 'tokenId',
* type: 'uint256',
* }],
* outputs: [{
* internalType: 'string',
* name: '',
* type: 'string'
* }],
* }
*/

@@ -99,3 +122,3 @@ export declare type ExtractAbiFunction<TAbi extends Abi, TFunctionName extends ExtractAbiFunctionNames<TAbi>> = Extract<ExtractAbiFunctions<TAbi>, {

/**
* Extracts {@link AbiParameter}s for function name from {@link Abi}.
* Extracts {@link AbiParameter} types for function name from {@link Abi}.
*

@@ -108,18 +131,82 @@ * @param TAbi - {@link Abi} to extract {@link AbiParameter}s from.

* @example
* type Result = ExtractAbiFunctionParameters<typeof erc20Abi, 'tokenURI', 'inputs'>
*
* ```ts
* // Returns
* // { internalType: 'uint256', name: 'tokenId', type: 'uint256' }
* type Result = ExtractAbiFunctionParameters<typeof erc20Abi, 'tokenURI', 'inputs'>
* ```
* [{
* internalType: 'uint256',
* name: 'tokenId',
* type: 'uint256',
* }]
*/
export declare type ExtractAbiFunctionParameters<TAbi extends Abi, TFunctionName extends ExtractAbiFunctionNames<TAbi>, TAbiParameterType extends AbiParameterType> = ExtractAbiFunction<TAbi, TFunctionName>[TAbiParameterType];
/**
* Converts array of {@link AbiParameter} to corresponding TypeScript primitive types.
* Extracts all {@link AbiEvent} types from {@link Abi}
*
* @param TAbiParameters - Array of {@link AbiParameter} to convert to TypeScript representations.
* @returns Array of TypeScript primitive types
* @param TAbi - {@link Abi} to extract functions from.
* @returns Boolean for whether {@link TAbi} is {@link Abi}.
*/
export declare type AbiParametersToPrimitiveTypes<TAbiParameters extends readonly AbiParameter[]> = TAbiParameters['length'] extends 0 ? undefined : TAbiParameters['length'] extends 1 ? AbiParameterToPrimitiveType<TAbiParameters[0]> : {
[K in keyof TAbiParameters]: AbiParameterToPrimitiveType<TAbiParameters[K]>;
};
export declare type ExtractAbiEvents<TAbi extends Abi> = Extract<TAbi[number], {
type: 'event';
}>;
/**
* @description Extracts all {@link AbiEvent} names from {@link Abi}
*
* @param TAbi - {@link Abi} to extract event names from.
* @returns Union of event names
*
* @example
* type Result = ExtractAbiEventNames<typeof erc20Abi>
*
* 'approval' | 'transfer'
*/
export declare type ExtractAbiEventNames<TAbi extends Abi> = ExtractAbiEvents<TAbi>['name'];
/**
* Extracts {@link AbiEvent} with name from {@link Abi}
*
* @param TAbi - {@link Abi} to extract {@link AbiEvent} from.
* @param TEventName - String name of event to extract from {@link Abi}
* @returns Matching {@link AbiEvent}
*
* @example
* type Result = ExtractAbiEvent<typeof erc20Abi, 'transfer'>
*
* {
* type: 'event',
* name: 'Transfer',
* anonymous: false,
* inputs: [
* { indexed: true, internalType: 'address', name: 'from', type: 'address' },
* { indexed: true, internalType: 'address', name: 'to', type: 'address' },
* {
* indexed: false,
* internalType: 'uint256',
* name: 'value',
* type: 'uint256',
* },
* ],
* }
*/
export declare type ExtractAbiEvent<TAbi extends Abi, TEventName extends ExtractAbiEventNames<TAbi>> = Extract<ExtractAbiEvents<TAbi>, {
name: TEventName;
}>;
/**
* Extracts {@link AbiParameter} types for event name from {@link Abi}.
*
* @param TAbi - {@link Abi} to extract {@link AbiParameter}s from.
* @param TEventName - String name of event
* @returns Array of {@link AbiParameter}
*
* @example
* type Result = ExtractAbiFunctionParameters<typeof erc20Abi, 'transfer'>
*
* [
* { indexed: true, internalType: 'address', name: 'from', type: 'address' },
* { indexed: true, internalType: 'address', name: 'to', type: 'address' },
* {
* indexed: false,
* internalType: 'uint256',
* name: 'value',
* type: 'uint256',
* },
* ]
*/
export declare type ExtractAbiEventParameters<TAbi extends Abi, TEventName extends ExtractAbiEventNames<TAbi>> = ExtractAbiEvent<TAbi, TEventName>['inputs'];
{
"name": "abitype",
"license": "WAGMIT",
"version": "0.0.3",
"version": "0.0.4",
"repository": {

@@ -6,0 +6,0 @@ "type": "git",

@@ -43,6 +43,8 @@ # ABIType

Thanks to indreams.eth ([@strollinghome](https://twitter.com/strollinghome)) for answering Solidity questions!
## Thanks
- indreams.eth ([@strollinghome](https://twitter.com/strollinghome)) for answering Solidity questions!
## License
[WAGMIT](/LICENSE) License
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc