UNPKG

logiq

Version:

Awesome logical and bitwise operators with support for TypedArrays

21 lines (20 loc) 1.07 kB
export declare type UnaryConnective<T, R> = (p: T) => R; export declare type BinaryConnective<T, R> = (p: T, q: T) => R; export declare type VariadicBinaryConnective<T, R> = (p: T, q: T, ...args: T[]) => R; declare type UnaryConnectiveNames = 'not'; declare type BinaryConnectiveNames = 'and' | 'or' | 'imply' | 'xor' | 'nand' | 'nor' | 'nimply' | 'xnor'; declare type UnaryConnectives<T, R> = { [k in UnaryConnectiveNames]: UnaryConnective<T, R>; }; declare type BinaryConnectives<T, R> = { [k in BinaryConnectiveNames]: BinaryConnective<T, R>; }; declare type VariadicBinaryConnectives<T, R> = { [k in BinaryConnectiveNames]: VariadicBinaryConnective<T, R>; }; export interface Connectives<T, R> extends UnaryConnectives<T, R>, VariadicBinaryConnectives<T, R> { } export interface MakeConnectivesArgs<T, R> extends UnaryConnectives<T, R>, Pick<BinaryConnectives<T, R>, 'and' | 'or'>, Partial<Omit<BinaryConnectives<T, R>, 'and' | 'or'>> { } export declare function makeConnectives<T, R extends T>(args: MakeConnectivesArgs<T, R>): Connectives<T, R>; export {};