import { Component, FunctionComponent, SFC } from 'react'; export interface CommonProps { className?: string; 'aria-label'?: string; 'data-test-subj'?: string; } export declare type NoArgCallback = () => T; export declare type RefCallback = (element: Element) => void; export declare type Omit = Pick>; /** * Wraps Object.keys with proper typescript definition of the resulting array */ export declare function keysOf(obj: T): K[]; export declare type PropsOf = C extends SFC ? SFCProps : C extends FunctionComponent ? FunctionProps : C extends Component ? ComponentProps : never; /** * Returns member keys in U not present in T set to never * T = { 'one', 'two', 'three' } * U = { 'three', 'four', 'five' } * returns { 'four': never, 'five': never } */ export declare type DisambiguateSet = { [P in Exclude]?: never; }; /** * Allow either T or U, preventing any additional keys of the other type from being present */ export declare type ExclusiveUnion = (T | U) extends object ? (DisambiguateSet & U) | (DisambiguateSet & T) : T | U;