export interface LngLatLike {
    lng: number;
    lat: number;
}
export interface Vector2Like {
    x: number;
    y: number;
}
export interface Vector3Like {
    x: number;
    y: number;
    z: number;
}
export interface Vector4Like {
    x: number;
    y: number;
    z: number;
    w: number;
}
export interface ColorLike {
    r: number;
    g: number;
    b: number;
}
export declare type StringOrNumber = string | number;
export declare type Boolean2 = [boolean, boolean];
export declare type Boolean3 = [boolean, boolean, boolean];
export declare type Boolean4 = [boolean, boolean, boolean, boolean];
export declare type Number2 = [number, number];
export declare type Number3 = [number, number, number];
export declare type Number4 = [number, number, number, number];
export declare type StringOrNumber2 = [StringOrNumber, StringOrNumber];
export declare type StringOrNumber3 = [StringOrNumber, StringOrNumber, StringOrNumber];
export declare type StringOrNumber4 = [StringOrNumber, StringOrNumber, StringOrNumber, StringOrNumber];
export declare type NumericAttribValueAsArray = Number2 | Number3 | Number4;
export declare type NumericAttribValueAsVectorLike = Vector2Like | Vector3Like | Vector4Like | ColorLike;
export declare type NumericAttribValue = number | NumericAttribValueAsVectorLike | NumericAttribValueAsArray;
export declare type AttribValue = string | NumericAttribValue | boolean;
export declare type Constructor<T = {}> = new (...args: any[]) => T;
export interface PolyDictionary<T> {
    [Key: string]: T;
}
export declare type valueof<T> = T[keyof T];
interface typeMap {
    string: string;
    number: number;
    boolean: boolean;
}
declare type PrimitiveOrConstructor = {
    new (...args: any[]): any;
} | keyof typeMap;
export declare type GuardedType<T extends PrimitiveOrConstructor> = T extends {
    new (...args: any[]): infer U;
} ? U : T extends keyof typeMap ? typeMap[T] : never;
export {};
