export declare type NullTypeT = {
    kind: 'null';
};
export declare type NumberTypeT = {
    kind: 'number';
};
export declare type StringTypeT = {
    kind: 'string';
};
export declare type BooleanTypeT = {
    kind: 'boolean';
};
export declare type ColorTypeT = {
    kind: 'color';
};
export declare type ObjectTypeT = {
    kind: 'object';
};
export declare type ValueTypeT = {
    kind: 'value';
};
export declare type ErrorTypeT = {
    kind: 'error';
};
export declare type CollatorTypeT = {
    kind: 'collator';
};
export declare type FormattedTypeT = {
    kind: 'formatted';
};
export declare type ResolvedImageTypeT = {
    kind: 'resolvedImage';
};
export declare type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';
export declare type Type = NullTypeT | NumberTypeT | StringTypeT | BooleanTypeT | ColorTypeT | ObjectTypeT | ValueTypeT | // eslint-disable-line no-use-before-define
ArrayType | ErrorTypeT | CollatorTypeT | FormattedTypeT | ResolvedImageTypeT;
export declare type ArrayType = {
    kind: 'array';
    itemType: Type;
    N: number | undefined | null;
};
export declare type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object';
export declare const NullType: NullTypeT;
export declare const NumberType: NumberTypeT;
export declare const StringType: StringTypeT;
export declare const BooleanType: BooleanTypeT;
export declare const ColorType: ColorTypeT;
export declare const ObjectType: ObjectTypeT;
export declare const ValueType: ValueTypeT;
export declare const ErrorType: ErrorTypeT;
export declare const CollatorType: CollatorTypeT;
export declare const FormattedType: FormattedTypeT;
export declare const ResolvedImageType: ResolvedImageTypeT;
export declare function array(itemType: Type, N?: number | null): ArrayType;
export declare function toString(type: Type): string;
/**
 * Returns null if `t` is a subtype of `expected`; otherwise returns an
 * error message.
 * @private
 */
export declare function checkSubtype(expected: Type, t: Type): string | undefined | null;
export declare function isValidType(provided: Type, allowedTypes: Array<Type>): boolean;
export declare function isValidNativeType(provided: any, allowedTypes: Array<NativeType>): boolean;
//# sourceMappingURL=types.d.ts.map