export declare type Nil = null | undefined;
export declare type Primitives = string | number | boolean;
export declare type PrimitivesDate = Primitives | Date;
export declare type PrimitivesNil = Primitives | Nil;
export declare type LiteralObject<T = unknown> = {
    [p: string]: T;
};
export declare type LiteralObjectOrNull = LiteralObject | null;
export declare type LiteralObjectNull = LiteralObject | null;
export declare type PrimitivesNilArrays = PrimitivesNil | PrimitivesNil[];
export declare type PrimitivesNilObject = PrimitivesNil | LiteralObject<PrimitivesNil>;
export declare type Collections<T = unknown> = LiteralObject | T[] | Map<any, T> | WeakMap<any, T> | Set<T> | {
    [key: string]: T;
};
export declare type ArrayElement<ArrayType extends ArrayLike<any>> = ArrayType[number];
/**
 * The state of a DataSource.
 */
export interface DataSource<T = DataSource<any>> {
    /**
     * ** Map of DataSource.
     *
     *     - Each DataSource can be either a primitive, null or undefined, other DataSource or array of DataSources.
     */
    readonly [key: string]: PrimitivesNilArrays | DataSource<T> | Array<DataSource<T>> | T;
}
