import { Base, Type } from "./type";
import { DescriptionRef } from "./DescriptionRef";
import { TypeDescriptionPlatform } from "./TypeDescriptionPlatform";
import { Dictionary$2 } from "./Dictionary$2";
import { TypeDescriptionWellKnownType } from "./TypeDescriptionWellKnownType";
import { Description } from "./Description";
/**
 * @hidden
 */
export interface IComponentRendererAdapter {
    createObject(a: string, b: any, c: TypeDescriptionContext): any;
    createColorCollection(a: any[]): any;
    createBrushCollection(a: any[]): any;
    coerceToEnum(a: string, b: TypeDescriptionContext, c: string): any;
    onUIThread(a: any, b: () => void): void;
    setOrUpdateCollectionOnTarget(a: any, b: string, c: TypeDescriptionMetadata, d: TypeDescriptionContext, e: any, f: any): void;
    onPendingRef(a: any, b: string, c: TypeDescriptionMetadata, d: DescriptionRef): void;
    setPropertyValue(a: any, b: string, c: TypeDescriptionMetadata, d: any, e: any, f: DescriptionRef): void;
    getPropertyValue(a: any, b: string): any;
    forPropertyValueItem(a: any, b: string, c: (arg1: any) => void): void;
    clearContainer(a: any, b: TypeDescriptionContext, c: (arg1: boolean) => void): void;
    getRootObject(a: any): any;
    clearCollection(a: any, b: string, c: TypeDescriptionMetadata): void;
    addItemToCollection(a: string, b: TypeDescriptionMetadata, c: any, d: number, e: any): void;
    resetPropertyOnTarget(a: any, b: string, c: TypeDescriptionMetadata, d: any): void;
    replaceItemInCollection(a: string, b: TypeDescriptionMetadata, c: any, d: number, e: any): void;
    removeItemFromCollection(a: string, b: TypeDescriptionMetadata, c: any, d: number): void;
    replaceRootItem(a: any, b: string, c: TypeDescriptionContext, d: (arg1: boolean) => void): void;
    removeRootItem(a: any, b: TypeDescriptionContext, c: (arg1: boolean) => void): void;
    flushChanges(a: any): void;
}
/**
 * @hidden
 */
export declare let IComponentRendererAdapter_$type: Type;
/**
 * @hidden
 */
export declare class TypeDescriptionContext extends Base {
    static $t: Type;
    constructor(a: IComponentRendererAdapter, b: TypeDescriptionPlatform);
    private q;
    private p;
    private g;
    private i;
    private r;
    aa(a: Dictionary$2<string, string>): void;
    k(a: Dictionary$2<string, string>): boolean;
    ab(a: string, b: Dictionary$2<string, string>): void;
    ac(a: string, b: () => any): void;
    static z(key_: string): string;
    static y(key_: string): string;
    a(): string[];
    b(a: string): string[];
    getMetadata(a: string, b: string): TypeDescriptionMetadata;
    v(a: string): any;
    ad(a: Description, b: string, c: TypeDescriptionMetadata, d: any): void;
    ae(a: Description, b: string, c: TypeDescriptionMetadata, d: any): void;
    u(a: any[]): any;
    t(a: any[]): any;
    w(a: string, b: any): any;
    s(a: string, b: string, c: TypeDescriptionMetadata, d: boolean): any;
    c(a: string, b: string): string[];
    j(a: string, b: string): boolean;
    d(a: string, b: string): string[];
    hasNameBinding(a: string, b: string): boolean;
    getMustSetInCodePlatforms(a: string, b: string): string[];
    getStringUnionPlatforms(a: string, b: string): string[];
    hasMustSetInCodePlatforms(a: string, b: string): boolean;
    hasStringUnionPlatforms(a: string, b: string): boolean;
    hasQueryListName(a: string, b: string): boolean;
    getQueryListName(a: string, b: string): string;
}
/**
 * @hidden
 */
export declare class TypeDescriptionMetadata extends Base {
    static $t: Type;
    private _owningContext;
    owningContext: TypeDescriptionContext;
    private _owningType;
    owningType: string;
    private _propertyName;
    propertyName: string;
    private _knownType;
    knownType: TypeDescriptionWellKnownType;
    private _specificType;
    specificType: string;
    private _specificExternalType;
    specificExternalType: string;
    private _collectionElementType;
    collectionElementType: string;
    private _isCustomEvent;
    isCustomEvent: boolean;
    private _mustBeFirst;
    mustBeFirst: boolean;
    private f;
    private g;
    q(a: TypeDescriptionPlatform, b: string): void;
    static camelize(a: string): string;
    static toPascal(a: string): string;
    j(a: TypeDescriptionPlatform): string;
    static shouldCamelize(a: TypeDescriptionPlatform): boolean;
    k(a: TypeDescriptionPlatform): string;
}
