/** KEY VALUE TUPLE **/
export declare type IKeyValueTuple<GKey, GValue> = [key: GKey, value: GValue];
export declare type IGenericKeyValueTuple = IKeyValueTuple<any, any>;
export declare type IInferKeyValueTupleGKey<GKeyValueTuple extends IGenericKeyValueTuple> = GKeyValueTuple extends IKeyValueTuple<infer GKey, any> ? GKey : never;
export declare type ITInferKeyValueTupleGValue<GKeyValueTuple extends IGenericKeyValueTuple> = GKeyValueTuple extends IKeyValueTuple<any, infer GValue> ? GValue : never;
/** UNION **/
export declare type IGenericKeyValueTupleUnion = IGenericKeyValueTuple;
export declare type IInferKeyValueTupleUnionGKey<GKeyValueTupleUnion extends IGenericKeyValueTupleUnion> = IInferKeyValueTupleGKey<GKeyValueTupleUnion>;
export declare type IInferKeyValueTupleUnionGValue<GKeyValueTupleUnion extends IGenericKeyValueTupleUnion> = ITInferKeyValueTupleGValue<GKeyValueTupleUnion>;
export declare type IInferKeyValueTupleUnionGValueFromKey<GKeyValueTupleUnion extends IGenericKeyValueTuple, GKey extends IInferKeyValueTupleUnionGKey<GKeyValueTupleUnion>> = GKeyValueTupleUnion extends IKeyValueTuple<GKey, infer GValue> ? GValue : never;
export declare type IKeyValueMapToKeyValueTupleUnion<GObject extends object> = {
    [GKey in Extract<keyof GObject, string>]: IKeyValueTuple<GKey, GObject[GKey]>;
}[Extract<keyof GObject, string>];
export declare type IKeyValueTupleUnionToKeyValueMap<GKeyValueTupleUnion extends IGenericKeyValueTuple> = {
    [GKey in IInferKeyValueTupleUnionGKey<GKeyValueTupleUnion>]: GKeyValueTupleUnion extends IKeyValueTuple<GKey, infer GValue> ? GValue : never;
};
