@crtxio/abi
Version:
A tiny Solidity ABI encoder and decoder
12 lines (11 loc) • 536 B
TypeScript
/**
* ts-toolbelt `Narrow` type
* https://github.com/millsp/ts-toolbelt/blob/master/sources/Function/Narrow.ts
*/
export declare type Try<A1 extends any, A2 extends any, Catch = never> = A1 extends A2 ? A1 : Catch;
export declare type Narrowable = string | number | bigint | boolean;
declare type NarrowRaw<A> = (A extends [] ? [] : never) | (A extends Narrowable ? A : never) | {
[K in keyof A]: A[K] extends Function ? A[K] : NarrowRaw<A[K]>;
};
export declare type Narrow<A extends any> = Try<A, [], NarrowRaw<A>>;
export {};