export declare function includeXDash<T>(dictionary: Dictionary<T>): string[];
export declare function excludeXDash<T>(dictionary: Dictionary<T>): string[];
export interface Index<T> {
    [key: number]: T;
}
export interface Dictionary<T> {
    [key: string]: T;
}
export declare class Dictionary<T> implements Dictionary<T> {
}
export declare function ToDictionary<T>(keys: Array<string>, each: (index: string) => T): Dictionary<T>;
export declare function CopyDictionary<TSource, TDestination>(dictionary: Dictionary<TSource>, each: (index: string) => TDestination): Dictionary<TDestination>;
export declare type IndexOf<T> = T extends Map<T, infer V> ? V : T extends Array<infer V> ? number : string;
/** returns an Linqable<> for keys in the collection */
export declare function keys<K, T, TSrc extends (Array<T> | Dictionary<T> | Map<K, T>)>(source: (Array<T> | Dictionary<T> | Map<K, T>)): Linqable<IndexOf<TSrc>>;
/** returns an Linqable<> for values in the collection */
export declare function values<K, T, TSrc extends (Array<T> | Dictionary<T> | Map<K, T>)>(source: (Array<T> | Dictionary<T> | Map<K, T>)): Linqable<T>;
/** returns an Linqable<{key,value}> for the Collection */
export declare function items<K, T, TSrc extends (Array<T> | Dictionary<T> | Map<K, T>)>(source: TSrc & (Array<T> | Dictionary<T> | Map<K, T>)): Linqable<{
    key: IndexOf<TSrc>;
    value: T;
}>;
export declare function length<T, K>(source?: Dictionary<T> | Array<T> | Map<K, T>): number;
export declare function any<T>(this: Iterable<T>, predicate: (each: T) => boolean): boolean;
export declare function all<T>(this: Iterable<T>, predicate: (each: T) => boolean): boolean;
export declare function select<T, V>(this: Iterable<T>, selector: (each: T) => V): Linqable<V>;
export declare function selectMany<T, V>(this: Iterable<T>, selector: (each: T) => Iterable<V>): Linqable<V>;
export declare function where<T>(this: Iterable<T>, predicate: (each: T) => boolean): Linqable<T>;
export declare function selectNonNullable<T, V>(this: Iterable<T>, selector: (each: T) => V): Linqable<NonNullable<V>>;
export declare function nonNullable<T>(this: Iterable<T>): Linqable<NonNullable<T>>;
export declare function first<T>(this: Iterable<T>, predicate?: (each: T) => boolean): T | undefined;
export declare function toArray<T>(this: Iterable<T>): Array<T>;
export declare function bifurcate<T>(this: Iterable<T>, predicate: (each: T) => boolean): Array<Array<T>>;
export interface Linqable<T> extends Iterable<T> {
    linq: {
        any(predicate: (each: T) => boolean): boolean;
        all(predicate: (each: T) => boolean): boolean;
        bifurcate(predicate: (each: T) => boolean): Array<Array<T>>;
        distinct(selector?: (each: T) => any): Linqable<T>;
        first(predicate?: (each: T) => boolean): T | undefined;
        selectNonNullable<V>(selector: (each: T) => V): Linqable<NonNullable<V>>;
        select<V>(selector: (each: T) => V): Linqable<V>;
        selectMany<V>(selector: (each: T) => Iterable<V>): Linqable<V>;
        where(predicate: (each: T) => boolean): Linqable<T>;
        toArray(): Array<T>;
    };
}
//# sourceMappingURL=dictionary.d.ts.map