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 o;
    private n;
    private f;
    private h;
    private p;
    y(a: Dictionary$2<string, string>): void;
    j(a: Dictionary$2<string, string>): boolean;
    z(a: string, b: Dictionary$2<string, string>): void;
    aa(a: string, b: () => any): void;
    static x(key_: string): string;
    static w(key_: string): string;
    a(): string[];
    b(a: string): string[];
    getMetadata(a: string, b: string): TypeDescriptionMetadata;
    t(a: string): any;
    ab(a: Description, b: string, c: TypeDescriptionMetadata, d: any): void;
    ac(a: Description, b: string, c: TypeDescriptionMetadata, d: any): void;
    s(a: any[]): any;
    r(a: any[]): any;
    u(a: string, b: any): any;
    q(a: string, b: string, c: TypeDescriptionMetadata): any;
    c(a: string, b: string): string[];
    i(a: string, b: string): boolean;
    d(a: string, b: string): string[];
    hasNameBinding(a: string, b: string): boolean;
    getMustSetInCodePlatforms(a: string, b: string): string[];
    hasMustSetInCodePlatforms(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;
    get owningContext(): TypeDescriptionContext;
    set owningContext(a: TypeDescriptionContext);
    private _owningType;
    get owningType(): string;
    set owningType(a: string);
    private _propertyName;
    get propertyName(): string;
    set propertyName(a: string);
    private _knownType;
    get knownType(): TypeDescriptionWellKnownType;
    set knownType(a: TypeDescriptionWellKnownType);
    private _specificType;
    get specificType(): string;
    set specificType(a: string);
    private _specificExternalType;
    get specificExternalType(): string;
    set specificExternalType(a: string);
    private _collectionElementType;
    get collectionElementType(): string;
    set collectionElementType(a: string);
    private _isCustomEvent;
    get isCustomEvent(): boolean;
    set isCustomEvent(a: boolean);
    private _mustBeFirst;
    get mustBeFirst(): boolean;
    set mustBeFirst(a: 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;
}
