export declare type Head<T extends any[]> = T[0];
export declare type FnWithArgs<T extends any[]> = (...args: T) => void;
export declare type TailArgs<T> = T extends (x: any, ...args: infer U) => any ? U : never;
export declare type Tail<T extends any[]> = TailArgs<FnWithArgs<T>>;
export declare type StaticAssert<T extends true | Message, Message extends string> = never & T;
export declare type Extends<T, U> = T extends U ? true : false;
export declare type Exact<T, U> = T extends U ? (U extends T ? true : false) : false;
export declare type Writeable<T> = {
    -readonly [P in keyof T]: T[P];
};
export declare type ValueOf<T> = T[keyof T];
